239 lines
6.9 KiB
Go
239 lines
6.9 KiB
Go
package taskctrl
|
|
|
|
import (
|
|
"91porn-server/models/v/taskmod"
|
|
"fmt"
|
|
"sync"
|
|
|
|
"91porn-server/app/service/activityclient"
|
|
"91porn-server/app/service/taskser"
|
|
"91porn-server/common"
|
|
"91porn-server/common/log"
|
|
"91porn-server/common/stderr"
|
|
"91porn-server/models/v/usermod"
|
|
"91porn-server/models/v/walletmod"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
/*
|
|
// 获取任务列表
|
|
func GetTaskList(c *gin.Context) {
|
|
uid, err := common.GetUID(c)
|
|
if err != nil {
|
|
common.ServeJSON(c, stderr.ErrNoToken, nil)
|
|
return
|
|
}
|
|
data, code := taskser.GetTaskList(uid)
|
|
if code != stderr.Success {
|
|
common.ServeJSON(c, code, nil)
|
|
return
|
|
}
|
|
common.ServeJSON(c, stderr.Success, data)
|
|
}
|
|
|
|
// 获取任务详情
|
|
func GetTaskDetails(c *gin.Context) {
|
|
uid, err := common.GetUID(c)
|
|
if err != nil {
|
|
common.ServeJSON(c, stderr.ErrNoToken, nil)
|
|
return
|
|
}
|
|
log.Info("GetTaskDetails start", log.Any("uid", uid))
|
|
var params struct {
|
|
Type int `form:"type" binding:"required,min=3"`
|
|
}
|
|
if err = c.ShouldBindQuery(¶ms); err != nil {
|
|
common.ServeJSON(c, stderr.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
log.Info("GetTaskDetails start", log.Any("uid", uid), log.Any("params", params))
|
|
data, code := taskser.GetTaskDetails(uid, params.Type)
|
|
if code != stderr.Success {
|
|
common.ServeJSON(c, code, nil)
|
|
return
|
|
}
|
|
common.ServeJSON(c, stderr.Success, data)
|
|
}
|
|
|
|
// 领取宝箱奖励
|
|
func GetBoon(c *gin.Context) {
|
|
uid, err := common.GetUID(c)
|
|
if err != nil {
|
|
common.ServeJSON(c, stderr.ErrNoToken, nil)
|
|
return
|
|
}
|
|
log.InfoX(c, "GetJewelBoxPrize start", log.Any("uid", uid))
|
|
var params struct {
|
|
ID string `json:"id"`
|
|
Type int `json:"type"`
|
|
}
|
|
if err = c.ShouldBindJSON(¶ms); err != nil {
|
|
common.ServeJSON(c, stderr.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
log.InfoX(c, "GetJewelBoxPrize start", log.Any("uid", uid), log.Any("params", params))
|
|
if code := taskser.GetBoon(c, uid, params.ID, params.Type); code != stderr.Success {
|
|
common.ServeJSON(c, code, nil)
|
|
return
|
|
}
|
|
common.ServeJSON(c, stderr.Success, "success")
|
|
}
|
|
*/
|
|
|
|
// GetNewTask doc
|
|
// @Summary 任务列表
|
|
// @Description 任务列表
|
|
// @Tags 福利任务
|
|
// @Accept mpfd,json
|
|
// @Produce json,html
|
|
// @Success 200 {object} taskser.NewTaskResponse "{"msg": "操作成功"}"
|
|
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
|
// @Router /app/task/list [post]
|
|
func GetNewTask(c *gin.Context) {
|
|
uid, err := common.GetUID(c)
|
|
if err != nil {
|
|
common.ServeJSON(c, stderr.ErrNoToken, nil)
|
|
return
|
|
}
|
|
|
|
var user *usermod.User
|
|
var wallet *walletmod.Wallet
|
|
user, _ = usermod.FindUserByUID(uid)
|
|
if user != nil {
|
|
wallet, _ = walletmod.GetWallet(uid)
|
|
}
|
|
|
|
var dailyTasks []taskser.DailyTaskResponse
|
|
var onceTasks []taskser.OnceTaskResponse
|
|
var growthTasks []*taskser.GrowthTaskResponse
|
|
var dailyTaskCode, onceTaskCode, growthCode stderr.Code
|
|
var dailyTaskMsg, onceTaskMsg, growthTaskMsg string
|
|
wg := sync.WaitGroup{}
|
|
wg.Add(3)
|
|
common.Go(func() {
|
|
defer wg.Done()
|
|
dailyTasks, dailyTaskCode, dailyTaskMsg = taskser.GetDailyTask(uid)
|
|
})
|
|
common.Go(func() {
|
|
defer wg.Done()
|
|
onceTasks, onceTaskCode, onceTaskMsg = taskser.GetOnceTask(uid)
|
|
})
|
|
common.Go(func() {
|
|
defer wg.Done()
|
|
growthTasks, growthCode, growthTaskMsg = taskser.GetGrowthTask(uid)
|
|
})
|
|
wg.Wait()
|
|
if dailyTaskCode != stderr.Success {
|
|
common.ServeJSON(c, dailyTaskCode, dailyTaskMsg)
|
|
return
|
|
}
|
|
if onceTaskCode != stderr.Success {
|
|
common.ServeJSON(c, onceTaskCode, onceTaskMsg)
|
|
return
|
|
}
|
|
if growthCode != stderr.Success {
|
|
common.ServeJSON(c, growthCode, growthTaskMsg)
|
|
return
|
|
}
|
|
|
|
// 按 Link 中的 type 推导倒计时类型。CountdownType=1 (红包雨) 但活动服无可用场次时,过滤该任务。
|
|
filteredDailyTasks := make([]taskser.DailyTaskResponse, 0, len(dailyTasks))
|
|
for i := range dailyTasks {
|
|
start, end, ctype, ok := activityclient.ResolveCountdownByLink(dailyTasks[i].Link)
|
|
if !ok {
|
|
continue
|
|
}
|
|
dailyTasks[i].StartAt = start
|
|
dailyTasks[i].EndAt = end
|
|
dailyTasks[i].CountdownType = ctype
|
|
dailyTasks[i].Link = activityclient.ReplaceActivityDomain(dailyTasks[i].Link, user, wallet)
|
|
filteredDailyTasks = append(filteredDailyTasks, dailyTasks[i])
|
|
}
|
|
dailyTasks = filteredDailyTasks
|
|
|
|
filteredOnceTasks := make([]taskser.OnceTaskResponse, 0, len(onceTasks))
|
|
for i := range onceTasks {
|
|
start, end, ctype, ok := activityclient.ResolveCountdownByLink(onceTasks[i].Link)
|
|
if !ok {
|
|
continue
|
|
}
|
|
onceTasks[i].StartAt = start
|
|
onceTasks[i].EndAt = end
|
|
onceTasks[i].CountdownType = ctype
|
|
onceTasks[i].Link = activityclient.ReplaceActivityDomain(onceTasks[i].Link, user, wallet)
|
|
filteredOnceTasks = append(filteredOnceTasks, onceTasks[i])
|
|
}
|
|
onceTasks = filteredOnceTasks
|
|
|
|
common.ServeJSON(c, stderr.Success, taskser.NewTaskResponse{
|
|
DailyTasks: dailyTasks,
|
|
OnceTasks: onceTasks,
|
|
GrowthTasks: growthTasks,
|
|
})
|
|
}
|
|
|
|
// Receive doc
|
|
// @Summary 我的任务 - 领取积分
|
|
// @Description 领取积分
|
|
// @Tags 福利任务
|
|
// @Accept mpfd,json
|
|
// @Produce json,html
|
|
// @Param taskId formData string true "任务ID"
|
|
// @Param type formData int true "任务类型 1、每日任务 2、一次行任务"
|
|
// @Success 200 {string} json "{"msg": "操作成功"}"
|
|
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
|
// @Router /api/app/task/receive [post]
|
|
func Receive(c *gin.Context) {
|
|
uid, err := common.GetUID(c)
|
|
if err != nil {
|
|
common.ServeJSON(c, stderr.ErrNoToken, nil)
|
|
return
|
|
}
|
|
var in taskmod.ReceiveTaskReq
|
|
err = c.ShouldBindJSON(&in)
|
|
if err != nil {
|
|
log.Error(fmt.Sprintf("task Receive task param err:%v", err))
|
|
common.ServeJSON(c, stderr.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
code := taskser.ReceiveTask(uid, &in)
|
|
if code != stderr.Success {
|
|
common.ServeJSON(c, code, code.Error())
|
|
return
|
|
}
|
|
common.ServeJSON(c, stderr.Success, stderr.Success.Msg())
|
|
}
|
|
|
|
// Do doc
|
|
// @Summary 我的任务-做任务
|
|
// @Description 做任务
|
|
// @Tags 福利任务
|
|
// @Accept mpfd,json
|
|
// @Produce json,html
|
|
// @Param taskId formData string true "任务ID"
|
|
// @Param type formData int true "任务类型 1、每日任务 2、一次行任务"
|
|
// @Success 200 {string} json "{"msg": "操作成功"}"
|
|
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
|
// @Router /api/app/task/do [post]
|
|
func Do(c *gin.Context) {
|
|
uid, err := common.GetUID(c)
|
|
if err != nil {
|
|
common.ServeJSON(c, stderr.ErrNoToken, nil)
|
|
return
|
|
}
|
|
var in taskmod.DoTaskReq
|
|
err = c.ShouldBindJSON(&in)
|
|
if err != nil {
|
|
log.Error(fmt.Sprintf("task do task param err:%v", err))
|
|
common.ServeJSON(c, stderr.ErrParamError, err.Error())
|
|
return
|
|
}
|
|
code := taskser.DoTask(uid, &in)
|
|
if code != stderr.Success {
|
|
common.ServeJSON(c, code, code.Error())
|
|
return
|
|
}
|
|
common.ServeJSON(c, stderr.Success, stderr.Success.Msg())
|
|
}
|