diff --git a/src/main/java/com/yolo/keyborad/common/ErrorCode.java b/src/main/java/com/yolo/keyborad/common/ErrorCode.java index 86e9807..622b4b5 100644 --- a/src/main/java/com/yolo/keyborad/common/ErrorCode.java +++ b/src/main/java/com/yolo/keyborad/common/ErrorCode.java @@ -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, "用户信息更新失败"); /** * 状态码 */ diff --git a/src/main/java/com/yolo/keyborad/controller/UserController.java b/src/main/java/com/yolo/keyborad/controller/UserController.java index bf8d808..a78a179 100644 --- a/src/main/java/com/yolo/keyborad/controller/UserController.java +++ b/src/main/java/com/yolo/keyborad/controller/UserController.java @@ -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 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 login(@RequestBody UserLoginDTO userLoginDTO) { + public BaseResponse login(@RequestBody UserLoginDTO userLoginDTO) { return ResultUtils.success(userService.login(userLoginDTO)); } -} + + @PostMapping("/update") + @Operation(summary = "更新用户", description = "更新用户接口") + public BaseResponse update(@RequestBody KeyboardUserReq keyboardUserReq) { + return ResultUtils.success(userService.updateUserInfo(keyboardUserReq)); + } +} \ No newline at end of file diff --git a/src/main/java/com/yolo/keyborad/mapper/KeyboardUserMapper.java b/src/main/java/com/yolo/keyborad/mapper/KeyboardUserMapper.java index 71f2608..bee92dc 100644 --- a/src/main/java/com/yolo/keyborad/mapper/KeyboardUserMapper.java +++ b/src/main/java/com/yolo/keyborad/mapper/KeyboardUserMapper.java @@ -9,4 +9,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.yolo.keyborad.model.entity.KeyboardUser; public interface KeyboardUserMapper extends BaseMapper { + Integer updateByuid(KeyboardUser keyboardUser); } \ No newline at end of file diff --git a/src/main/java/com/yolo/keyborad/model/dto/user/KeyboardUserReq.java b/src/main/java/com/yolo/keyborad/model/dto/user/KeyboardUserReq.java new file mode 100644 index 0000000..113e07d --- /dev/null +++ b/src/main/java/com/yolo/keyborad/model/dto/user/KeyboardUserReq.java @@ -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; +} \ No newline at end of file diff --git a/src/main/java/com/yolo/keyborad/service/UserService.java b/src/main/java/com/yolo/keyborad/service/UserService.java index 9911c88..5b557b0 100644 --- a/src/main/java/com/yolo/keyborad/service/UserService.java +++ b/src/main/java/com/yolo/keyborad/service/UserService.java @@ -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 createUserWithSubjectId(String sub); KeyboardUserRespVO login(UserLoginDTO userLoginDTO); + + Boolean updateUserInfo(KeyboardUserReq keyboardUser); } diff --git a/src/main/java/com/yolo/keyborad/service/impl/UserServiceImpl.java b/src/main/java/com/yolo/keyborad/service/impl/UserServiceImpl.java index 68bbf80..5d38175 100644 --- a/src/main/java/com/yolo/keyborad/service/impl/UserServiceImpl.java +++ b/src/main/java/com/yolo/keyborad/service/impl/UserServiceImpl.java @@ -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() + .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; + } } diff --git a/src/main/resources/mapper/KeyboardUserMapper.xml b/src/main/resources/mapper/KeyboardUserMapper.xml index 8b32d84..6f2c0be 100644 --- a/src/main/resources/mapper/KeyboardUserMapper.xml +++ b/src/main/resources/mapper/KeyboardUserMapper.xml @@ -23,4 +23,15 @@ id, "uid", nick_name, gender, avatar_url, created_at, updated_at, deleted, email, "status", "password", subject_id, email_verified + + + update keyboard_user + + nick_name = #{nickName}, + gender = #{gender}, + avatar_url = #{avatarUrl}, + email = #{email}, + + where uid = #{uid} + \ No newline at end of file