boweniac 1 zi în urmă
părinte
comite
1d67c271dd

+ 8 - 5
crontask/compute_historical_credit.go

@@ -39,8 +39,8 @@ func (l *CronTask) computeHistoricalCredit() {
 	// 获取当前时间
 	//now := time.Now()
 	//start := time.Date(2024, 12, 25, 0, 0, 0, 0, time.Local)
-	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(2024, 11, 24, 0, 0, 0, 0, time.Local)
+	end := time.Date(2025, 5, 9, 0, 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)
 
@@ -64,6 +64,7 @@ func (l *CronTask) computeHistoricalCredit() {
 			// 计算积分消耗
 			usageDetails, _ := l.svcCtx.DB.UsageDetail.Query().Where(
 				usagedetail.BotID(wxinfo),
+				usagedetail.OrganizationIDEQ(orgID),
 				usagedetail.CreatedAtGTE(start),
 				usagedetail.CreatedAtLT(end),
 			).Order(ent.Desc(usagedetail.FieldCreatedAt)).All(l.ctx)
@@ -78,13 +79,15 @@ func (l *CronTask) computeHistoricalCredit() {
 				if hourDataCount == 0 {
 					balanceOrgSet[orgID] += usageDetail.Credits
 					_, err = l.svcCtx.DB.CreditUsage.Create().
-						SetNotNilNumber(&usageDetail.Credits).
+						SetNumber(usageDetail.Credits).
 						SetNtype(1).
 						SetTable("usage_detail").
 						SetOrganizationID(orgID).
 						SetNid(usageDetail.ID).
 						Save(l.ctx)
-					l.Errorf("save hour data error:%v \n", err)
+					if err != nil {
+						l.Errorf("save hour data error:%v \n", err)
+					}
 				}
 			}
 		}
@@ -101,7 +104,7 @@ func (l *CronTask) computeHistoricalCredit() {
 				Save(l.ctx)
 			l.Errorf("save hour data error:%v \n", err)
 		} else {
-			b := creditBalance.Balance + balance
+			b := creditBalance.Balance - balance
 			_, err = l.svcCtx.DB.CreditBalance.Update().
 				Where(creditbalance.OrganizationIDEQ(orgID)).
 				SetBalance(b).

+ 29 - 11
crontask/compute_historical_statistic.go

@@ -57,21 +57,32 @@ func (l *CronTask) computeHistoricalStatistic() {
 
 	// 获取当前时间
 	//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) {
 		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"))
+		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)
+		lastHourLocation := currentHourLocation.Add(-time.Hour * 1)
 		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
 		for orgID, wxinfos := range wxbotsSet {
@@ -85,6 +96,7 @@ func (l *CronTask) computeHistoricalStatistic() {
 				// 计算积分消耗
 				consumeCoinFloat, _ = l.svcCtx.DB.UsageDetail.Query().Where(
 					usagedetail.BotID(wxinfo),
+					usagedetail.OrganizationIDEQ(orgID),
 					usagedetail.CreatedAtGTE(lastHour),
 					usagedetail.CreatedAtLT(currentHour),
 				).Aggregate(ent.Sum("credits")).Float64(l.ctx)
@@ -96,25 +108,31 @@ func (l *CronTask) computeHistoricalStatistic() {
 				logx.Info("hour orgHourConsumeCoinFloat: ", orgHourConsumeCoinFloat)
 
 				_, 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).
 					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().
-				Where(usagestatistichour.AddtimeEQ(uint64(lastHourInt)), usagestatistichour.OrganizationIDEQ(orgID), usagestatistichour.BotIDEQ("")).
+				Where(usagestatistichour.AddtimeEQ(uint64(lastHourIntLocation)), usagestatistichour.OrganizationIDEQ(orgID), usagestatistichour.BotIDEQ("")).
 				SetConsumeCoin(orgHourConsumeCoinFloat).
 				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().
-			Where(usagestatistichour.AddtimeEQ(uint64(lastHourInt)), usagestatistichour.OrganizationIDEQ(0), usagestatistichour.BotIDEQ("")).
+			Where(usagestatistichour.AddtimeEQ(uint64(lastHourIntLocation)), usagestatistichour.OrganizationIDEQ(0), usagestatistichour.BotIDEQ("")).
 			SetConsumeCoin(allHourConsumeCoinFloat).
 			Save(l.ctx)
-		l.Errorf("save hour data error:%v \n", err)
+		if err != nil {
+			l.Errorf("save hour data error:%v \n", err)
+		}
 
 		/*
 			计算日数据

+ 2 - 2
crontask/init.go

@@ -57,8 +57,8 @@ func ScheduleRun(c *cron.Cron, serverCtx *svc.ServiceContext) {
 	computeHistoricalStatistic := NewCronTask(context.Background(), serverCtx)
 	computeHistoricalStatistic.computeHistoricalStatistic()
 
-	computeHistoricalCredit := NewCronTask(context.Background(), serverCtx)
-	computeHistoricalCredit.computeHistoricalCredit()
+	//computeHistoricalCredit := NewCronTask(context.Background(), serverCtx)
+	//computeHistoricalCredit.computeHistoricalCredit()
 
 	//l = NewCronTask(context.Background(), serverCtx)
 	//c.AddFunc("* * * * *", func() {