|
@@ -4,6 +4,7 @@ import ( |
|
@@ -4,6 +4,7 @@ import ( |
|
4
|
"encoding/json"
|
4
|
"encoding/json"
|
|
5
|
"fmt"
|
5
|
"fmt"
|
|
6
|
"github.com/astaxie/beego/orm"
|
6
|
"github.com/astaxie/beego/orm"
|
|
|
|
7
|
+ "gitlab.fjmaimaimai.com/mmm-go/gocomm/identity/idgen"
|
|
7
|
"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
|
8
|
"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
|
|
8
|
"opp/internal/utils"
|
9
|
"opp/internal/utils"
|
|
9
|
"opp/models"
|
10
|
"opp/models"
|
|
@@ -57,7 +58,7 @@ func ComputeRankScore() error { |
|
@@ -57,7 +58,7 @@ func ComputeRankScore() error { |
|
57
|
defer func() {
|
58
|
defer func() {
|
|
58
|
atomic.CompareAndSwapInt32(&ComputeRankScoreFlag, 1, 0)
|
59
|
atomic.CompareAndSwapInt32(&ComputeRankScoreFlag, 1, 0)
|
|
59
|
}()
|
60
|
}()
|
|
60
|
-
|
61
|
+ //TODO:启用多个协程执行
|
|
61
|
return computeRankScore()
|
62
|
return computeRankScore()
|
|
62
|
}
|
63
|
}
|
|
63
|
func computeRankScore() (err error) {
|
64
|
func computeRankScore() (err error) {
|
|
@@ -82,18 +83,26 @@ func computeRankScore() (err error) { |
|
@@ -82,18 +83,26 @@ func computeRankScore() (err error) { |
|
82
|
continue
|
83
|
continue
|
|
83
|
}
|
84
|
}
|
|
84
|
//所有部门
|
85
|
//所有部门
|
|
85
|
-
|
86
|
+ depIdAll, e := models.GetDepartmentIdsByCompanyId(period.CompanyId)
|
|
|
|
87
|
+ if e != nil {
|
|
|
|
88
|
+ log.Error(e)
|
|
|
|
89
|
+ continue
|
|
|
|
90
|
+ }
|
|
86
|
//所有用户
|
91
|
//所有用户
|
|
87
|
-
|
92
|
+ userIdAll, e := models.GetUserCompanyIdAll(period.CompanyId)
|
|
|
|
93
|
+ if e != nil {
|
|
|
|
94
|
+ log.Error(e)
|
|
|
|
95
|
+ continue
|
|
|
|
96
|
+ }
|
|
88
|
//按类型
|
97
|
//按类型
|
|
89
|
//3.查询用户列表/部门列表
|
98
|
//3.查询用户列表/部门列表
|
|
90
|
for j := range rankRanges {
|
99
|
for j := range rankRanges {
|
|
91
|
var relationIds []int64
|
100
|
var relationIds []int64
|
|
92
|
rankRange := rankRanges[j]
|
101
|
rankRange := rankRanges[j]
|
|
93
|
if rankRange.Type == protocol.RankRangeTypeAllCompanyUser {
|
102
|
if rankRange.Type == protocol.RankRangeTypeAllCompanyUser {
|
|
94
|
-
|
103
|
+ relationIds = userIdAll
|
|
95
|
} else if rankRange.Type == protocol.RankRangeTypeAllCompanyDepartment {
|
104
|
} else if rankRange.Type == protocol.RankRangeTypeAllCompanyDepartment {
|
|
96
|
-
|
105
|
+ relationIds = depIdAll
|
|
97
|
} else {
|
106
|
} else {
|
|
98
|
if rankRangeDatas, err = models.GetRankRangeDataList(rankRange.Id); err == orm.ErrNoRows {
|
107
|
if rankRangeDatas, err = models.GetRankRangeDataList(rankRange.Id); err == orm.ErrNoRows {
|
|
99
|
continue
|
108
|
continue
|
|
@@ -124,6 +133,8 @@ func updateRankByRelationIds(relationIds []int64, period *models.RankPeriod, ran |
|
@@ -124,6 +133,8 @@ func updateRankByRelationIds(relationIds []int64, period *models.RankPeriod, ran |
|
124
|
RankPeriodId: period.Id,
|
133
|
RankPeriodId: period.Id,
|
|
125
|
RelationId: relationIds[i],
|
134
|
RelationId: relationIds[i],
|
|
126
|
Type: int(rankRange.Type),
|
135
|
Type: int(rankRange.Type),
|
|
|
|
136
|
+ BeginTime: period.BeginTime,
|
|
|
|
137
|
+ EndTime: period.EndTime,
|
|
127
|
}
|
138
|
}
|
|
128
|
updateRank(option)
|
139
|
updateRank(option)
|
|
129
|
}
|
140
|
}
|
|
@@ -135,12 +146,13 @@ func updateRank(o RankOption) { |
|
@@ -135,12 +146,13 @@ func updateRank(o RankOption) { |
|
135
|
var (
|
146
|
var (
|
|
136
|
rank *models.Rank
|
147
|
rank *models.Rank
|
|
137
|
e error
|
148
|
e error
|
|
138
|
- isNew = true
|
149
|
+ isNew = false
|
|
139
|
rankTmp models.Rank
|
150
|
rankTmp models.Rank
|
|
140
|
)
|
151
|
)
|
|
141
|
- if rank, e = models.GetRank(o.CompanyId, o.RankTypeId, o.RankRangeId, o.RankPeriodId, o.RelationId); e != nil && e == orm.ErrNoRows {
|
152
|
+ if rank, e = models.GetRank(o.CompanyId, o.RankTypeId, o.RankRangeId, o.RankPeriodId, o.RelationId); e != nil {
|
|
142
|
isNew = true
|
153
|
isNew = true
|
|
143
|
rank = &models.Rank{
|
154
|
rank = &models.Rank{
|
|
|
|
155
|
+ Id: idgen.Next(),
|
|
144
|
CompanyId: o.CompanyId,
|
156
|
CompanyId: o.CompanyId,
|
|
145
|
RankTypeId: o.RankTypeId,
|
157
|
RankTypeId: o.RankTypeId,
|
|
146
|
RankRangeId: o.RankRangeId,
|
158
|
RankRangeId: o.RankRangeId,
|
|
@@ -154,6 +166,7 @@ func updateRank(o RankOption) { |
|
@@ -154,6 +166,7 @@ func updateRank(o RankOption) { |
|
154
|
} else {
|
166
|
} else {
|
|
155
|
rankTmp = *rank
|
167
|
rankTmp = *rank
|
|
156
|
}
|
168
|
}
|
|
|
|
169
|
+ o.Rank = rank
|
|
157
|
for i := range rankList {
|
170
|
for i := range rankList {
|
|
158
|
item := rankList[i]
|
171
|
item := rankList[i]
|
|
159
|
if o.Type == protocol.RankRangeTypeAllCompanyDepartment || o.Type == protocol.RankRangeTypeAllSpecifyDepartment {
|
172
|
if o.Type == protocol.RankRangeTypeAllCompanyDepartment || o.Type == protocol.RankRangeTypeAllSpecifyDepartment {
|
|
@@ -169,6 +182,7 @@ func updateRank(o RankOption) { |
|
@@ -169,6 +182,7 @@ func updateRank(o RankOption) { |
|
169
|
} else {
|
182
|
} else {
|
|
170
|
//数据有变化的时候才更新到表
|
183
|
//数据有变化的时候才更新到表
|
|
171
|
if !reflect.DeepEqual(rankTmp, *rank) {
|
184
|
if !reflect.DeepEqual(rankTmp, *rank) {
|
|
|
|
185
|
+ rank.UpdateAt = time.Now()
|
|
172
|
if e = models.UpdateRankById(rank); e != nil {
|
186
|
if e = models.UpdateRankById(rank); e != nil {
|
|
173
|
log.Error(e)
|
187
|
log.Error(e)
|
|
174
|
}
|
188
|
}
|
|
@@ -192,10 +206,14 @@ company_id=%v and rank_type_id=%v and rank_period_id=%v` |
|
@@ -192,10 +206,14 @@ company_id=%v and rank_type_id=%v and rank_period_id=%v` |
|
192
|
return
|
206
|
return
|
|
193
|
}
|
207
|
}
|
|
194
|
if err = json.Unmarshal([]byte(config.Content), &scoreConfig); err != nil {
|
208
|
if err = json.Unmarshal([]byte(config.Content), &scoreConfig); err != nil {
|
|
195
|
- err = protocol.NewErrWithMessage(5510)
|
209
|
+ //err = protocol.NewErrWithMessage(5510)
|
|
196
|
log.Error(err)
|
210
|
log.Error(err)
|
|
197
|
return
|
211
|
return
|
|
198
|
}
|
212
|
}
|
|
|
|
213
|
+ if scoreConfig.SumScore == nil {
|
|
|
|
214
|
+ log.Error(o.CompanyId, config.Content, "未设置总分配置")
|
|
|
|
215
|
+ return
|
|
|
|
216
|
+ }
|
|
199
|
sql = fmt.Sprintf(sql,
|
217
|
sql = fmt.Sprintf(sql,
|
|
200
|
scoreConfig.SumScore.DiscoveryFactor,
|
218
|
scoreConfig.SumScore.DiscoveryFactor,
|
|
201
|
scoreConfig.SumScore.CatchFactor, o.CompanyId, o.RankTypeId, o.RankPeriodId)
|
219
|
scoreConfig.SumScore.CatchFactor, o.CompanyId, o.RankTypeId, o.RankPeriodId)
|
|
@@ -211,12 +229,13 @@ type RankDiscovery struct{} |
|
@@ -211,12 +229,13 @@ type RankDiscovery struct{} |
|
211
|
|
229
|
|
|
212
|
func (rank RankDiscovery) RankUser(o RankOption) (err error, result RankResult) {
|
230
|
func (rank RankDiscovery) RankUser(o RankOption) (err error, result RankResult) {
|
|
213
|
var (
|
231
|
var (
|
|
214
|
- sql = "select sum(discovery_score) score,count(0) total from chance where user_id =? and review_status=3"
|
232
|
+ sql = `select sum(discovery_score) score,count(0) total from chance where user_id =? and review_status=3
|
|
|
|
233
|
+ and UNIX_TIMESTAMP(approve_time)>=? and UNIX_TIMESTAMP(approve_time)<?`
|
|
215
|
score float64
|
234
|
score float64
|
|
216
|
total int
|
235
|
total int
|
|
217
|
)
|
236
|
)
|
|
218
|
orm := orm.NewOrm()
|
237
|
orm := orm.NewOrm()
|
|
219
|
- if err = orm.Raw(sql, o.RelationId).QueryRow(&score, &total); err != nil {
|
238
|
+ if err = orm.Raw(sql, o.RelationId, o.BeginTime.Unix(), o.EndTime.Unix()).QueryRow(&score, &total); err != nil {
|
|
220
|
log.Error(err)
|
239
|
log.Error(err)
|
|
221
|
return
|
240
|
return
|
|
222
|
}
|
241
|
}
|
|
@@ -226,12 +245,14 @@ func (rank RankDiscovery) RankUser(o RankOption) (err error, result RankResult) |
|
@@ -226,12 +245,14 @@ func (rank RankDiscovery) RankUser(o RankOption) (err error, result RankResult) |
|
226
|
}
|
245
|
}
|
|
227
|
func (rank RankDiscovery) RankDepartment(o RankOption) (err error, result RankResult) {
|
246
|
func (rank RankDiscovery) RankDepartment(o RankOption) (err error, result RankResult) {
|
|
228
|
var (
|
247
|
var (
|
|
229
|
- sql = "select sum(discovery_score) score,count(0) total from chance where department_id =? and review_status=3"
|
248
|
+ sql = `select sum(discovery_score) score,count(0) total from chance where department_id =? and review_status=3
|
|
|
|
249
|
+ and UNIX_TIMESTAMP(approve_time)>=? and UNIX_TIMESTAMP(approve_time)<?
|
|
|
|
250
|
+`
|
|
230
|
score float64
|
251
|
score float64
|
|
231
|
total int
|
252
|
total int
|
|
232
|
)
|
253
|
)
|
|
233
|
orm := orm.NewOrm()
|
254
|
orm := orm.NewOrm()
|
|
234
|
- if err = orm.Raw(sql, o.RelationId).QueryRow(&score, &total); err != nil {
|
255
|
+ if err = orm.Raw(sql, o.RelationId, o.BeginTime.Unix(), o.EndTime.Unix()).QueryRow(&score, &total); err != nil {
|
|
235
|
log.Error(err)
|
256
|
log.Error(err)
|
|
236
|
return
|
257
|
return
|
|
237
|
}
|
258
|
}
|
|
@@ -246,15 +267,15 @@ type RankGrasp struct{} |
|
@@ -246,15 +267,15 @@ type RankGrasp struct{} |
|
246
|
func (rank RankGrasp) RankUser(o RankOption) (err error, result RankResult) {
|
267
|
func (rank RankGrasp) RankUser(o RankOption) (err error, result RankResult) {
|
|
247
|
var (
|
268
|
var (
|
|
248
|
sql = `select sum(a.user_grasp_score) score from(
|
269
|
sql = `select sum(a.user_grasp_score) score from(
|
|
249
|
-select user_grasp_score from achievement where user_company_id=?
|
270
|
+select user_grasp_score from achievement where user_company_id=? and UNIX_TIMESTAMP(create_at) >=? and UNIX_TIMESTAMP(create_at)<?
|
|
250
|
UNION ALL
|
271
|
UNION ALL
|
|
251
|
-select user_grasp_score from achievement_provider where user_company_id=?
|
272
|
+select user_grasp_score from achievement_provider where user_company_id=? and UNIX_TIMESTAMP(create_at) >=? and UNIX_TIMESTAMP(create_at)<?
|
|
252
|
) a
|
273
|
) a
|
|
253
|
`
|
274
|
`
|
|
254
|
score float64
|
275
|
score float64
|
|
255
|
)
|
276
|
)
|
|
256
|
orm := orm.NewOrm()
|
277
|
orm := orm.NewOrm()
|
|
257
|
- if err = orm.Raw(sql, o.RelationId, o.RelationId).QueryRow(&score); err != nil {
|
278
|
+ if err = orm.Raw(sql, o.RelationId, o.BeginTime.Unix(), o.EndTime.Unix(), o.RelationId, o.BeginTime.Unix(), o.EndTime.Unix()).QueryRow(&score); err != nil {
|
|
258
|
log.Error(err)
|
279
|
log.Error(err)
|
|
259
|
return
|
280
|
return
|
|
260
|
}
|
281
|
}
|
|
@@ -264,15 +285,15 @@ select user_grasp_score from achievement_provider where user_company_id=? |
|
@@ -264,15 +285,15 @@ select user_grasp_score from achievement_provider where user_company_id=? |
|
264
|
func (rank RankGrasp) RankDepartment(o RankOption) (err error, result RankResult) {
|
285
|
func (rank RankGrasp) RankDepartment(o RankOption) (err error, result RankResult) {
|
|
265
|
var (
|
286
|
var (
|
|
266
|
sql = `select sum(a.user_grasp_score) score from(
|
287
|
sql = `select sum(a.user_grasp_score) score from(
|
|
267
|
-select user_grasp_score from achievement where department_id=?
|
288
|
+select user_grasp_score from achievement where department_id=? and UNIX_TIMESTAMP(create_at) >=? and UNIX_TIMESTAMP(create_at)<?
|
|
268
|
UNION ALL
|
289
|
UNION ALL
|
|
269
|
-select user_grasp_score from achievement_provider where department_id=?
|
290
|
+select user_grasp_score from achievement_provider where department_id=? and UNIX_TIMESTAMP(create_at) >=? and UNIX_TIMESTAMP(create_at)<?
|
|
270
|
) a
|
291
|
) a
|
|
271
|
`
|
292
|
`
|
|
272
|
score float64
|
293
|
score float64
|
|
273
|
)
|
294
|
)
|
|
274
|
orm := orm.NewOrm()
|
295
|
orm := orm.NewOrm()
|
|
275
|
- if err = orm.Raw(sql, o.RelationId, o.RelationId).QueryRow(&score); err != nil {
|
296
|
+ if err = orm.Raw(sql, o.RelationId, o.BeginTime.Unix(), o.EndTime.Unix(), o.RelationId, o.BeginTime.Unix(), o.EndTime.Unix()).QueryRow(&score); err != nil {
|
|
276
|
log.Error(err)
|
297
|
log.Error(err)
|
|
277
|
return
|
298
|
return
|
|
278
|
}
|
299
|
}
|
|
@@ -285,12 +306,12 @@ type RankComment struct{} |
|
@@ -285,12 +306,12 @@ type RankComment struct{} |
|
285
|
|
306
|
|
|
286
|
func (rank RankComment) RankUser(o RankOption) (err error, result RankResult) {
|
307
|
func (rank RankComment) RankUser(o RankOption) (err error, result RankResult) {
|
|
287
|
var (
|
308
|
var (
|
|
288
|
- sql = `select count(0) total from comment where user_id=?
|
309
|
+ sql = `select count(0) total from comment where user_id=? and UNIX_TIMESTAMP(create_at) >=? and UNIX_TIMESTAMP(create_at)<?
|
|
289
|
`
|
310
|
`
|
|
290
|
total int
|
311
|
total int
|
|
291
|
)
|
312
|
)
|
|
292
|
orm := orm.NewOrm()
|
313
|
orm := orm.NewOrm()
|
|
293
|
- if err = orm.Raw(sql, o.RelationId).QueryRow(&total); err != nil {
|
314
|
+ if err = orm.Raw(sql, o.RelationId, o.BeginTime.Unix(), o.EndTime.Unix()).QueryRow(&total); err != nil {
|
|
294
|
log.Error(err)
|
315
|
log.Error(err)
|
|
295
|
return
|
316
|
return
|
|
296
|
}
|
317
|
}
|
|
@@ -299,7 +320,7 @@ func (rank RankComment) RankUser(o RankOption) (err error, result RankResult) { |
|
@@ -299,7 +320,7 @@ func (rank RankComment) RankUser(o RankOption) (err error, result RankResult) { |
|
299
|
}
|
320
|
}
|
|
300
|
func (rank RankComment) RankDepartment(o RankOption) (err error, result RankResult) {
|
321
|
func (rank RankComment) RankDepartment(o RankOption) (err error, result RankResult) {
|
|
301
|
var (
|
322
|
var (
|
|
302
|
- sql = `select count(0) total from comment where user_id in (%v)
|
323
|
+ sql = `select count(0) total from comment where user_id in (%v) and UNIX_TIMESTAMP(create_at) >=%v and UNIX_TIMESTAMP(create_at)<%v
|
|
303
|
`
|
324
|
`
|
|
304
|
sqlUserDepartment = `select user_company_id from user_department where department_id=?`
|
325
|
sqlUserDepartment = `select user_company_id from user_department where department_id=?`
|
|
305
|
total int
|
326
|
total int
|
|
@@ -313,7 +334,7 @@ func (rank RankComment) RankDepartment(o RankOption) (err error, result RankResu |
|
@@ -313,7 +334,7 @@ func (rank RankComment) RankDepartment(o RankOption) (err error, result RankResu |
|
313
|
if len(userIds) == 0 {
|
334
|
if len(userIds) == 0 {
|
|
314
|
return
|
335
|
return
|
|
315
|
}
|
336
|
}
|
|
316
|
- sql = fmt.Sprintf(sql, utils.JoinInts(userIds, ","))
|
337
|
+ sql = fmt.Sprintf(sql, utils.JoinInts(userIds, ","), o.BeginTime.Unix(), o.EndTime.Unix())
|
|
317
|
if err = orm.Raw(sql).QueryRow(&total); err != nil {
|
338
|
if err = orm.Raw(sql).QueryRow(&total); err != nil {
|
|
318
|
log.Error(err)
|
339
|
log.Error(err)
|
|
319
|
return
|
340
|
return
|