From 595bd526d4dad4b64ad52d62f83b2ee3d96bc534 Mon Sep 17 00:00:00 2001 From: GoCo Date: Fri, 15 Aug 2025 18:10:01 +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=8E=A5=E5=8F=A3=EF=BC=8C=E6=94=B9=E6=88=90?= =?UTF-8?q?dto=E5=B9=B6=E9=85=8D=E7=BD=AE=E5=AD=97=E6=AE=B5=E5=90=AB?= =?UTF-8?q?=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/controller/UserBizController.java | 38 ++++------ .../biz/dto/CourseWithTeacherInfo.java | 4 +- .../jeecg/modules/biz/dto/TeacherInfo.java | 13 ++++ .../modules/biz/dto/UserInfoResponse.java | 73 +++++++++++++++++++ 4 files changed, 102 insertions(+), 26 deletions(-) create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/UserInfoResponse.java 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 6abcd216..5b0f8ee1 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 @@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestMapping; 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.dto.UserInfoResponse; import org.jeecg.modules.biz.service.UserBizService; import org.jeecg.modules.gen.userinfo.entity.UserInfo; import org.jeecg.modules.gen.userinfo.mapper.UserInfoMapper; @@ -31,6 +32,7 @@ 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 org.springframework.beans.BeanUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -138,8 +140,8 @@ public class UserBizController { } @GetMapping("/info") - @Operation(summary = "查询用户信息") - public Result queryUserInfo(HttpServletRequest request) { + @Operation(summary = "查询用户信息", description = "通过JWT token获取当前用户的详细信息,包括基本信息、角色和扩展信息") + public Result queryUserInfo(HttpServletRequest request) { try { // 1. 从JWT中获取用户名 String username = JwtUtil.getUserNameByToken(request); @@ -163,36 +165,22 @@ public class UserBizController { ); // 5. 构建返回结果 - JSONObject result = new JSONObject(new LinkedHashMap<>()); + UserInfoResponse response = new UserInfoResponse(); // 基本用户信息 - 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); + UserInfoResponse.BaseInfo baseInfo = new UserInfoResponse.BaseInfo(); + BeanUtils.copyProperties(sysUser, baseInfo); + response.setBaseInfo(baseInfo); + response.setRoles(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); + UserInfoResponse.ExtendedInfo extendedInfo = new UserInfoResponse.ExtendedInfo(); + BeanUtils.copyProperties(userInfo, extendedInfo); + response.setExtendedInfo(extendedInfo); } - return Result.OK(result); + return Result.OK(response); } catch (Exception e) { log.error("查询用户信息失败:" + e.getMessage(), e); return Result.error(500, "查询用户信息失败:" + e.getMessage()); diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/CourseWithTeacherInfo.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/CourseWithTeacherInfo.java index cd78b9ea..331ea0a5 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/CourseWithTeacherInfo.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/CourseWithTeacherInfo.java @@ -1,13 +1,15 @@ package org.jeecg.modules.biz.dto; import org.jeecg.modules.gen.course.entity.Course; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.List; @Data @EqualsAndHashCode(callSuper = false) +@Schema(description = "课程信息(包含讲师信息)") public class CourseWithTeacherInfo extends Course { - /**讲师信息列表*/ + @Schema(description = "授课讲师列表") private List teacherList; } diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/TeacherInfo.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/TeacherInfo.java index 3a6d940b..a2c5d2f7 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/TeacherInfo.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/TeacherInfo.java @@ -1,13 +1,26 @@ package org.jeecg.modules.biz.dto; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Data +@Schema(description = "讲师信息") public class TeacherInfo { + @Schema(description = "讲师ID") private String id; + + @Schema(description = "讲师姓名") private String name; + + @Schema(description = "讲师头像") private String avatar; + + @Schema(description = "职称") private String title; + + @Schema(description = "标签") private String tag; + + @Schema(description = "显示顺序") private Integer sortOrder; } diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/UserInfoResponse.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/UserInfoResponse.java new file mode 100644 index 00000000..6206bb99 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/UserInfoResponse.java @@ -0,0 +1,73 @@ +package org.jeecg.modules.biz.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import java.util.Date; +import java.util.List; + +@Data +@Schema(description = "用户信息响应对象") +public class UserInfoResponse { + + @Schema(description = "用户基本信息") + private BaseInfo baseInfo; + + @Schema(description = "用户角色列表") + private List roles; + + @Schema(description = "扩展用户信息") + private ExtendedInfo extendedInfo; + + @Data + @Schema(description = "用户基本信息") + public static class BaseInfo { + @Schema(description = "用户ID") + private String id; + + @Schema(description = "用户名") + private String username; + + @Schema(description = "真实姓名") + private String realname; + + @Schema(description = "头像") + private String avatar; + + @Schema(description = "手机号") + private String phone; + + @Schema(description = "邮箱") + private String email; + + @Schema(description = "性别(1-男,2-女)") + private Integer sex; + + @Schema(description = "生日") + private Date birthday; + + @Schema(description = "状态(1-正常,2-冻结)") + private Integer status; + } + + @Data + @Schema(description = "扩展用户信息") + public static class ExtendedInfo { + @Schema(description = "专业") + private String major; + + @Schema(description = "学院") + private String college; + + @Schema(description = "学历") + private String education; + + @Schema(description = "职称") + private String title; + + @Schema(description = "标签") + private String tag; + + @Schema(description = "显示顺序") + private Integer sortOrder; + } +}