@@ -40,4 +40,13 @@ public interface VerificationService {
|
||||
* @return 操作结果
|
||||
*/
|
||||
boolean check(String uuid, VerificationEnums verificationEnums);
|
||||
|
||||
|
||||
/**
|
||||
* 检测是否可以生成验证码
|
||||
*
|
||||
* @param type 验证码类型
|
||||
* @param filePath 文件路径
|
||||
*/
|
||||
Boolean checkCreateVerification(String type, String filePath);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user