Browse Source

Merge branch 'debug' into feature/dashboard

* debug:
  修复bug
  fix:edit compute_statistic
  fix:edit compute_statistic
boweniac 4 months ago
parent
commit
8795a32196
3 changed files with 29 additions and 21 deletions
  1. 22 20
      crontask/compute_statistic.go
  2. 1 1
      crontask/init.go
  3. 6 0
      internal/logic/Wx/create_wx_logic.go

+ 22 - 20
crontask/compute_statistic.go

@@ -33,10 +33,15 @@ func (l *CronTask) computeStatistic() {
 
 	// 获取当前时间
 	now := time.Now()
+
 	// 获取本小时的第一分钟
 	currentHour := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
 	currentHourInt, _ := strconv.Atoi(currentHour.Format("2006010215"))
 
+	// 上一个小时的起始时间
+	lastHour := currentHour.Add(-time.Hour * 1)
+	lastHourInt, _ := strconv.Atoi(lastHour.Format("2006010215"))
+
 	for _, wxinfo := range wxbots {
 		l.Logger.Infof("开始计算小时数据:%d\n", currentHourInt)
 
@@ -51,10 +56,6 @@ func (l *CronTask) computeStatistic() {
 			continue
 		}
 
-		// 上一个小时的起始时间
-		lastHour := currentHour.Add(-time.Hour * 1)
-		lastHourInt, _ := strconv.Atoi(lastHour.Format("2006010215"))
-
 		// AI回复包括:SOP次数+AI次数
 		// SOP次数:content 非空,source_type = 3 或 4,sub_source_id = 0
 		// AI次数:app = 1 或 3
@@ -150,13 +151,14 @@ func (l *CronTask) computeStatistic() {
 	dayStr := time.Now().Format("20060102")
 	day, _ := strconv.Atoi(dayStr)
 
-	// 获取今天的第一小时
-	firstHour := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
-	firstHourInt, _ := strconv.Atoi(firstHour.Format("20060102"))
+	// 获取昨天的第一小时
+	yesterday := now.AddDate(0, 0, -1)
+	yesterdayFirstHour := time.Date(yesterday.Year(), yesterday.Month(), now.Day(), 0, 0, 0, 0, now.Location())
+	yesterdayFirstHourInt, _ := strconv.Atoi(yesterdayFirstHour.Format("20060102"))
 
-	// 获取天的最后一小时
-	lastHour := time.Date(now.Year(), now.Month(), now.Day(), 23, 0, 0, 0, now.Location())
-	lastHourInt, _ := strconv.Atoi(lastHour.Format("20060102"))
+	// 获取天的最后一小时
+	yesterdayLastHour := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
+	yesterdayLastHourInt, _ := strconv.Atoi(yesterdayLastHour.Format("20060102"))
 
 	for _, wxinfo := range wxbots {
 		l.Logger.Infof("开始计算日数据:%d\n", day)
@@ -175,8 +177,8 @@ func (l *CronTask) computeStatistic() {
 		hourDataBatch, _ := l.svcCtx.DB.UsageStatisticHour.Query().Where(
 			usagestatistichour.Type(1),
 			usagestatistichour.BotID(wxinfo.Wxid),
-			usagestatistichour.AddtimeGTE(uint64(firstHourInt)),
-			usagestatistichour.AddtimeLT(uint64(lastHourInt)),
+			usagestatistichour.AddtimeGTE(uint64(yesterdayFirstHourInt)),
+			usagestatistichour.AddtimeLT(uint64(yesterdayLastHourInt)),
 		).All(l.ctx)
 
 		var aiResponse, sopRun, totalFriend, totalGroup, accountBalance, consumeToken, activeUser uint64
@@ -224,13 +226,13 @@ func (l *CronTask) computeStatistic() {
 	for _, wxinfo := range wxbots {
 		l.Logger.Infof("开始计算月数据:%d\n", month)
 
-		// 获取月的第一天
-		firstDay := time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, now.Location())
-		firstDayInt, _ := strconv.Atoi(firstDay.Format("20060102"))
+		// 获取月的第一天
+		monthFirstDay := time.Date(now.Year(), now.Month()-1, 1, 0, 0, 0, 0, now.Location())
+		monthFirstDayInt, _ := strconv.Atoi(monthFirstDay.Format("20060102"))
 
-		// 获取月的最后一天
-		lastDay := firstDay.AddDate(0, 1, -1)
-		lastDayInt, _ := strconv.Atoi(lastDay.Format("20060102"))
+		// 获取月的最后一天
+		monthLastDay := time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, now.Location())
+		monthLastDayInt, _ := strconv.Atoi(monthLastDay.Format("20060102"))
 
 		// 先判断该账号是否已经统计了月数据,如果已经统计了,就不需要再统计了
 		monthDataCount, _ := l.svcCtx.DB.UsageStatisticMonth.Query().Where(
@@ -247,8 +249,8 @@ func (l *CronTask) computeStatistic() {
 		dayDataBatch, _ := l.svcCtx.DB.UsageStatisticDay.Query().Where(
 			usagestatisticday.Type(1),
 			usagestatisticday.BotID(wxinfo.Wxid),
-			usagestatisticday.AddtimeGTE(uint64(firstDayInt)),
-			usagestatisticday.AddtimeLTE(uint64(lastDayInt)),
+			usagestatisticday.AddtimeGTE(uint64(monthFirstDayInt)),
+			usagestatisticday.AddtimeLT(uint64(monthLastDayInt)),
 		).All(l.ctx)
 
 		var aiResponse, sopRun, totalFriend, totalGroup, accountBalance, consumeToken, activeUser uint64

+ 1 - 1
crontask/init.go

@@ -39,7 +39,7 @@ func ScheduleRun(c *cron.Cron, serverCtx *svc.ServiceContext) {
 	})
 
 	computeStatistic := NewCronTask(context.Background(), serverCtx)
-	c.AddFunc("1 * * * *", func() {
+	c.AddFunc("0 * * * *", func() {
 		computeStatistic.computeStatistic()
 	})
 }

+ 6 - 0
internal/logic/Wx/create_wx_logic.go

@@ -65,6 +65,8 @@ func (l *CreateWxLogic) CreateWx(req *types.WxInfo) (*types.BaseMsgResp, error)
 		return nil, err
 	}
 
+	var stringSlice []string
+
 	if ent.IsNotFound(err) {
 		wxid := strconv.Itoa(rand.New(rand.NewSource(time.Now().UnixNano())).Intn(1000000))
 		_, err := l.svcCtx.DB.Wx.Create().
@@ -76,6 +78,10 @@ func (l *CreateWxLogic) CreateWx(req *types.WxInfo) (*types.BaseMsgResp, error)
 			SetNotNilAPIKey(req.ApiKey).
 			SetWxid(wxid).
 			SetStatus(0).
+			SetAllowList(stringSlice).
+			SetGroupAllowList(stringSlice).
+			SetBlockList(stringSlice).
+			SetGroupBlockList(stringSlice).
 			Save(l.ctx)
 		if err != nil {
 			return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)