|
|
'use strict';
|
|
|
|
|
|
const Router = require('koa-router');
|
|
|
const ApiCache = require('../../ci/api_cache');
|
|
|
const _ = require('lodash');
|
|
|
|
|
|
const ZookeeperModel = require('../models/zookeeperModel');
|
|
|
let zookeeperModel = new ZookeeperModel();
|
|
|
|
|
|
let r = new Router();
|
|
|
const APPS = [{name: 'yohobuywap-node', app: 'wap', selected: true}, {name: 'yohobuy-node', app: 'pc'}];
|
|
|
const PATHRISK = '/json/risk';
|
|
|
|
|
|
const risk = {
|
|
|
index: async(ctx, next) => {
|
|
|
let list = [];
|
|
|
let ret = await Promise.all(_.map(APPS, (o) => {
|
|
|
return zookeeperModel.getPath(`/${o.app}${PATHRISK}`);
|
|
|
}));
|
|
|
|
|
|
_.map(ret, (o) => {
|
|
|
if (o) {
|
|
|
return list.push(JSON.parse(o));
|
|
|
}
|
|
|
});
|
|
|
|
|
|
await ctx.render('action/risk_management', {
|
|
|
list: _.flattenDeep(list)
|
|
|
});
|
|
|
},
|
|
|
add: async(ctx, next) => {
|
|
|
var data = {};
|
|
|
var key = ctx.request.query.key;
|
|
|
var oldRet = '';
|
|
|
|
|
|
if (key) {
|
|
|
var app = key.split('/')[0];
|
|
|
var path = formatPath(app);
|
|
|
oldRet = await zookeeperModel.getPath(path);
|
|
|
|
|
|
if (oldRet) {
|
|
|
oldRet = JSON.parse(oldRet);
|
|
|
}
|
|
|
|
|
|
data = _.find(oldRet, function(o) {
|
|
|
return `${o.app}/${o.route}` === key;
|
|
|
});
|
|
|
|
|
|
data.state = data.state === 'off';
|
|
|
|
|
|
_.each(APPS, (o => {
|
|
|
o.selected = o.name === app;
|
|
|
}));
|
|
|
}
|
|
|
|
|
|
await ctx.render('action/add_risk', {
|
|
|
data: data,
|
|
|
apps: APPS
|
|
|
});
|
|
|
},
|
|
|
edit: async(ctx) => {
|
|
|
let params = ctx.request.body;
|
|
|
let path = formatPath(params.param.app);
|
|
|
let str = `${params.param.app}/${params.param.route}`;
|
|
|
let editNewRet = await zookeeperModel.getPath(path);
|
|
|
|
|
|
params.edit = params.edit.split('=')[1];
|
|
|
|
|
|
let editOldPath = formatPath(params.edit.split('/')[0]);
|
|
|
let editOldRet;
|
|
|
|
|
|
if (!editNewRet) {
|
|
|
editNewRet = [];
|
|
|
} else {
|
|
|
editNewRet = JSON.parse(editNewRet);
|
|
|
}
|
|
|
|
|
|
if (path != editOldPath) { // 编辑后 new path != old path
|
|
|
editOldRet = await zookeeperModel.getPath(editOldPath);
|
|
|
editOldRet = JSON.parse(editOldRet);
|
|
|
|
|
|
// 删除原路径原始数据
|
|
|
_.remove(editOldRet, function(o) {
|
|
|
return `${o.app}/${o.route}` === params.edit;
|
|
|
});
|
|
|
|
|
|
let editRet = await zookeeperModel.setPath(editOldPath, JSON.stringify(editOldRet));
|
|
|
|
|
|
if (!editRet) {
|
|
|
ctx.body = {
|
|
|
code: 500,
|
|
|
message: 'update fail,Please retry'
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 删除 新路径相同的 app/route 数据
|
|
|
_.remove(editNewRet, function(o) {
|
|
|
return `${o.app}/${o.route}` === str;
|
|
|
});
|
|
|
|
|
|
} else {
|
|
|
// 删除原始数据
|
|
|
_.remove(editNewRet, function(o) {
|
|
|
return `${o.app}/${o.route}` === params.edit;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
editNewRet.push(params.param);
|
|
|
|
|
|
let result = await zookeeperModel.setPath(path, JSON.stringify(editNewRet));
|
|
|
|
|
|
if (result) {
|
|
|
ctx.body = {
|
|
|
code: 200,
|
|
|
message: 'update success'
|
|
|
};
|
|
|
} else {
|
|
|
ctx.body = {
|
|
|
code: 500,
|
|
|
message: 'update fail,Please retry'
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
setter: async(ctx) => {
|
|
|
let params = ctx.request.body;
|
|
|
let path = formatPath(params.app);
|
|
|
let str = `${params.app}/${params.route}`;
|
|
|
let oldRet = await zookeeperModel.getPath(path);
|
|
|
|
|
|
if (!oldRet) {
|
|
|
oldRet = [];
|
|
|
} else {
|
|
|
oldRet = JSON.parse(oldRet);
|
|
|
}
|
|
|
|
|
|
_.remove(oldRet, function(o) {
|
|
|
return `${o.app}/${o.route}` === str;
|
|
|
});
|
|
|
|
|
|
oldRet.push(params);
|
|
|
|
|
|
let result = await zookeeperModel.setPath(path, JSON.stringify(oldRet));
|
|
|
|
|
|
if (result) {
|
|
|
ctx.body = {
|
|
|
code: 200,
|
|
|
message: 'update success'
|
|
|
};
|
|
|
} else {
|
|
|
ctx.body = {
|
|
|
code: 500,
|
|
|
message: 'update fail,Please retry'
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
remove: async(ctx) => {
|
|
|
let key = ctx.request.body.key;
|
|
|
let path = formatPath(key.split('/')[0]);
|
|
|
let oldRet = await zookeeperModel.getPath(path);
|
|
|
|
|
|
if (oldRet) {
|
|
|
oldRet = JSON.parse(oldRet);
|
|
|
}
|
|
|
|
|
|
_.remove(oldRet, function(o) {
|
|
|
return `${o.app}/${o.route}` === key;
|
|
|
});
|
|
|
|
|
|
let result = await zookeeperModel.setPath(path, JSON.stringify(oldRet));
|
|
|
|
|
|
|
|
|
if (result) {
|
|
|
ctx.body = {
|
|
|
code: 200,
|
|
|
message: 'remove success'
|
|
|
};
|
|
|
} else {
|
|
|
ctx.body = {
|
|
|
code: 500,
|
|
|
message: 'remove fail,Please retry'
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
|
|
|
function formatPath(app) {
|
|
|
return `/${_.find(APPS, (o) => {return o.name === app;}).app}${PATHRISK}`;
|
|
|
}
|
|
|
|
|
|
r.get('/risk_management', risk.index);
|
|
|
r.get('/add_risk', risk.add);
|
|
|
r.post('/setter', risk.setter);
|
|
|
r.post('/edit', risk.edit);
|
|
|
r.post('/remove', risk.remove);
|
|
|
|
|
|
module.exports = r; |
|
|
\ No newline at end of file |
...
|
...
|
|