diff --git a/queue/logic/order/activateOrderLogic.go b/queue/logic/order/activateOrderLogic.go index b7e63e8..c101304 100644 --- a/queue/logic/order/activateOrderLogic.go +++ b/queue/logic/order/activateOrderLogic.go @@ -404,26 +404,19 @@ func (l *ActivateOrderLogic) createUserSubscription(ctx context.Context, orderIn return userSub, nil } -// findGiftSubscription 查找用户指定套餐的赠送订阅(order_id=0 且状态活跃) +// findGiftSubscription 查找用户指定套餐的赠送订阅(order_id=0),包括已过期的 // 返回找到的赠送订阅记录,如果没有则返回 nil func (l *ActivateOrderLogic) findGiftSubscription(ctx context.Context, userId int64, subscribeId int64) (*user.Subscribe, error) { - // 查询用户所有活跃订阅 - subs, err := l.svc.UserModel.QueryUserSubscribe(ctx, userId, 0, 1) + // 直接查询数据库,查找 order_id=0(赠送)且同套餐的订阅,不限制过期状态 + var giftSub user.Subscribe + err := l.svc.DB.Model(&user.Subscribe{}). + Where("user_id = ? AND order_id = 0 AND subscribe_id = ?", userId, subscribeId). + Order("created_at DESC"). + First(&giftSub).Error if err != nil { return nil, err } - // 查找 order_id=0(赠送)且同套餐的订阅 - for _, s := range subs { - if s.OrderId == 0 && s.SubscribeId == subscribeId { - // 通过 ID 获取完整的 Subscribe 记录 - sub, err := l.svc.UserModel.FindOneSubscribe(ctx, s.Id) - if err != nil { - return nil, err - } - return sub, nil - } - } - return nil, nil + return &giftSub, nil } // extendGiftSubscription 在现有赠送订阅上延长到期时间,保持 token 不变