|
|
@@ -15,6 +15,7 @@ import (
|
|
|
"math"
|
|
|
"math/rand"
|
|
|
"strconv"
|
|
|
+ "strings"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
@@ -29,19 +30,19 @@ var AccountType = map[int]string{
|
|
|
}
|
|
|
|
|
|
var LoginMethod = map[int]string{
|
|
|
- 1: "小绵羊登录",
|
|
|
- 2: "魅族账号登录",
|
|
|
- 3: "QQ账号登录",
|
|
|
- 4: "网易账号登录",
|
|
|
- 5: "微信授权登录",
|
|
|
- 6: "微信+QQ授权登录",
|
|
|
+ 1: "小绵羊",
|
|
|
+ 2: "魅族",
|
|
|
+ 3: "QQ",
|
|
|
+ 4: "网易",
|
|
|
+ 5: "微信",
|
|
|
+ 6: "微信+QQ",
|
|
|
}
|
|
|
var GamePort = map[int]string{
|
|
|
- 1: "腾讯游戏",
|
|
|
- 2: "360游戏",
|
|
|
- 3: "网易游戏",
|
|
|
- 4: "酷派游戏",
|
|
|
- 5: "魅族游戏",
|
|
|
+ 1: "腾讯",
|
|
|
+ 2: "360",
|
|
|
+ 3: "网易",
|
|
|
+ 4: "酷派",
|
|
|
+ 5: "魅族",
|
|
|
}
|
|
|
|
|
|
var (
|
|
|
@@ -122,14 +123,17 @@ func (s *GameTask) CreateGameTargetCompleteModel(oldA task.GameTask, date time.T
|
|
|
var retainedTarget int
|
|
|
rand.Seed(time.Now().UnixNano())
|
|
|
retainedTargetRate := rand.Float64()
|
|
|
- if oldA.NewTarget < 100 {
|
|
|
- newTarget = oldA.NewTarget
|
|
|
+ if oldA.RetainedTarget < 100 {
|
|
|
+ retainedTarget = oldA.RetainedTarget
|
|
|
} else {
|
|
|
- newTarget = 200
|
|
|
+ retainedTarget = 200
|
|
|
}
|
|
|
targetComplete := new(task.GameTargetComplete)
|
|
|
targetComplete.TaskId = oldA.TaskId
|
|
|
targetComplete.NewTarget = oldA.NewTarget + int(math.Ceil(newTargetRate*float64(newTarget)))
|
|
|
+ if oldA.NewTarget == 0 {
|
|
|
+ targetComplete.NewTarget = 0
|
|
|
+ }
|
|
|
targetComplete.RetainedTarget = oldA.RetainedTarget + int(math.Ceil(retainedTargetRate*float64(retainedTarget)))
|
|
|
targetComplete.PayTarget = 0
|
|
|
targetComplete.CreateDate = date
|
|
|
@@ -228,22 +232,22 @@ func (apiService *GameTask) GetGameTaskInfoList(api task.GameTask, info request.
|
|
|
db = db.Where("status = ?", api.Status)
|
|
|
}
|
|
|
|
|
|
- err = db.Count(&total).Error
|
|
|
-
|
|
|
+ if api.TaskId != 0 {
|
|
|
+ db = db.Where("task_id = ?", api.TaskId)
|
|
|
+ }
|
|
|
|
|
|
+ err = db.Count(&total).Error
|
|
|
|
|
|
//查找厂商名称,登录类型名称、账号类型名称
|
|
|
option := task.Option{}
|
|
|
- global.GVA_DB.Table("game_channel").Select("id","channel_name").Find(&option.GamePortOptions)
|
|
|
+ global.GVA_DB.Table("game_channel").Select("id", "channel_name").Find(&option.GamePortOptions)
|
|
|
global.GVA_DB.Table("login_type").Select("id", "login_name").Find(&option.LoginTypeOptions)
|
|
|
global.GVA_DB.Table("account_type").Select("id", "type_name").Find(&option.AccountTypeOptions)
|
|
|
global.GVA_DB.Table("game_list").Select("id", "game_name").Find(&option.GameListOptions)
|
|
|
//fmt.Println(option)
|
|
|
|
|
|
-
|
|
|
-
|
|
|
if err != nil {
|
|
|
- return apiList, option , total, err
|
|
|
+ return apiList, option, total, err
|
|
|
} else {
|
|
|
db = db.Limit(limit).Offset(offset)
|
|
|
if order != "" {
|
|
|
@@ -297,7 +301,7 @@ func (apiService *GameTask) GetGameTaskInfoList(api task.GameTask, info request.
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- return apisReply, option, total, err
|
|
|
+ return apisReply, option, total, err
|
|
|
}
|
|
|
|
|
|
//@author: [piexlmax](https://github.com/piexlmax)
|
|
|
@@ -475,3 +479,147 @@ func (s *GameTask) DeleteGameTask(api request.GameTaskRequest) (err error) {
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+//@function: GetGameTaskTargetInfoList
|
|
|
+//@description: 分页获取数据,
|
|
|
+//@param: card card.Card, info request.PageInfo, order string, desc bool
|
|
|
+//@return: list interface{}, total int64, err error
|
|
|
+func (apiService *GameTask) GetGameTaskTargetInfoList(api request.GameTargetCompleteRequest, info request.PageInfo, order string, desc bool) (list interface{}, total int64, err error) {
|
|
|
+ limit := info.PageSize
|
|
|
+ offset := info.PageSize * (info.Page - 1)
|
|
|
+ if api.CreateDate == "" {
|
|
|
+ api.CreateDate = time.Now().Format("2006-01-02")
|
|
|
+ }
|
|
|
+ db := global.GVA_DB.Table("game_target_complete gtc")
|
|
|
+ db = db.Select("gtc.id,gtc.task_id,gt.task_name,gtc.new_target,gt.login_method,gt.user,gtc.pay_target,gtc.retained_target," +
|
|
|
+ "gtc.new_complete,gtc.pay_complete,gtc.retained_complete,gtc.create_date,gtc.amount,gtc.game_rate,gtc.is_complete")
|
|
|
+ db = db.Joins("left join game_task gt on gt.task_id = gtc.task_id")
|
|
|
+ db = db.Where("gtc.create_date = ?", api.CreateDate)
|
|
|
+ var apiList []response.GetGameTargetComplete
|
|
|
+ if api.TaskName != "" {
|
|
|
+ db = db.Where("gt.task_name LIKE ?", "%"+api.TaskName+"%")
|
|
|
+ }
|
|
|
+ if api.User != "" {
|
|
|
+ db = db.Where("gt.user LIKE ?", "%"+api.User+"%")
|
|
|
+ }
|
|
|
+ if api.TaskId != 0 {
|
|
|
+ db = db.Where("gtc.task_id = ?", api.TaskId)
|
|
|
+ }
|
|
|
+ err = db.Count(&total).Error
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ return apiList, total, err
|
|
|
+ } else {
|
|
|
+ db = db.Limit(limit).Offset(offset)
|
|
|
+ if order != "" {
|
|
|
+ var OrderStr string
|
|
|
+ // 设置有效排序key 防止sql注入
|
|
|
+ // 感谢 Tom4t0 提交漏洞信息
|
|
|
+ orderMap := make(map[string]bool, 4)
|
|
|
+ orderMap["task_name"] = true
|
|
|
+ orderMap["user"] = true
|
|
|
+ if orderMap[order] {
|
|
|
+ if desc {
|
|
|
+ OrderStr = "gt." + order + " desc"
|
|
|
+ } else {
|
|
|
+ OrderStr = order
|
|
|
+ }
|
|
|
+ } else { // didn't matched any order key in `orderMap`
|
|
|
+ err = fmt.Errorf("非法的排序字段: %v", order)
|
|
|
+ return apiList, total, err
|
|
|
+ }
|
|
|
+
|
|
|
+ err = db.Order(OrderStr).Find(&apiList).Error
|
|
|
+ } else {
|
|
|
+ err = db.Order("gtc.id desc").Find(&apiList).Error
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(apiList) != 0 {
|
|
|
+ for i, api := range apiList {
|
|
|
+ date := strings.Split(api.CreateDate, "T")
|
|
|
+ loginMethod, _ := strconv.Atoi(api.LoginMethod)
|
|
|
+ apiList[i].LoginMethod = LoginMethod[loginMethod]
|
|
|
+ apiList[i].CreateDate = date[0]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return apiList, total, err
|
|
|
+}
|
|
|
+
|
|
|
+//@function: GetGameTaskTargetById
|
|
|
+//@description: 根据id获取GameTargetComplete
|
|
|
+//@param: id uint
|
|
|
+//@return: apiReply response.GetPcListReply, err error
|
|
|
+func (c *GameTask) GetGameTaskTargetById(id int, date string) (api response.GetGameTargetComplete, err error) {
|
|
|
+ db := global.GVA_DB.Table("game_target_complete gtc")
|
|
|
+ db = db.Select("gtc.task_id,gt.task_name,gtc.new_target,gt.login_method,gt.user,gtc.pay_target,gtc.retained_target," +
|
|
|
+ "gtc.new_complete,gtc.pay_complete,gtc.retained_complete,gtc.create_date,gtc.amount,gtc.game_rate,gtc.is_complete")
|
|
|
+ db = db.Joins("left join game_task gt on gt.task_id = gtc.task_id")
|
|
|
+ db = db.Where("gtc.task_id = ?", id)
|
|
|
+ db = db.Where("gtc.create_date = ?", date)
|
|
|
+ err = db.Order("gtc.id desc").Find(&api).Error
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 更新GameTaskTarget
|
|
|
+func (s *GameTask) UpdateGameTaskTarget(requestData request.UpdateGameTaskTargetRequest) (err error) {
|
|
|
+ if errors.Is(global.GVA_DB.Where("task_id = ?", requestData.TaskId).Where("create_date = ?", requestData.CreateDate).First(&task.GameTargetComplete{}).Error, gorm.ErrRecordNotFound) {
|
|
|
+ return errors.New("不存在的任务")
|
|
|
+ }
|
|
|
+ gameTask := new(task.GameTargetComplete)
|
|
|
+ global.GVA_DB.Where("task_id = ?", requestData.TaskId).Where("create_date = ?", requestData.CreateDate).First(&gameTask)
|
|
|
+ //if gameTask.NewTarget > requestData.NewTarget && gameTask.RetainedTarget > requestData.RetainedTarget {
|
|
|
+ // return errors.New("任务目标不能小于当前目标")
|
|
|
+ //}
|
|
|
+ updateData := map[string]interface{}{
|
|
|
+ "new_target": requestData.NewTarget,
|
|
|
+ "retained_target": requestData.RetainedTarget,
|
|
|
+ }
|
|
|
+ err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
|
|
|
+ err = tx.Model(&task.GameTargetComplete{}).Where("task_id = ?", requestData.TaskId).Where("create_date = ?", requestData.CreateDate).Updates(updateData).Error
|
|
|
+ if err != nil {
|
|
|
+ global.GVA_LOG.Error("更新任务数据失败: ", zap.Error(err))
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return err
|
|
|
+ })
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (s *GameTask) TargetStatistics(date string) (apiList []control.TargetStatisticsReply, err error) {
|
|
|
+ db := global.GVA_DB.Table("game_target_complete gtc")
|
|
|
+ db = db.Select("gtc.task_id,gt.task_name,gtc.new_target,gt.login_method,gt.user,gtc.pay_target,gtc.retained_target," +
|
|
|
+ "gtc.new_complete,gtc.pay_complete,gtc.retained_complete,gtc.create_date,gt.tx_channel,gt.tx_game_id,gt.mz_channel," +
|
|
|
+ "gt.game_id_xmy,gt.mz_game_id,gt.game_port_id,gt.game_id,gt.game_name")
|
|
|
+ db = db.Joins("left join game_task gt on gt.task_id = gtc.task_id")
|
|
|
+ db = db.Where("gt.is_del = ?", -1)
|
|
|
+ db = db.Where("gt.status = ?", 1)
|
|
|
+ db = db.Where("gtc.create_date = ?", date)
|
|
|
+ var taskTarget []control.GetTargetStatisticsReply
|
|
|
+ err = db.Order("gtc.id desc").Find(&taskTarget).Error
|
|
|
+ if len(taskTarget) != 0 {
|
|
|
+ for _, target := range taskTarget {
|
|
|
+ var targetStatistics control.TargetStatisticsReply
|
|
|
+ targetStatistics.TaskId = target.TaskId
|
|
|
+ targetStatistics.TaskName = target.TaskName
|
|
|
+ targetStatistics.Date = date
|
|
|
+ targetStatistics.TargetActive = target.RetainedTarget
|
|
|
+ targetStatistics.TargetPay = target.PayTarget
|
|
|
+ targetStatistics.TargetNew = target.NewTarget
|
|
|
+ targetStatistics.CompleteNew = target.NewComplete
|
|
|
+ targetStatistics.CompleteActive = target.RetainedComplete
|
|
|
+ targetStatistics.CompletePay = target.PayComplete
|
|
|
+ targetStatistics.XmyId = target.GameIdXmy
|
|
|
+ targetStatistics.QqId = target.TxGameId
|
|
|
+ targetStatistics.QqChannel = target.TxChannel
|
|
|
+ targetStatistics.MeiZuGameId = target.MzGameId
|
|
|
+ targetStatistics.MeiZuChannel = target.MzChannel
|
|
|
+ targetStatistics.LoginMode = LoginMethod[target.LoginMethod]
|
|
|
+ targetStatistics.GamePort = GamePort[target.GamePortId]
|
|
|
+ targetStatistics.GameDirector = target.User
|
|
|
+ targetStatistics.GameId = target.GameId
|
|
|
+ targetStatistics.GameName = target.GameName
|
|
|
+ apiList = append(apiList, targetStatistics)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|