|
@@ -57,21 +57,32 @@ func (l *CronTask) computeHistoricalStatistic() {
|
|
|
|
|
|
// 获取当前时间
|
|
// 获取当前时间
|
|
//now := time.Now()
|
|
//now := time.Now()
|
|
- start := time.Date(2024, 12, 25, 0, 0, 0, 0, time.Local)
|
|
|
|
- end := time.Date(2025, 4, 27, 23, 0, 0, 0, time.Local)
|
|
|
|
- //start := time.Date(2025, 3, 18, 0, 0, 0, 0, time.Local)
|
|
|
|
- //end := time.Date(2025, 3, 19, 23, 0, 0, 0, time.Local)
|
|
|
|
|
|
+ start := time.Date(2024, 11, 24, 0, 0, 0, 0, time.Local)
|
|
|
|
+ end := time.Date(2025, 5, 9, 0, 0, 0, 0, time.Local)
|
|
|
|
|
|
for now := start; !now.After(end); now = now.Add(time.Hour) {
|
|
for now := start; !now.After(end); now = now.Add(time.Hour) {
|
|
fmt.Println(now.Format("2006-01-02 15:00:00"))
|
|
fmt.Println(now.Format("2006-01-02 15:00:00"))
|
|
|
|
|
|
// 获取本小时的第一分钟
|
|
// 获取本小时的第一分钟
|
|
- currentHour := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
|
|
|
|
|
|
+ currentHour := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()).Add(-8 * time.Hour)
|
|
currentHourInt, _ := strconv.Atoi(currentHour.Format("2006010215"))
|
|
currentHourInt, _ := strconv.Atoi(currentHour.Format("2006010215"))
|
|
|
|
+ currentHourLocation := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
|
|
|
|
+ currentHourIntLocation, _ := strconv.Atoi(currentHourLocation.Format("2006010215"))
|
|
|
|
|
|
// 上一个小时的起始时间
|
|
// 上一个小时的起始时间
|
|
lastHour := currentHour.Add(-time.Hour * 1)
|
|
lastHour := currentHour.Add(-time.Hour * 1)
|
|
|
|
+ lastHourLocation := currentHourLocation.Add(-time.Hour * 1)
|
|
lastHourInt, _ := strconv.Atoi(lastHour.Format("2006010215"))
|
|
lastHourInt, _ := strconv.Atoi(lastHour.Format("2006010215"))
|
|
|
|
+ lastHourIntLocation, _ := strconv.Atoi(lastHourLocation.Format("2006010215"))
|
|
|
|
+
|
|
|
|
+ l.Logger.Infof("currentHour:%d\n", currentHour)
|
|
|
|
+ l.Logger.Infof("currentHourInt:%d\n", currentHourInt)
|
|
|
|
+ l.Logger.Infof("currentHourLocation:%d\n", currentHourLocation)
|
|
|
|
+ l.Logger.Infof("currentHourIntLocation:%d\n", currentHourIntLocation)
|
|
|
|
+ l.Logger.Infof("lastHour:%d\n", lastHour)
|
|
|
|
+ l.Logger.Infof("lastHourLocation:%d\n", lastHourLocation)
|
|
|
|
+ l.Logger.Infof("lastHourInt:%d\n", lastHourInt)
|
|
|
|
+ l.Logger.Infof("lastHourIntLocation:%d\n", lastHourIntLocation)
|
|
|
|
|
|
var allHourConsumeCoinFloat float64
|
|
var allHourConsumeCoinFloat float64
|
|
for orgID, wxinfos := range wxbotsSet {
|
|
for orgID, wxinfos := range wxbotsSet {
|
|
@@ -85,6 +96,7 @@ func (l *CronTask) computeHistoricalStatistic() {
|
|
// 计算积分消耗
|
|
// 计算积分消耗
|
|
consumeCoinFloat, _ = l.svcCtx.DB.UsageDetail.Query().Where(
|
|
consumeCoinFloat, _ = l.svcCtx.DB.UsageDetail.Query().Where(
|
|
usagedetail.BotID(wxinfo),
|
|
usagedetail.BotID(wxinfo),
|
|
|
|
+ usagedetail.OrganizationIDEQ(orgID),
|
|
usagedetail.CreatedAtGTE(lastHour),
|
|
usagedetail.CreatedAtGTE(lastHour),
|
|
usagedetail.CreatedAtLT(currentHour),
|
|
usagedetail.CreatedAtLT(currentHour),
|
|
).Aggregate(ent.Sum("credits")).Float64(l.ctx)
|
|
).Aggregate(ent.Sum("credits")).Float64(l.ctx)
|
|
@@ -96,25 +108,31 @@ func (l *CronTask) computeHistoricalStatistic() {
|
|
logx.Info("hour orgHourConsumeCoinFloat: ", orgHourConsumeCoinFloat)
|
|
logx.Info("hour orgHourConsumeCoinFloat: ", orgHourConsumeCoinFloat)
|
|
|
|
|
|
_, err := l.svcCtx.DB.UsageStatisticHour.Update().
|
|
_, err := l.svcCtx.DB.UsageStatisticHour.Update().
|
|
- Where(usagestatistichour.AddtimeEQ(uint64(lastHourInt)), usagestatistichour.BotIDEQ(wxinfo), usagestatistichour.OrganizationIDEQ(orgID)).
|
|
|
|
|
|
+ Where(usagestatistichour.AddtimeEQ(uint64(lastHourIntLocation)), usagestatistichour.BotIDEQ(wxinfo), usagestatistichour.OrganizationIDEQ(orgID)).
|
|
SetConsumeCoin(consumeCoinFloat).
|
|
SetConsumeCoin(consumeCoinFloat).
|
|
Save(l.ctx)
|
|
Save(l.ctx)
|
|
- l.Errorf("save hour data error:%v \n", err)
|
|
|
|
|
|
+ if err != nil {
|
|
|
|
+ l.Errorf("save hour data error:%v \n", err)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
_, err = l.svcCtx.DB.UsageStatisticHour.Update().
|
|
_, err = l.svcCtx.DB.UsageStatisticHour.Update().
|
|
- Where(usagestatistichour.AddtimeEQ(uint64(lastHourInt)), usagestatistichour.OrganizationIDEQ(orgID), usagestatistichour.BotIDEQ("")).
|
|
|
|
|
|
+ Where(usagestatistichour.AddtimeEQ(uint64(lastHourIntLocation)), usagestatistichour.OrganizationIDEQ(orgID), usagestatistichour.BotIDEQ("")).
|
|
SetConsumeCoin(orgHourConsumeCoinFloat).
|
|
SetConsumeCoin(orgHourConsumeCoinFloat).
|
|
Save(l.ctx)
|
|
Save(l.ctx)
|
|
- l.Errorf("save hour data error:%v \n", err)
|
|
|
|
|
|
+ if err != nil {
|
|
|
|
+ l.Errorf("save hour data error:%v \n", err)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
// 先判断该租户是否已经统计了小时数据,如果已经统计了,就不需要再统计了
|
|
// 先判断该租户是否已经统计了小时数据,如果已经统计了,就不需要再统计了
|
|
_, err = l.svcCtx.DB.UsageStatisticHour.Update().
|
|
_, err = l.svcCtx.DB.UsageStatisticHour.Update().
|
|
- Where(usagestatistichour.AddtimeEQ(uint64(lastHourInt)), usagestatistichour.OrganizationIDEQ(0), usagestatistichour.BotIDEQ("")).
|
|
|
|
|
|
+ Where(usagestatistichour.AddtimeEQ(uint64(lastHourIntLocation)), usagestatistichour.OrganizationIDEQ(0), usagestatistichour.BotIDEQ("")).
|
|
SetConsumeCoin(allHourConsumeCoinFloat).
|
|
SetConsumeCoin(allHourConsumeCoinFloat).
|
|
Save(l.ctx)
|
|
Save(l.ctx)
|
|
- l.Errorf("save hour data error:%v \n", err)
|
|
|
|
|
|
+ if err != nil {
|
|
|
|
+ l.Errorf("save hour data error:%v \n", err)
|
|
|
|
+ }
|
|
|
|
|
|
/*
|
|
/*
|
|
计算日数据
|
|
计算日数据
|