spzx/spzx-manager/src/main/java/cn/bunny/service/impl/ValidateCodeServiceIImpl.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;
}
}