Browse Source

代码整理

chengyao 4 years atrás
parent
commit
ea6cb2a1cc

+ 5 - 0
doc/033.20210326v2.0.4/qc_initv2.0.4.sql

@@ -0,0 +1,5 @@
+use `qc`;
+
+-- 字典表加入密码正则表达式
+INSERT INTO `sys_dictionary_info` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '30', '4', '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&])[A-Za-z\\d$@$!%*?&]{8,12}$', '2', '0', '正则表达式(至少8个字符,少于12个字符,大写字母+小写字母+数字+特殊字符)');
+

+ 1 - 1
src/main/java/com/diagbot/dto/JwtDTO.java

@@ -20,5 +20,5 @@ public class JwtDTO {
     //用户权限列表
     private List<SysRoleDTO> selRoles;
     //用户密码复杂度是否符合
-//    private String passwordComplexity;
+    private String passwordComplexity;
 }

+ 1 - 0
src/main/java/com/diagbot/dto/ModifyPasswordVO.java

@@ -13,4 +13,5 @@ import lombok.Setter;
 public class ModifyPasswordVO {
     private String password; //原密码
     private String modifyPassword; //新密码
+    private String confirmModifyPassword; //确认新密码
 }

+ 4 - 0
src/main/java/com/diagbot/dto/ReBeHosDTO.java

@@ -35,6 +35,10 @@ public class ReBeHosDTO {
      */
     @Excel(name = "间隔天数", width = 10, needMerge = true, orderNum = "4")
     private Integer diffDays;
+
+
+    private String lastAgainBehospitalPlan;//31天再入院计划(是/否)
+
     /**
      * 比较病历组
      */

+ 1 - 0
src/main/java/com/diagbot/dto/ReBeHosDetailDTO.java

@@ -66,4 +66,5 @@ public class ReBeHosDetailDTO {
      */
     @Excel(name = "住院费用", width = 15, orderNum = "9")
     private String totleFee;
+
 }

+ 2 - 0
src/main/java/com/diagbot/dto/ReBeHosMergeDTO.java

@@ -42,6 +42,8 @@ public class ReBeHosMergeDTO {
     private Integer diffDays;
     private String totleFee;
     private String behospitalDayNum;
+    private String againBehospitalPlan;//31天再入院计划(是/否)
     private String lastTotleFee;
     private String lastBehospitalDayNum;
+    private String lastAgainBehospitalPlan;//31天再入院计划(是/否)
 }

+ 48 - 29
src/main/java/com/diagbot/facade/SysUserFacade.java

@@ -39,6 +39,7 @@ import org.springframework.security.crypto.factory.PasswordEncoderFactories;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.oauth2.common.OAuth2AccessToken;
 import org.springframework.stereotype.Component;
+import org.springframework.util.DigestUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -101,6 +102,8 @@ public class SysUserFacade extends SysUserServiceImpl {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
                     "请输入密码");
         }
+        //使用MD5对密码进行加密
+        String MD5Password = DigestUtils.md5DigestAsHex(password.getBytes());
         QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<>();
         userQueryWrapper.eq("username", username)
                 .eq("status", StatusEnum.Enable.getKey())
@@ -110,11 +113,11 @@ public class SysUserFacade extends SysUserServiceImpl {
             throw new CommonException(ServiceErrorCode.USER_NOT_FOUND);
         }
         PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
-        if (!passwordEncoder.matches(password, user.getPassword())) {
+        if (!passwordEncoder.matches(MD5Password, user.getPassword())) {
             throw new CommonException(ServiceErrorCode.USER_PASSWORD_ERROR);
         }
         JWT jwt = authServiceClient.getToken("Basic dWFhLXNlcnZpY2U6MTIzNDU2",
-                "password", username, password);
+                "password", username, MD5Password);
         if (null == jwt) {
             throw new CommonException(ServiceErrorCode.GET_TOKEN_FAIL);
         }
@@ -143,22 +146,22 @@ public class SysUserFacade extends SysUserServiceImpl {
         jwtStore.setRefreshToken(jwt.getRefresh_token());
         tokenFacade.createToken(jwtStore);
         /***
-         * 未加密密码复杂度判断
+         * 未经过MD5加密密码复杂度判断
          */
-        //获取用户医院id
-//        String hospitalID = SysUserUtils.getCurrentHospitalID();
-//        Long id = user.getId();
-//        QueryWrapper<SysUserHospital> UserHospitalQueryWrapper = new QueryWrapper<>();
-//        UserHospitalQueryWrapper
-//                .eq("user_id", id)
-//                .eq("is_deleted", IsDeleteEnum.N.getKey());
-//        SysUserHospital userHospital = sysUserHospitalFacade.getOne(UserHospitalQueryWrapper, false);
-//        Long hospitalId = userHospital.getHospitalId();
-//        String idStr = String.valueOf(hospitalId);
-//        Boolean passwordRegular = passwordRegular(password,idStr);
-//        if(!passwordRegular){
-//            data.setPasswordComplexity("密码复杂度过低,请及时修改密码");
-//        }
+     //   获取用户医院id
+   //     String hospitalID = SysUserUtils.getCurrentHospitalID();
+        Long id = user.getId();
+        QueryWrapper<SysUserHospital> UserHospitalQueryWrapper = new QueryWrapper<>();
+        UserHospitalQueryWrapper
+                .eq("user_id", id)
+                .eq("is_deleted", IsDeleteEnum.N.getKey());
+        SysUserHospital userHospital = sysUserHospitalFacade.getOne(UserHospitalQueryWrapper, false);
+        Long hospitalId = userHospital.getHospitalId();
+        String idStr = String.valueOf(hospitalId);
+        Boolean passwordRegular = passwordRegular(password,idStr);
+        if(!passwordRegular){
+            data.setPasswordComplexity("未修改初始密码,请及时修改密码");
+        }
         return data;
     }
 
@@ -254,7 +257,10 @@ public class SysUserFacade extends SysUserServiceImpl {
      * @param modifyPassword 新密码
      * @return 修改密码是否成功
      */
-    public Boolean modifyPassword(String password, String modifyPassword) {
+    public Boolean modifyPassword(String password, String modifyPassword,String confirmModifyPassword) {
+        //使用MD5对原密码和新密码进行加密
+        String MD5Password = DigestUtils.md5DigestAsHex(password.getBytes());
+        String MD5ModifyPassword = DigestUtils.md5DigestAsHex(modifyPassword.getBytes());
         if (StringUtil.isBlank(password)) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
                     "请输入密码");
@@ -263,9 +269,15 @@ public class SysUserFacade extends SysUserServiceImpl {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
                     "请输入新密码");
         }
-        if (password.equals(modifyPassword)) {
+        if (StringUtil.isBlank(confirmModifyPassword)) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "原密码和新密码不能相同");
+                    "请输入确认新密码");
+        }
+        //对传入的密码进行格式验证
+        String hospitalID = SysUserUtils.getCurrentHospitalID();
+        Boolean regularBoolean = passwordRegular(modifyPassword,hospitalID);
+        if(!regularBoolean){
+            throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "请输入正确格式的新密码");
         }
         String userId = SysUserUtils.getCurrentPrincipleID();
         SysUser user = this.getOne(new QueryWrapper<SysUser>()
@@ -277,15 +289,19 @@ public class SysUserFacade extends SysUserServiceImpl {
         }
         PasswordEncoder passwordEncoder
                 = PasswordEncoderFactories.createDelegatingPasswordEncoder();
-        if (!passwordEncoder.matches(password, user.getPassword())) {
+        if (!passwordEncoder.matches(MD5Password, user.getPassword())) {
             throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "原密码错误");
         }
-//        String hospitalID = SysUserUtils.getCurrentHospitalID();
-//        Boolean regularBoolean = passwordRegular(modifyPassword,hospitalID);
-//        if(!regularBoolean){
-//            throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "请输入正确格式的新密码");
-//        }
-        String entryPassword = passwordEncoder.encode(modifyPassword);
+        if (password.equals(modifyPassword)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_ERROR,
+                    "原密码和新密码不能相同");
+        }
+        //“原密码”正确、“新密码”符合密码规则且不与原密码相同,新密码与确认新密码不一致
+        if(!modifyPassword.equals(confirmModifyPassword)){
+            throw new CommonException(CommonErrorCode.PARAM_IS_ERROR,
+                    "两次密码输入不一致");
+        }
+        String entryPassword = passwordEncoder.encode(MD5ModifyPassword);
         user.setPassword(entryPassword);
         user.setGmtModified(DateUtil.now());
         user.setModifier(userId);
@@ -299,14 +315,17 @@ public class SysUserFacade extends SysUserServiceImpl {
      * @return
      */
     public Boolean passwordRegular(String password,String hospitalId){
-        //获取字点表中存储的正则表达式   "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&])[A-Za-z\\d$@$!%*?&]{8,}"
+        //获取字点表中存储的正则表达式   ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}  至少8个字符,1个大写字母,1个小写字母,1个数字和1个特殊字符
+        //获取字点表中存储的正则表达式   ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,12}$  至少8个字符最多12个字符,1个大写字母,1个小写字母,1个数字和1个特殊字符
         boolean check=true;
         Map<String, Map<String, String>> dictionaryWithKey = sysDictionaryFacade.getDictionaryWithKey();
         if(dictionaryWithKey!=null){
             Map<String, String> stringStringMap = dictionaryWithKey.get("30");
             if(stringStringMap!=null) {
                 String regular = stringStringMap.get(hospitalId);
-                check = password.matches(regular);
+                if(StringUtil.isNotEmpty(regular)) {
+                    check = password.matches(regular);
+                }
             }
         }
         return check;

+ 3 - 2
src/main/java/com/diagbot/web/SysUserController.java

@@ -98,12 +98,13 @@ public class SysUserController {
 
     @ApiOperation(value = "修改密码[by:gaodm]",
             notes = "password:原密码,必填<br>" +
-                    "modifyPassword:新密码, 必填<br> ")
+                    "modifyPassword:新密码, 必填<br> "+
+                    "confirmModifyPassword:确认新密码, 必填<br> ")
     @PostMapping("/midifyPassword")
     @SysLogger("midifyPassword")
     @Transactional
     public RespDTO<Boolean> midifyPassword(@RequestBody ModifyPasswordVO modifyPasswordVO) {
-        Boolean flag = userFacade.modifyPassword(modifyPasswordVO.getPassword(), modifyPasswordVO.getModifyPassword());
+        Boolean flag = userFacade.modifyPassword(modifyPasswordVO.getPassword(), modifyPasswordVO.getModifyPassword(),modifyPasswordVO.getConfirmModifyPassword());
         return RespDTO.onSuc(flag);
     }
 

+ 2 - 0
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -13958,6 +13958,8 @@
         mqi_last.LEVEL AS lastLevel,
         mhp.total_fee AS totleFee,
         mhp.behospital_day_num AS behospitalDayNum,
+        mhp.again_behospital_plan AS againBehospitalPlan,
+        mhp_last.again_behospital_plan AS lastAgainBehospitalPlan,
         mhp_last.total_fee AS lastTotleFee,
         mhp_last.behospital_day_num AS lastBehospitalDayNum
         FROM