From 0cc903b44a4346a94128523af8da9f423c2ac05b Mon Sep 17 00:00:00 2001 From: Victor_Jay Date: Wed, 27 May 2026 13:53:51 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BF=AE=E5=A4=8DDRY=E5=88=86?= =?UTF-8?q?=E9=A1=B5=20+=20LoD=E8=BF=9D=E8=A7=84(RefreshToken=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E9=80=BB=E8=BE=91=E4=B8=8B=E6=B2=89)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - audit_service.List()使用common.Pagination替代手动分页计算 - RefreshToken封禁状态检查从控制器移至TokenService.RefreshAccessToken - 消除控制器层业务逻辑,符合瘦控制器铁律 --- internal/controller/auth_controller.go | 11 +++-------- internal/service/audit_service.go | 13 ++++--------- internal/service/token_service.go | 5 +++++ 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/internal/controller/auth_controller.go b/internal/controller/auth_controller.go index 00f4c3e..9086342 100644 --- a/internal/controller/auth_controller.go +++ b/internal/controller/auth_controller.go @@ -218,25 +218,20 @@ func (ac *AuthController) RefreshToken(c *gin.Context) { return } - accessToken, user, err := ac.tokenService.RefreshAccessToken(refreshToken) + accessToken, _, err := ac.tokenService.RefreshAccessToken(refreshToken) if err != nil { common.ClearAuthCookies(c, ac.cfg) switch err { case common.ErrTokenExpired, common.ErrTokenRevoked: common.Error(c, http.StatusUnauthorized, "登录凭证已失效,请重新登录") + case common.ErrUserBanned: + common.Error(c, http.StatusForbidden, "账号已被封禁") default: common.Error(c, http.StatusUnauthorized, "请重新登录") } return } - // 防止封禁用户通过 refresh 续期(状态检查是认证业务域,放在控制器层) - if user.Status == model.StatusBanned { - common.ClearAuthCookies(c, ac.cfg) - common.Error(c, http.StatusForbidden, "账号已被封禁") - return - } - common.SetAccessCookie(c, accessToken, ac.cfg) common.Ok(c, nil) diff --git a/internal/service/audit_service.go b/internal/service/audit_service.go index 2bd2216..9a28314 100644 --- a/internal/service/audit_service.go +++ b/internal/service/audit_service.go @@ -225,20 +225,15 @@ func (s *AuditService) applyApproval(submission *model.AuditSubmission) error { // List 分页查询审核列表 func (s *AuditService) List(auditType, status string, page, pageSize int) (*AuditListResult, error) { - if page < 1 { - page = 1 - } - if pageSize < 1 || pageSize > 100 { - pageSize = 20 - } - offset := (page - 1) * pageSize + p := common.Pagination{Page: page, PageSize: pageSize} + p.DefaultPagination() total, err := s.auditRepo.CountAudits(auditType, status) if err != nil { return nil, err } - items, err := s.auditRepo.ListAudits(auditType, status, offset, pageSize) + items, err := s.auditRepo.ListAudits(auditType, status, p.Offset(), p.PageSize) if err != nil { return nil, err } @@ -249,7 +244,7 @@ func (s *AuditService) List(auditType, status string, page, pageSize int) (*Audi return &AuditListResult{ Items: items, Total: total, - Page: page, + Page: p.Page, }, nil } diff --git a/internal/service/token_service.go b/internal/service/token_service.go index a44ea6c..37147c4 100644 --- a/internal/service/token_service.go +++ b/internal/service/token_service.go @@ -109,6 +109,11 @@ func (ts *TokenService) RefreshAccessToken(refreshTokenStr string) (string, *mod return "", nil, common.ErrTokenRevoked } + // 防止封禁用户通过 refresh 续期 + if user.Status == model.StatusBanned { + return "", nil, common.ErrUserBanned + } + accessToken, err := ts.BuildAccessToken(user) if err != nil { return "", nil, err