From e17f93d517a84f6785978394d99ec9e7170b2aa8 Mon Sep 17 00:00:00 2001 From: zhaoyz <2@2.com> Date: Thu, 21 Mar 2024 10:03:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BB=E9=99=A2=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E7=99=BB=E5=BD=95=20=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E5=8C=BB=E9=99=A2=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/rax/admin/api/dto/HospitalDTO.java | 28 ++++++ .../java/com/rax/admin/api/dto/UserDTO.java | 12 +++ .../com/rax/admin/api/entity/SysUser.java | 6 ++ .../controller/SysHospitalController.java | 56 +++++++++++ .../rax/admin/mapper/SysHospitalMapper.java | 9 ++ .../rax/admin/service/SysHospitalService.java | 28 ++++++ .../service/impl/SysHospitalServiceImpl.java | 97 +++++++++++++++++++ .../service/impl/SysUserServiceImpl.java | 82 ++++++++++------ .../src/main/resources/application.yml | 1 + .../resources/mapper/SysHospitalMapper.xml | 4 + .../controller/MedicineController.java | 6 -- 11 files changed, 294 insertions(+), 35 deletions(-) create mode 100644 upms/upms-api/src/main/java/com/rax/admin/api/dto/HospitalDTO.java create mode 100644 upms/upms-biz/src/main/java/com/rax/admin/controller/SysHospitalController.java create mode 100644 upms/upms-biz/src/main/java/com/rax/admin/mapper/SysHospitalMapper.java create mode 100644 upms/upms-biz/src/main/java/com/rax/admin/service/SysHospitalService.java create mode 100644 upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysHospitalServiceImpl.java create mode 100644 upms/upms-biz/src/main/resources/mapper/SysHospitalMapper.xml diff --git a/upms/upms-api/src/main/java/com/rax/admin/api/dto/HospitalDTO.java b/upms/upms-api/src/main/java/com/rax/admin/api/dto/HospitalDTO.java new file mode 100644 index 0000000..b98b5a8 --- /dev/null +++ b/upms/upms-api/src/main/java/com/rax/admin/api/dto/HospitalDTO.java @@ -0,0 +1,28 @@ +package com.rax.admin.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "医院信息") +public class HospitalDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "医院名称") + private String name; + + @Schema(description = "编码") + private String code; + + @Schema(description = "医院所在省") + private String province; + + @Schema(description = "医院所在市") + private String city; + + @Schema(description = "状态,正常 0, 冻结 1") + private Boolean status; + +} diff --git a/upms/upms-api/src/main/java/com/rax/admin/api/dto/UserDTO.java b/upms/upms-api/src/main/java/com/rax/admin/api/dto/UserDTO.java index e93770c..f75696f 100644 --- a/upms/upms-api/src/main/java/com/rax/admin/api/dto/UserDTO.java +++ b/upms/upms-api/src/main/java/com/rax/admin/api/dto/UserDTO.java @@ -39,4 +39,16 @@ public class UserDTO extends SysUser { @Schema(description = "新密码") private String newpassword1; + /** + * 验证码 + */ + @Schema(description = "验证码") + private String code; + + /** + * 随机值 + */ + @Schema(description = "随机值") + private String randomStr; + } diff --git a/upms/upms-api/src/main/java/com/rax/admin/api/entity/SysUser.java b/upms/upms-api/src/main/java/com/rax/admin/api/entity/SysUser.java index 48e0b60..17e93d3 100644 --- a/upms/upms-api/src/main/java/com/rax/admin/api/entity/SysUser.java +++ b/upms/upms-api/src/main/java/com/rax/admin/api/entity/SysUser.java @@ -144,4 +144,10 @@ public class SysUser implements Serializable { @Schema(description = "邮箱") private String email; + @Schema(description = "性别") + private String sex; + + @Schema(description = "医院") + private String hospital; + } diff --git a/upms/upms-biz/src/main/java/com/rax/admin/controller/SysHospitalController.java b/upms/upms-biz/src/main/java/com/rax/admin/controller/SysHospitalController.java new file mode 100644 index 0000000..d4a61de --- /dev/null +++ b/upms/upms-biz/src/main/java/com/rax/admin/controller/SysHospitalController.java @@ -0,0 +1,56 @@ +package com.rax.admin.controller; + +import com.rax.admin.api.dto.HospitalDTO; +import com.rax.admin.api.entity.SysHospital; +import com.rax.admin.service.SysHospitalService; +import com.rax.common.core.util.R; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/hospital") +@Tag(description = "hospital", name = "医院管理模块") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class SysHospitalController { + + @Autowired + private SysHospitalService sysHospitalService; + + @PostMapping("/getHospitalById") + R getHospitalById(String id) { + return sysHospitalService.getHospitalById(id); + } + + @PostMapping("/deleteHospitalById") + R deleteHospitalById(String id) { + return sysHospitalService.deleteHospitalById(id); + } + + @PostMapping("/updateHospital") + R updateHospital(HospitalDTO hospitalDTO) { + return sysHospitalService.updateHospital(hospitalDTO); + } + + @PostMapping("/saveHospital") + R saveHospital(HospitalDTO hospitalDTO) { + return sysHospitalService.saveHospital(hospitalDTO); + } + + @PostMapping("/getHospitalPage") + R getHospitalPage(String name, long offset, long limit) { + return sysHospitalService.getHospitalList(name, offset, limit); + } + + @RequestMapping("/getHospitalList") + R getHospitalList(String name) { + return sysHospitalService.getHospitalList(name); + } +} diff --git a/upms/upms-biz/src/main/java/com/rax/admin/mapper/SysHospitalMapper.java b/upms/upms-biz/src/main/java/com/rax/admin/mapper/SysHospitalMapper.java new file mode 100644 index 0000000..66cbcb7 --- /dev/null +++ b/upms/upms-biz/src/main/java/com/rax/admin/mapper/SysHospitalMapper.java @@ -0,0 +1,9 @@ +package com.rax.admin.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.rax.admin.api.entity.SysHospital; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SysHospitalMapper extends BaseMapper { +} diff --git a/upms/upms-biz/src/main/java/com/rax/admin/service/SysHospitalService.java b/upms/upms-biz/src/main/java/com/rax/admin/service/SysHospitalService.java new file mode 100644 index 0000000..049f28a --- /dev/null +++ b/upms/upms-biz/src/main/java/com/rax/admin/service/SysHospitalService.java @@ -0,0 +1,28 @@ +package com.rax.admin.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.rax.admin.api.dto.HospitalDTO; +import com.rax.admin.api.entity.SysHospital; +import com.rax.common.core.util.R; + +import java.util.List; +import java.util.Map; + +/** + * 医院信息 + */ +public interface SysHospitalService extends IService { + + R getHospitalById(String id); + + R deleteHospitalById(String id); + + R updateHospital(HospitalDTO hospitalDTO); + + R saveHospital(HospitalDTO hospitalDTO); + + R getHospitalList(String name, long offset, long limit); + + R getHospitalList(String name); + +} diff --git a/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysHospitalServiceImpl.java b/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysHospitalServiceImpl.java new file mode 100644 index 0000000..7dbeda2 --- /dev/null +++ b/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysHospitalServiceImpl.java @@ -0,0 +1,97 @@ +package com.rax.admin.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.rax.admin.api.dto.HospitalDTO; +import com.rax.admin.api.entity.SysHospital; +import com.rax.admin.mapper.SysHospitalMapper; +import com.rax.admin.service.SysHospitalService; +import com.rax.common.core.util.R; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class SysHospitalServiceImpl extends ServiceImpl implements SysHospitalService { + + @Autowired + private SysHospitalMapper sysHospitalMapper; + + public R getHospitalById(String id) { + SysHospital sysHospital = getById(id); + return R.ok(sysHospital); + } + + @Override + public R deleteHospitalById(String id) { + boolean status = removeById(id); + return R.ok(status); + } + + @Override + public R updateHospital(HospitalDTO hospitalDTO) { + SysHospital sysHospital = new SysHospital(); + BeanUtils.copyProperties(hospitalDTO, sysHospital); + boolean status = updateById(sysHospital); + return R.ok(status); + } + + @Override + public R saveHospital(HospitalDTO hospitalDTO) { + SysHospital sysHospital = new SysHospital(); + BeanUtils.copyProperties(hospitalDTO, sysHospital); + boolean status = save(sysHospital); + return R.ok(status); + } + + @Override + public R getHospitalList(String name, long offset, long limit) { + Page page = new Page<>(); + page.setSize(limit); + page.setCurrent(offset); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (StringUtils.hasText(name)) { + queryWrapper.checkSqlInjection().like("name", name); + } + queryWrapper.eq("deleted", 0); + + List orderItems = new ArrayList<>(); + OrderItem createTimeOrder = new OrderItem(); + createTimeOrder.setColumn("create_time"); + createTimeOrder.setAsc(false); + orderItems.add(createTimeOrder); + page.setOrders(orderItems); + + List sysHospitals = sysHospitalMapper.selectList(page, queryWrapper); + Long count = sysHospitalMapper.selectCount(queryWrapper); + + Map result = new HashMap(); + result.put("count", count); + result.put("list", sysHospitals); + return R.ok(result); + } + + @Override + public R getHospitalList(String name) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (StringUtils.hasText(name)) { + queryWrapper.checkSqlInjection().like("name", name); + } + queryWrapper.eq("deleted", 0); + queryWrapper.orderByDesc("create_time"); + String [] columns = {"id", "name", "code", "status", "domain", "province", "city"}; + queryWrapper.select(columns); + + List sysHospitals = sysHospitalMapper.selectMaps(queryWrapper); + return R.ok(sysHospitals); + } +} diff --git a/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysUserServiceImpl.java b/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysUserServiceImpl.java index 6540f7f..5cc40cd 100644 --- a/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysUserServiceImpl.java +++ b/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysUserServiceImpl.java @@ -31,10 +31,12 @@ import org.springframework.beans.BeanUtils; import org.springframework.cache.Cache; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CacheEvict; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; import org.springframework.validation.BindingResult; import java.time.LocalDateTime; @@ -65,8 +67,11 @@ public class SysUserServiceImpl extends ServiceImpl impl private final CacheManager cacheManager; + private final RedisTemplate redisTemplate; + /** * 保存用户信息 + * * @param userDto DTO 对象 * @return success/fail */ @@ -95,7 +100,7 @@ public class SysUserServiceImpl extends ServiceImpl impl String defaultRole = ParamResolver.getStr("USER_DEFAULT_ROLE"); // 默认角色 SysRole sysRole = sysRoleService - .getOne(Wrappers.lambdaQuery().eq(SysRole::getRoleCode, defaultRole)); + .getOne(Wrappers.lambdaQuery().eq(SysRole::getRoleCode, defaultRole)); userDto.setRole(Collections.singletonList(sysRole.getRoleId())); } @@ -111,6 +116,7 @@ public class SysUserServiceImpl extends ServiceImpl impl /** * 通过查用户的全部信息 + * * @param sysUser 用户 * @return */ @@ -120,19 +126,19 @@ public class SysUserServiceImpl extends ServiceImpl impl userInfo.setSysUser(sysUser); // 设置角色列表 (ID) List roleIds = sysRoleService.findRolesByUserId(sysUser.getUserId()) - .stream() - .map(SysRole::getRoleId) - .collect(Collectors.toList()); + .stream() + .map(SysRole::getRoleId) + .collect(Collectors.toList()); userInfo.setRoles(ArrayUtil.toArray(roleIds, Long.class)); // 设置权限列表(menu.permission) Set permissions = new HashSet<>(); roleIds.forEach(roleId -> { List permissionList = sysMenuService.findMenuByRoleId(roleId) - .stream() - .filter(menu -> StrUtil.isNotEmpty(menu.getPermission())) - .map(SysMenu::getPermission) - .collect(Collectors.toList()); + .stream() + .filter(menu -> StrUtil.isNotEmpty(menu.getPermission())) + .map(SysMenu::getPermission) + .collect(Collectors.toList()); permissions.addAll(permissionList); }); userInfo.setPermissions(ArrayUtil.toArray(permissions, String.class)); @@ -141,7 +147,8 @@ public class SysUserServiceImpl extends ServiceImpl impl /** * 分页查询用户信息(含有角色信息) - * @param page 分页对象 + * + * @param page 分页对象 * @param userDTO 参数列表 * @return */ @@ -152,6 +159,7 @@ public class SysUserServiceImpl extends ServiceImpl impl /** * 通过ID查询用户信息 + * * @param id 用户ID * @return 用户信息 */ @@ -162,6 +170,7 @@ public class SysUserServiceImpl extends ServiceImpl impl /** * 删除用户 + * * @param ids 用户ID 列表 * @return Boolean */ @@ -231,6 +240,7 @@ public class SysUserServiceImpl extends ServiceImpl impl /** * 查询全部的用户 + * * @param userDTO 查询条件 * @return list */ @@ -243,14 +253,14 @@ public class SysUserServiceImpl extends ServiceImpl impl UserExcelVO excelVO = new UserExcelVO(); BeanUtils.copyProperties(userVO, excelVO); String roleNameList = userVO.getRoleList() - .stream() - .map(SysRole::getRoleName) - .collect(Collectors.joining(StrUtil.COMMA)); + .stream() + .map(SysRole::getRoleName) + .collect(Collectors.joining(StrUtil.COMMA)); excelVO.setRoleNameList(roleNameList); String postNameList = userVO.getPostList() - .stream() - .map(SysPost::getPostName) - .collect(Collectors.joining(StrUtil.COMMA)); + .stream() + .map(SysPost::getPostName) + .collect(Collectors.joining(StrUtil.COMMA)); excelVO.setPostNameList(postNameList); return excelVO; }).collect(Collectors.toList()); @@ -259,7 +269,8 @@ public class SysUserServiceImpl extends ServiceImpl impl /** * excel 导入用户, 插入正确的 错误的提示行号 - * @param excelVOList excel 列表数据 + * + * @param excelVOList excel 列表数据 * @param bindingResult 错误数据 * @return ok fail */ @@ -279,7 +290,7 @@ public class SysUserServiceImpl extends ServiceImpl impl Set errorMsg = new HashSet<>(); // 校验用户名是否存在 boolean exsitUserName = userList.stream() - .anyMatch(sysUser -> excel.getUsername().equals(sysUser.getUsername())); + .anyMatch(sysUser -> excel.getUsername().equals(sysUser.getUsername())); if (exsitUserName) { errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, excel.getUsername())); @@ -287,8 +298,8 @@ public class SysUserServiceImpl extends ServiceImpl impl // 判断输入的部门名称列表是否合法 Optional deptOptional = deptList.stream() - .filter(dept -> excel.getDeptName().equals(dept.getName())) - .findFirst(); + .filter(dept -> excel.getDeptName().equals(dept.getName())) + .findFirst(); if (!deptOptional.isPresent()) { errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_DEPT_DEPTNAME_INEXISTENCE, excel.getDeptName())); } @@ -296,8 +307,8 @@ public class SysUserServiceImpl extends ServiceImpl impl // 判断输入的角色名称列表是否合法 List roleNameList = StrUtil.split(excel.getRoleNameList(), StrUtil.COMMA); List roleCollList = roleList.stream() - .filter(role -> roleNameList.stream().anyMatch(name -> role.getRoleName().equals(name))) - .collect(Collectors.toList()); + .filter(role -> roleNameList.stream().anyMatch(name -> role.getRoleName().equals(name))) + .collect(Collectors.toList()); if (roleCollList.size() != roleNameList.size()) { errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_ROLE_ROLENAME_INEXISTENCE, excel.getRoleNameList())); @@ -306,8 +317,8 @@ public class SysUserServiceImpl extends ServiceImpl impl // 判断输入的部门名称列表是否合法 List postNameList = StrUtil.split(excel.getPostNameList(), StrUtil.COMMA); List postCollList = postList.stream() - .filter(post -> postNameList.stream().anyMatch(name -> post.getPostName().equals(name))) - .collect(Collectors.toList()); + .filter(post -> postNameList.stream().anyMatch(name -> post.getPostName().equals(name))) + .collect(Collectors.toList()); if (postCollList.size() != postNameList.size()) { errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_POST_POSTNAME_INEXISTENCE, excel.getPostNameList())); @@ -316,8 +327,7 @@ public class SysUserServiceImpl extends ServiceImpl impl // 数据合法情况 if (CollUtil.isEmpty(errorMsg)) { insertExcelUser(excel, deptOptional, roleCollList, postCollList); - } - else { + } else { // 数据不合法情况 errorMessageList.add(new ErrorMessage(excel.getLineNum(), errorMsg)); } @@ -357,12 +367,26 @@ public class SysUserServiceImpl extends ServiceImpl impl /** * 注册用户 赋予用户默认角色 + * * @param userDto 用户信息 * @return success/false */ @Override @Transactional(rollbackFor = Exception.class) public R registerUser(UserDTO userDto) { + String codeCache = (String) redisTemplate.opsForValue().get(CacheConstants.DEFAULT_CODE_KEY + userDto.getRandomStr()); + if (StringUtils.hasText(codeCache)) { + String code = userDto.getCode(); + if (StringUtils.hasText(code)) { + if (!codeCache.equals(code)) { + return R.failed("验证码输入错误"); + } + } else { + return R.failed("请输入验证码"); + } + } else { + return R.failed("验证码已失效"); + } // 判断用户名是否存在 SysUser sysUser = this.getOne(Wrappers.lambdaQuery().eq(SysUser::getUsername, userDto.getUsername())); if (sysUser != null) { @@ -374,6 +398,7 @@ public class SysUserServiceImpl extends ServiceImpl impl /** * 锁定用户 + * * @param username 用户名 * @return */ @@ -412,8 +437,8 @@ public class SysUserServiceImpl extends ServiceImpl impl String password = ENCODER.encode(userDto.getNewpassword1()); this.update(Wrappers.lambdaUpdate() - .set(SysUser::getPassword, password) - .eq(SysUser::getUserId, userVO.getUserId())); + .set(SysUser::getPassword, password) + .eq(SysUser::getUserId, userVO.getUserId())); return R.ok(); } @@ -427,8 +452,7 @@ public class SysUserServiceImpl extends ServiceImpl impl if (!ENCODER.matches(password, sysUser.getPassword())) { log.info("原密码错误"); return R.failed("密码输入错误"); - } - else { + } else { return R.ok(); } } diff --git a/upms/upms-biz/src/main/resources/application.yml b/upms/upms-biz/src/main/resources/application.yml index 6c69c5c..1e34b51 100644 --- a/upms/upms-biz/src/main/resources/application.yml +++ b/upms/upms-biz/src/main/resources/application.yml @@ -77,6 +77,7 @@ security: - /actuator/** - /code/** - /rax/** + - /hospital/getHospitalList # 临时白名单 - /static/** # - /topic/** diff --git a/upms/upms-biz/src/main/resources/mapper/SysHospitalMapper.xml b/upms/upms-biz/src/main/resources/mapper/SysHospitalMapper.xml new file mode 100644 index 0000000..23777c2 --- /dev/null +++ b/upms/upms-biz/src/main/resources/mapper/SysHospitalMapper.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/controller/MedicineController.java b/vital-signs/src/main/java/com/rax/vital/medicine/controller/MedicineController.java index ccaeeee..afddf55 100644 --- a/vital-signs/src/main/java/com/rax/vital/medicine/controller/MedicineController.java +++ b/vital-signs/src/main/java/com/rax/vital/medicine/controller/MedicineController.java @@ -52,10 +52,4 @@ public class MedicineController { throw new AccessDeniedException("Access is denied"); } } - -/* @MessageMapping("/getMedicineFlag") - @SendTo("/topic/medicineFlag") - public R getMedicineFlag(String id, String name) { - - }*/ }