Browse Source

feat(app): 添加用户基础信息修改和查询功能

- 在 AppUserController 中添加了 updateUserInfo 和 getUserInfo 方法
- 在 IUserService 接口中添加了 updateUserInfo 和 getUserInfo 方法
- 在 UserServiceImpl 中实现了 updateUserInfo 和 getUserInfo 方法
- 优化了 generateLoginUserVO 方法中的属性复制逻辑
SheepHy 6 days ago
parent
commit
a91b87b2b0

+ 28 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/AppUserController.java

@@ -38,4 +38,32 @@ public class AppUserController {
         return Result.ok(userService.wechatLogin(code));
     }
 
+    /**
+     * @Author SheepHy
+     * @Description 修改用户基础信息
+     * @Date 16:25 2025/7/18
+     * @Param
+     * @return
+     **/
+    @GetMapping("/updateUserInfo")
+    @Operation(summary = "修改用户基础信息")
+    public Result<Boolean> updateUserInfo(@RequestParam(required = false) @Schema(description = "用户昵称") String nickName,
+                                          @RequestParam(required = false) @Schema(description = "用户头像") String avatarUrl){
+        return Result.ok(userService.updateUserInfo(nickName,avatarUrl));
+    }
+
+    /**
+     * @Author SheepHy
+     * @Description 查询用户基础信息
+     * @Date 16:48 2025/7/18
+     * @Param
+     * @return
+     *
+     **/
+    @GetMapping("/getUserInfo")
+    @Operation(summary = "查询用户基础信息")
+    public Result<LoginUserVO> getUserInfo(){
+        return Result.ok(userService.getUserInfo());
+    }
+
 }

+ 18 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IUserService.java

@@ -34,4 +34,22 @@ public interface IUserService {
      **/
     MsgInfoVO getMsgInfo(String id);
 
+    /**
+     * @Author SheepHy
+     * @Description 修改用户基础信息
+     * @Date 16:25 2025/7/18
+     * @Param
+     * @return
+     **/
+    boolean updateUserInfo(String nickName, String avatarUrl);
+
+    /**
+     * @Author SheepHy
+     * @Description 查询用户基础信息
+     * @Date 16:48 2025/7/18
+     * @Param
+     * @return
+     **/
+    LoginUserVO getUserInfo();
+
 }

+ 29 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/UserServiceImpl.java

@@ -26,6 +26,7 @@ import org.jeecg.modules.system.entity.*;
 import org.jeecg.modules.system.mapper.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
@@ -124,6 +125,33 @@ public class UserServiceImpl implements IUserService {
         return msgInfoVO;
     }
 
+    @Override
+    @Transactional
+    public boolean updateUserInfo(String nickName, String avatarUrl) {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if(null != nickName && !nickName.isEmpty()){
+            sysUserMapper.update(null,Wrappers.<SysUser>lambdaUpdate()
+                    .eq(SysUser::getId, user.getId())
+                    .set(SysUser::getUsername, nickName));
+        }else if(null != avatarUrl && !avatarUrl.isEmpty()){
+            sysUserMapper.update(null,Wrappers.<SysUser>lambdaUpdate()
+                    .eq(SysUser::getId, user.getId())
+                    .set(SysUser::getAvatar, avatarUrl));
+        }
+        return true;
+    }
+
+    @Override
+    public LoginUserVO getUserInfo() {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        SysUser sysUser = sysUserMapper.selectById(user.getId());
+        return new LoginUserVO()
+                .setId(sysUser.getId())
+                .setUserName(sysUser.getUsername())
+                .setUserAvatar(sysUser.getAvatar())
+                .setToken(JwtUtil.sign(sysUser.getUsername(), sysUser.getPassword()));
+    }
+
 
     private LoginUserVO generateLoginUserVO(SysUser user) {
         String token = JwtUtil.sign(user.getUsername(), user.getPassword());
@@ -136,7 +164,7 @@ public class UserServiceImpl implements IUserService {
         subject.login(jwtToken); // 触发 Shiro 登录流程
         // 确保 LoginUser 可被后续获取
         LoginUser loginUser = new LoginUser();
-        BeanUtils.copyProperties(loginUser, user);
+        BeanUtils.copyProperties(user,loginUser);
         return new LoginUserVO()
                 .setToken(token)
                 .setId(user.getId())