From 2acb5e4dc2769d4d104afb48e2964cd656283a4b Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期三, 01 十一月 2023 10:43:36 +0800
Subject: [PATCH] 优化代码
---
service-user/src/main/java/com/java110/user/cmd/user/UserSendSmsCmd.java | 76 ++++++++++++++++++++++----------------
1 files changed, 44 insertions(+), 32 deletions(-)
diff --git a/service-user/src/main/java/com/java110/user/cmd/user/UserSendSmsCmd.java b/service-user/src/main/java/com/java110/user/cmd/user/UserSendSmsCmd.java
index 5d43373..91b59db 100644
--- a/service-user/src/main/java/com/java110/user/cmd/user/UserSendSmsCmd.java
+++ b/service-user/src/main/java/com/java110/user/cmd/user/UserSendSmsCmd.java
@@ -15,6 +15,7 @@
import com.java110.utils.cache.MappingCache;
import com.java110.utils.constant.MappingConstant;
import com.java110.utils.exception.CmdException;
+import com.java110.utils.lock.DistributedLock;
import com.java110.utils.util.Assert;
import com.java110.utils.util.StringUtil;
import com.java110.utils.util.ValidatorUtil;
@@ -51,23 +52,8 @@
throw new IllegalArgumentException("鎵嬫満鍙锋牸寮忛敊璇�");
}
- //鏍¢獙鏄惁鏈夋湁鏁堢殑楠岃瘉鐮�
- String smsCode = CommonCache.getValue(reqJson.getString("tel") + SendSmsFactory.VALIDATE_CODE);
-
- if (!StringUtil.isEmpty(smsCode) && smsCode.contains("-")) {
- long oldTime = Long.parseLong(smsCode.substring(smsCode.indexOf("-"), smsCode.length()));
- long nowTime = new Date().getTime();
- if (nowTime - oldTime < 1000 * 60 * 2) {
- throw new IllegalArgumentException("璇蜂笉瑕侀噸澶嶅彂閫侀獙璇佺爜");
- }
- }
- }
-
- @Override
- public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
- String tel = reqJson.getString("tel");
String captchaType = reqJson.getString("captchaType");
- if(!StringUtil.isEmpty(captchaType) && "ownerBinding".equals(captchaType)){
+ if (!StringUtil.isEmpty(captchaType) && "ownerBinding".equals(captchaType)) {
OwnerDto ownerDto = new OwnerDto();
ownerDto.setCommunityId(reqJson.getString("communityId"));
ownerDto.setName(reqJson.getString("appUserName"));
@@ -76,29 +62,55 @@
//鍙栧嚭寮�鍏虫槧灏勭殑鍊�
String val = MappingCache.getValue(DOMAIN_COMMON, ID_CARD_SWITCH);
//鍙栧嚭韬唤璇�
- String idCardErrorMsg ="";
+ String idCardErrorMsg = "";
String idCard = reqJson.getString("idCard");
if ("1".equals(val) && !StringUtil.isEmpty(idCard)) {
ownerDto.setIdCard(idCard);
- idCardErrorMsg="鎴栬�呰韩浠借瘉鍙�";
+ idCardErrorMsg = "鎴栬�呰韩浠借瘉鍙�";
}
List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
- Assert.listOnlyOne(ownerDtos, "濉啓涓氫富淇℃伅閿欒锛岃纭锛岄鐣欎笟涓诲鍚嶃�佹墜鏈哄彿"+idCardErrorMsg+"淇℃伅鏄惁姝g‘锛�");
+ Assert.listOnlyOne(ownerDtos, "濉啓涓氫富淇℃伅閿欒锛岃纭锛岄鐣欎笟涓诲鍚嶃�佹墜鏈哄彿" + idCardErrorMsg + "淇℃伅鏄惁姝g‘锛�");
}
- //鏍¢獙鏄惁浼犱簡 鍒嗛〉淇℃伅
- String msgCode = SendSmsFactory.generateMessageCode(6);
- SmsDto smsDto = new SmsDto();
- smsDto.setTel(tel);
- smsDto.setCode(msgCode);
- if ("ON".equals(MappingCache.getValue(MappingConstant.SMS_DOMAIN,SendSmsFactory.SMS_SEND_SWITCH))) {
- smsDto = smsInnerServiceSMOImpl.send(smsDto);
- } else {
- CommonCache.setValue(smsDto.getTel() + SendSmsFactory.VALIDATE_CODE, smsDto.getCode().toLowerCase() + "-" + new Date().getTime(), CommonCache.defaultExpireTime);
- smsDto.setSuccess(true);
- smsDto.setMsg("鎮ㄧ殑楠岃瘉鐮佷负" + msgCode);
+ }
+
+ @Override
+ public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+
+ String requestId = DistributedLock.getLockUUID();
+ String key = this.getClass().getSimpleName() + reqJson.getString("tel");
+ try {
+ DistributedLock.waitGetDistributedLock(key, requestId);
+ //鏍¢獙鏄惁鏈夋湁鏁堢殑楠岃瘉鐮�
+ String smsCode = CommonCache.getValue(reqJson.getString("tel") + SendSmsFactory.VALIDATE_CODE);
+
+ if (!StringUtil.isEmpty(smsCode) && smsCode.contains("-")) {
+ long oldTime = Long.parseLong(smsCode.substring(smsCode.indexOf("-") + 1, smsCode.length()));
+ long nowTime = new Date().getTime();
+ if (nowTime - oldTime < 1000 * 60 * 2) {
+ throw new IllegalArgumentException("璇蜂笉瑕侀噸澶嶅彂閫侀獙璇佺爜");
+ }
+ }
+
+ String tel = reqJson.getString("tel");
+ //鏍¢獙鏄惁浼犱簡 鍒嗛〉淇℃伅
+ String msgCode = SendSmsFactory.generateMessageCode(6);
+ SmsDto smsDto = new SmsDto();
+ smsDto.setTel(tel);
+ smsDto.setCode(msgCode);
+ if ("ON".equals(MappingCache.getValue(MappingConstant.SMS_DOMAIN, SendSmsFactory.SMS_SEND_SWITCH))) {
+ smsDto = smsInnerServiceSMOImpl.send(smsDto);
+ } else {
+ CommonCache.setValue(smsDto.getTel() + SendSmsFactory.VALIDATE_CODE, smsDto.getCode().toLowerCase() + "-" + new Date().getTime(), CommonCache.defaultExpireTime);
+ smsDto.setSuccess(true);
+ smsDto.setMsg("鎮ㄧ殑楠岃瘉鐮佷负" + msgCode);
+ }
+
+ ResponseEntity<String> sendMessageResult = new ResponseEntity<String>(smsDto.getMsg(), smsDto.isSuccess() ? HttpStatus.OK : HttpStatus.BAD_REQUEST);
+ context.setResponseEntity(sendMessageResult);
+ } finally {
+ //娓呯悊浜嬪姟淇℃伅
+ DistributedLock.releaseDistributedLock(key, requestId);
}
- ResponseEntity<String> sendMessageResult = new ResponseEntity<String>(smsDto.getMsg(), smsDto.isSuccess() ? HttpStatus.OK : HttpStatus.BAD_REQUEST);
- context.setResponseEntity(sendMessageResult);
}
}
--
Gitblit v1.8.0