印度包网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
2.4 KiB

1 year ago
package handler
import (
"server/call"
"server/common"
"server/db"
"server/modules/web/app"
"server/modules/web/values"
1 year ago
"server/pb"
1 year ago
"github.com/gin-gonic/gin"
"github.com/liangdas/mqant/log"
)
// 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)}
1 year ago
a.Data = resp
1 year ago
num := 0
for _, task := range resp.TaskList {
if task.Status == 1 {
num++
}
}
if num > 0 {
call.PushRed(a.UID, pb.RedPointModule_RedPointTask, uint32(num))
}
1 year ago
}
type DrawTaskReq struct {
TaskID int
}
func TaskComplete(a *app.Gin, req *DrawTaskReq) {
1 year ago
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
1 year ago
if con.Kind == common.TaskKindOnce || con.Kind == common.TaskKindDayOne {
1 year ago
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,
1 year ago
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)
1 year ago
a.Data = req
1 year ago
num := 0
for _, task := range GetUserTaskStatus(a) {
if task.Status == 1 {
num++
}
}
call.PushRed(a.UID, pb.RedPointModule_RedPointTask, uint32(num))
1 year ago
}