diff --git a/canal-admin/canal-admin-server/src/main/java/com/alibaba/otter/canal/admin/controller/NodeServerController.java b/canal-admin/canal-admin-server/src/main/java/com/alibaba/otter/canal/admin/controller/NodeServerController.java index f29d1a16..3af2ead8 100644 --- a/canal-admin/canal-admin-server/src/main/java/com/alibaba/otter/canal/admin/controller/NodeServerController.java +++ b/canal-admin/canal-admin-server/src/main/java/com/alibaba/otter/canal/admin/controller/NodeServerController.java @@ -21,12 +21,6 @@ public class NodeServerController { return BaseModel.getInstance(nodeServerService.findList(nodeServer)); } - @DeleteMapping(value = "/nodeServer/{id}") - public BaseModel delete(@PathVariable Long id, @PathVariable String env) { - nodeServerService.delete(id); - return BaseModel.getInstance("success"); - } - @PostMapping(value = "/nodeServer") public BaseModel save(@RequestBody NodeServer nodeServer, @PathVariable String env) { nodeServerService.save(nodeServer); @@ -38,8 +32,21 @@ public class NodeServerController { return BaseModel.getInstance(nodeServerService.detail(id)); } + @PutMapping(value = "/nodeServer") + public BaseModel update(@RequestBody NodeServer nodeServer, @PathVariable String env) { + nodeServerService.update(nodeServer); + return BaseModel.getInstance("success"); + } + + @DeleteMapping(value = "/nodeServer/{id}") + public BaseModel delete(@PathVariable Long id, @PathVariable String env) { + nodeServerService.delete(id); + return BaseModel.getInstance("success"); + } + @GetMapping(value = "/nodeServer/status") public BaseModel status(@RequestParam String ip, @RequestParam Integer port, @PathVariable String env) { - return BaseModel.getInstance(nodeServerService.remoteNodeStatus(ip,port)); + return BaseModel.getInstance(nodeServerService.remoteNodeStatus(ip, port)); } + } diff --git a/canal-admin/canal-admin-server/src/main/java/com/alibaba/otter/canal/admin/service/impl/NodeServerServiceImpl.java b/canal-admin/canal-admin-server/src/main/java/com/alibaba/otter/canal/admin/service/impl/NodeServerServiceImpl.java index 305c5f09..592fa186 100644 --- a/canal-admin/canal-admin-server/src/main/java/com/alibaba/otter/canal/admin/service/impl/NodeServerServiceImpl.java +++ b/canal-admin/canal-admin-server/src/main/java/com/alibaba/otter/canal/admin/service/impl/NodeServerServiceImpl.java @@ -33,8 +33,6 @@ public class NodeServerServiceImpl implements NodeServerService { } nodeServer.save(); - - // 检测节点状态 } public NodeServer detail(Long id) { @@ -43,8 +41,6 @@ public class NodeServerServiceImpl implements NodeServerService { public void update(NodeServer nodeServer) { nodeServer.update("name", "ip", "port", "port2"); - - // 检测节点状态 } public void delete(Long id) { @@ -66,10 +62,13 @@ public class NodeServerServiceImpl implements NodeServerService { } query.order().asc("id"); List nodeServers = query.findList(); + if (nodeServers.isEmpty()) { + return nodeServers; + } ExecutorService executorService = Executors.newFixedThreadPool(nodeServers.size()); List> futures = new ArrayList<>(nodeServers.size()); - // 取每个节点的状态 + // get all nodes status for (NodeServer ns : nodeServers) { futures.add(executorService.submit(() -> { int status = -1; diff --git a/canal-admin/canal-admin-ui/public/logo.png b/canal-admin/canal-admin-ui/public/logo.png new file mode 100644 index 00000000..3e2cc642 Binary files /dev/null and b/canal-admin/canal-admin-ui/public/logo.png differ diff --git a/canal-admin/canal-admin-ui/src/api/nodeServer.js b/canal-admin/canal-admin-ui/src/api/nodeServer.js new file mode 100644 index 00000000..d4ebdf7e --- /dev/null +++ b/canal-admin/canal-admin-ui/src/api/nodeServer.js @@ -0,0 +1,39 @@ +import request from '@/utils/request' + +export function getNodeServers(params) { + return request({ + url: '/nodeServers', + method: 'get', + params: params + }) +} + +export function addNodeServer(data) { + return request({ + url: '/nodeServer', + method: 'post', + data + }) +} + +export function nodeServerDetail(id) { + return request({ + url: '/nodeServer/' + id, + method: 'get' + }) +} + +export function updateNodeServer(data) { + return request({ + url: '/nodeServer', + method: 'put', + data + }) +} + +export function deleteNodeServer(id) { + return request({ + url: '/nodeServer/' + id, + method: 'delete' + }) +} diff --git a/canal-admin/canal-admin-ui/src/router/index.js b/canal-admin/canal-admin-ui/src/router/index.js index df1c7fec..ab8143d8 100644 --- a/canal-admin/canal-admin-ui/src/router/index.js +++ b/canal-admin/canal-admin-ui/src/router/index.js @@ -63,16 +63,22 @@ export const constantRoutes = [ meta: { title: 'Canal Server', icon: 'example' }, children: [ { - path: 'canalServer', + path: 'nodeServers', + name: '节点状态', + component: () => import('@/views/canalServer/nodeServer'), + meta: { title: '节点管理', icon: 'tree' } + }, + { + path: 'config', name: 'Canal主配置', component: () => import('@/views/canalServer/config'), meta: { title: 'Canal主配置', icon: 'form' } }, { path: 'tree', - name: 'Tree', + name: '实例管理', component: () => import('@/views/tree/index'), - meta: { title: 'Tree', icon: 'tree' } + meta: { title: '实例管理', icon: 'nested' } } ] }, diff --git a/canal-admin/canal-admin-ui/src/styles/index.scss b/canal-admin/canal-admin-ui/src/styles/index.scss index 3b4da517..2e3ef907 100644 --- a/canal-admin/canal-admin-ui/src/styles/index.scss +++ b/canal-admin/canal-admin-ui/src/styles/index.scss @@ -63,3 +63,12 @@ div:focus { .app-container { padding: 20px; } + +.filter-container { + padding-bottom: 10px; + .filter-item { + display: inline-block; + vertical-align: middle; + margin-bottom: 10px; + } +} \ No newline at end of file diff --git a/canal-admin/canal-admin-ui/src/utils/auth.js b/canal-admin/canal-admin-ui/src/utils/auth.js index 059af188..016b0e24 100644 --- a/canal-admin/canal-admin-ui/src/utils/auth.js +++ b/canal-admin/canal-admin-ui/src/utils/auth.js @@ -1,13 +1,13 @@ import Cookies from 'js-cookie' -const TokenKey = 'vue_admin_template_token' +const TokenKey = 'canal_admin_token' export function getToken() { return Cookies.get(TokenKey) } export function setToken(token) { - return Cookies.set(TokenKey, token) + return Cookies.set(TokenKey, token, { maxAge: 0 }) } export function removeToken() { diff --git a/canal-admin/canal-admin-ui/src/views/canalServer/nodeServer.vue b/canal-admin/canal-admin-ui/src/views/canalServer/nodeServer.vue new file mode 100644 index 00000000..ef5e2b0f --- /dev/null +++ b/canal-admin/canal-admin-ui/src/views/canalServer/nodeServer.vue @@ -0,0 +1,244 @@ + + +