Selaa lähdekoodia

fix:修改统计面板

jimmyyem 6 päivää sitten
vanhempi
commit
677607b2b0
2 muutettua tiedostoa jossa 24 lisäystä ja 17 poistoa
  1. 15 16
      crontask/compute_statistic.go
  2. 9 1
      internal/logic/dashboard/get_charts_logic.go

+ 15 - 16
crontask/compute_statistic.go

@@ -1,12 +1,12 @@
 package crontask
 package crontask
 
 
 import (
 import (
+	"math"
 	"strconv"
 	"strconv"
 	"strings"
 	"strings"
 	"time"
 	"time"
 	"wechat-api/ent"
 	"wechat-api/ent"
 	"wechat-api/ent/contact"
 	"wechat-api/ent/contact"
-	"wechat-api/ent/creditusage"
 	"wechat-api/ent/custom_types"
 	"wechat-api/ent/custom_types"
 	"wechat-api/ent/labelrelationship"
 	"wechat-api/ent/labelrelationship"
 	"wechat-api/ent/messagerecords"
 	"wechat-api/ent/messagerecords"
@@ -56,16 +56,16 @@ func (l *CronTask) computeStatistic() {
 	lc := []custom_types.LabelDist{}
 	lc := []custom_types.LabelDist{}
 
 
 	var allHourAiResponseInt, allHourSopRunInt, allHourFriendCountInt, allHourGroupCountInt, allHourAccountBalanceInt, allHourConsumeTokenInt, allHourActiveUserInt, allHourNewUserInt int
 	var allHourAiResponseInt, allHourSopRunInt, allHourFriendCountInt, allHourGroupCountInt, allHourAccountBalanceInt, allHourConsumeTokenInt, allHourActiveUserInt, allHourNewUserInt int
-	var allHourConsumeCoinInt int
+	var allHourConsumeCoinFloat float64
 	for orgID, wxinfos := range wxbotsSet {
 	for orgID, wxinfos := range wxbotsSet {
 		var orgAiResponseInt, orgSopRunInt, orgFriendCountInt, orgGroupCountInt, orgAccountBalanceInt, orgConsumeTokenInt, orgActiveUserInt, orgNewUserInt int
 		var orgAiResponseInt, orgSopRunInt, orgFriendCountInt, orgGroupCountInt, orgAccountBalanceInt, orgConsumeTokenInt, orgActiveUserInt, orgNewUserInt int
-		var orgHourConsumeCoinInt int
+		var orgHourConsumeCoinFloat float64
 		for _, wxinfo := range wxinfos {
 		for _, wxinfo := range wxinfos {
 			l.Logger.Infof("开始计算小时数据:%d\n", lastHourInt)
 			l.Logger.Infof("开始计算小时数据:%d\n", lastHourInt)
 
 
 			// 先判断该账号是否已经统计了小时数据,如果已经统计了,就不需要再统计了
 			// 先判断该账号是否已经统计了小时数据,如果已经统计了,就不需要再统计了
 			var aiResponseInt, sopRunInt, friendCountInt, groupCountInt, accountBalanceInt, consumeTokenInt, activeUserInt, newUserInt int
 			var aiResponseInt, sopRunInt, friendCountInt, groupCountInt, accountBalanceInt, consumeTokenInt, activeUserInt, newUserInt int
-			var consumeCoinInt int
+			var consumeCoinFloat float64
 			hourDataCount, _ := l.svcCtx.DB.UsageStatisticHour.Query().Where(
 			hourDataCount, _ := l.svcCtx.DB.UsageStatisticHour.Query().Where(
 				usagestatistichour.Type(1),
 				usagestatistichour.Type(1),
 				usagestatistichour.BotID(wxinfo.Wxid),
 				usagestatistichour.BotID(wxinfo.Wxid),
@@ -136,15 +136,14 @@ func (l *CronTask) computeStatistic() {
 			allHourConsumeTokenInt += consumeTokenInt
 			allHourConsumeTokenInt += consumeTokenInt
 
 
 			// 计算积分消耗
 			// 计算积分消耗
-			consumeCoinInt, _ = l.svcCtx.DB.CreditUsage.Query().Where(
-				creditusage.UserID(wxinfo.Wxid),
-				creditusage.OrganizationID(orgID),
-				creditusage.Ntype(2),
-				creditusage.CreatedAtGTE(lastHour),
-				creditusage.CreatedAtLT(currentHour),
-			).Aggregate(ent.Sum("number")).Int(l.ctx)
-			allHourConsumeCoinInt += consumeCoinInt
-			orgHourConsumeCoinInt += consumeCoinInt
+			consumeCoinFloat, _ = l.svcCtx.DB.UsageDetail.Query().Where(
+				usagedetail.BotID(wxinfo.Wxid),
+				usagedetail.OrganizationID(orgID),
+				usagedetail.CreatedAtGTE(lastHour),
+				usagedetail.CreatedAtLT(currentHour),
+			).Aggregate(ent.Sum("credits")).Float64(l.ctx)
+			allHourConsumeCoinFloat += consumeCoinFloat
+			orgHourConsumeCoinFloat += consumeCoinFloat
 
 
 			// 账户余额
 			// 账户余额
 			accountBalanceInt = 0
 			accountBalanceInt = 0
@@ -186,7 +185,7 @@ func (l *CronTask) computeStatistic() {
 				SetTotalGroup(uint64(groupCountInt)).
 				SetTotalGroup(uint64(groupCountInt)).
 				SetAccountBalance(uint64(accountBalanceInt)).
 				SetAccountBalance(uint64(accountBalanceInt)).
 				SetConsumeToken(uint64(consumeTokenInt)).
 				SetConsumeToken(uint64(consumeTokenInt)).
-				SetConsumeCoin(uint64(consumeCoinInt)).
+				SetConsumeCoin(uint64(math.Ceil(consumeCoinFloat))).
 				SetActiveUser(uint64(activeUserInt)).
 				SetActiveUser(uint64(activeUserInt)).
 				SetNewUser(int64(newUserInt)).
 				SetNewUser(int64(newUserInt)).
 				SetAddtime(uint64(lastHourInt)).
 				SetAddtime(uint64(lastHourInt)).
@@ -221,7 +220,7 @@ func (l *CronTask) computeStatistic() {
 			SetTotalGroup(uint64(orgGroupCountInt)).
 			SetTotalGroup(uint64(orgGroupCountInt)).
 			SetAccountBalance(uint64(orgAccountBalanceInt)).
 			SetAccountBalance(uint64(orgAccountBalanceInt)).
 			SetConsumeToken(uint64(orgConsumeTokenInt)).
 			SetConsumeToken(uint64(orgConsumeTokenInt)).
-			SetConsumeCoin(uint64(orgHourConsumeCoinInt)).
+			SetConsumeCoin(uint64(math.Ceil(orgHourConsumeCoinFloat))).
 			SetActiveUser(uint64(orgActiveUserInt)).
 			SetActiveUser(uint64(orgActiveUserInt)).
 			SetNewUser(int64(orgNewUserInt)).
 			SetNewUser(int64(orgNewUserInt)).
 			SetAddtime(uint64(lastHourInt)).
 			SetAddtime(uint64(lastHourInt)).
@@ -247,7 +246,7 @@ func (l *CronTask) computeStatistic() {
 			SetTotalGroup(uint64(allHourGroupCountInt)).
 			SetTotalGroup(uint64(allHourGroupCountInt)).
 			SetAccountBalance(uint64(allHourAccountBalanceInt)).
 			SetAccountBalance(uint64(allHourAccountBalanceInt)).
 			SetConsumeToken(uint64(allHourConsumeTokenInt)).
 			SetConsumeToken(uint64(allHourConsumeTokenInt)).
-			SetConsumeCoin(uint64(allHourConsumeCoinInt)).
+			SetConsumeCoin(uint64(math.Ceil(allHourConsumeCoinFloat))).
 			SetActiveUser(uint64(allHourActiveUserInt)).
 			SetActiveUser(uint64(allHourActiveUserInt)).
 			SetNewUser(int64(allHourNewUserInt)).
 			SetNewUser(int64(allHourNewUserInt)).
 			SetAddtime(uint64(lastHourInt)).
 			SetAddtime(uint64(lastHourInt)).

+ 9 - 1
internal/logic/dashboard/get_charts_logic.go

@@ -4,9 +4,11 @@ import (
 	"context"
 	"context"
 	"fmt"
 	"fmt"
 	"github.com/suyuan32/simple-admin-common/msg/errormsg"
 	"github.com/suyuan32/simple-admin-common/msg/errormsg"
+	"github.com/zeromicro/go-zero/core/errorx"
 	"math"
 	"math"
 	"strconv"
 	"strconv"
 	"time"
 	"time"
+	"wechat-api/ent"
 	"wechat-api/ent/creditbalance"
 	"wechat-api/ent/creditbalance"
 	"wechat-api/ent/custom_types"
 	"wechat-api/ent/custom_types"
 	"wechat-api/ent/label"
 	"wechat-api/ent/label"
@@ -486,7 +488,13 @@ func (l *GetChartsLogic) GetCharts(req *types.ChartsReq) (resp *types.ChartsResp
 
 
 	// 获取积分
 	// 获取积分
 	if req.OrganizationId != nil && *req.OrganizationId > 0 {
 	if req.OrganizationId != nil && *req.OrganizationId > 0 {
-		creditBalance, _ := l.svcCtx.DB.CreditBalance.Query().Where(creditbalance.OrganizationID(*req.OrganizationId)).First(l.ctx)
+		creditBalance, err := l.svcCtx.DB.CreditBalance.Query().Where(creditbalance.OrganizationID(*req.OrganizationId)).First(l.ctx)
+		if err != nil {
+			if ent.IsNotFound(err) {
+				accountBalance.Count = 0
+			}
+			return nil, errorx.NewInvalidArgumentError("获取租户积分余额失败,请重试...")
+		}
 		accountBalance.Count = uint64(creditBalance.Balance)
 		accountBalance.Count = uint64(creditBalance.Balance)
 	}
 	}