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 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; } }