diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/HttpRequestHandler.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/HttpRequestHandler.java index ca272d5d..b0e29b50 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/HttpRequestHandler.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/HttpRequestHandler.java @@ -78,13 +78,16 @@ public class HttpRequestHandler { try { String routePath = requestParser.getRoutePath(); HttpMethod httpMethod = HttpMethod.of(requestParser.getMethod().name()); + HttpContextHolder.setInterceptorList(getInterceptorsForPath(routePath)); + if (httpMethod == HttpMethod.OPTIONS) { - responseWrapper.headers().add("Access-Control-Allow-Origin", "*"); - responseWrapper.headers().add("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); - responseWrapper.headers().add("Access-Control-Max-Age", "86400"); - responseWrapper.headers().add("Access-Control-Allow-Headers", "*"); - responseWrapper.headers().add("Access-Control-Allow-Credentials", "true"); - responseWrapper.headers().add("XDomainRequestAllowed", "1"); +// responseWrapper.headers().add("Access-Control-Allow-Origin", "*"); +// responseWrapper.headers().add("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); +// responseWrapper.headers().add("Access-Control-Max-Age", "86400"); +// responseWrapper.headers().add("Access-Control-Allow-Headers", "*"); +// responseWrapper.headers().add("Access-Control-Allow-Credentials", "true"); +// responseWrapper.headers().add("XDomainRequestAllowed", "1"); + postHandle(requestParser.getRoutePath(), null, null); HttpServerUtil.sendResponse(HttpResponseStatus.OK); return; } @@ -93,10 +96,11 @@ public class HttpRequestHandler { HttpServerUtil.send404Response(requestParser.getUrl()); return; } - HttpContextHolder.setInterceptorList(getInterceptorsForPath(httpRouteResult.getPageRoute())); +// HttpContextHolder.setInterceptorList(getInterceptorsForPath(httpRouteResult.getPageRoute())); if (HttpRouterType.METHOD == httpRouteResult.getType()) { if (!preHandle(httpRouteResult.getPageRoute(), httpRouteResult.getMethod())) { + postHandle(requestParser.getRoutePath(), httpRouteResult.getMethod(), null); HttpServerUtil.sendResponse(HttpResponseStatus.UNAUTHORIZED); return; } @@ -145,9 +149,14 @@ public class HttpRequestHandler { return; } } catch (Throwable e) { - Object res = exceptionHandler(e); - if (null != res) { - HttpServerUtil.send200Response(res); + try { + postHandle(requestParser.getRoutePath(), null, null); + Object res = exceptionHandler(e); + if (null != res) { + HttpServerUtil.send200Response(res); + } + } catch (Exception e2) { + e2.printStackTrace(); } } finally { release(); diff --git a/neutrino-proxy-admin/config/dev.env.js b/neutrino-proxy-admin/config/dev.env.js index e89dfbb0..cb32f77f 100644 --- a/neutrino-proxy-admin/config/dev.env.js +++ b/neutrino-proxy-admin/config/dev.env.js @@ -1,5 +1,6 @@ module.exports = { NODE_ENV: '"development"', ENV_CONFIG: '"dev"', - BASE_API: '"http://localhost:8080"' + // BASE_API: '"http://localhost:8080"' + BASE_API: '"http://192.168.0.103:8080"' } diff --git a/neutrino-proxy-admin/package.json b/neutrino-proxy-admin/package.json index 78e0b027..fed01c75 100644 --- a/neutrino-proxy-admin/package.json +++ b/neutrino-proxy-admin/package.json @@ -6,7 +6,7 @@ "license": "MIT", "private": true, "scripts": { - "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", + "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host=0.0.0.0", "build:dev": "cross-env NODE_ENV=dev env_config=dev node build/build.js", "build:prod": "cross-env NODE_ENV=production env_config=prod node build/build.js", "build:sit": "cross-env NODE_ENV=production env_config=sit node build/build.js", diff --git a/neutrino-proxy-admin/src/api/portPool.js b/neutrino-proxy-admin/src/api/portPool.js new file mode 100644 index 00000000..79883386 --- /dev/null +++ b/neutrino-proxy-admin/src/api/portPool.js @@ -0,0 +1,38 @@ +import request from '@/utils/request' + +export function fetchList(query) { + return request({ + url: '/port-pool/page', + method: 'get', + params: query + }) +} + +export function updateEnableStatus(id, enable) { + return request({ + url: '/port-pool/update/enable-status', + method: 'post', + data: { + id: id, + enable: enable + } + }) +} + +export function createPortPool(data) { + return request({ + url: '/port-pool/create', + method: 'post', + data + }) +} + +export function deletePortPool(id) { + return request({ + url: '/port-pool/delete', + method: 'post', + params: { + id: id + } + }) +} diff --git a/neutrino-proxy-admin/src/api/user.js b/neutrino-proxy-admin/src/api/user.js index 72ad03df..a7c91740 100644 --- a/neutrino-proxy-admin/src/api/user.js +++ b/neutrino-proxy-admin/src/api/user.js @@ -2,7 +2,7 @@ import request from '@/utils/request' export function fetchList(query) { return request({ - url: '/user/list', + url: '/user/page', method: 'get', params: query }) @@ -38,6 +38,17 @@ export function currentUserInfo() { }) } +export function updateEnableStatus(id, enable) { + return request({ + url: '/user/update/enable-status', + method: 'post', + data: { + id: id, + enable: enable + } + }) +} + export function hello() { return request({ url: '/test1/hello', diff --git a/neutrino-proxy-admin/src/lang/zh.js b/neutrino-proxy-admin/src/lang/zh.js index 9d228997..97e0467b 100644 --- a/neutrino-proxy-admin/src/lang/zh.js +++ b/neutrino-proxy-admin/src/lang/zh.js @@ -44,7 +44,9 @@ export default { theme: '换肤', clipboardDemo: 'clipboard', i18n: '国际化', - user: '用户管理' + user: '用户管理', + system: '系统管理', + portPool: '端口池管理' }, navbar: { logOut: '退出登录', @@ -110,7 +112,9 @@ export default { createTime: '创建时间', updateTime: '更新时间', disable: '禁用', - enable: '启用' + enable: '启用', + loginName: '登录名', + port: '端口' }, errorLog: { tips: '请点击右上角bug小图标', diff --git a/neutrino-proxy-admin/src/mock/index.js b/neutrino-proxy-admin/src/mock/index.js index 79d17f10..48562037 100644 --- a/neutrino-proxy-admin/src/mock/index.js +++ b/neutrino-proxy-admin/src/mock/index.js @@ -2,7 +2,6 @@ import Mock from 'mockjs' import articleAPI from './article' import remoteSearchAPI from './remoteSearch' import transactionAPI from './transaction' -import userAPI from './user' // Mock.setup({ // timeout: '350-600' @@ -27,9 +26,9 @@ Mock.mock(/\/search\/user/, 'get', remoteSearchAPI.searchUser) Mock.mock(/\/transaction\/list/, 'get', transactionAPI.getList) // 用户管理 -Mock.mock(/\/user\/list/, 'get', userAPI.getList) -Mock.mock(/\/user\/detail/, 'get', userAPI.getUser) -Mock.mock(/\/user\/create/, 'post', userAPI.createUser) -Mock.mock(/\/user\/update/, 'post', userAPI.updateUser) +// Mock.mock(/\/user\/list/, 'get', userAPI.getList) +// Mock.mock(/\/user\/detail/, 'get', userAPI.getUser) +// Mock.mock(/\/user\/create/, 'post', userAPI.createUser) +// Mock.mock(/\/user\/update/, 'post', userAPI.updateUser) export default Mock diff --git a/neutrino-proxy-admin/src/router/index.js b/neutrino-proxy-admin/src/router/index.js index 7c38dab6..f88f1b04 100644 --- a/neutrino-proxy-admin/src/router/index.js +++ b/neutrino-proxy-admin/src/router/index.js @@ -240,13 +240,17 @@ export const asyncRouterMap = [ { path: '*', redirect: '/404', hidden: true }, { - path: '/user', + path: '/system', component: Layout, - children: [{ - path: 'index', - component: _import('user/index'), - name: 'user', - meta: { title: 'user', icon: 'user', noCache: true } - }] + redirect: 'noredirect', + name: 'system', + meta: { + title: 'system', + icon: 'component' + }, + children: [ + { path: 'user', component: _import('system/user'), name: 'user', meta: { title: 'user' }}, + { path: 'portPool', component: _import('system/portPool'), name: 'portPool', meta: { title: 'portPool' }} + ] } ] diff --git a/neutrino-proxy-admin/src/utils/request.js b/neutrino-proxy-admin/src/utils/request.js index a9346e28..abaab545 100644 --- a/neutrino-proxy-admin/src/utils/request.js +++ b/neutrino-proxy-admin/src/utils/request.js @@ -26,9 +26,19 @@ service.interceptors.request.use(config => { service.interceptors.response.use( response => { console.log('response', response) + console.log('router', this.router) const res = response.data if (res.code !== 0) { - console.log('请求异常', response) + Message({ + message: `[${res.code}]${res.msg}`, + type: 'error', + duration: 5 * 1000 + }) + if (res.code === 4 && !window.location.href.endsWith('#/login')) { + store.dispatch('FedLogOut').then(() => { + location.reload() // 为了重新实例化vue-router对象 避免bug + }) + } } return response }, diff --git a/neutrino-proxy-admin/src/views/system/portPool.vue b/neutrino-proxy-admin/src/views/system/portPool.vue new file mode 100644 index 00000000..fd65d3e2 --- /dev/null +++ b/neutrino-proxy-admin/src/views/system/portPool.vue @@ -0,0 +1,274 @@ + + + diff --git a/neutrino-proxy-admin/src/views/user/index.vue b/neutrino-proxy-admin/src/views/system/user.vue similarity index 83% rename from neutrino-proxy-admin/src/views/user/index.vue rename to neutrino-proxy-admin/src/views/system/user.vue index 9ce6849b..182647a7 100644 --- a/neutrino-proxy-admin/src/views/user/index.vue +++ b/neutrino-proxy-admin/src/views/system/user.vue @@ -1,27 +1,24 @@