diff --git a/src/main/java/com/example/caseData/controller/UserController.java b/src/main/java/com/example/caseData/controller/UserController.java index d9896b0..80fcd30 100644 --- a/src/main/java/com/example/caseData/controller/UserController.java +++ b/src/main/java/com/example/caseData/controller/UserController.java @@ -3,11 +3,16 @@ package com.example.caseData.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.caseData.common.Response; +import com.example.caseData.dao.BasicHospitalDao; import com.example.caseData.dao.UserDao; -import com.example.caseData.dto.UserDto; +import com.example.caseData.dto.user.UserDto; +import com.example.caseData.dto.caseClinicalArticle.CaseClinicalArticleDto; +import com.example.caseData.dto.user.UserDto; +import com.example.caseData.model.BasicHospitalModel; import com.example.caseData.model.UserModel; import com.example.caseData.request.UserRequest; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; @@ -24,29 +29,64 @@ public class UserController extends BaseController { @Resource private UserDao userDao; - // 查询所有用户 - @GetMapping("/users") - public Response> getUserPage(@Validated({UserRequest.Page.class}) @ModelAttribute UserRequest request) { - request.validateForPage(); // 确保分页参数有默认值 + @Resource + private BasicHospitalDao basicHospitalDao; - Page page = new Page<>(request.getPage(), request.getPageSize()); // 创建分页对象 + @Resource + private HttpServletRequest httpServletRequest; - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.like("user_id", "吴"); +// // 查询所有用户 +// @GetMapping("/users") +// public Response> getUserPage(@Validated({UserRequest.Page.class}) @ModelAttribute UserRequest request) { +// request.validateForPage(); // 确保分页参数有默认值 +// +// Page page = new Page<>(request.getPage(), request.getPageSize()); // 创建分页对象 +// +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.like("user_id", "吴"); +// +// // 执行分页查询 +// Page resultPage = userDao.selectPage(page, queryWrapper); +// +// // 返回 +// List userDtoList = UserDto.getUserListDto(resultPage.getRecords()); +// +// // 组装分页结果 +// Map resultMap = new HashMap<>(); +// resultMap.put("page", resultPage.getCurrent()); +// resultMap.put("pageSize", resultPage.getSize()); +// resultMap.put("total", resultPage.getTotal()); +// resultMap.put("data", userDtoList); +// +// return Response.success(resultMap); +// } - // 执行分页查询 - Page resultPage = userDao.selectPage(page, queryWrapper); + // 获取用户信息 + @GetMapping("/user") + public Response getUser(@Validated({UserRequest.Page.class}) @ModelAttribute UserRequest request) { + String userId = (String) httpServletRequest.getAttribute("userId"); - // 返回 - List userDtoList = UserDto.getUserListDto(resultPage.getRecords()); + // 获取当前登录用户数据 + UserModel user = userDao.selectById(Long.valueOf(userId)); + if (user == null) { + return Response.error(); + } - // 组装分页结果 - Map resultMap = new HashMap<>(); - resultMap.put("page", resultPage.getCurrent()); - resultMap.put("pageSize", resultPage.getSize()); - resultMap.put("total", resultPage.getTotal()); - resultMap.put("data", userDtoList); + // 获取用户医院数据 + BasicHospitalModel basicHospital = basicHospitalDao.selectById(user.getHospitalId()); + if (basicHospital == null) { + return Response.error(); + } + user.setBasicHospital(basicHospital); - return Response.success(resultMap); + // 处理返回值 + UserDto g = UserDto.GetDto(user); + g.setUserIden(""); + g.setOpenId(""); + g.setUnionId(""); + g.setUserMobile(""); + g.setMobileEncryption(""); + + return Response.success(g); } } diff --git a/src/main/java/com/example/caseData/dto/PublicDto.java b/src/main/java/com/example/caseData/dto/PublicDto.java index 178bffe..b21909a 100644 --- a/src/main/java/com/example/caseData/dto/PublicDto.java +++ b/src/main/java/com/example/caseData/dto/PublicDto.java @@ -12,6 +12,9 @@ public class PublicDto { @JsonProperty("user_id") private String userId; // 主键id + @JsonProperty("doctor_id") + private String doctorId; // 医生id + @JsonProperty("user_name") private String userName; // 用户名称 diff --git a/src/main/java/com/example/caseData/dto/UserDto.java b/src/main/java/com/example/caseData/dto/UserDto.java deleted file mode 100644 index 6bf8381..0000000 --- a/src/main/java/com/example/caseData/dto/UserDto.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.example.caseData.dto; - -import com.example.caseData.model.UserModel; -import com.example.caseData.utils.Replace; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; - -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserDto { - private String userId; // 主键id - private String userIden; // 第三方平台唯一标识 - private String userName; // 用户名称 - private String userMobile; // 手机号 - private Integer status; // 状态(0:禁用 1:正常 2:删除) - private Integer registerSource;// 注册来源(1:未知 2:app用户 3:佳动例) - private String openId; // 用户微信标识 - private String unionId; // 微信开放平台标识 - private Integer sex; // 性别(0:未知 1:男 2:女) - private String avatar; // 头像 - private Integer title; // 医生职称 - private String departmentName; // 科室名称 - private String hospitalId; // 所属医院id - private LocalDateTime createdAt; // 创建时间 - private LocalDateTime updatedAt; // 修改时间 - - public static UserDto getUserDto(UserModel userModel) { - if (userModel == null) { - return null; - } - - UserDto dto = new UserDto(); - dto.setUserId(userModel.getUserId().toString()); - dto.setUserIden(userModel.getUserIden()); - dto.setUserName(userModel.getUserName()); - dto.setUserMobile(userModel.getUserMobile()); - dto.setStatus(userModel.getStatus()); - dto.setRegisterSource(userModel.getRegisterSource()); - dto.setOpenId(userModel.getOpenId()); - dto.setUnionId(userModel.getUnionId()); - dto.setSex(userModel.getSex()); - dto.setAvatar(userModel.getAvatar()); - dto.setTitle(userModel.getTitle()); - dto.setDepartmentName(userModel.getDepartmentName()); - dto.setHospitalId(userModel.getHospitalId().toString()); - dto.setCreatedAt(userModel.getCreatedAt()); - dto.setUpdatedAt(userModel.getUpdatedAt()); - return dto; - } - - - public static List getUserListDto(List userModels) { - List userDtoList = new ArrayList<>(); - - for (UserModel userModel : userModels) { - UserDto dto = getUserDto(userModel); - - // 在这里对字段做一些操作(暂时不做任何处理) - // 例如: dto.setUserName(dto.getUserName().toUpperCase()); - - userDtoList.add(dto); - } - - return userDtoList; - } -} diff --git a/src/main/java/com/example/caseData/dto/user/UserDto.java b/src/main/java/com/example/caseData/dto/user/UserDto.java new file mode 100644 index 0000000..9bba193 --- /dev/null +++ b/src/main/java/com/example/caseData/dto/user/UserDto.java @@ -0,0 +1,162 @@ +package com.example.caseData.dto.user; + +import cn.hutool.core.bean.BeanUtil; +import com.example.caseData.dto.basicHospital.BasicHospitalDto; +import com.example.caseData.dto.basicSensitiveWord.BasicSensitiveWordDto; +import com.example.caseData.dto.caseClinicalArticle.CaseClinicalArticleDto; +import com.example.caseData.dto.caseClinicalArticleAuthor.CaseClinicalArticleAuthorDto; +import com.example.caseData.model.BasicHospitalModel; +import com.example.caseData.model.CaseClinicalArticleModel; +import com.example.caseData.model.UserModel; +import com.example.caseData.utils.IntToString; +import com.example.caseData.utils.Replace; +import com.example.caseData.utils.StringToInt; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class UserDto { + /** + * 主键id + */ + @JsonProperty("user_id") + private String userId; // 主键id + + /** + * 第三方平台唯一标识 + */ + @JsonProperty("user_iden") + private String userIden; // 第三方平台唯一标识 + + /** + * 用户名称 + */ + @JsonProperty("user_name") + private String userName; // 用户名称 + + /** + * 手机号 + */ + @JsonProperty("user_mobile") + private String userMobile; // 手机号 + + /** + * 手机号加密 + */ + @JsonProperty("mobile_encryption") + private String mobileEncryption; // 手机号加密 + + /** + * 状态(0:禁用 1:正常 2:删除) + */ + @JsonProperty("status") + private Integer status; // 状态(0:禁用 1:正常 2:删除) + + /** + * 注册来源 + */ + @JsonProperty("register_source") + private Integer registerSource;// 注册来源(1:未知 2:app用户 3:佳动例) + + /** + * 用户微信标识 + */ + @JsonProperty("open_id") + private String openId; // 用户微信标识 + + /** + * 微信开放平台标识 + */ + @JsonProperty("union_id") + private String unionId; // 微信开放平台标识 + + /** + * 性别 + */ + @JsonProperty("sex") + private Integer sex; // 性别(0:未知 1:男 2:女) + + /** + * 头像 + */ + @JsonProperty("avatar") + private String avatar; // 头像 + + /** + * 医生职称 + */ + @JsonProperty("title") + private String title; // 医生职称 + + /** + * 科室名称 + */ + @JsonProperty("department_name") + private String departmentName; // 科室名称 + + /** + * 所属医院id + */ + @JsonProperty("hospital_id") + private String hospitalId; // 所属医院id + + /** + * 创建时间 + */ + @JsonProperty("created_at") + private LocalDateTime createdAt; // 创建时间 + + /** + * 修改时间 + */ + @JsonProperty("updated_at") + private LocalDateTime updatedAt; // 修改时间 + + /** + * 所属医院名称 + */ + @JsonProperty("hospital_name") + private String hospitalName; // 所属医院名称 + + /** + * 医生id + */ + @JsonProperty("doctor_id") + private String doctorId; // 医生id + + /** + * 详情 + */ + public static UserDto GetDto(UserModel model) { + if (model == null) { + return null; + } + + UserDto dto = BeanUtil.copyProperties(model, UserDto.class); + + // 类型转换示例 + if (model.getUserId() != null) { + dto.setUserId(String.valueOf(model.getUserId())); // Long -> String + } + + // 头像 + if (model.getAvatar() != null) { + dto.setAvatar(Replace.addOssDomain(model.getAvatar())); + } + + // 职称 + if (model.getTitle() != null) { + dto.setTitle(IntToString.DoctorTitleToString(model.getTitle())); + } + + // 医院 + if (model.getBasicHospital() != null) { + dto.setHospitalName(model.getBasicHospital().getHospitalName()); + } + + return dto; + } +} diff --git a/src/main/java/com/example/caseData/model/UserModel.java b/src/main/java/com/example/caseData/model/UserModel.java index 37f39a0..f98c69a 100644 --- a/src/main/java/com/example/caseData/model/UserModel.java +++ b/src/main/java/com/example/caseData/model/UserModel.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.time.LocalDateTime; +import java.util.List; @Data @TableName("`user`") @@ -109,4 +110,8 @@ public class UserModel { */ @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt; + + // 医院 + @TableField(exist = false) + private BasicHospitalModel basicHospital; } \ No newline at end of file diff --git a/src/main/java/com/example/caseData/service/UserService.java b/src/main/java/com/example/caseData/service/UserService.java index cf84ef4..a6754fd 100644 --- a/src/main/java/com/example/caseData/service/UserService.java +++ b/src/main/java/com/example/caseData/service/UserService.java @@ -5,6 +5,7 @@ import cn.hutool.crypto.SecureUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.example.caseData.dao.BasicHospitalDao; +import com.example.caseData.dao.CaseClinicalDoctorDao; import com.example.caseData.dao.UserDao; import com.example.caseData.dto.PublicDto; import com.example.caseData.exception.BusinessException; @@ -13,6 +14,7 @@ import com.example.caseData.extend.app.Hospital.Hospital; import com.example.caseData.extend.app.UserInfo.GetUserInfoByMobileResponse; import com.example.caseData.extend.app.UserInfo.UserInfo; import com.example.caseData.model.BasicHospitalModel; +import com.example.caseData.model.CaseClinicalDoctorModel; import com.example.caseData.model.UserModel; import com.example.caseData.utils.JwtUtil; import com.example.caseData.utils.Replace; @@ -40,6 +42,9 @@ public class UserService { @Resource private BasicHospitalDao basicHospitalDao; + @Resource + private CaseClinicalDoctorDao caseClinicalDoctorDao; + @Resource private Hospital hospital; @@ -58,13 +63,22 @@ public class UserService { // 生成jwt String token = jwtUtil.createToken(String.valueOf(user.getUserId())); + // 获取对应医生数据 + LambdaQueryWrapper caseClinicalDoctorWrapper = new LambdaQueryWrapper<>(); + caseClinicalDoctorWrapper.eq(CaseClinicalDoctorModel::getDoctorIden, user.getUserIden()); + CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectOne(caseClinicalDoctorWrapper); + // 处理返回值 - PublicDto publicDto = new PublicDto(); - publicDto.setUserId(String.valueOf(user.getUserId())); - publicDto.setUserName(user.getUserName()); - publicDto.setAvatar(Replace.addOssDomain(user.getAvatar())); - publicDto.setToken(token); - return publicDto; + PublicDto g = new PublicDto(); + g.setUserId(String.valueOf(user.getUserId())); + g.setUserName(user.getUserName()); + g.setAvatar(Replace.addOssDomain(user.getAvatar())); + g.setToken(token); + + if (caseClinicalDoctor != null) { + g.setDoctorId(String.valueOf(caseClinicalDoctor.getDoctorId())); + } + return g; } /** diff --git a/src/main/java/com/example/caseData/utils/IntToString.java b/src/main/java/com/example/caseData/utils/IntToString.java new file mode 100644 index 0000000..93c23f9 --- /dev/null +++ b/src/main/java/com/example/caseData/utils/IntToString.java @@ -0,0 +1,25 @@ +package com.example.caseData.utils; + +public class IntToString { + + /** + * 将医生职称转换为整数。 + * + * @param title 医生职称字符串 + * @return 职称对应的整数值(0:未知 1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师) + */ + public static String DoctorTitleToString(Integer title) { + if (title == null) { + return "未知"; + } + return switch (title) { + case 1 -> "主任医师"; + case 2 -> "主任中医师"; + case 3 -> "副主任医师"; + case 4 -> "副主任中医师"; + case 5 -> "主治医师"; + case 6 -> "住院医师"; + default -> "未知"; + }; + } +}