From ae62ecc6b3d9446489b1dde17ce3241beb4f5038 Mon Sep 17 00:00:00 2001 From: shanshanzhong Date: Wed, 22 Apr 2026 09:24:00 -0700 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8A=A0=E5=85=A5=E5=AE=B6=E5=BA=AD?= =?UTF-8?q?=E7=BB=84=E6=97=B6=E6=97=A0=E6=9D=A1=E4=BB=B6=E4=B8=A2=E5=BC=83?= =?UTF-8?q?=E6=88=90=E5=91=98=E8=AE=A2=E9=98=85=EF=BC=8C=E9=98=B2=E6=AD=A2?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E8=AE=A2=E9=98=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 加入家庭组前若成员已购买订阅,原逻辑将订阅转移给 owner, 导致 owner 同时持有自身订阅与成员转入订阅,违反单订阅模式。 修改 transferMemberSubscribesToOwner: - 移除转移逻辑,改为无条件删除成员所有订阅 - 成员加入后通过 owner 的订阅使用服务 - 后续购买以 entitlement.EffectiveUserID(owner)为目标,不受影响 --- internal/logic/public/user/familyBindingHelper.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/internal/logic/public/user/familyBindingHelper.go b/internal/logic/public/user/familyBindingHelper.go index b11a062..d4962e2 100644 --- a/internal/logic/public/user/familyBindingHelper.go +++ b/internal/logic/public/user/familyBindingHelper.go @@ -209,10 +209,9 @@ func transferMemberSubscribesToOwner(tx *gorm.DB, memberUserId, ownerUserId int6 if len(subscribes) == 0 { return nil, nil } - if err := tx.Model(&user.Subscribe{}). - Where("user_id = ?", memberUserId). - Update("user_id", ownerUserId).Error; err != nil { - return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseUpdateError), "transfer member subscribes to owner failed") + // 加入家庭组时,无条件丢弃成员的所有订阅(软删除) + if err := tx.Where("user_id = ?", memberUserId).Delete(&user.Subscribe{}).Error; err != nil { + return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseUpdateError), "discard member subscribes failed") } return subscribes, nil }