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.Status = 0 v.Progess = 0 err := db.Mysql().Update(&k, map[string]interface{}{ "status": 0, "progress": 0, "time": now.Unix(), }) if err != nil { log.Error("GetUserTaskStatus err:%v", err) } } break } } // 非次数任务,需转换目标数值 // 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 }