From 536f4b0a8c1b700c34531ceb34d5f45ee046ce21 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Wed, 12 May 2021 17:25:10 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.0.3=E3=80=91=E3=80=90dict=E3=80=91?= =?UTF-8?q?=E5=AD=97=E5=85=B8=E6=96=B0=E5=A2=9E=E5=92=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=9A=84=E6=A0=A1=E9=AA=8C=E6=94=B9=E4=B8=BA=E6=89=8B=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modular/pojo/request/DictRequest.java | 15 ------- .../modular/service/impl/DictServiceImpl.java | 43 +++++++++++++++++++ 2 files changed, 43 insertions(+), 15 deletions(-) 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()); + } + + } + }