From dd25573ebce3450d90d0012a30b12a5185bc7310 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期五, 08 七月 2022 15:49:15 +0800
Subject: [PATCH] update 使用 @param 注释替换 @Parameter 注解 fix 修复 token 无法传递 与 无法持久化问题

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java |   60 +++++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 49 insertions(+), 11 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 d31624c..f2279db 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
@@ -4,53 +4,91 @@
 import cn.hutool.captcha.generator.CodeGenerator;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.RandomUtil;
+import com.ruoyi.common.annotation.Anonymous;
+import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.constant.Constants;
-import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.enums.CaptchaType;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.redis.RedisUtils;
 import com.ruoyi.common.utils.reflect.ReflectUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.framework.config.properties.CaptchaProperties;
+import com.ruoyi.sms.config.properties.SmsProperties;
+import com.ruoyi.sms.core.SmsTemplate;
+import com.ruoyi.sms.entity.SmsResult;
 import com.ruoyi.system.service.ISysConfigService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.constraints.NotBlank;
+import java.time.Duration;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.concurrent.TimeUnit;
 
 /**
  * 楠岃瘉鐮佹搷浣滃鐞�
  *
  * @author Lion Li
  */
-@Api(value = "楠岃瘉鐮佹搷浣滃鐞�", tags = {"楠岃瘉鐮佺鐞�"})
+@Anonymous
+@Slf4j
+@Validated
+@Tag(name = "楠岃瘉鐮佹搷浣滃鐞�", description = "楠岃瘉鐮佺鐞�")
 @RequiredArgsConstructor
 @RestController
 public class CaptchaController {
 
     private final CaptchaProperties captchaProperties;
+    private final SmsProperties smsProperties;
     private final ISysConfigService configService;
+
+    /**
+     * 鐭俊楠岃瘉鐮�
+     *
+     * @param phonenumber 鐢ㄦ埛鎵嬫満鍙�
+     */
+    @GetMapping("/captchaSms")
+    public R<Void> smsCaptcha(@NotBlank(message = "{user.phonenumber.not.blank}")
+                              String phonenumber) {
+        if (smsProperties.getEnabled()) {
+            R.fail("褰撳墠绯荤粺娌℃湁寮�鍚煭淇″姛鑳斤紒");
+        }
+        String key = CacheConstants.CAPTCHA_CODE_KEY + phonenumber;
+        String code = RandomUtil.randomNumbers(4);
+        RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
+        // 楠岃瘉鐮佹ā鏉縤d 鑷澶勭悊 (鏌ユ暟鎹簱鎴栧啓姝诲潎鍙�)
+        String templateId = "";
+        Map<String, String> map = new HashMap<>(1);
+        map.put("code", code);
+        SmsTemplate smsTemplate = SpringUtils.getBean(SmsTemplate.class);
+        SmsResult result = smsTemplate.send(phonenumber, templateId, map);
+        if (!result.isSuccess()) {
+            log.error("楠岃瘉鐮佺煭淇″彂閫佸紓甯� => {}", result);
+            return R.fail(result.getMessage());
+        }
+        return R.ok();
+    }
 
     /**
      * 鐢熸垚楠岃瘉鐮�
      */
-    @ApiOperation("鐢熸垚楠岃瘉鐮�")
     @GetMapping("/captchaImage")
-    public AjaxResult<Map<String, Object>> getCode() {
+    public R<Map<String, Object>> getCode() {
         Map<String, Object> ajax = new HashMap<>();
         boolean captchaOnOff = configService.selectCaptchaOnOff();
         ajax.put("captchaOnOff", captchaOnOff);
         if (!captchaOnOff) {
-            return AjaxResult.success(ajax);
+            return R.ok(ajax);
         }
         // 淇濆瓨楠岃瘉鐮佷俊鎭�
         String uuid = IdUtil.simpleUUID();
-        String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
+        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
         // 鐢熸垚楠岃瘉鐮�
         CaptchaType captchaType = captchaProperties.getType();
         boolean isMath = CaptchaType.MATH == captchaType;
@@ -60,10 +98,10 @@
         captcha.setGenerator(codeGenerator);
         captcha.createCode();
         String code = isMath ? getCodeResult(captcha.getCode()) : captcha.getCode();
-        RedisUtils.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
+        RedisUtils.setCacheObject(verifyKey, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
         ajax.put("uuid", uuid);
         ajax.put("img", captcha.getImageBase64());
-        return AjaxResult.success(ajax);
+        return R.ok(ajax);
     }
 
     private String getCodeResult(String capStr) {

--
Gitblit v1.9.3