oldDataShow.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package dataStatistics
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/xuri/excelize/v2"
  6. "go.uber.org/zap"
  7. "log-server/global"
  8. "log-server/model/dataStatistics"
  9. "log-server/model/dataStatistics/request"
  10. )
  11. type ServiceOldDataShow struct {
  12. }
  13. func (s *ServiceOldDataShow) OldDataShowList(ctx context.Context, api request.OldDataShow2, info request.PageInfo, order string, desc bool) ([]*dataStatistics.OldDataShow, int64, error) {
  14. db := global.GVA_DB.Table("shuyou_game_target")
  15. db = db.Select("shuyou_game_target.id,shuyou_game_target.task_id,shuyou_game_target.task_name,shuyou_game_target.new_date," +
  16. "shuyou_game_target.target_new,shuyou_game_target.target_pay,shuyou_game_target.target_active,c.complete_new,c.complete_pay,c.complete_active," +
  17. "c.is_complete,c.amount,c.remark,h.complete_new_hand,h.complete_lc_hand,h.complete_pay_hand,h.amount_hand")
  18. db = db.Joins("left join shuyou_game_complete c on c.task_id = shuyou_game_target.task_id and c.new_date = shuyou_game_target.new_date")
  19. db = db.Joins("left join shuyou_game_complete_hand h on h.task_id = shuyou_game_target.task_id and h.new_date = shuyou_game_target.new_date")
  20. if api.TaskId != 0 {
  21. db = db.Where("shuyou_game_target.task_id = ?", api.TaskId)
  22. }
  23. if api.TaskName != "" {
  24. db = db.Where("shuyou_game_target.task_name like ?", "%"+api.TaskName+"%")
  25. }
  26. if len(api.NewDate) == 0 {
  27. api.NewDate = append(api.NewDate, "2023-02-22")
  28. api.NewDate = append(api.NewDate, "2023-02-22")
  29. }
  30. db = db.Where("shuyou_game_target.new_date >= ? and shuyou_game_target.new_date <= ?", api.NewDate[0], api.NewDate[1])
  31. var total int64
  32. err := db.Count(&total).Error
  33. //if err != nil {
  34. // return nil, 0, err
  35. //}
  36. limit := info.PageSize
  37. offset := info.PageSize * (info.Page - 1)
  38. //var statisticsLogs []*log.LogComputer
  39. var dateList []*dataStatistics.OldDataShow
  40. db = db.Limit(limit).Offset(offset)
  41. if order != "" {
  42. var OrderStr string
  43. // 设置有效排序key 防止sql注入
  44. // 感谢 Tom4t0 提交漏洞信息
  45. orderMap := make(map[string]bool, 3)
  46. orderMap["id"] = true
  47. //orderMap["game_id"] = true
  48. //orderMap["operator"] = true
  49. if orderMap[order] {
  50. if desc {
  51. OrderStr = order + " desc"
  52. } else {
  53. OrderStr = order + " desc"
  54. }
  55. } else { // didn't matched any order key in `orderMap`
  56. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  57. return dateList, total, err
  58. }
  59. err = db.Order(OrderStr).Find(&dateList).Error
  60. } else {
  61. err = db.Order("id").Find(&dateList).Error
  62. }
  63. if err != nil {
  64. return nil, 0, err
  65. }
  66. return dateList, total, err
  67. }
  68. func (s *ServiceOldDataShow) ParseInfoList2Excel(infoList []*dataStatistics.OldDataShow, filePath string) (err error) {
  69. excel := excelize.NewFile()
  70. err = excel.SetSheetRow("Sheet1", "A1", &[]string{"日期", "任务ID", "任务名称", "目标新增", "目标留存", "目标付费", "完成新增", "完成留存", "完成付费", "未完成新增", "未完成留存", "未完成付费", "手动付费数量", "手动付费金额", "异常记录", "总付费金额"})
  71. if err != nil {
  72. return err
  73. }
  74. for i, one := range infoList {
  75. axis := fmt.Sprintf("A%d", i+2)
  76. targetLc := one.TargetActive - one.TargetNew
  77. if targetLc < 0 {
  78. targetLc = 0
  79. }
  80. completeLc := one.CompleteActive - one.CompleteNew
  81. if completeLc < 0 {
  82. completeLc = 0
  83. }
  84. imcompleteNew := one.TargetNew - one.CompleteNew
  85. if targetLc < 0 {
  86. targetLc = 0
  87. }
  88. imcompleteLc := targetLc - (one.CompleteActive - one.CompleteNew)
  89. if targetLc < 0 {
  90. targetLc = 0
  91. }
  92. imcompletePay := one.TargetPay - one.CompletePay
  93. if targetLc < 0 {
  94. targetLc = 0
  95. }
  96. err = excel.SetSheetRow("Sheet1", axis, &[]interface{}{
  97. one.NewDate,
  98. one.TaskId,
  99. one.TaskName,
  100. one.TargetNew,
  101. targetLc,
  102. one.TargetPay,
  103. one.CompleteNew,
  104. completeLc,
  105. one.CompletePay,
  106. imcompleteNew,
  107. imcompleteLc,
  108. imcompletePay,
  109. one.CompletePayHand,
  110. one.AmountHand,
  111. one.Remark,
  112. one.Amount,
  113. })
  114. if err != nil {
  115. return err
  116. }
  117. }
  118. err = excel.SaveAs(filePath)
  119. return err
  120. }