38 lines
1.4 KiB
Java
38 lines
1.4 KiB
Java
package cn.bunny.service.impl;
|
|
|
|
import cn.bunny.service.ValidateCodeService;
|
|
import cn.bunny.spzx.model.vo.system.ValidateCodeVo;
|
|
import cn.hutool.captcha.CaptchaUtil;
|
|
import cn.hutool.captcha.CircleCaptcha;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.UUID;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
@Service
|
|
public class ValidateCodeServiceIImpl implements ValidateCodeService {
|
|
@Autowired
|
|
private RedisTemplate<String, String> redisTemplate;
|
|
|
|
// 生成验证码
|
|
@Override
|
|
public ValidateCodeVo generateValidateCode() {
|
|
// 使用hutool生成验证码
|
|
CircleCaptcha circleCaptcha = CaptchaUtil.createCircleCaptcha(150, 40, 4, 20);
|
|
String code = circleCaptcha.getCode();
|
|
String imageBase64 = circleCaptcha.getImageBase64();
|
|
|
|
// 放到Redis
|
|
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
|
|
redisTemplate.opsForValue().set("user:validate" + uuid, code, 5, TimeUnit.MINUTES);
|
|
|
|
// 返回 validateCodeVo
|
|
ValidateCodeVo validateCodeVo = new ValidateCodeVo();
|
|
validateCodeVo.setCodeKey(uuid);
|
|
validateCodeVo.setCodeValue("data:image/png;base64," + imageBase64);
|
|
return validateCodeVo;
|
|
}
|
|
}
|