From 8398865bd3b7280002cd4aba8b12143ceda795e6 Mon Sep 17 00:00:00 2001 From: shanshanzhong Date: Sat, 28 Mar 2026 11:28:02 -0700 Subject: [PATCH] =?UTF-8?q?fix:=20SingleModel=20=E4=B8=8B=E9=A6=96?= =?UTF-8?q?=E8=B4=AD=20isNew=20=E5=88=A4=E6=96=AD=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E4=BD=A3=E9=87=91=E4=B8=8D=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SingleModel 模式下,用户首次购买会被路由成 orderType=2(续费), 导致 isNew 判断逻辑跳过,始终为 false,激活时 shouldProcessCommission 误判为非首购,佣金不发给邀请人。 修复:去除 isNew 查询对 orderType==1 的依赖,始终通过 IsUserEligibleForNewOrder 判断用户是否有历史完成订单。 Co-Authored-By: claude-flow --- internal/logic/public/order/purchaseLogic.go | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/internal/logic/public/order/purchaseLogic.go b/internal/logic/public/order/purchaseLogic.go index ca0075c..374ecf7 100644 --- a/internal/logic/public/order/purchaseLogic.go +++ b/internal/logic/public/order/purchaseLogic.go @@ -236,13 +236,11 @@ func (l *PurchaseLogic) Purchase(req *types.PurchaseOrderRequest) (resp *types.P } } // query user is new purchase or renewal - isNew := false - if orderType == 1 { - isNew, err = l.svcCtx.OrderModel.IsUserEligibleForNewOrder(l.ctx, u.Id) - if err != nil { - l.Errorw("[Purchase] Database query error", logger.Field("error", err.Error()), logger.Field("user_id", u.Id)) - return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "find user order error: %v", err.Error()) - } + // 注意:SingleModel 下 orderType 会被路由成 2(续费),但仍需正确判断是否首购以发佣金 + isNew, err := l.svcCtx.OrderModel.IsUserEligibleForNewOrder(l.ctx, u.Id) + if err != nil { + l.Errorw("[Purchase] Database query error", logger.Field("error", err.Error()), logger.Field("user_id", u.Id)) + return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "find user order error: %v", err.Error()) } // create order orderInfo := &order.Order{