Pārlūkot izejas kodu

Merge branch 'yhg_20250327' into debug

jimmyyem 1 nedēļu atpakaļ
vecāks
revīzija
cdfbd81b5e

+ 5 - 3
internal/logic/chat/chat_completions_logic.go

@@ -88,8 +88,10 @@ func (l *ChatCompletionsLogic) ChatCompletions(req *types.CompApiReq) (asyncMode
 	if !ok {
 		return asyncMode, nil, errors.New("content get auth info err")
 	}
+	
 	//微调apiKeyObj的openaikey
 	//apiKeyObjAdjust(req.EventType, req.WorkId, apiKeyObj)
+
 	/*
 		fmt.Println("=========================================")
 		fmt.Printf("In ChatCompletion Get Token Info:\nKey:'%s'\n", apiKeyObj.Key)
@@ -362,9 +364,9 @@ func apiKeyObjAdjust(eventType string, workId string, obj *ent.ApiKey) {
 var domainRegex = regexp.MustCompile(
 	// 多级域名(如 example.com)
 	`^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,63}$` +
-		`|` +
-		// 单级域名(如 localhost 或 mytest-svc)
-		`^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$`,
+			`|` +
+			// 单级域名(如 localhost 或 mytest-svc)
+			`^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$`,
 )
 
 func IsValidURL(input *string, adjust bool) bool {

+ 29 - 11
internal/logic/credit_balance/operate_credit_balance_logic.go

@@ -5,6 +5,8 @@ import (
 	"github.com/suyuan32/simple-admin-common/msg/errormsg"
 	"github.com/suyuan32/simple-admin-core/rpc/types/core"
 	"github.com/zeromicro/go-zero/core/errorx"
+	"math"
+	"wechat-api/ent"
 	"wechat-api/ent/creditbalance"
 
 	"wechat-api/internal/svc"
@@ -43,9 +45,11 @@ func (l *OperateCreditBalanceLogic) OperateCreditBalance(req *types.CreditBalanc
 	}
 
 	creditBalance, err := l.svcCtx.DB.CreditBalance.Query().Where(creditbalance.OrganizationID(*req.OrganizationId)).Only(l.ctx)
-	if err != nil {
-		l.Logger.Errorf("query credit_balance error:%v\n", err)
-		return nil, errorx.NewInvalidArgumentError(err.Error())
+	if err != nil && ent.IsNotFound(err) {
+		creditBalance, err = l.svcCtx.DB.CreditBalance.Create().
+			SetOrganizationID(*req.OrganizationId).
+			SetBalance(*req.Number).
+			Save(l.ctx)
 	}
 
 	var ntype int
@@ -61,16 +65,23 @@ func (l *OperateCreditBalanceLogic) OperateCreditBalance(req *types.CreditBalanc
 	var beforeNumber, afterNumber float64
 	if creditBalance == nil {
 		beforeNumber = 0
-		afterNumber = *req.Number
+		afterNumber = roundTo(*req.Number, 6)
 	} else {
-		beforeNumber = creditBalance.Balance
-		afterNumber = beforeNumber + *req.Number
+		beforeNumber = roundTo(creditBalance.Balance, 6)
+		afterNumber = roundTo(beforeNumber, 6) + roundTo(*req.Number, 6)
 	}
 
+	l.Logger.Infof("number=%v beforeNumber=%v afterNumber=%v payNumber=%v\n",
+		roundTo(*req.Number, 6),
+		roundTo(beforeNumber, 6),
+		roundTo(afterNumber, 6),
+		roundTo(*req.PayNumber, 2),
+	)
+
 	_, err = tx.CreditUsage.Create().
-		SetNumber(*req.Number).
-		SetNotNilPayMethod(req.PayMethod). //支付方式
-		SetNotNilPayNumber(req.PayNumber). //支付金额
+		SetNumber(roundTo(*req.Number, 6)).
+		SetNotNilPayMethod(req.PayMethod).        //支付方式
+		SetPayNumber(roundTo(*req.PayNumber, 2)). //支付金额
 		SetNtype(ntype).
 		SetNid(0).
 		SetTable("").
@@ -90,7 +101,7 @@ func (l *OperateCreditBalanceLogic) OperateCreditBalance(req *types.CreditBalanc
 		if creditBalance == nil {
 			_, err = l.svcCtx.DB.CreditBalance.Create().
 				SetOrganizationID(*req.OrganizationId).
-				SetBalance(*req.Number).
+				SetBalance(roundTo(*req.Number, 6)).
 				Save(l.ctx)
 			if err != nil {
 				l.Logger.Errorf("create credit_balance error:%v\n", err)
@@ -98,7 +109,7 @@ func (l *OperateCreditBalanceLogic) OperateCreditBalance(req *types.CreditBalanc
 				return nil, errorx.NewInvalidArgumentError("创建租户积分余额失败,请重试")
 			}
 		} else {
-			_, err = l.svcCtx.DB.CreditBalance.Update().Where(creditbalance.OrganizationID(*req.OrganizationId)).SetBalance(creditBalance.Balance + *req.Number).Save(l.ctx)
+			_, err = l.svcCtx.DB.CreditBalance.Update().Where(creditbalance.OrganizationID(*req.OrganizationId)).SetBalance(creditBalance.Balance + roundTo(*req.Number, 6)).Save(l.ctx)
 			if err != nil {
 				l.Logger.Errorf("update credit_balance error:%v\n", err)
 				_ = tx.Rollback()
@@ -120,3 +131,10 @@ func (l *OperateCreditBalanceLogic) OperateCreditBalance(req *types.CreditBalanc
 		Msg:  errormsg.Success,
 	}, nil
 }
+
+func roundTo(num float64, precision int) float64 {
+	scale := math.Pow(10, float64(precision))
+	result := math.Round(num*scale) / scale
+
+	return result
+}