From 960aee1b684ecfc04e1529dce511b645fccc4b5a Mon Sep 17 00:00:00 2001 From: GoCo Date: Fri, 15 Aug 2025 17:53:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/controller/UserBizController.java | 74 ++++++++++++++++++- 1 file changed, 71 insertions(+), 3 deletions(-) diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/UserBizController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/UserBizController.java index 55cb299d..6abcd216 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/UserBizController.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/UserBizController.java @@ -13,12 +13,15 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.jeecg.modules.biz.dto.TeacherInfo; import org.jeecg.modules.biz.service.UserBizService; +import org.jeecg.modules.gen.userinfo.entity.UserInfo; +import org.jeecg.modules.gen.userinfo.mapper.UserInfoMapper; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.service.*; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; @@ -27,6 +30,7 @@ import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.util.PasswordUtil; import org.jeecg.common.util.RedisUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -44,6 +48,8 @@ public class UserBizController { private RedisUtil redisUtil; @Autowired private UserBizService userBizService; + @Autowired + private UserInfoMapper userInfoMapper; @PostMapping("/login") @Operation(summary = "用户登录") @@ -60,9 +66,9 @@ public class UserBizController { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysUser::getUsername,username); SysUser sysUser = sysUserService.getOne(queryWrapper); - result = sysUserService.checkUserIsEffective(sysUser); - if(!result.isSuccess()) { - return result; + Result checkResult = sysUserService.checkUserIsEffective(sysUser); + if(!checkResult.isSuccess()) { + return result.error500(checkResult.getMessage()); } // step.3 校验用户名或密码是否正确 @@ -130,4 +136,66 @@ public class UserBizController { List list = userBizService.queryAllTeachers(categoryId); return Result.OK(list); } + + @GetMapping("/info") + @Operation(summary = "查询用户信息") + public Result queryUserInfo(HttpServletRequest request) { + try { + // 1. 从JWT中获取用户名 + String username = JwtUtil.getUserNameByToken(request); + if (username == null || username.trim().isEmpty()) { + return Result.error(401, "用户未登录或token无效"); + } + + // 2. 根据用户名查询系统用户信息 + SysUser sysUser = sysUserService.getUserByName(username); + if (sysUser == null) { + return Result.error(404, "用户不存在"); + } + + // 3. 查询用户角色 + List roles = sysUserService.getUserRolesSet(username).stream() + .collect(Collectors.toList()); + + // 4. 根据用户ID查询user_info表信息 + UserInfo userInfo = userInfoMapper.selectOne( + new QueryWrapper().eq("user_id", sysUser.getId()) + ); + + // 5. 构建返回结果 + JSONObject result = new JSONObject(new LinkedHashMap<>()); + + // 基本用户信息 + JSONObject userBasicInfo = new JSONObject(new LinkedHashMap<>()); + userBasicInfo.put("id", sysUser.getId()); + userBasicInfo.put("username", sysUser.getUsername()); + userBasicInfo.put("realname", sysUser.getRealname()); + userBasicInfo.put("avatar", sysUser.getAvatar()); + userBasicInfo.put("phone", sysUser.getPhone()); + userBasicInfo.put("email", sysUser.getEmail()); + userBasicInfo.put("sex", sysUser.getSex()); + userBasicInfo.put("birthday", sysUser.getBirthday()); + userBasicInfo.put("status", sysUser.getStatus()); + + result.put("baseInfo", userBasicInfo); + result.put("roles", roles); + + // 扩展用户信息 + if (userInfo != null) { + JSONObject extendedInfo = new JSONObject(new LinkedHashMap<>()); + extendedInfo.put("major", userInfo.getMajor()); + extendedInfo.put("college", userInfo.getCollege()); + extendedInfo.put("education", userInfo.getEducation()); + extendedInfo.put("title", userInfo.getTitle()); + extendedInfo.put("tag", userInfo.getTag()); + extendedInfo.put("sortOrder", userInfo.getSortOrder()); + result.put("extendedInfo", extendedInfo); + } + + return Result.OK(result); + } catch (Exception e) { + log.error("查询用户信息失败:" + e.getMessage(), e); + return Result.error(500, "查询用户信息失败:" + e.getMessage()); + } + } }