Files
2026-05-20 16:13:58 +08:00

250 lines
6.5 KiB
Go

package skd
import (
"context"
"fmt"
"github.com/360EntSecGroup-Skylar/excelize"
"go.mongodb.org/mongo-driver/bson"
"os"
"stat/api/proto"
"stat/common/log"
"stat/common/utils"
"stat/models/appInfoMod"
"stat/models/dailystatmod"
"stat/service/botser"
"stat/service/innerserverser"
"stat/skd/job/advertisejob"
"stat/statg"
"stat/tool/pubtest"
"testing"
"time"
)
func TestTime1(t *testing.T) {
loc, _ := time.LoadLocation("Asia/Shanghai")
tc, _ := time.ParseInLocation(time.DateTime, "2024-07-22 00:00:00", loc)
t1 := tc.UTC()
t.Log(t1.String())
}
func TestStart(t *testing.T) {
s, _ := time.Parse(time.RFC3339, "2023-06-08T00:00:00+08:00")
t.Log("ORI", s)
t.Log("UTC:", s.UTC())
//time.Local, _ = time.LoadLocation("Asia/Shanghai")
localCST, _ := time.LoadLocation("Asia/Shanghai")
t.Log(s.In(localCST))
t.Log(s.In(time.Local))
t.Log(fmt.Sprintf("统计时间:[%s]\n", s.Format("2006-01-02T15:04:05")))
s = time.Now()
t.Log(fmt.Sprintf("统计时间:[%s]\n", s.Format("2006-01-02T15:04:05")))
s = utils.RecentMinute(s, 60)
t.Log(fmt.Sprintf("统计时间:[%s]\n", s.Format("2006-01-02T15:04:05")))
}
func TestTg(t *testing.T) {
pubtest.TestInit("/Users/mac/Desktop/madou/stat_center")
// 机器人初始化
statg.InitBot()
// 启动机器人
botser.StartBot()
advertisejob.AdvertiseExpireSend()
}
func DocExsit(path string) bool {
_, err := os.Stat(path)
if err != nil {
if os.IsExist(err) {
return true
}
return false
}
return true
}
func TestExel(t *testing.T) {
filePath := "/usr/local" + "/bakexel/"
if !DocExsit(filePath) {
err := os.Mkdir(filePath, os.ModePerm)
if err != nil {
fmt.Println(err)
}
}
pubtest.TestInit("/Users/mac/Desktop/madou/stat_center")
ctx := context.Background()
f := excelize.NewFile()
sheetName := "Sheet1"
// 设置列宽
f.SetColWidth("Sheet1", "A", "L", 23)
// 设置表头行高
f.SetRowHeight("Sheet1", 1, 25)
// 设置表头样式
headStyleID, _ := f.NewStyle(`{
"font":{
"color":"#333333",
"bold":true,
"size":16,
"family":"arial"
},
"alignment":{
"vertical":"center",
"horizontal":"center",
"wrap_text":true
}
}`)
f.SetCellStyle("Sheet1", "A1", "L1", headStyleID)
idx := f.NewSheet(sheetName)
var exportTransWaterTitle = map[string]string{
"A1": "产品",
"B1": "归属",
"C1": "日期",
"D1": "日活跃",
"E1": "日注册",
"F1": "视频日充值",
"G1": "棋牌日充值",
"H1": "交易笔数",
}
for k, v := range exportTransWaterTitle {
f.SetCellValue(sheetName, k, v)
}
appinfo, serr := appInfoMod.GetAllAppIdMap(ctx, bson.M{})
if serr != nil {
log.Error("rechargebot appInfoMod.GetAllAppInfo", log.Any("serr", serr))
return
}
list := make([]*dailystatmod.DailyStatMod, 0)
yesterday := utils.BeginOfYesterday()
//day := utils.BeginOfToday()
for _, info := range appinfo {
data, serr := dailystatmod.FindOneDailyStat(ctx, info.AppId, yesterday)
if serr != nil {
log.Error("rechargebot dailystatmod.GetDailyStatTotalList", log.Any("serr", serr))
}
/*if len(rechargelist) != 1 {
log.Error("rechargebot dailystatmod.GetDailyStatTotalList",
log.Any("len(rechargelist)", len(rechargelist)), log.Any("appid", info.AppId),
log.Any("yesterday", yesterday), log.Any("day", day))
continue
}
*/
list = append(list, &data)
}
for k, v := range list {
i := 'A' // i 不能超过Z,即列输不能超过26列,超出将出现bug
name := ""
if info, ok := appinfo[v.AppId]; ok {
name = info.Name
}
f.SetCellValue(sheetName, fmt.Sprintf("%s%d", string(i), k+2), name) //名称
i++
if v.AppId == 888 {
f.SetCellValue(sheetName, fmt.Sprintf("%s%d", string(i), k+2), "集团") //归属
} else {
f.SetCellValue(sheetName, fmt.Sprintf("%s%d", string(i), k+2), "app") //归属
}
i++
f.SetCellValue(sheetName, fmt.Sprintf("%s%d",
string(i), k+2), yesterday.Format("2006-02-01")) //时间
i++
f.SetCellValue(sheetName, fmt.Sprintf("%s%d", string(i), k+2), v.TotalVisitCount) //日活跃
i++
f.SetCellValue(sheetName, fmt.Sprintf("%s%d", string(i), k+2), v.NewTotalCount) //日注册
i++
totalamount := fmt.Sprintf("%.2f", float64(v.TotalAmount)*0.0001)
f.SetCellValue(sheetName, fmt.Sprintf("%s%d",
string(i), k+2), totalamount) //视频日充值
i++
if v.AppId == 888 {
f.SetCellValue(sheetName, fmt.Sprintf("%s%d",
string(i), k+2), v.GameRechageAmount) //棋牌日充值
}
i++
f.SetCellValue(sheetName, fmt.Sprintf("%s%d",
string(i), k+2), v.SuccessRechargeOrder) //交易笔数
}
f.SetActiveSheet(idx)
fileName := filePath + utils.BeginOfToday().Format("2006-01-02") + "充值" + ".xlsx"
if err := f.SaveAs(fileName); err != nil {
log.Error("redeemCodeExport:export save file to disk failed",
log.Any("fileName", fileName),
log.E(err))
}
//statg.Bot.SendAdvsSendMessage()
}
func TestExel0(t *testing.T) {
pubtest.TestInit("/Users/mac/Desktop/madou/stat_center")
list := make([]*proto.InnerDailyRecharge, 0)
for id, info := range statg.Conf.InnerServers {
if id == statg.ServerIndexBili {
continue
}
if id != statg.ServerIndexBili && info == "" {
log.Error("statg.Conf.InnerServers server not found",
log.Any("statg.Conf.InnerServers", id))
continue
}
req := &proto.InnerRechargeReq{
InnerId: int32(id),
}
res := &proto.InnerDailyRechargeResp{}
err := innerserverser.InnerRequest(info+"/api/stat/inner/recharge/list", req, res)
if err != nil {
log.Error("InnerServerDailyStat InnerRequest",
log.Any("InnerRequest", err))
continue
}
if res == nil {
log.Error("InnerServerDailyStat InnerRequest data not found")
continue
}
if res.Data.List != nil && len(res.Data.List) > 0 {
list = append(list, res.Data.List...)
}
}
log.Info("list", log.Any("list", list))
}
func TestExel1(t *testing.T) {
pubtest.TestInit("/Users/mac/Desktop/madou/stat_center")
// 机器人初始化
statg.InitBot()
// 启动机器人
botser.StartBot()
err := innerserverser.InnerServerDailyStat(context.Background())
fmt.Println(err)
}
func TestExelmonth(t *testing.T) {
pubtest.TestInit("/Users/mac/Desktop/madou/stat_center")
// 机器人初始化
statg.InitBot()
// 启动机器人
botser.StartBot()
list := make([]*proto.InnerDailyRecharge, 0)
ctx := context.Background()
err := innerserverser.InnerServerDailyStat(context.Background())
err = innerserverser.InnerServerMonthStat(ctx, nil, nil)
if err != nil {
log.Error("err", log.Any("err", err))
}
log.Info("list", log.Any("list", list))
time.Sleep(10 * time.Second)
}
func TestExelbotmonth(t *testing.T) {
}