@Value("${spring.profiles.active}")
private String active;
String code = "prod".equals(active) ? RandomStringUtils.randomNumeric(4) : "1234";
VerifyCodeVO verifyCodeVO = new VerifyCodeVO();
verifyCodeVO.setCode(code);
verifyCodeVO.setPhone(param.getPhone());
verifyCodeVO.setSendTime(new Date());
stringRedisTemplate.opsForValue().set(MtcConstant.REDIS_KEY_VERIFY_PREFIX + CodeType.values()[param.getType()].name() + ":" + param.getPhone(),
JSONObject.toJSONString(verifyCodeVO), MtcConstant.EXPIRATION_MINUTES_TIME, TimeUnit.MINUTES);
log.info("发送验证码: {}, {}", param.getPhone(), code);
if ("prod".equals(active)) {
taskExecutor.execute(() -> sendSms(code, param.getPhone()));
}
1,生成验证码的思路,双元判断
2,发送验证码的思路,生产环境才调用短信服务发送
3,发送验证码使用taskExcetor来异步调用的
4,redis里的key和value的设计思路
详细代码参考木头村项目CodeServiceImpl