!359 fix & improve

Merge pull request !359 from pg
This commit is contained in:
OceansDeep 2024-10-31 03:50:57 +00:00 committed by Gitee
commit 9108a1585c
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
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;
}
}

View File

@ -6,6 +6,7 @@ import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.common.vo.SearchVO;
import cn.lili.modules.verification.entity.dos.VerificationSource;
import cn.lili.modules.verification.service.VerificationService;
import cn.lili.modules.verification.service.VerificationSourceService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -31,6 +32,9 @@ public class VerificationSourceController {
@Autowired
private VerificationSourceService verificationSourceService;
@Autowired
private VerificationService verificationService;
@GetMapping(value = "/{id}")
@ApiOperation(value = "查看验证码资源维护详情")
public ResultMessage<VerificationSource> get(@PathVariable String id) {
@ -53,6 +57,7 @@ public class VerificationSourceController {
@DemoSite
public ResultMessage<VerificationSource> save(VerificationSource verificationSource) {
verificationService.checkCreateVerification(verificationSource.getType(), verificationSource.getResource());
verificationSourceService.save(verificationSource);
verificationSourceService.initCache();
return ResultUtil.data(verificationSource);
@ -63,6 +68,7 @@ public class VerificationSourceController {
@DemoSite
public ResultMessage<VerificationSource> update(@PathVariable String id, VerificationSource verificationSource) {
verificationSource.setId(id);
verificationService.checkCreateVerification(verificationSource.getType(), verificationSource.getResource());
verificationSourceService.updateById(verificationSource);
verificationSourceService.initCache();
return ResultUtil.data(verificationSource);