feat(user): 新增用户信息更新接口
新增 KeyboardUserReq DTO、Mapper updateByuid 方法及对应 XML,支持昵称/性别/头像/邮箱字段动态更新;补充 USER_INFO_UPDATE_FAILED 错误码,并在 UserController 与 UserServiceImpl 实现 updateUserInfo 逻辑。
This commit is contained in:
@@ -28,7 +28,8 @@ public enum ErrorCode {
|
||||
TOKEN_FREEZE(40108, "令牌已被冻结"),
|
||||
TOKEN_NO_PREFIX(40109, "未按照指定前缀提交令牌"),
|
||||
FILE_NAME_ERROR(40002, "文件名错误"),
|
||||
USER_NOT_FOUND(40401, "用户不存在");
|
||||
USER_NOT_FOUND(40401, "用户不存在"),
|
||||
USER_INFO_UPDATE_FAILED(50002, "用户信息更新失败");
|
||||
/**
|
||||
* 状态码
|
||||
*/
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package com.yolo.keyborad.controller;
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.yolo.keyborad.common.BaseResponse;
|
||||
import com.yolo.keyborad.common.ResultUtils;
|
||||
import com.yolo.keyborad.model.dto.AppleLoginReq;
|
||||
import com.yolo.keyborad.model.dto.user.KeyboardUserReq;
|
||||
import com.yolo.keyborad.model.dto.user.UserLoginDTO;
|
||||
import com.yolo.keyborad.model.entity.KeyboardUser;
|
||||
import com.yolo.keyborad.model.vo.user.KeyboardUserRespVO;
|
||||
import com.yolo.keyborad.service.IAppleService;
|
||||
import com.yolo.keyborad.service.UserService;
|
||||
@@ -14,6 +17,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@@ -42,7 +46,7 @@ public class UserController {
|
||||
*/
|
||||
@PostMapping("/appleLogin")
|
||||
@Operation(summary = "苹果登录", description = "苹果登录接口")
|
||||
@Parameter(name = "code",required = true,description = "苹果登录凭证",example = "123456")
|
||||
@Parameter(name = "code", required = true, description = "苹果登录凭证", example = "123456")
|
||||
public BaseResponse<KeyboardUserRespVO> appleLogin(@RequestBody AppleLoginReq appleLoginReq) throws Exception {
|
||||
return ResultUtils.success(appleService.login(appleLoginReq.getIdentityToken()));
|
||||
}
|
||||
@@ -56,7 +60,13 @@ public class UserController {
|
||||
|
||||
@PostMapping("/login")
|
||||
@Operation(summary = "登录", description = "登录接口")
|
||||
public BaseResponse<KeyboardUserRespVO> login(@RequestBody UserLoginDTO userLoginDTO) {
|
||||
public BaseResponse<KeyboardUserRespVO> login(@RequestBody UserLoginDTO userLoginDTO) {
|
||||
return ResultUtils.success(userService.login(userLoginDTO));
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
@Operation(summary = "更新用户", description = "更新用户接口")
|
||||
public BaseResponse<Boolean> update(@RequestBody KeyboardUserReq keyboardUserReq) {
|
||||
return ResultUtils.success(userService.updateUserInfo(keyboardUserReq));
|
||||
}
|
||||
}
|
||||
@@ -9,4 +9,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.yolo.keyborad.model.entity.KeyboardUser;
|
||||
|
||||
public interface KeyboardUserMapper extends BaseMapper<KeyboardUser> {
|
||||
Integer updateByuid(KeyboardUser keyboardUser);
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.yolo.keyborad.model.dto.user;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/*
|
||||
* @author: ziin
|
||||
* @date: 2025/12/2 18:08
|
||||
*/
|
||||
|
||||
@Data
|
||||
@Schema(description="用户信息")
|
||||
public class KeyboardUserReq {
|
||||
|
||||
@Schema(description="用户ID")
|
||||
private Long uid;
|
||||
|
||||
@Schema(description="用户昵称")
|
||||
private String nickName;
|
||||
|
||||
@Schema(description="性别")
|
||||
private Integer gender;
|
||||
|
||||
|
||||
@Schema(description="头像URL")
|
||||
private String avatarUrl;
|
||||
|
||||
/**
|
||||
* 邮箱地址
|
||||
*/
|
||||
@Schema(description="邮箱地址")
|
||||
private String email;
|
||||
|
||||
/**
|
||||
* 邮箱是否验证
|
||||
*/
|
||||
@Schema(description="邮箱是否验证")
|
||||
private Boolean emailVerified;
|
||||
|
||||
@Schema(description = "token")
|
||||
private String token;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.yolo.keyborad.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.yolo.keyborad.model.dto.user.KeyboardUserReq;
|
||||
import com.yolo.keyborad.model.dto.user.UserLoginDTO;
|
||||
import com.yolo.keyborad.model.entity.KeyboardUser;
|
||||
import com.yolo.keyborad.model.vo.user.KeyboardUserRespVO;
|
||||
@@ -16,4 +17,6 @@ public interface UserService extends IService<KeyboardUser> {
|
||||
KeyboardUser createUserWithSubjectId(String sub);
|
||||
|
||||
KeyboardUserRespVO login(UserLoginDTO userLoginDTO);
|
||||
|
||||
Boolean updateUserInfo(KeyboardUserReq keyboardUser);
|
||||
}
|
||||
|
||||
@@ -5,10 +5,12 @@ import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.yolo.keyborad.common.ErrorCode;
|
||||
import com.yolo.keyborad.exception.BusinessException;
|
||||
import com.yolo.keyborad.mapper.KeyboardUserMapper;
|
||||
import com.yolo.keyborad.model.dto.user.KeyboardUserReq;
|
||||
import com.yolo.keyborad.model.dto.user.UserLoginDTO;
|
||||
import com.yolo.keyborad.model.entity.KeyboardUser;
|
||||
import com.yolo.keyborad.model.vo.user.KeyboardUserRespVO;
|
||||
@@ -62,4 +64,22 @@ public class UserServiceImpl extends ServiceImpl<KeyboardUserMapper, KeyboardUse
|
||||
keyboardUserRespVO.setToken(StpUtil.getTokenValue());
|
||||
return keyboardUserRespVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateUserInfo(KeyboardUserReq keyboardUserReq) {
|
||||
KeyboardUser keyboardUserDB = keyboardUserMapper.selectOne(
|
||||
new LambdaQueryWrapper<KeyboardUser>()
|
||||
.eq(KeyboardUser::getUid, keyboardUserReq.getUid())
|
||||
.eq(KeyboardUser::getStatus, false));
|
||||
if (keyboardUserDB == null) {
|
||||
throw new BusinessException(ErrorCode.USER_NOT_FOUND);
|
||||
}
|
||||
|
||||
KeyboardUser keyboardUser = BeanUtil.copyProperties(keyboardUserReq, KeyboardUser.class);
|
||||
Integer i = keyboardUserMapper.updateByuid(keyboardUser);
|
||||
if (i <=0 ) {
|
||||
throw new BusinessException(ErrorCode.USER_INFO_UPDATE_FAILED);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,4 +23,15 @@
|
||||
id, "uid", nick_name, gender, avatar_url, created_at, updated_at, deleted, email,
|
||||
"status", "password", subject_id, email_verified
|
||||
</sql>
|
||||
|
||||
<update id="updateByuid">
|
||||
update keyboard_user
|
||||
<set>
|
||||
<if test="nickName != null">nick_name = #{nickName},</if>
|
||||
<if test="gender != null">gender = #{gender},</if>
|
||||
<if test="avatarUrl != null">avatar_url = #{avatarUrl},</if>
|
||||
<if test="email != null">email = #{email},</if>
|
||||
</set>
|
||||
where uid = #{uid}
|
||||
</update>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user