From 4ef3906407a53e79ca762f8292dd8b2b501e8e7e Mon Sep 17 00:00:00 2001 From: zhangqinbin <181961702@qq.com> Date: Mon, 4 Sep 2023 11:16:05 +0800 Subject: [PATCH] =?UTF-8?q?redis=E9=99=90=E5=88=B6=E6=89=8B=E6=9C=BA?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E7=A0=81=E9=87=8D=E5=8F=91=E9=A2=91=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BizShortMessageController.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/shortmessage/controller/BizShortMessageController.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/shortmessage/controller/BizShortMessageController.java index e4e200a..de206ec 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/shortmessage/controller/BizShortMessageController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/shortmessage/controller/BizShortMessageController.java @@ -1,12 +1,17 @@ package com.chinaunicom.mall.ebtp.extend.shortmessage.controller; +import com.alibaba.fastjson.JSONArray; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.common.exception.common.CommonExceptionEnum; import com.chinaunicom.mall.ebtp.common.idempotent.annotation.Idempotent; import com.chinaunicom.mall.ebtp.extend.shortmessage.entity.AuthCodeVo; import com.chinaunicom.mall.ebtp.extend.shortmessage.utils.RSA; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -18,6 +23,7 @@ import io.swagger.annotations.ApiParam; import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; import com.chinaunicom.mall.ebtp.extend.shortmessage.entity.BizShortMessage; @@ -34,7 +40,9 @@ public class BizShortMessageController{ private String privateKey; @Resource private BizShortMessageService iBizShortMessageService; - + @Autowired(required = false) + @Qualifier("cacheRedisTemplate") + private RedisTemplate redisTemplate; /** * 认证短信验证码发送 * appCode 应用标识 @@ -45,12 +53,25 @@ public class BizShortMessageController{ * authCode 验证码 * callbackUrl UrlEncode编码 应用系统回调确认用户有效性的地址,应用系统传了这个地址则用户有效性由该地址确定 */ - @Idempotent(expireTime = 30,timeUnit = TimeUnit.SECONDS,info = "距离上次解密时间需间隔30秒",delKey =true) @PostMapping("/send/authCode") public BaseResponse authCodeSend(@RequestBody AuthCodeVo vo){ + + log.info("解密前:"+vo.getMobile()); String value = RSA.decrypt(vo.getMobile(),privateKey); log.info("解密后:"+value); + String key = "mobile_code:" + value; + Object tokenValue = redisTemplate.opsForValue().get(key); + if (tokenValue != null) { + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR.assertNotNullByKey("验证码尚未失效",true); + }else{ + Boolean b = iBizShortMessageService.authCodeSend(value); + if(b){ + Map map = JSONArray.parseObject(JSONArray.toJSONString(vo), Map.class); + redisTemplate.opsForHash().putAll("mobile_code:" + value, map); + redisTemplate.expire(key,30,TimeUnit.SECONDS); + } + } return BaseResponse.success(iBizShortMessageService.authCodeSend(value)); }