|
|
|
|
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"
|
|
|
|
|
"server/pb"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// 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_RedPointTaskDraw, uint32(num))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type DrawTaskReq struct {
|
|
|
|
|
TaskID int
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type DrawTaskResp struct {
|
|
|
|
|
TaskID int
|
|
|
|
|
Award int64
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TaskComplete(a *app.Gin, req *DrawTaskReq) (reward int64) {
|
|
|
|
|
if !db.Redis().Lock(common.GetRedisKeyTask(a.UID)) {
|
|
|
|
|
a.Code = values.CodeRetry
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
defer func() {
|
|
|
|
|
db.Redis().UnLock(common.GetRedisKeyTask(a.UID))
|
|
|
|
|
}()
|
|
|
|
|
con := call.GetConfigTaskByTaskID(req.TaskID)
|
|
|
|
|
if con == nil {
|
|
|
|
|
a.Code = values.CodeRetry
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
task, err := call.GetUserTaskDataByTaskID(a.UID, req.TaskID)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Error("get task data err, %s ", err.Error())
|
|
|
|
|
a.Code = values.CodeRetry
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if task.ID == 0 {
|
|
|
|
|
a.Code = values.CodeRetry
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if task.TaskValue < int(con.Target) {
|
|
|
|
|
a.Code = values.CodeParam
|
|
|
|
|
a.Msg = "Task not complete."
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
err = db.Mysql().Update(&common.TaskData{ID: task.ID}, map[string]interface{}{
|
|
|
|
|
"task_status": 2,
|
|
|
|
|
"updated_at": time.Now(),
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Error("update task status err, %s", err.Error())
|
|
|
|
|
a.Code = values.CodeRetry
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
reward = con.Reward
|
|
|
|
|
if reward == 0 {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
_, err = call.UpdateCurrencyPro(&common.UpdateCurrency{
|
|
|
|
|
CurrencyBalance: &common.CurrencyBalance{
|
|
|
|
|
UID: a.UID,
|
|
|
|
|
Value: 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
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func DrawTask(c *gin.Context) {
|
|
|
|
|
a := app.NewApp(c)
|
|
|
|
|
defer func() {
|
|
|
|
|
a.Response()
|
|
|
|
|
}()
|
|
|
|
|
req := &DrawTaskReq{}
|
|
|
|
|
if !a.S(req) {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
resp := &DrawTaskResp{
|
|
|
|
|
TaskID: req.TaskID,
|
|
|
|
|
Award: TaskComplete(a, req),
|
|
|
|
|
}
|
|
|
|
|
a.Data = resp
|
|
|
|
|
num := 0
|
|
|
|
|
for _, task := range GetUserTaskStatus(a) {
|
|
|
|
|
if task.Status == 1 {
|
|
|
|
|
num++
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
call.PushRed(a.UID, pb.RedPointModule_RedPointTaskDraw, uint32(num))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type JoinChannelReq struct {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func JoinChannel(c *gin.Context) {
|
|
|
|
|
a := app.NewApp(c)
|
|
|
|
|
defer func() {
|
|
|
|
|
a.Response()
|
|
|
|
|
}()
|
|
|
|
|
req := &JoinChannelReq{}
|
|
|
|
|
if !a.S(req) {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
uid := a.UID
|
|
|
|
|
call.CheckTask(call.Task{
|
|
|
|
|
Uid: uid,
|
|
|
|
|
Value: 1,
|
|
|
|
|
Types: []common.TaskType{common.TaskTypeJoinChannel},
|
|
|
|
|
})
|
|
|
|
|
}
|