package user import ( "context" "photography-backend/internal/svc" "photography-backend/internal/types" "photography-backend/pkg/errorx" "github.com/zeromicro/go-zero/core/logx" "github.com/zeromicro/go-zero/core/stores/sqlx" ) type DeleteUserLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } // 删除用户 func NewDeleteUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteUserLogic { return &DeleteUserLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *DeleteUserLogic) DeleteUser(req *types.DeleteUserRequest) (resp *types.DeleteUserResponse, err error) { // 检查用户是否存在 user, err := l.svcCtx.UserModel.FindOne(l.ctx, req.Id) if err != nil { if err == sqlx.ErrNotFound { return &types.DeleteUserResponse{ BaseResponse: types.BaseResponse{ Code: errorx.UserNotFound, Message: "用户不存在", }, }, nil } logx.WithContext(l.ctx).Error("查询用户失败: ", err) return &types.DeleteUserResponse{ BaseResponse: types.BaseResponse{ Code: errorx.ServerError, Message: "查询用户失败", }, }, nil } // 检查用户是否有关联的照片 // 这里可以添加业务逻辑来决定是否允许删除有照片的用户 // 如果要严格控制,可以先检查用户是否有照片,如果有则不允许删除 // 删除用户 err = l.svcCtx.UserModel.Delete(l.ctx, req.Id) if err != nil { logx.WithContext(l.ctx).Error("删除用户失败: ", err) return &types.DeleteUserResponse{ BaseResponse: types.BaseResponse{ Code: errorx.ServerError, Message: "删除用户失败", }, }, nil } logx.WithContext(l.ctx).Infof("用户 %s (ID: %d) 已被删除", user.Username, user.Id) return &types.DeleteUserResponse{ BaseResponse: types.BaseResponse{ Code: errorx.Success, Message: "删除用户成功", }, }, nil }