-
Notifications
You must be signed in to change notification settings - Fork 0
/
eventsJson.js
190 lines (177 loc) · 7.84 KB
/
eventsJson.js
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
'use strict';
const fs = require('fs');
class eventsJsonUtils {
readJson(file) {
let data = fs.readFileSync(file, 'utf8');
return JSON.parse(data.toString());
};
writeJson(file, eventsJson) {
let str = JSON.stringify(eventsJson, "", "\t")
fs.writeFileSync(file, str, 'utf8');
};
/**
* 添加待审核事件
* @param {Object} meta
* @param {String} file
* @param {Object} pendingActivity
* @param {String} [pendingActivity.name] 活动事件名
* @param {String} [pendingActivity.good] 宜详情
* @param {String} [pendingActivity.bad] 忌详情
* @returns {Boolean}
*/
addPendingEvent(meta, file, pendingActivity) {
let events = this.readJson(file);
if (!events) {
meta.$send("读取活动文件失败");
return false;
}
if (!events.pending) events.pending = [];
let pendingActivityIndex = events.pending.findIndex((item) => {
return (item.name === pendingActivity.name);
})
if (pendingActivityIndex >= 0) {
meta.$send("当前已有该事件待审核");
return false;
}
events.pending.push(pendingActivity);
this.writeJson(file, events);
meta.$send("已提交审核");
return true;
}
delPendingEvent(meta, file, name) {
let events = this.readJson(file);
if (!events) return meta.$send("读取活动文件失败");
if (!events.pending) return meta.$send("找不到任何待审核活动");
let pendingActivityIndex = events.pending.findIndex((item) => {
return (item.name === name);
})
if (pendingActivityIndex < 0) return meta.$send("找不到该待审核活动");
events.pending = events.pending.filter(item => item.name !== name);
this.writeJson(file, events);
return meta.$send("已删除该待审核活动");
}
addEvent(meta, file, name, good, bad, fromPending = false) {
let events = this.readJson(file);
if (!events) return meta.$send("读取活动文件失败");
if (fromPending) {
let pendingActivityIndex = events.pending.findIndex((item) => {
return (item.name === name);
});
if (pendingActivityIndex < 0) return meta.$send("待审核活动中找不到该活动");
good = events.pending[pendingActivityIndex].good;
bad = events.pending[pendingActivityIndex].bad;
}
let oldActivityIndex = events.activities.findIndex((item) => {
return (item.name === name);
})
if (oldActivityIndex < 0) {
events.activities.push({ name, good, bad });
if (fromPending) {
events.pending = events.pending.filter(item => item.name !== name);
}
this.writeJson(file, events);
return meta.$send("添加成功");
} else {
events.activities[oldActivityIndex].good = good;
events.activities[oldActivityIndex].bad = bad;
this.writeJson(file, events);
return meta.$send("修改成功");
}
}
delEvent(meta, file, name, fromPending = false) {
let events = this.readJson(file);
if (!events) return meta.$send("读取活动文件失败");
let oldActivityIndex = events.activities.findIndex((item) => {
return (item.name === name);
})
if (oldActivityIndex < 0) {
return meta.$send("找不到该事件");
} else {
events.activities.splice(oldActivityIndex, 1);
if (fromPending) {
events.pending = events.pending.filter(item => item.name !== name);
}
this.writeJson(file, events);
return meta.$send("删除成功");
}
}
runAdd(meta, eventPath, userPath, name, good, bad, app) {
let users = this.readJson(userPath);
let isAdmin = false;
let atBlackList = false;
let atWhiteList = false;
if (!users) return meta.$send("读取配置文件失败");
if (users.admin && users.admin.indexOf(meta.userId) >= 0) isAdmin = true;
if (users.blackList && users.blackList.indexOf(meta.userId) >= 0) atBlackList = true;
if (users.whiteList && users.whiteList.indexOf(meta.userId) >= 0) atWhiteList = true;
if (isAdmin || atWhiteList) return this.addEvent(meta, eventPath, name, good, bad);
else if (atBlackList) return meta.$send("抱歉,我讨厌你");
else {
let result = this.addPendingEvent(meta, eventPath, { act: "add", name, good, bad });
if (result) {
let output = "请审核活动:" + name + " 宜:" + good + " 忌:" + bad + "\n";
output = output + '输入 "确认/取消 待审核活动名称" 以审核活动';
users.admin.map((user) => {
app.sender.sendPrivateMsgAsync(user, output);
});
return;
}
}
}
runDel(meta, eventPath, userPath, name) {
let users = this.readJson(userPath);
let isAdmin = false;
let atBlackList = false;
let atWhiteList = false;
if (!users) return meta.$send("读取配置文件失败");
if (users.admin && users.admin.indexOf(meta.userId) >= 0) isAdmin = true;
if (users.blackList && users.blackList.indexOf(meta.userId) >= 0) atBlackList = true;
if (users.whiteList && users.whiteList.indexOf(meta.userId) >= 0) atWhiteList = true;
if (isAdmin || atWhiteList) return this.delEvent(meta, eventPath, name);
else return meta.$send("抱歉,您没有权限,无法删除活动");
}
confirmPendingEvent(meta, eventPath, userPath, name) {
let users = this.readJson(userPath);
if (!users) return meta.$send("读取配置文件失败");
if (users.admin && users.admin.indexOf(meta.userId) >= 0) {
return this.addEvent(meta, eventPath, name, "", "", true);
}
else return meta.$send("抱歉,您没有审核权限");
}
refusePendingEvent(meta, eventPath, userPath, name) {
let users = this.readJson(userPath);
if (!users) return meta.$send("读取配置文件失败");
if (users.admin && users.admin.indexOf(meta.userId) >= 0) {
return this.delPendingEvent(meta, eventPath, name);
}
else return meta.$send("抱歉,您没有审核权限");
}
showPendingEvent(meta, eventPath) {
let events = this.readJson(eventPath);
if (!events) return meta.$send("读取活动文件失败");
let output = "";
if (!events.pending) return meta.$send("当前没有待审核活动");
let length = events.pending.length;
if (length < 1) return meta.$send("当前没有待审核活动");
if (length > 10) {
length = 10;
output = output + "待审核活动较多,只显示前10个";
}
for (let i = 0; i < length; i++) {
output = output + "活动:" + events.pending[i].name + " 宜:" + events.pending[i].good + " 忌:" + events.pending[i].bad + "\n";
}
output = output + '管理员输入 "确认/取消 待审核活动名称" 以审核活动';
return meta.$send(output);
}
showEvent(meta, eventPath, name) {
let events = this.readJson(eventPath);
if (!events) return meta.$send("读取活动文件失败");
let activityIndex = events.activities.findIndex((item) => {
return (item.name === name);
})
if (activityIndex < 0) return meta.$send("找不到该活动");
let output = "宜详情:" + events.activities[activityIndex].good + " \t忌详情:" + events.activities[activityIndex].bad;
return meta.$send(output);
}
}
module.exports = eventsJsonUtils;