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) { }