fix(subscribe): improve query logic and handle status filtering

This commit is contained in:
Chang lue Tsen 2025-04-28 18:59:06 +09:00
parent 105ee9cc46
commit 2aaf4cf618
3 changed files with 8 additions and 6 deletions

View File

@ -36,7 +36,7 @@ func (l *QueryUserSubscribeLogic) QueryUserSubscribe() (resp *types.QueryUserSub
logger.Error("current user is not found in context")
return nil, errors.Wrapf(xerr.NewErrCode(xerr.InvalidAccess), "Invalid Access")
}
data, err := l.svcCtx.UserModel.QueryUserSubscribe(l.ctx, u.Id, 1, 0)
data, err := l.svcCtx.UserModel.QueryUserSubscribe(l.ctx, u.Id, 0, 1, 2, 3)
if err != nil {
l.Errorw("[QueryUserSubscribeLogic] Query User Subscribe Error:", logger.Field("err", err.Error()))
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "Query User Subscribe Error")

View File

@ -76,7 +76,10 @@ func (m *defaultUserModel) QueryUserSubscribe(ctx context.Context, userId int64,
// 获取当前时间向前推 7 天
sevenDaysAgo := time.Now().Add(-7 * 24 * time.Hour)
// 基础条件查询
conn = conn.Model(&Subscribe{}).Where("`user_id` = ? and `status` IN ?", userId, status)
conn = conn.Model(&Subscribe{}).Where("`user_id` = ?", userId)
if len(status) > 0 {
conn = conn.Where("`status` IN ?", status)
}
return conn.Where("`expire_time` > ? OR `finished_at` >= ?", now, sevenDaysAgo).
Preload("Subscribe").
Find(&list).Error

View File

@ -369,15 +369,14 @@ func (l *ActivateOrderLogic) Renewal(ctx context.Context, orderInfo *order.Order
userSub.Status = 1
}
//fix bug:FinishedAt causes the update subscription to fail
if now.AddDate(-30, 0, 0).After(*userSub.FinishedAt) {
userSub.FinishedAt = &now
}
// Check whether traffic reset on renewal is enabled
if !*sub.RenewalReset {
userSub.Download = 0
userSub.Upload = 0
}
if userSub.FinishedAt != nil {
userSub.FinishedAt = nil
}
userSub.ExpireTime = tool.AddTime(sub.UnitTime, orderInfo.Quantity, userSub.ExpireTime)
// update user subscribe