-
Notifications
You must be signed in to change notification settings - Fork 0
/
score.go
58 lines (51 loc) · 1.41 KB
/
score.go
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
package hotrank
import "time"
// 评分标准
var workScore = map[string]int64{
"like": 100, // 点赞
"comment": 50, // 评论/回复
"share": 100, // 分享
"view_user": 10, // 用户查看
"view_anonymous": 1, // 匿名用户查看
}
// 评分的验证规则 若未注册验证事件则默认不通过 则不加分
var scoreTrigger = map[string]func(*WorkCall) bool{
"like": func(c *WorkCall) bool {
return !c.hotHistoryExists()
},
"view_user": func(c *WorkCall) bool {
_, err := workGc.Get(c.FromUserId)
return err != nil
},
"view_anonymous": func(c *WorkCall) bool {
_, err := workGc.Get(c.ip)
return err != nil
},
"comment": func(c *WorkCall) bool {
return c.FromUserId != c.ToUserId
},
"share": func(c *WorkCall) bool {
return c.FromUserId != c.ToUserId
},
}
// 评分新增后操作
var scoreAddAfter = map[string]func(*WorkCall){
"view_user": func(c *WorkCall) {
_ = workGc.SetWithExpire(c.FromUserId, "1", time.Minute)
},
"view_anonymous": func(c *WorkCall) {
_ = workGc.SetWithExpire(c.ip, "1", time.Minute)
},
}
//AddScore 新增评分标准
func AddScore(k string, v int64) {
workScore[k] = v
}
// AddScoreValid 新增事件验证
func AddScoreValid(k string, fc func(call *WorkCall) bool) {
scoreTrigger[k] = fc
}
// AddScoreAfter 新增评分增加成功过后回调
func AddScoreAfter(k string, fc func(call *WorkCall)) {
scoreAddAfter[k] = fc
}