-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathlottery.js
68 lines (55 loc) · 1.52 KB
/
lottery.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
self.onmessage = function (event) {
let data = event.data;
let result = {"data": [], "count": 0, "err": false, "msg": ""};
let filtered = [];
let twiceFiltered = [];
let uidSet = new Set();
let replySet = new Set();
if (data.deDuplicatedReply){
data.data.sort(function(x, y){
return new Date(x.pubTime) - new Date(y.pubTime);
});
}
for (let i = 0; i < data.data.length; ++i) {
if (data.onlySpecified && !data.data[i].content.includes(data.contentSpecified)){
continue;
}
let pubTime = new Date(data.data[i].pubTime);
if (data.limitTime && (pubTime < data.startDateTime || pubTime > data.endDateTime)){
continue;
}
if (!data.levels.has(data.data[i].level)){
continue;
}
filtered.push(data.data[i]);
}
for (let i = 0; i < filtered.length; ++i) {
if (!data.duplicatedUID){
if (uidSet.has(filtered[i].uid)){
continue;
} else {
uidSet.add(filtered[i].uid);
}
}
if (data.deDuplicatedReply){
if (replySet.has(filtered[i].content)){
continue;
} else {
replySet.add(filtered[i].content);
}
}
twiceFiltered.push(filtered[i]);
}
if (twiceFiltered.length < data.count){
result.err = true;
result.msg = "符合条件的评论少于中奖人数";
this.postMessage(result);
}
result.count = data.count;
for (let i = twiceFiltered.length; i > twiceFiltered.length - data.count; --i){
let rnd = Math.floor(Math.random() * i);
result.data.push(twiceFiltered[rnd]);
twiceFiltered[rnd] = twiceFiltered[i - 1];
}
this.postMessage(result);
};