250 lines
6.5 KiB
Go
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) {
|
|
}
|