fix: 加入家庭组时无条件丢弃成员订阅,防止重复订阅
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 5m17s

加入家庭组前若成员已购买订阅,原逻辑将订阅转移给 owner,
导致 owner 同时持有自身订阅与成员转入订阅,违反单订阅模式。

修改 transferMemberSubscribesToOwner:
- 移除转移逻辑,改为无条件删除成员所有订阅
- 成员加入后通过 owner 的订阅使用服务
- 后续购买以 entitlement.EffectiveUserID(owner)为目标,不受影响
This commit is contained in:
shanshanzhong 2026-04-22 09:24:00 -07:00
parent 4b73cd4d3c
commit ae62ecc6b3

View File

@ -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
}