fix: 增加添加验证码时,检查验证码是否可以正常生成问题

This commit is contained in:
misworga831
2024-10-31 11:47:41 +08:00
parent dc1d1a7e7e
commit d4855b702b
3 changed files with 59 additions and 0 deletions

View File

@@ -40,4 +40,13 @@ public interface VerificationService {
* @return 操作结果
*/
boolean check(String uuid, VerificationEnums verificationEnums);
/**
* 检测是否可以生成验证码
*
* @param type 验证码类型
* @param filePath 文件路径
*/
Boolean checkCreateVerification(String type, String filePath);
}

View File

@@ -1,5 +1,6 @@
package cn.lili.modules.verification.service.impl;
import cn.hutool.core.text.CharSequenceUtil;
import cn.lili.cache.Cache;
import cn.lili.cache.CachePrefix;
import cn.lili.common.enums.ResultCode;
@@ -11,6 +12,7 @@ import cn.lili.modules.verification.SliderImageUtil;
import cn.lili.modules.verification.entity.dos.VerificationSource;
import cn.lili.modules.verification.entity.dto.VerificationDTO;
import cn.lili.modules.verification.entity.enums.VerificationEnums;
import cn.lili.modules.verification.entity.enums.VerificationSourceEnum;
import cn.lili.modules.verification.service.VerificationService;
import cn.lili.modules.verification.service.VerificationSourceService;
import lombok.extern.slf4j.Slf4j;
@@ -185,5 +187,47 @@ public class VerificationServiceImpl implements VerificationService {
return CachePrefix.VERIFICATION_RESULT.getPrefix() + verificationEnums.name() + uuid;
}
@Override
public Boolean checkCreateVerification(String type, String filePath) {
if (CharSequenceUtil.isBlank(type) || CharSequenceUtil.isBlank(filePath)) {
throw new ServiceException(ResultCode.ILLEGAL_REQUEST_ERROR);
}
//获取验证码配置
VerificationDTO verificationDTO = verificationSourceService.getVerificationCache();
List<VerificationSource> verificationResources = verificationDTO.getVerificationResources();
List<VerificationSource> verificationSlider = verificationDTO.getVerificationSlider();
//随机选择需要切的图片地址
String originalResource = verificationResources.get(0).getResource();
//随机选择剪切模版图片地址
String sliderResource = verificationSlider.get(0).getResource();
if (VerificationSourceEnum.RESOURCE.name().equals(type)) {
originalResource = filePath;
} else if (VerificationSourceEnum.SLIDER.name().equals(type)) {
sliderResource = filePath;
}
try {
//获取缓存中的资源
SerializableStream originalFile = getInputStream(originalResource);
SerializableStream sliderFile = getInputStream(sliderResource);
//生成数据
SliderImageUtil.pictureTemplatesCut(
sliderFile, sliderFile, originalFile,
verificationCodeProperties.getWatermark(),
verificationCodeProperties.getInterfereNum()
);
} catch (Exception e) {
throw new ServiceException("当前图片不符合规则,请上传正确格式的图片!");
}
return true;
}
}