| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- package dataStatistics
- import (
- "context"
- "fmt"
- _ "github.com/bitly/go-simplejson"
- "github.com/xuri/excelize/v2"
- "go.uber.org/zap"
- "log-server/global"
- "log-server/model/dataStatistics"
- "log-server/model/dataStatistics/request"
- "log-server/model/dataStatistics/response"
- //"time"
- )
- type ServiceWeChatScannerLedger struct {
- }
- //type WeChatGameInfo struct {
- // GameName string
- // LcPriceNew float64
- // LcPriceRetained float64
- // HmPriceNew float64
- // HmPriceRetained float64
- //}
- func (s *ServiceWeChatScannerLedger) WeChatScannerLedgerList(ctx context.Context, api dataStatistics.WeChatScannerLedger, info request.PageInfo, order string, desc bool) ([]*response.WeChatScannerLedgerResponse, int64, error) {
- db := global.GVA_DB.Model(&dataStatistics.WeChatScannerLedger{})
- //global.GVA_LOG.Info(api.NewDate)
- if api.NewDate != "" {
- db = db.Where("new_date = ?", api.NewDate)
- }
- if api.Platform != "" {
- db = db.Where("platform = ?", api.Platform)
- }
- var total int64
- err := db.Count(&total).Error
- if err != nil {
- return nil, 0, err
- }
- limit := info.PageSize
- offset := info.PageSize * (info.Page - 1)
- //var statisticsLogs []*log.LogComputer
- var apiList []*response.WeChatScannerLedgerResponse
- db = db.Limit(limit).Offset(offset)
- if order != "" {
- var OrderStr string
- // 设置有效排序key 防止sql注入
- // 感谢 Tom4t0 提交漏洞信息
- orderMap := make(map[string]bool, 3)
- orderMap["task_name"] = true
- //orderMap["game_id"] = true
- //orderMap["operator"] = true
- if orderMap[order] {
- if desc {
- OrderStr = order + " desc"
- } else {
- OrderStr = order + " desc"
- }
- } else { // didn't matched any order key in `orderMap`
- global.GVA_LOG.Error("获取失败!", zap.Error(err))
- return apiList, total, err
- }
- err = db.Order(OrderStr).Find(&apiList).Error
- } else {
- err = db.Order("task_name").Find(&apiList).Error
- }
- if err != nil {
- return nil, 0, err
- }
- var arrayResponse []*response.WeChatScannerLedgerResponse
- for _, e := range apiList {
- oneResponse := new(response.WeChatScannerLedgerResponse)
- oneResponse.Id = e.Id
- oneResponse.NewDate = e.NewDate
- oneResponse.Platform = e.Platform
- oneResponse.TaskId = e.TaskId
- oneResponse.TaskName = e.TaskName
- oneResponse.Ledger = e.Ledger
- oneResponse.LedgerNew = e.LedgerNew
- oneResponse.LedgerRetained = e.LedgerRetained
- oneResponse.UnitPriceNew = e.UnitPriceNew
- oneResponse.UnitPriceRetained = e.UnitPriceRetained
- arrayResponse = append(arrayResponse, oneResponse)
- }
- return arrayResponse, total, err
- }
- func (exa *ServiceWeChatScannerLedger) ParseInfoList2Excel(infoList []*response.WeChatScannerLedgerResponse, filePath string) error {
- excel := excelize.NewFile()
- err := excel.SetSheetRow("Sheet1", "A1", &[]string{"日期", "任务ID", "任务名称", "平台", "新增单价", "留存单价", "总消耗", "新增消耗", "留存消耗"})
- if err != nil {
- return err
- }
- for i, one := range infoList {
- axis := fmt.Sprintf("A%d", i+2)
- err = excel.SetSheetRow("Sheet1", axis, &[]interface{}{
- one.NewDate,
- one.TaskId,
- one.TaskName,
- one.Platform,
- one.UnitPriceNew,
- one.UnitPriceRetained,
- one.Ledger,
- one.LedgerNew,
- one.LedgerRetained,
- })
- if err != nil {
- return err
- }
- }
- err = excel.SaveAs(filePath)
- return err
- }
|