From 790a6e131faeeb3244490feb919bf59ebaecdc2a Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 29 May 2020 15:23:48 +0800
Subject: [PATCH] add verify code interface
---
src/main/java/com/xcong/excoin/common/system/service/impl/CommonServiceImpl.java | 32 ++++++++++++++++
src/main/java/com/xcong/excoin/common/contants/AppContants.java | 5 ++
src/main/java/com/xcong/excoin/common/system/service/CommonService.java | 11 +++++
src/main/java/com/xcong/excoin/common/system/controller/CommonController.java | 33 +++++++++++++---
4 files changed, 75 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/common/contants/AppContants.java b/src/main/java/com/xcong/excoin/common/contants/AppContants.java
index 9619ae1..6ad7724 100644
--- a/src/main/java/com/xcong/excoin/common/contants/AppContants.java
+++ b/src/main/java/com/xcong/excoin/common/contants/AppContants.java
@@ -59,4 +59,9 @@
*/
public static final int HOME_SYMBOLS_CONTRACT = 2;
+ /**
+ * 验证码前缀 手机
+ */
+ public static final String VERIFY_CODE_PREFIX = "CODE_SMS_";
+
}
diff --git a/src/main/java/com/xcong/excoin/common/system/controller/CommonController.java b/src/main/java/com/xcong/excoin/common/system/controller/CommonController.java
index db35bd2..94ab806 100644
--- a/src/main/java/com/xcong/excoin/common/system/controller/CommonController.java
+++ b/src/main/java/com/xcong/excoin/common/system/controller/CommonController.java
@@ -1,14 +1,19 @@
package com.xcong.excoin.common.system.controller;
+import cn.hutool.core.util.StrUtil;
import com.xcong.excoin.common.contants.AppContants;
import com.xcong.excoin.common.response.Result;
+import com.xcong.excoin.common.system.service.CommonService;
import com.xcong.excoin.utils.RedisUtils;
import com.xcong.excoin.utils.SmsUtils;
+import com.xcong.excoin.utils.mail.SubMailSend;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@@ -32,22 +37,33 @@
@Resource
private RedisUtils redisUtils;
+ @Resource
+ private CommonService commonservice;
+
@ApiOperation(value = "获取验证码接口", notes = "获取验证码通用接口")
@GetMapping(value = "/verifyCode")
- public Result verifyCode(String account, String type) {
+ public Result verifyCode(@ApiParam(name = "account", value = "手机号或邮箱", required = true) @RequestParam(value = "account") String account,
+ @ApiParam(name = "type", value = "类型1-手机号2-邮箱", required = true) @RequestParam("type") String type) {
log.info("#账号:{}, 类型:{}#", account, type);
- int code = (int) ((Math.random() * 9 + 1) * 100000);
+ Integer code = (int) ((Math.random() * 9 + 1) * 100000);
+ if (StrUtil.isNotBlank(redisUtils.getString(AppContants.VERIFY_CODE_PREFIX + account))) {
+ return Result.fail("验证码已发送,请勿重复发");
+ }
+
+ // 发送手机验证码
if (AppContants.ACCOUNT_TYPE_MOBILE.equals(type)) {
Map<String, Object> result = SmsUtils.sendVerifyCode(account, code);
-
if (SUCCESS.equals(result.get("resultstatus"))) {
Map<String, Object> map = new HashMap<>();
- boolean flag = redisUtils.set("SMS_" + account, code, 120);
+ boolean flag = redisUtils.set(AppContants.VERIFY_CODE_PREFIX + account, code, 120);
map.put("code", flag);
return Result.ok("success", map);
}
+ // 发送邮件验证码
} else if (AppContants.ACCOUNT_TYPE_EMAIL.equals(type)) {
+ SubMailSend.sendMail(account, code.toString());
+ redisUtils.set(AppContants.VERIFY_CODE_PREFIX + account, code, 120);
return Result.ok("success");
} else {
log.info("未定义账号类型");
@@ -58,8 +74,13 @@
@ApiOperation(value = "验证验证码是否正确", notes = "验证验证码是否正确")
@GetMapping(value = "/checkVerify")
- public Result checkVerify() {
- return null;
+ public Result checkVerify(@ApiParam(name = "account", value = "账号", required = true) @RequestParam("account") String account,
+ @ApiParam(name = "code", value = "验证码", required = true) @RequestParam("code") String code) {
+ boolean flag = commonservice.verifyCode(account, code);
+ if (flag) {
+ return Result.ok("success");
+ }
+ return Result.fail("验证码错误");
}
@ApiOperation(value = "文件上次接口", notes = "文件上传")
diff --git a/src/main/java/com/xcong/excoin/common/system/service/CommonService.java b/src/main/java/com/xcong/excoin/common/system/service/CommonService.java
new file mode 100644
index 0000000..be1ed3f
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/common/system/service/CommonService.java
@@ -0,0 +1,11 @@
+package com.xcong.excoin.common.system.service;
+
+
+/**
+ * @author helius
+ */
+public interface CommonService {
+
+ public boolean verifyCode(String account, String code);
+
+}
diff --git a/src/main/java/com/xcong/excoin/common/system/service/impl/CommonServiceImpl.java b/src/main/java/com/xcong/excoin/common/system/service/impl/CommonServiceImpl.java
new file mode 100644
index 0000000..aad0d55
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/common/system/service/impl/CommonServiceImpl.java
@@ -0,0 +1,32 @@
+package com.xcong.excoin.common.system.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.xcong.excoin.common.contants.AppContants;
+import com.xcong.excoin.common.system.service.CommonService;
+import com.xcong.excoin.utils.RedisUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * @author wzy
+ * @date 2020-05-29
+ **/
+@Slf4j
+@Service
+public class CommonServiceImpl implements CommonService {
+
+ @Resource
+ private RedisUtils redisUtils;
+
+ @Override
+ public boolean verifyCode(String account, String code) {
+ String cacheCode = redisUtils.getString(AppContants.VERIFY_CODE_PREFIX + account);
+ if (StrUtil.isBlank(cacheCode)) {
+ return false;
+ }
+
+ return code.equals(cacheCode);
+ }
+}
--
Gitblit v1.9.1