From bb80df578633d811dcb8f665dc6dd6cc86f5701e Mon Sep 17 00:00:00 2001 From: shanshanzhong Date: Wed, 11 Mar 2026 08:06:13 -0700 Subject: [PATCH] =?UTF-8?q?=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/public/iap/apple/attachTransactionLogic.go | 3 --- internal/logic/public/iap/apple/restoreLogic.go | 3 --- internal/logic/public/order/preCreateOrderLogic.go | 4 ---- internal/logic/public/order/renewalLogic.go | 11 +++++++---- internal/logic/public/order/resetTrafficLogic.go | 4 ---- 5 files changed, 7 insertions(+), 18 deletions(-) diff --git a/internal/logic/public/iap/apple/attachTransactionLogic.go b/internal/logic/public/iap/apple/attachTransactionLogic.go index 329eb7f..59eae55 100644 --- a/internal/logic/public/iap/apple/attachTransactionLogic.go +++ b/internal/logic/public/iap/apple/attachTransactionLogic.go @@ -59,9 +59,6 @@ func (l *AttachTransactionLogic) Attach(req *types.AttachAppleTransactionRequest l.Errorw("无效访问,用户信息缺失") return nil, errors.Wrapf(xerr.NewErrCode(xerr.InvalidAccess), "invalid access") } - if err := commonLogic.DenyIfFamilyMemberReadonly(l.ctx, l.svcCtx.DB, u.Id); err != nil { - return nil, err - } if strings.TrimSpace(req.OrderNo) == "" { l.Errorw("参数错误,orderNo 不能为空") return nil, errors.Wrapf(xerr.NewErrCode(xerr.InvalidParams), "order_no is required") diff --git a/internal/logic/public/iap/apple/restoreLogic.go b/internal/logic/public/iap/apple/restoreLogic.go index 3bd7b18..1bfd068 100644 --- a/internal/logic/public/iap/apple/restoreLogic.go +++ b/internal/logic/public/iap/apple/restoreLogic.go @@ -41,9 +41,6 @@ func (l *RestoreLogic) Restore(req *types.RestoreAppleTransactionsRequest) error if !ok || u == nil { return errors.Wrapf(xerr.NewErrCode(xerr.InvalidAccess), "invalid access") } - if err := commonLogic.DenyIfFamilyMemberReadonly(l.ctx, l.svcCtx.DB, u.Id); err != nil { - return err - } pm, _ := iapapple.ParseProductMap(l.svcCtx.Config.Site.CustomData) // Load Apple Server API config from payment table apiCfgPtr, err := LoadAppleServerAPIConfig(l.ctx, l.svcCtx) diff --git a/internal/logic/public/order/preCreateOrderLogic.go b/internal/logic/public/order/preCreateOrderLogic.go index 3202c6d..65036da 100644 --- a/internal/logic/public/order/preCreateOrderLogic.go +++ b/internal/logic/public/order/preCreateOrderLogic.go @@ -46,10 +46,6 @@ func (l *PreCreateOrderLogic) PreCreateOrder(req *types.PurchaseOrderRequest) (r logger.Error("current user is not found in context") return nil, errors.Wrapf(xerr.NewErrCode(xerr.InvalidAccess), "Invalid Access") } - if err = commonLogic.DenyIfFamilyMemberReadonly(l.ctx, l.svcCtx.DB, u.Id); err != nil { - return nil, err - } - if req.Quantity <= 0 { l.Debugf("[PreCreateOrder] Quantity is less than or equal to 0, setting to 1") req.Quantity = 1 diff --git a/internal/logic/public/order/renewalLogic.go b/internal/logic/public/order/renewalLogic.go index ddda14b..9aa19c4 100644 --- a/internal/logic/public/order/renewalLogic.go +++ b/internal/logic/public/order/renewalLogic.go @@ -49,8 +49,10 @@ func (l *RenewalLogic) Renewal(req *types.RenewalOrderRequest) (resp *types.Rene logger.Error("current user is not found in context") return nil, errors.Wrapf(xerr.NewErrCode(xerr.InvalidAccess), "Invalid Access") } - if err = commonLogic.DenyIfFamilyMemberReadonly(l.ctx, l.svcCtx.DB, u.Id); err != nil { - return nil, err + // Resolve entitlement: member's subscription goes to owner + entitlement, entErr := commonLogic.ResolveEntitlementUser(l.ctx, l.svcCtx.DB, u.Id) + if entErr != nil { + return nil, entErr } if req.Quantity <= 0 { l.Debugf("[Renewal] Quantity is less than or equal to 0, setting to 1") @@ -169,8 +171,9 @@ func (l *RenewalLogic) Renewal(req *types.RenewalOrderRequest) (resp *types.Rene // create order orderInfo := order.Order{ - UserId: u.Id, - ParentId: userSubscribe.OrderId, + UserId: u.Id, + SubscriptionUserId: entitlement.EffectiveUserID, + ParentId: userSubscribe.OrderId, OrderNo: orderNo, Type: 2, Quantity: req.Quantity, diff --git a/internal/logic/public/order/resetTrafficLogic.go b/internal/logic/public/order/resetTrafficLogic.go index 4bde541..a3a0669 100644 --- a/internal/logic/public/order/resetTrafficLogic.go +++ b/internal/logic/public/order/resetTrafficLogic.go @@ -5,7 +5,6 @@ import ( "encoding/json" "time" - commonLogic "github.com/perfect-panel/server/internal/logic/common" "github.com/perfect-panel/server/internal/model/log" "github.com/perfect-panel/server/pkg/constant" "github.com/perfect-panel/server/pkg/xerr" @@ -44,9 +43,6 @@ func (l *ResetTrafficLogic) ResetTraffic(req *types.ResetTrafficOrderRequest) (r logger.Error("current user is not found in context") return nil, errors.Wrapf(xerr.NewErrCode(xerr.InvalidAccess), "Invalid Access") } - if err = commonLogic.DenyIfFamilyMemberReadonly(l.ctx, l.svcCtx.DB, u.Id); err != nil { - return nil, err - } // find user subscription userSubscribe, err := l.svcCtx.UserModel.FindOneUserSubscribe(l.ctx, req.UserSubscribeID) if err != nil {