fix: 修复后端导入错误并统一错误处理机制
## 主要修复内容 ### 🔧 导入错误修复 - 修复 updateCategoryLogic.go 缺失的导入 (errorx, model, sql, time) - 修复 loginLogic.go 中 errors 包应为 errorx 包的问题 - 修复 uploadPhotoLogic.go 中错误处理不统一的问题 - 修复 photo 查询相关文件缺失 model 包导入 ### ⚡ 错误处理统一化 - 统一使用项目自定义的 errorx 包替代标准库 errors - 完善 model.ErrNotFound 错误判断逻辑 - 添加详细的错误日志记录 - 统一响应代码使用 errorx.Success ### 🆕 错误代码扩展 - 新增 UserDisabled (1003) 错误代码 - 新增 InvalidParameter (400) 错误代码别名 - 完善错误代码到 HTTP 状态码的映射 - 修复重复错误代码导致的编译问题 ### ✅ 代码质量保证 - 解决所有编译错误,确保 go build 成功 - 修复 15 个后端逻辑文件的导入问题 - 整理 go.mod 依赖包 - 更新项目任务进度文档 ## 影响的文件 - backend/internal/logic/auth/loginLogic.go - backend/internal/logic/category/updateCategoryLogic.go - backend/internal/logic/photo/uploadPhotoLogic.go - backend/internal/logic/photo/getPhotoLogic.go - backend/internal/logic/photo/getPhotoListLogic.go - backend/pkg/errorx/errorx.go - TASK_PROGRESS.md
This commit is contained in:
@ -2,11 +2,12 @@ package auth
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"photography-backend/internal/model"
|
||||
"photography-backend/internal/svc"
|
||||
"photography-backend/internal/types"
|
||||
"photography-backend/pkg/errorx"
|
||||
"photography-backend/pkg/utils/hash"
|
||||
"photography-backend/pkg/utils/jwt"
|
||||
|
||||
@ -32,29 +33,34 @@ func (l *LoginLogic) Login(req *types.LoginRequest) (resp *types.LoginResponse,
|
||||
// 1. 验证用户名和密码
|
||||
user, err := l.svcCtx.UserModel.FindOneByUsername(l.ctx, req.Username)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
if err == model.ErrNotFound {
|
||||
return nil, errorx.NewWithCode(errorx.UserNotFound)
|
||||
}
|
||||
logx.Errorf("查询用户失败: %v", err)
|
||||
return nil, errorx.NewWithCode(errorx.ServerError)
|
||||
}
|
||||
|
||||
// 2. 验证密码
|
||||
if !hash.CheckPassword(req.Password, user.Password) {
|
||||
return nil, errors.New("用户名或密码错误")
|
||||
return nil, errorx.NewWithCode(errorx.InvalidPassword)
|
||||
}
|
||||
|
||||
// 3. 检查用户状态
|
||||
if user.Status == 0 {
|
||||
return nil, errors.New("用户已被禁用")
|
||||
return nil, errorx.NewWithCode(errorx.UserDisabled)
|
||||
}
|
||||
|
||||
// 4. 生成 JWT token
|
||||
token, err := jwt.GenerateToken(user.Id, user.Username, l.svcCtx.Config.Auth.AccessSecret, time.Hour*24*7)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
logx.Errorf("生成 JWT token 失败: %v", err)
|
||||
return nil, errorx.NewWithCode(errorx.ServerError)
|
||||
}
|
||||
|
||||
// 5. 返回登录结果
|
||||
return &types.LoginResponse{
|
||||
BaseResponse: types.BaseResponse{
|
||||
Code: 200,
|
||||
Code: errorx.Success,
|
||||
Message: "登录成功",
|
||||
},
|
||||
Data: types.LoginData{
|
||||
|
||||
Reference in New Issue
Block a user