From 52d0d62c35d01ee73d9dba7b1be99a29adc35ef2 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 17 八月 2021 10:45:01 +0800 Subject: [PATCH] update 同步 ruoyi 适配改动 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java | 54 ++++++++++++++++++++++++++++-------------------------- 1 files changed, 28 insertions(+), 26 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java index 48e4e4e..210ccee 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java @@ -5,26 +5,29 @@ import cn.hutool.captcha.LineCaptcha; import cn.hutool.captcha.ShearCaptcha; import cn.hutool.captcha.generator.CodeGenerator; -import cn.hutool.captcha.generator.MathGenerator; import cn.hutool.captcha.generator.RandomGenerator; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.framework.captcha.UnsignedMathGenerator; +import com.ruoyi.framework.config.properties.CaptchaProperties; +import com.ruoyi.system.service.ISysConfigService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.TimeUnit; /** * 楠岃瘉鐮佹搷浣滃鐞� * - * @author Lion Li + * @author ruoyi */ @RestController public class CaptchaController { @@ -42,24 +45,23 @@ @Autowired private RedisCache redisCache; - // 楠岃瘉鐮佺被鍨� - @Value("${captcha.captchaType}") - private String captchaType; - // 楠岃瘉鐮佺被鍒� - @Value("${captcha.captchaCategory}") - private String captchaCategory; - // 鏁板瓧楠岃瘉鐮佷綅鏁� - @Value("${captcha.captchaNumberLength}") - private int numberLength; - // 瀛楃楠岃瘉鐮侀暱搴� - @Value("${captcha.captchaCharLength}") - private int charLength; + @Autowired + private CaptchaProperties captchaProperties; + + @Autowired + private ISysConfigService configService; /** * 鐢熸垚楠岃瘉鐮� */ @GetMapping("/captchaImage") public AjaxResult getCode() { + Map<String, Object> ajax = new HashMap<>(); + boolean captchaOnOff = configService.selectCaptchaOnOff(); + ajax.put("captchaOnOff", captchaOnOff); + if (!captchaOnOff) { + return AjaxResult.success(ajax); + } // 淇濆瓨楠岃瘉鐮佷俊鎭� String uuid = IdUtil.simpleUUID(); String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; @@ -67,17 +69,17 @@ // 鐢熸垚楠岃瘉鐮� CodeGenerator codeGenerator; AbstractCaptcha captcha; - switch (captchaType) { + switch (captchaProperties.getType()) { case "math": - codeGenerator = new MathGenerator(numberLength); + codeGenerator = new UnsignedMathGenerator(captchaProperties.getNumberLength()); break; case "char": - codeGenerator = new RandomGenerator(charLength); + codeGenerator = new RandomGenerator(captchaProperties.getCharLength()); break; default: throw new IllegalArgumentException("楠岃瘉鐮佺被鍨嬪紓甯�"); } - switch (captchaCategory) { + switch (captchaProperties.getCategory()) { case "line": captcha = lineCaptcha; break; @@ -92,22 +94,22 @@ } captcha.setGenerator(codeGenerator); captcha.createCode(); - if ("math".equals(captchaType)) { + if ("math".equals(captchaProperties.getType())) { code = getCodeResult(captcha.getCode()); - } else if ("char".equals(captchaType)) { + } else if ("char".equals(captchaProperties.getType())) { code = captcha.getCode(); } redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); - AjaxResult ajax = AjaxResult.success(); ajax.put("uuid", uuid); ajax.put("img", captcha.getImageBase64()); - return ajax; + return AjaxResult.success(ajax); } private String getCodeResult(String capStr) { - int a = Convert.toInt(StrUtil.sub(capStr, 0, numberLength).trim()); + int numberLength = captchaProperties.getNumberLength(); + int a = Convert.toInt(StringUtils.substring(capStr, 0, numberLength).trim()); char operator = capStr.charAt(numberLength); - int b = Convert.toInt(StrUtil.sub(capStr, numberLength + 1, numberLength + 1 + numberLength).trim()); + int b = Convert.toInt(StringUtils.substring(capStr, numberLength + 1, numberLength + 1 + numberLength).trim()); switch (operator) { case '*': return a * b + ""; -- Gitblit v1.9.3