From 992238f4d36fc40cd83ca3becbe78ad7bfa0f73e Mon Sep 17 00:00:00 2001 From: WINer Date: Thu, 29 Jan 2026 15:25:00 +0800 Subject: [PATCH] fix(subscribe): panic caused by nil pointer when token is invalid --- internal/logic/subscribe/subscribeLogic.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/internal/logic/subscribe/subscribeLogic.go b/internal/logic/subscribe/subscribeLogic.go index 28f9ecb..bfcf0d3 100644 --- a/internal/logic/subscribe/subscribeLogic.go +++ b/internal/logic/subscribe/subscribeLogic.go @@ -163,6 +163,7 @@ func (l *SubscribeLogic) getSubscribeV2URL() string { return fmt.Sprintf("https://%s%s", l.ctx.Request.Host, uri) } +// getUserSubscribe 是本次修改的核心部分 func (l *SubscribeLogic) getUserSubscribe(token string) (*user.Subscribe, error) { userSub, err := l.svc.UserModel.FindOneSubscribeByToken(l.ctx.Request.Context(), token) if err != nil { @@ -170,10 +171,21 @@ func (l *SubscribeLogic) getUserSubscribe(token string) (*user.Subscribe, error) return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "find subscribe error: %v", err.Error()) } + // ========================================================= + // 修复开始:添加空指针检查 (Fix start) + // ========================================================= + if userSub == nil { + l.Infow("[Generate Subscribe] token invalid or user not found", logger.Field("token", token)) + return nil, errors.New("subscribe token invalid") + } + // ========================================================= + // 修复结束 (Fix end) + // ========================================================= + // Ignore expiration check //if userSub.Status > 1 { - // l.Infow("[Generate Subscribe]subscribe is not available", logger.Field("status", int(userSub.Status)), logger.Field("token", token)) - // return nil, errors.Wrapf(xerr.NewErrCode(xerr.SubscribeNotAvailable), "subscribe is not available") + // l.Infow("[Generate Subscribe]subscribe is not available", logger.Field("status", int(userSub.Status)), logger.Field("token", token)) + // return nil, errors.Wrapf(xerr.NewErrCode(xerr.SubscribeNotAvailable), "subscribe is not available") //} return userSub, nil