diff --git a/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java b/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java index 640ffec9..865c1780 100644 --- a/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java +++ b/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java @@ -32,14 +32,8 @@ public class SliderImageController { @GetMapping("/{verificationEnums}") @ApiOperation(value = "获取校验接口,一分钟同一个ip请求10次") public ResultMessage getSliderImage(@RequestHeader String uuid, @PathVariable VerificationEnums verificationEnums) { - try { - return ResultUtil.data(verificationService.createVerification(verificationEnums, uuid)); - } catch (ServiceException e) { - throw e; - } catch (Exception e) { - log.error("获取校验接口错误", e); - throw new ServiceException(ResultCode.VERIFICATION_EXIST); - } + return ResultUtil.data(verificationService.createVerification(verificationEnums, uuid)); + } @LimitPoint(name = "slider_image", key = "verification_pre_check", limit = 600) diff --git a/common-api/src/main/java/cn/lili/controller/common/SmsController.java b/common-api/src/main/java/cn/lili/controller/common/SmsController.java index 70f5bfab..04fe50f9 100644 --- a/common-api/src/main/java/cn/lili/controller/common/SmsController.java +++ b/common-api/src/main/java/cn/lili/controller/common/SmsController.java @@ -42,11 +42,8 @@ public class SmsController { @RequestHeader String uuid, @PathVariable String mobile, @PathVariable VerificationEnums verificationEnums) { - if (verificationService.check(uuid, verificationEnums)) { - smsUtil.sendSmsCode(mobile, verificationEnums, uuid); - return ResultUtil.success(ResultCode.VERIFICATION_SEND_SUCCESS); - } else { - throw new ServiceException(ResultCode.VERIFICATION_SMS_EXPIRED_ERROR); - } + verificationService.check(uuid, verificationEnums); + smsUtil.sendSmsCode(mobile, verificationEnums, uuid); + return ResultUtil.success(ResultCode.VERIFICATION_SEND_SUCCESS); } } diff --git a/framework/src/main/java/cn/lili/cache/Cache.java b/framework/src/main/java/cn/lili/cache/Cache.java index d71bc646..7bd4d481 100644 --- a/framework/src/main/java/cn/lili/cache/Cache.java +++ b/framework/src/main/java/cn/lili/cache/Cache.java @@ -89,7 +89,7 @@ public interface Cache { * * @param key 缓存key */ - void remove(Object key); + Boolean remove(Object key); /** * 删除 diff --git a/framework/src/main/java/cn/lili/cache/impl/RedisCache.java b/framework/src/main/java/cn/lili/cache/impl/RedisCache.java index b16d0405..ade80a68 100644 --- a/framework/src/main/java/cn/lili/cache/impl/RedisCache.java +++ b/framework/src/main/java/cn/lili/cache/impl/RedisCache.java @@ -78,9 +78,9 @@ public class RedisCache implements Cache { } @Override - public void remove(Object key) { + public Boolean remove(Object key) { - redisTemplate.delete(key); + return redisTemplate.delete(key); } /** diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java index d93ebb7f..accc1077 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -426,8 +426,8 @@ public enum ResultCode { */ VERIFICATION_SEND_SUCCESS(80201, "短信验证码,发送成功"), VERIFICATION_ERROR(80202, "验证失败"), - VERIFICATION_SMS_ERROR(80203, "短信验证码错误,请重新校验"), - VERIFICATION_SMS_EXPIRED_ERROR(80204, "验证码已失效,请重新校验"), + VERIFICATION_CODE_INVALID(80204, "验证码已失效,请重新校验"), + VERIFICATION_SMS_CHECKED_ERROR(80210, "短信验证码错误,请重新校验"), /** * 微信相关异常 diff --git a/framework/src/main/java/cn/lili/modules/verification/service/VerificationService.java b/framework/src/main/java/cn/lili/modules/verification/service/VerificationService.java index 9bd4109d..44c3f836 100644 --- a/framework/src/main/java/cn/lili/modules/verification/service/VerificationService.java +++ b/framework/src/main/java/cn/lili/modules/verification/service/VerificationService.java @@ -20,7 +20,7 @@ public interface VerificationService { * @return 校验对象 * @throws IOException 校验错误 */ - Map createVerification(VerificationEnums verificationEnums, String uuid) throws IOException; + Map createVerification(VerificationEnums verificationEnums, String uuid); /** * 预校验 diff --git a/framework/src/main/java/cn/lili/modules/verification/service/impl/VerificationServiceImpl.java b/framework/src/main/java/cn/lili/modules/verification/service/impl/VerificationServiceImpl.java index 9f35be8c..be0bbf6a 100644 --- a/framework/src/main/java/cn/lili/modules/verification/service/impl/VerificationServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/verification/service/impl/VerificationServiceImpl.java @@ -51,7 +51,7 @@ public class VerificationServiceImpl implements VerificationService { * @return 验证码参数 */ @Override - public Map createVerification(VerificationEnums verificationEnums, String uuid) throws IOException { + public Map createVerification(VerificationEnums verificationEnums, String uuid) { if (uuid == null) { throw new ServiceException(ResultCode.ILLEGAL_REQUEST_ERROR); @@ -97,8 +97,7 @@ public class VerificationServiceImpl implements VerificationService { } catch (ServiceException e) { throw e; } catch (Exception e) { - log.error("创建校验错误", e); - return null; + throw new ServiceException(ResultCode.ERROR); } } @@ -136,16 +135,16 @@ public class VerificationServiceImpl implements VerificationService { public boolean preCheck(Integer xPos, String uuid, VerificationEnums verificationEnums) { Integer randomX = (Integer) cache.get(cacheKey(verificationEnums, uuid)); if (randomX == null) { - return false; + throw new ServiceException(ResultCode.VERIFICATION_CODE_INVALID); } log.debug("{}{}", randomX, xPos); - //验证结果 - if (Math.abs(randomX - xPos) < verificationCodeProperties.getFaultTolerant()) { + //验证结果正确 && 删除标记成功 + if (Math.abs(randomX - xPos) < verificationCodeProperties.getFaultTolerant() && cache.remove(cacheResult(verificationEnums, uuid))) { //验证成功,则记录验证结果 验证有效时间与验证码创建有效时间一致 cache.put(cacheResult(verificationEnums, uuid), true, verificationCodeProperties.getEffectiveTime()); return true; } - return false; + throw new ServiceException(ResultCode.VERIFICATION_ERROR); } /** @@ -157,13 +156,11 @@ public class VerificationServiceImpl implements VerificationService { */ @Override public boolean check(String uuid, VerificationEnums verificationEnums) { - Object object = cache.get(cacheResult(verificationEnums, uuid)); - if (object == null) { - return false; - } else { - cache.remove(cacheResult(verificationEnums, uuid)); + //如果有校验标记,则返回校验结果 + if (cache.remove(cacheResult(verificationEnums, uuid))) { return true; } + throw new ServiceException(ResultCode.VERIFICATION_CODE_INVALID); } /**