新增了我的页面

This commit is contained in:
wucongxing8150 2025-05-26 10:47:42 +08:00
parent fcf9ca6744
commit d3c30c0eee
7 changed files with 274 additions and 100 deletions

View File

@ -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<Map<String, Object>> getUserPage(@Validated({UserRequest.Page.class}) @ModelAttribute UserRequest request) {
request.validateForPage(); // 确保分页参数有默认值
@Resource
private BasicHospitalDao basicHospitalDao;
Page<UserModel> page = new Page<>(request.getPage(), request.getPageSize()); // 创建分页对象
@Resource
private HttpServletRequest httpServletRequest;
QueryWrapper<UserModel> queryWrapper = new QueryWrapper<>();
queryWrapper.like("user_id", "");
// // 查询所有用户
// @GetMapping("/users")
// public Response<Map<String, Object>> getUserPage(@Validated({UserRequest.Page.class}) @ModelAttribute UserRequest request) {
// request.validateForPage(); // 确保分页参数有默认值
//
// Page<UserModel> page = new Page<>(request.getPage(), request.getPageSize()); // 创建分页对象
//
// QueryWrapper<UserModel> queryWrapper = new QueryWrapper<>();
// queryWrapper.like("user_id", "");
//
// // 执行分页查询
// Page<UserModel> resultPage = userDao.selectPage(page, queryWrapper);
//
// // 返回
// List<UserDto> userDtoList = UserDto.getUserListDto(resultPage.getRecords());
//
// // 组装分页结果
// Map<String, Object> 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<UserModel> resultPage = userDao.selectPage(page, queryWrapper);
// 获取用户信息
@GetMapping("/user")
public Response<UserDto> getUser(@Validated({UserRequest.Page.class}) @ModelAttribute UserRequest request) {
String userId = (String) httpServletRequest.getAttribute("userId");
// 返回
List<UserDto> userDtoList = UserDto.getUserListDto(resultPage.getRecords());
// 获取当前登录用户数据
UserModel user = userDao.selectById(Long.valueOf(userId));
if (user == null) {
return Response.error();
}
// 组装分页结果
Map<String, Object> 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);
}
}

View File

@ -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; // 用户名称

View File

@ -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<UserDto> getUserListDto(List<UserModel> userModels) {
List<UserDto> userDtoList = new ArrayList<>();
for (UserModel userModel : userModels) {
UserDto dto = getUserDto(userModel);
// 在这里对字段做一些操作暂时不做任何处理
// 例如: dto.setUserName(dto.getUserName().toUpperCase());
userDtoList.add(dto);
}
return userDtoList;
}
}

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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<CaseClinicalDoctorModel> 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;
}
/**

View File

@ -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 -> "未知";
};
}
}