package handler import ( "github.com/gin-gonic/gin" "github.com/liangdas/mqant/log" "server/call" "server/common" "server/db" "server/modules/web/app" "server/modules/web/values" ) // Record 领奖进度,key为taskid,value为任务进度,小与0时表示已领取 type TaskInfoResp struct { TaskList []*values.OneTask } func GetTaskInfo(c *gin.Context) { a := app.NewApp(c) defer func() { a.Response() }() a.GetUID() resp := &TaskInfoResp{TaskList: GetUserTaskStatus(a)} a.Data = resp num := 0 for _, task := range resp.TaskList { if task.Status == 1 { num++ } } if num > 0 { //call.PushRed(a.UID, pb.RedPointModule_RedPointTask, uint32(num)) } } type DrawTaskReq struct { TaskID int } func TaskComplete(a *app.Gin, req *DrawTaskReq) { con := call.GetConfigTaskByTaskID(req.TaskID) if con == nil { a.Code = values.CodeRetry return } task := call.GetUserTaskDataByTaskID(a.UID, req.TaskID) if task.Progress < con.Target { a.Code = values.CodeParam a.Msg = "Task not complete." return } var rows int64 var err error if con.Kind == common.TaskKindOnce || con.Kind == common.TaskKindDayOne { rows, err = db.Mysql().UpdateRes(&common.TaskData{UID: a.UID, TaskID: req.TaskID, Progress: task.Progress}, map[string]interface{}{"progress": -1}) } else if con.Kind == common.TaskKindCycle { rows, err = db.Mysql().UpdateRes(&common.TaskData{UID: a.UID, TaskID: req.TaskID, Progress: task.Progress}, map[string]interface{}{"progress": 0}) } if err != nil { log.Error("err:%v", err) a.Code = values.CodeRetry return } if rows == 0 { a.Code = values.CodeRetry return } if con.Reward <= 0 { return } _, err = call.UpdateCurrencyPro(&common.UpdateCurrency{ CurrencyBalance: &common.CurrencyBalance{ UID: a.UID, Value: con.Reward, Event: common.CurrencyEventTask, Type: common.CurrencyINR, Exi1: req.TaskID, NeedBet: call.GetConfigCurrencyResourceNeedBet(common.CurrencyResourceBonus, con.Reward), }, }) if err != nil { a.Code = values.CodeRetry return } } func DrawTask(c *gin.Context) { a := app.NewApp(c) defer func() { a.Response() }() req := &DrawTaskReq{} if !a.S(req) { return } TaskComplete(a, req) a.Data = req num := 0 for _, task := range GetUserTaskStatus(a) { if task.Status == 1 { num++ } } //call.PushRed(a.UID, pb.RedPointModule_RedPointTask, uint32(num)) }