style: 统一代码格式化 (go fmt + 配置更新)
Some checks failed
部署管理后台 / 🧪 测试和构建 (push) Failing after 1m5s
部署管理后台 / 🔒 安全扫描 (push) Has been skipped
部署后端服务 / 🧪 测试后端 (push) Failing after 3m13s
部署前端网站 / 🧪 测试和构建 (push) Failing after 2m10s
部署管理后台 / 🚀 部署到生产环境 (push) Has been skipped
部署后端服务 / 🚀 构建并部署 (push) Has been skipped
部署管理后台 / 🔄 回滚部署 (push) Has been skipped
部署前端网站 / 🚀 部署到生产环境 (push) Has been skipped
部署后端服务 / 🔄 回滚部署 (push) Has been skipped

- 后端:应用 go fmt 自动格式化,统一代码风格
- 前端:更新 API 配置,完善类型安全
- 所有代码符合项目规范,准备生产部署
This commit is contained in:
xujiang
2025-07-14 10:02:04 +08:00
parent 48b6a5f4aa
commit 5dd0bc19e4
33 changed files with 283 additions and 278 deletions

View File

@ -39,24 +39,24 @@ func (l *LoginLogic) Login(req *types.LoginRequest) (resp *types.LoginResponse,
logx.Errorf("查询用户失败: %v", err)
return nil, errorx.NewWithCode(errorx.ServerError)
}
// 2. 验证密码
if !hash.CheckPassword(req.Password, user.Password) {
return nil, errorx.NewWithCode(errorx.InvalidPassword)
}
// 3. 检查用户状态
if user.Status == 0 {
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 {
logx.Errorf("生成 JWT token 失败: %v", err)
return nil, errorx.NewWithCode(errorx.ServerError)
}
// 5. 返回登录结果
return &types.LoginResponse{
BaseResponse: types.BaseResponse{

View File

@ -34,34 +34,34 @@ func (l *RegisterLogic) Register(req *types.RegisterRequest) (resp *types.Regist
if err == nil && existingUser != nil {
return nil, errors.New("用户名已存在")
}
// 2. 检查邮箱是否已存在
existingEmail, err := l.svcCtx.UserModel.FindOneByEmail(l.ctx, req.Email)
if err == nil && existingEmail != nil {
return nil, errors.New("邮箱已存在")
}
// 3. 加密密码
hashedPassword, err := hash.HashPassword(req.Password)
if err != nil {
return nil, err
}
// 4. 创建用户
user := &model.User{
Username: req.Username,
Email: req.Email,
Password: hashedPassword,
Status: 1, // 默认激活状态
Username: req.Username,
Email: req.Email,
Password: hashedPassword,
Status: 1, // 默认激活状态
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
_, err = l.svcCtx.UserModel.Insert(l.ctx, user)
if err != nil {
return nil, err
}
// 5. 返回注册结果
return &types.RegisterResponse{
BaseResponse: types.BaseResponse{

View File

@ -35,12 +35,12 @@ func (l *CreateCategoryLogic) CreateCategory(req *types.CreateCategoryRequest) (
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
_, err = l.svcCtx.CategoryModel.Insert(l.ctx, category)
if err != nil {
return nil, err
}
// 2. 返回结果
return &types.CreateCategoryResponse{
BaseResponse: types.BaseResponse{

View File

@ -30,13 +30,13 @@ func (l *GetCategoryListLogic) GetCategoryList(req *types.GetCategoryListRequest
if err != nil {
return nil, err
}
// 2. 统计总数
total, err := l.svcCtx.CategoryModel.Count(l.ctx, req.Keyword)
if err != nil {
return nil, err
}
// 3. 转换数据结构
var categoryList []types.Category
for _, category := range categories {
@ -48,7 +48,7 @@ func (l *GetCategoryListLogic) GetCategoryList(req *types.GetCategoryListRequest
UpdatedAt: category.UpdatedAt.Unix(),
})
}
// 4. 返回结果
return &types.GetCategoryListResponse{
BaseResponse: types.BaseResponse{

View File

@ -32,14 +32,14 @@ func (l *GetPhotoListLogic) GetPhotoList(req *types.GetPhotoListRequest) (resp *
logx.Errorf("查询照片列表失败: %v", err)
return nil, errorx.NewWithCode(errorx.ServerError)
}
// 2. 统计总数
total, err := l.svcCtx.PhotoModel.Count(l.ctx, req.CategoryId, req.UserId, req.Keyword)
if err != nil {
logx.Errorf("统计照片数量失败: %v", err)
return nil, errorx.NewWithCode(errorx.ServerError)
}
// 3. 转换数据结构
var photoList []types.Photo
for _, photo := range photos {
@ -55,7 +55,7 @@ func (l *GetPhotoListLogic) GetPhotoList(req *types.GetPhotoListRequest) (resp *
UpdatedAt: photo.UpdatedAt.Unix(),
})
}
// 4. 返回结果
return &types.GetPhotoListResponse{
BaseResponse: types.BaseResponse{

View File

@ -36,7 +36,7 @@ func (l *GetPhotoLogic) GetPhoto(req *types.GetPhotoRequest) (resp *types.GetPho
logx.Errorf("查询照片失败: %v", err)
return nil, errorx.NewWithCode(errorx.ServerError)
}
// 2. 返回结果
return &types.GetPhotoResponse{
BaseResponse: types.BaseResponse{

View File

@ -40,7 +40,7 @@ func (l *UploadPhotoLogic) UploadPhoto(req *types.UploadPhotoRequest, file multi
// 后续需要实现JWT中间件
userId = int64(1)
}
// 2. 验证分类是否存在
_, err = l.svcCtx.CategoryModel.FindOne(l.ctx, req.CategoryId)
if err != nil {
@ -50,20 +50,20 @@ func (l *UploadPhotoLogic) UploadPhoto(req *types.UploadPhotoRequest, file multi
logx.Errorf("查询分类失败: %v", err)
return nil, errorx.NewWithCode(errorx.ServerError)
}
// 3. 处理文件上传
fileConfig := fileUtil.Config{
MaxSize: l.svcCtx.Config.FileUpload.MaxSize,
UploadDir: l.svcCtx.Config.FileUpload.UploadDir,
AllowedTypes: l.svcCtx.Config.FileUpload.AllowedTypes,
}
uploadResult, err := fileUtil.UploadPhoto(file, header, fileConfig)
if err != nil {
logx.Errorf("文件上传失败: %v", err)
return nil, errorx.NewWithCode(errorx.PhotoUploadFail)
}
// 4. 创建照片记录
photo := &model.Photo{
Title: req.Title,
@ -75,7 +75,7 @@ func (l *UploadPhotoLogic) UploadPhoto(req *types.UploadPhotoRequest, file multi
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
_, err = l.svcCtx.PhotoModel.Insert(l.ctx, photo)
if err != nil {
// 如果数据库保存失败,删除已上传的文件
@ -84,7 +84,7 @@ func (l *UploadPhotoLogic) UploadPhoto(req *types.UploadPhotoRequest, file multi
logx.Errorf("保存照片记录失败: %v", err)
return nil, errorx.NewWithCode(errorx.ServerError)
}
// 5. 返回上传结果
return &types.UploadPhotoResponse{
BaseResponse: types.BaseResponse{

View File

@ -50,7 +50,7 @@ func (l *DeleteUserLogic) DeleteUser(req *types.DeleteUserRequest) (resp *types.
// 检查用户是否有关联的照片
// 这里可以添加业务逻辑来决定是否允许删除有照片的用户
// 如果要严格控制,可以先检查用户是否有照片,如果有则不允许删除
// 删除用户
err = l.svcCtx.UserModel.Delete(l.ctx, req.Id)
if err != nil {

View File

@ -30,13 +30,13 @@ func (l *GetUserListLogic) GetUserList(req *types.GetUserListRequest) (resp *typ
if err != nil {
return nil, err
}
// 2. 统计总数
total, err := l.svcCtx.UserModel.Count(l.ctx, req.Keyword)
if err != nil {
return nil, err
}
// 3. 转换数据结构(不返回密码)
var userList []types.User
for _, user := range users {
@ -50,7 +50,7 @@ func (l *GetUserListLogic) GetUserList(req *types.GetUserListRequest) (resp *typ
UpdatedAt: user.UpdatedAt.Unix(),
})
}
// 4. 返回结果
return &types.GetUserListResponse{
BaseResponse: types.BaseResponse{

View File

@ -55,7 +55,7 @@ func (l *UploadAvatarLogic) UploadAvatar(req *types.UploadAvatarRequest, r *http
// 4. 获取上传的文件
uploadedFile, header, err := r.FormFile("avatar")
if err != nil {
return nil, errorx.New(errorx.ParamError, "获取上传文件失败: " + err.Error())
return nil, errorx.New(errorx.ParamError, "获取上传文件失败: "+err.Error())
}
defer uploadedFile.Close()
@ -90,10 +90,10 @@ func (l *UploadAvatarLogic) UploadAvatar(req *types.UploadAvatarRequest, r *http
filename := fmt.Sprintf("avatar_%d_%d%s", req.Id, time.Now().Unix(), ext)
avatarDir := "uploads/avatars"
// 8. 确保头像目录存在
if err := os.MkdirAll(avatarDir, 0755); err != nil {
return nil, errorx.New(errorx.ServerError, "创建头像目录失败: " + err.Error())
return nil, errorx.New(errorx.ServerError, "创建头像目录失败: "+err.Error())
}
avatarPath := filepath.Join(avatarDir, filename)
@ -101,13 +101,13 @@ func (l *UploadAvatarLogic) UploadAvatar(req *types.UploadAvatarRequest, r *http
// 9. 保存原始头像文件
destFile, err := os.Create(avatarPath)
if err != nil {
return nil, errorx.New(errorx.ServerError, "创建头像文件失败: " + err.Error())
return nil, errorx.New(errorx.ServerError, "创建头像文件失败: "+err.Error())
}
defer destFile.Close()
_, err = io.Copy(destFile, uploadedFile)
if err != nil {
return nil, errorx.New(errorx.ServerError, "保存头像文件失败: " + err.Error())
return nil, errorx.New(errorx.ServerError, "保存头像文件失败: "+err.Error())
}
// 10. 生成压缩版本的头像 (150x150像素)
@ -142,7 +142,7 @@ func (l *UploadAvatarLogic) UploadAvatar(req *types.UploadAvatarRequest, r *http
if avatarPath != compressedPath {
os.Remove(compressedPath)
}
return nil, errorx.New(errorx.ServerError, "更新用户头像失败: " + err.Error())
return nil, errorx.New(errorx.ServerError, "更新用户头像失败: "+err.Error())
}
return &types.UploadAvatarResponse{