diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/pojo/request/DictRequest.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/pojo/request/DictRequest.java index a8ae604aa..64f401f99 100644 --- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/pojo/request/DictRequest.java +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/pojo/request/DictRequest.java @@ -26,7 +26,6 @@ package cn.stylefeng.roses.kernel.dict.modular.pojo.request; import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; import cn.stylefeng.roses.kernel.validator.api.validators.status.StatusValue; -import cn.stylefeng.roses.kernel.validator.api.validators.unique.TableUniqueValue; import lombok.Data; import lombok.EqualsAndHashCode; @@ -54,26 +53,12 @@ public class DictRequest extends BaseRequest { * 字典编码 */ @NotBlank(message = "字典编码不能为空", groups = {add.class, edit.class, validateAvailable.class}) - @TableUniqueValue( - message = "字典编码存在重复", - groups = {add.class, edit.class}, - tableName = "sys_dict", - columnName = "dict_code", - idFieldName = "dict_id", - excludeLogicDeleteItems = true) private String dictCode; /** * 字典名称 */ @NotBlank(message = "字典名称不能为空", groups = {add.class, edit.class}) - @TableUniqueValue( - message = "字典名称存在重复", - groups = {add.class, edit.class}, - tableName = "sys_dict", - columnName = "dict_name", - idFieldName = "dict_id", - excludeLogicDeleteItems = true) private String dictName; /** diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictServiceImpl.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictServiceImpl.java index 6c0954e66..a105d7888 100644 --- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictServiceImpl.java +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictServiceImpl.java @@ -76,6 +76,10 @@ public class DictServiceImpl extends ServiceImpl implements @Override @Transactional(rollbackFor = Exception.class) public void add(DictRequest dictRequest) { + + // 校验字典重复 + this.validateRepeat(dictRequest, false); + SysDict sysDict = new SysDict(); BeanUtil.copyProperties(dictRequest, sysDict); sysDict.setDictParentId(DictConstants.DEFAULT_DICT_PARENT_ID); @@ -96,6 +100,9 @@ public class DictServiceImpl extends ServiceImpl implements @Transactional(rollbackFor = Exception.class) public void edit(DictRequest dictRequest) { + // 校验字典重复 + this.validateRepeat(dictRequest, true); + SysDict sysDict = this.querySysDict(dictRequest); BeanUtil.copyProperties(dictRequest, sysDict); @@ -241,4 +248,40 @@ public class DictServiceImpl extends ServiceImpl implements return queryWrapper; } + /** + * 检查添加和编辑字典是否有重复的编码和名称 + * + * @author fengshuonan + * @date 2021/5/12 16:58 + */ + private void validateRepeat(DictRequest dictRequest, boolean editFlag) { + + // 检验同字典类型下是否有一样的编码 + LambdaQueryWrapper sysDictLambdaQueryWrapper = new LambdaQueryWrapper<>(); + sysDictLambdaQueryWrapper.eq(SysDict::getDictTypeCode, dictRequest.getDictTypeCode()); + sysDictLambdaQueryWrapper.eq(SysDict::getDictCode, dictRequest.getDictCode()); + if (editFlag) { + sysDictLambdaQueryWrapper.ne(SysDict::getDictId, dictRequest.getDictId()); + } + sysDictLambdaQueryWrapper.ne(SysDict::getDelFlag, YesOrNotEnum.Y.getCode()); + int count = this.count(sysDictLambdaQueryWrapper); + if (count > 0) { + throw new DictException(DictExceptionEnum.DICT_CODE_REPEAT, dictRequest.getDictTypeCode(), dictRequest.getDictCode()); + } + + // 检验同字典类型下是否有一样的名称 + LambdaQueryWrapper dictNameWrapper = new LambdaQueryWrapper<>(); + dictNameWrapper.eq(SysDict::getDictTypeCode, dictRequest.getDictTypeCode()); + dictNameWrapper.eq(SysDict::getDictName, dictRequest.getDictName()); + if (editFlag) { + dictNameWrapper.ne(SysDict::getDictId, dictRequest.getDictId()); + } + dictNameWrapper.ne(SysDict::getDelFlag, YesOrNotEnum.Y.getCode()); + int dictNameCount = this.count(dictNameWrapper); + if (dictNameCount > 0) { + throw new DictException(DictExceptionEnum.DICT_NAME_REPEAT, dictRequest.getDictTypeCode(), dictRequest.getDictCode()); + } + + } + }