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