|
|
|
|
package app
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"server/call"
|
|
|
|
|
"server/common"
|
|
|
|
|
"server/db"
|
|
|
|
|
"server/modules/web/values"
|
|
|
|
|
"server/util"
|
|
|
|
|
"sort"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/liangdas/mqant/log"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// 从数据库中读取数据
|
|
|
|
|
func (g *Gin) CheckActivityExpire(id int) (pass bool) {
|
|
|
|
|
act := call.GetConfigActivityByID(id)
|
|
|
|
|
if act == nil {
|
|
|
|
|
pass = false
|
|
|
|
|
g.Code = values.CodeActivityExpire
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
pass = act.IsValid()
|
|
|
|
|
if !pass {
|
|
|
|
|
g.Code = values.CodeActivityExpire
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GetUserTaskStatus 获取任务状态
|
|
|
|
|
func (a *Gin) GetUserTaskStatus() (ret []*values.OneTask) {
|
|
|
|
|
tasks := call.GetConfigTask()
|
|
|
|
|
for _, v := range tasks {
|
|
|
|
|
one := &values.OneTask{
|
|
|
|
|
ID: v.ID,
|
|
|
|
|
TaskID: v.TaskID,
|
|
|
|
|
Target: v.Target,
|
|
|
|
|
Reward: v.Reward,
|
|
|
|
|
Kind: v.Kind,
|
|
|
|
|
Type: int(v.Type),
|
|
|
|
|
Icon: v.Icon,
|
|
|
|
|
Title: common.GetTaskTitle(v),
|
|
|
|
|
Action: v.Action,
|
|
|
|
|
}
|
|
|
|
|
// 非次数任务,需转换目标数值
|
|
|
|
|
// if !common.IsNumTaskType(v.Type) {
|
|
|
|
|
// one.Target /= common.DecimalDigits
|
|
|
|
|
// }
|
|
|
|
|
ret = append(ret, one)
|
|
|
|
|
}
|
|
|
|
|
if a.UID <= 0 {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
now := time.Now()
|
|
|
|
|
task := call.GetUserTaskData(a.UID)
|
|
|
|
|
for _, v := range ret {
|
|
|
|
|
for _, k := range task {
|
|
|
|
|
if v.TaskID == k.TaskID {
|
|
|
|
|
v.Progess = k.Progress
|
|
|
|
|
taskTime := time.Unix(k.Time, 0)
|
|
|
|
|
// 跨天清空数据
|
|
|
|
|
if !util.IsSameDay(now, taskTime) && v.Kind == 2 {
|
|
|
|
|
v.Status = 0
|
|
|
|
|
v.Progess = 0
|
|
|
|
|
err := db.Mysql().Update(&k, map[string]interface{}{
|
|
|
|
|
"progress": 0,
|
|
|
|
|
"time": now.Unix(),
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Error("GetUserTaskStatus err:%v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if v.Type == int(common.TaskTypeDownload) { // 已下载直接标记为完成
|
|
|
|
|
if a.DeviceType == common.DeviceTypeWebview || a.DeviceType == common.DeviceTypePWA {
|
|
|
|
|
call.CheckTask(call.Task{Uid: a.UID, Value: 0, Types: []common.TaskType{common.TaskTypeDownload}})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 非次数任务,需转换目标数值
|
|
|
|
|
// if !common.IsNumTaskType(v.Type) && v.Progess > 0 {
|
|
|
|
|
// v.Progess /= common.DecimalDigits
|
|
|
|
|
// }
|
|
|
|
|
if v.Progess < 0 {
|
|
|
|
|
v.Progess = v.Target
|
|
|
|
|
v.Status = 2
|
|
|
|
|
} else if v.Progess >= v.Target {
|
|
|
|
|
v.Progess = v.Target
|
|
|
|
|
v.Status = 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
sort.SliceStable(ret, func(i, j int) bool {
|
|
|
|
|
return ret[i].Status > ret[j].Status
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|