degrade.js
2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
'use strict';
import Router from 'koa-router';
import moment from 'moment';
import _ from 'lodash';
import {Degrade, DegradeServer} from '../../models';
import getter from '../../zookeeper/getter';
import setter from '../../zookeeper/setter';
const router = new Router();
const ctl = {
async getServer() {
let server = await DegradeServer.findAll({});
server = _.last(server);
if (server) {
return `${server.ip}:${server.port}`;
} else {
return 'localhost:2181';
}
},
async index (ctx) {
let count = await DegradeServer.count({});
let render;
if (count) {
let serverPath = await ctl.getServer();
let degrades = await Degrade.findAll();
for (let i of degrades) {
i.checked = await getter(serverPath, i.path);
}
let pc = _.filter(degrades, o => _.startsWith(o.path, '/pc'));
let wap = _.filter(degrades, o => _.startsWith(o.path, '/wap'));
let serverSplit = serverPath.split(':');
render = {
ip: serverSplit[0],
port: serverSplit[1],
render: {
pc: pc,
wap: wap
}
}
}
await ctx.render('action/degrade', render);
},
async server(ctx) {
let ip = ctx.request.body.ip;
let port = ctx.request.body.port;
let serverCount = await DegradeServer.count({});
// keep one server
if (serverCount) {
let serverConfig = await DegradeServer.findAll({});
let id = _.last(serverConfig)._id; // get the latest item
await DegradeServer.update({
_id: id
}, {
$set: {
ip: ip,
port: port
}
});
} else {
await DegradeServer.insert({
ip: ip,
port: port
});
}
ctx.body = {
code: 200,
message: `${serverCount ? 'update' : 'new'} server success`
};
},
async setter(ctx) {
let {checked, id} = ctx.query;
let theDegrade = await Degrade.findById(id);
let path = theDegrade.path;
let serverPath = await ctl.getServer();
await setter(serverPath, path, checked.toString());
ctx.body = {
code: 200,
message: 'update success'
};
}
};
router.get('/', ctl.index);
router.post('/server', ctl.server);
router.get('/setter', ctl.setter);
export default router;