Jelajahi Sumber

新增用户/密码模式是否开启短信验证

wangliang 2 tahun lalu
induk
melakukan
efba68258e

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/TSchoolPrivilegeParam.java

@@ -23,6 +23,17 @@ public class TSchoolPrivilegeParam extends TSchoolPrivilege {
     @ApiModelProperty(value = "pdf格式数组")
     private String[] pdfSize;
 
+    @ApiModelProperty(value = "用户/密码模式是否开启短信验证")
+    boolean accountSmsVerify;
+
+    public boolean isAccountSmsVerify() {
+        return accountSmsVerify;
+    }
+
+    public void setAccountSmsVerify(boolean accountSmsVerify) {
+        this.accountSmsVerify = accountSmsVerify;
+    }
+
     public Long[] getPrivilegeIds() {
         return privilegeIds;
     }

+ 13 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/CustomPrivilegeResult.java

@@ -21,13 +21,25 @@ public class CustomPrivilegeResult implements Serializable {
     @ApiModelProperty(value = "全局pdf格式")
     List<String> sysPdfSize;
 
+    @ApiModelProperty(value = "用户/密码模式是否开启短信验证")
+    boolean accountSmsVerify;
+
     public CustomPrivilegeResult() {
 
     }
 
-    public CustomPrivilegeResult(List<PrivilegeDto> customPrivilegeList, List<String> sysPdfSize) {
+    public CustomPrivilegeResult(List<PrivilegeDto> customPrivilegeList, List<String> sysPdfSize, boolean accountSmsVerify) {
         this.customPrivilegeList = customPrivilegeList;
         this.sysPdfSize = sysPdfSize;
+        this.accountSmsVerify = accountSmsVerify;
+    }
+
+    public boolean isAccountSmsVerify() {
+        return accountSmsVerify;
+    }
+
+    public void setAccountSmsVerify(boolean accountSmsVerify) {
+        this.accountSmsVerify = accountSmsVerify;
     }
 
     public List<PrivilegeDto> getCustomPrivilegeList() {

+ 18 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/TSchoolPrivilegeResult.java

@@ -26,6 +26,9 @@ public class TSchoolPrivilegeResult implements Serializable {
     @ApiModelProperty(value = "pdf格式")
     List<String> pdfSize;
 
+    @ApiModelProperty(value = "用户/密码模式是否开启短信验证")
+    boolean accountSmsVerify;
+
     public TSchoolPrivilegeResult() {
 
     }
@@ -41,6 +44,21 @@ public class TSchoolPrivilegeResult implements Serializable {
         this.pdfSize = pdfSize;
     }
 
+    public TSchoolPrivilegeResult(Long schoolId, List<String> privilegeIdList, List<String> pdfSize, boolean accountSmsVerify) {
+        this.schoolId = schoolId;
+        this.privilegeIdList = privilegeIdList;
+        this.pdfSize = pdfSize;
+        this.accountSmsVerify = accountSmsVerify;
+    }
+
+    public boolean isAccountSmsVerify() {
+        return accountSmsVerify;
+    }
+
+    public void setAccountSmsVerify(boolean accountSmsVerify) {
+        this.accountSmsVerify = accountSmsVerify;
+    }
+
     public List<String> getPrivilegeIdList() {
         return privilegeIdList;
     }

+ 17 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/MenuCustomController.java

@@ -72,7 +72,8 @@ public class MenuCustomController {
         List<PrivilegeDto> customPrivilegeList = sysPrivilegeService.addCustomList();
         SysConfig sysConfig = commonCacheService.addSysConfigCache(SystemConstant.SYS_PDF_SIZE_LIST);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置全局pdf格式清单"));
-        return ResultUtil.ok(new CustomPrivilegeResult(customPrivilegeList, Arrays.asList(sysConfig.getConfigValue().replaceAll("\\[", "").replaceAll("\\]", "").split(", "))));
+        SysConfig sysConfigAccount = commonCacheService.addSysConfigCache(SystemConstant.ACCOUNT_SMS_VERIFY);
+        return ResultUtil.ok(new CustomPrivilegeResult(customPrivilegeList, Arrays.asList(sysConfig.getConfigValue().replaceAll("\\[", "").replaceAll("\\]", "").split(", ")), Objects.nonNull(sysConfigAccount) ? Boolean.valueOf(sysConfigAccount.getConfigValue()) : false));
     }
 
     @ApiOperation(value = "学校新增/修改自定义菜单权限")
@@ -143,6 +144,7 @@ public class MenuCustomController {
             }
         }
 
+        List<SysConfig> sysConfigList = new ArrayList<>();
         SysConfig sysConfig = commonCacheService.addSysConfigCache(tSchoolPrivilegeParam.getSchoolId(), SystemConstant.PDF_SIZE_LIST);
         if (Objects.isNull(sysConfig)) {
             sysConfig = new SysConfig(tSchoolPrivilegeParam.getSchoolId(), SystemConstant.PDF_SIZE_LIST, "pdf格式清单", Arrays.asList(tSchoolPrivilegeParam.getPdfSize()).toString());
@@ -153,8 +155,19 @@ public class MenuCustomController {
                 sysConfig.setConfigValue(null);
             }
         }
-        sysConfigService.saveOrUpdate(sysConfig);
+        sysConfigList.add(sysConfig);
+
+        SysConfig sysConfigAccount = commonCacheService.addSysConfigCache(tSchoolPrivilegeParam.getSchoolId(), SystemConstant.ACCOUNT_SMS_VERIFY);
+        if (Objects.isNull(sysConfigAccount)) {
+            sysConfigAccount = new SysConfig(tSchoolPrivilegeParam.getSchoolId(), SystemConstant.ACCOUNT_SMS_VERIFY, "用户/密码模式是否开启短信验证", String.valueOf(tSchoolPrivilegeParam.isAccountSmsVerify()));
+        } else {
+            sysConfigAccount.setConfigValue(String.valueOf(tSchoolPrivilegeParam.isAccountSmsVerify()));
+        }
+        sysConfigList.add(sysConfigAccount);
+
+        sysConfigService.saveOrUpdateBatch(sysConfigList);
         commonCacheService.removeSysConfigCache(tSchoolPrivilegeParam.getSchoolId(), SystemConstant.PDF_SIZE_LIST);
+        commonCacheService.removeSysConfigCache(tSchoolPrivilegeParam.getSchoolId(), SystemConstant.ACCOUNT_SMS_VERIFY);
         return ResultUtil.ok(true);
     }
 
@@ -165,6 +178,7 @@ public class MenuCustomController {
         List<TSchoolPrivilege> tSchoolPrivilegeList = tSchoolPrivilegeService.findBySchoolId(schoolId);
         List<String> privilegeIdList = tSchoolPrivilegeList.stream().map(s -> String.valueOf(s.getPrivilegeId())).collect(Collectors.toList());
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.PDF_SIZE_LIST);
-        return ResultUtil.ok(new TSchoolPrivilegeResult(schoolId, privilegeIdList, Objects.nonNull(sysConfig) ? Arrays.asList(sysConfig.getConfigValue().replaceAll("\\[", "").replaceAll("\\]", "").split(", ")) : null));
+        SysConfig sysConfigAccount = commonCacheService.addSysConfigCache(schoolId, SystemConstant.ACCOUNT_SMS_VERIFY);
+        return ResultUtil.ok(new TSchoolPrivilegeResult(schoolId, privilegeIdList, Objects.nonNull(sysConfig) ? Arrays.asList(sysConfig.getConfigValue().replaceAll("\\[", "").replaceAll("\\]", "").split(", ")) : null, Objects.nonNull(sysConfigAccount) ? Boolean.valueOf(sysConfigAccount.getConfigValue()) : false));
     }
 }

+ 56 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -169,6 +169,21 @@ public class SysController {
             if (!password.equals(userList.get(0).getPassword())) {
                 throw ExceptionResultEnum.ERROR.exception("密码错误");
             }
+
+            //2022.11.10日加入用户/密码模式是否开启短信验证
+            if (!login.getSchoolCode().equalsIgnoreCase(SystemConstant.ADMIN_CODE)) {
+                SysConfig sysConfigAccount = commonCacheService.addSysConfigCache(basicSchool.getId(), SystemConstant.ACCOUNT_SMS_VERIFY);
+                if (Objects.nonNull(sysConfigAccount) && Objects.nonNull(sysConfigAccount.getConfigValue())
+                        && Boolean.valueOf(sysConfigAccount.getConfigValue())) {
+                    // 校验验证码
+                    sysUserService.checkSmsCode(sysUser.getId(), sysUser.getMobileNumber(), login.getCode());
+
+                    // 如果不是共用验证码再过期
+                    if (!dictionaryConfig.smsDomain().getSmsNormalCode().equals(login.getCode())) {
+                        sysUserService.expiredVerifyCode(sysUser.getId(), sysUser.getMobileNumber());
+                    }
+                }
+            }
         } else if (LoginTypeEnum.PHONE.name().equals(login.getType())) {
             String mobileNumber = login.getMobileNumber();
             String code = login.getCode();
@@ -284,6 +299,42 @@ public class SysController {
         return ResultUtil.ok(userLoginCheckResult, "");
     }
 
+    /**
+     * 发送验证码
+     *
+     * @param loginParam
+     * @return
+     */
+    @ApiOperation(value = "发送验证码")
+    @RequestMapping(value = "/get_verify_code_by_account", method = RequestMethod.POST)
+    @Aac(auth = BOOL.FALSE)
+    public Object getverifyCodeByAccount(@RequestBody LoginParam loginParam) {
+        String loginName = loginParam.getLoginName();
+        String password = loginParam.getPassword();
+        QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
+        if (StringUtils.isNotBlank(loginParam.getSchoolCode())) {
+            if (loginParam.getSchoolCode().contains("#")) {
+                loginParam.setSchoolCode(loginParam.getSchoolCode().substring(0, loginParam.getSchoolCode().indexOf("#")));
+            }
+            BasicSchool basicSchool = commonCacheService.schoolCache(loginParam.getSchoolCode());
+            wrapper.lambda().eq(SysUser::getSchoolId, basicSchool.getId());
+        }
+        wrapper.lambda().eq(SysUser::getLoginName, loginName);
+        SysUser user = sysUserService.getOne(wrapper);
+        //用户不存在
+        if (Objects.isNull(user)) {
+            throw ExceptionResultEnum.ERROR.exception("用户不存在");
+        }
+        if (!password.equals(user.getPassword())) {
+            throw ExceptionResultEnum.ERROR.exception("密码错误");
+        }
+        String mobileNumber = user.getMobileNumber();
+        if (Objects.isNull(mobileNumber)) {
+            throw ExceptionResultEnum.ERROR.exception("用户未绑定手机号码");
+        }
+        basicVerifyCodeService.sendVeirfyCode(mobileNumber, user);
+        return ResultUtil.ok(mobileNumber, "");
+    }
 
     /**
      * 发送验证码(绑定手机号)
@@ -365,7 +416,8 @@ public class SysController {
             BasicSchool basicSchool = commonCacheService.schoolCache(code);
             Optional.ofNullable(basicSchool).orElseThrow(() -> ExceptionResultEnum.SCHOOL_NO_DATA.exception());
             authInfoService.appHasExpired(code);
-            Map<String, String> map = new HashMap<>();
+            SysConfig sysConfig = commonCacheService.addSysConfigCache(basicSchool.getId(), SystemConstant.ACCOUNT_SMS_VERIFY);
+            Map<String, Object> map = new HashMap<>();
             if (Objects.nonNull(basicSchool.getLogo()) && (!basicSchool.getLogo().startsWith("http") || !basicSchool.getLogo().startsWith("https"))) {
                 String hostUrl = SystemConstant.getLocalFileHost(dictionaryConfig.fssLocalFileDomain().getServer());
                 String filePath = SystemConstant.getLocalFilePath(hostUrl, basicSchool.getLogo());
@@ -380,11 +432,13 @@ public class SysController {
                 map.put(SystemConstant.LOGO, basicSchool.getLogo());
             }
             map.put("name", basicSchool.getName());
+            map.put("accountSmsVerify", Objects.nonNull(sysConfig) ? Boolean.valueOf(sysConfig.getConfigValue()) : false);
             return ResultUtil.ok(map);
         } else {
-            Map<String, String> map = new HashMap<>();
+            Map<String, Object> map = new HashMap<>();
             map.put(SystemConstant.LOGO, dictionaryConfig.sysDomain().getAdminLogoUrl());
             map.put("name", null);
+            map.put("accountSmsVerify", false);
             return ResultUtil.ok(map);
         }
     }

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -38,6 +38,7 @@ public class SystemConstant {
     public static final String SYS_CONFIG_KEY_CHARSETS = "sys.txt.charset";
     public static final String SYS_PDF_SIZE_LIST = "sys.pdf.size.list";
     public static final String PDF_SIZE_LIST = "pdf.size.list";
+    public static final String ACCOUNT_SMS_VERIFY = "account.sms.verify";
     public static final String CHARSET_NAME = "UTF-8";
     //    public static final String CHARSET_GB2312 = "gb2312";
     public static final String CHARSET_GBK = "gbk";