From eb06eb7266be9a73433b049b0b08754491bddce2 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期三, 24 四月 2024 18:06:19 +0800 Subject: [PATCH] fix 修复 字典键值可重复配置问题 --- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java | 9 +++++++++ ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java | 18 ++++++++++++++++++ ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java | 6 ++++++ 3 files changed, 33 insertions(+), 0 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java index cc8034e..5752751 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java @@ -87,6 +87,9 @@ @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.INSERT) @PostMapping public R<Void> add(@Validated @RequestBody SysDictDataBo dict) { + if (!dictDataService.checkDictDataUnique(dict)) { + return R.fail("鏂板瀛楀吀鏁版嵁'" + dict.getDictValue() + "'澶辫触锛屽瓧鍏搁敭鍊煎凡瀛樺湪"); + } dictDataService.insertDictData(dict); return R.ok(); } @@ -98,6 +101,9 @@ @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.UPDATE) @PutMapping public R<Void> edit(@Validated @RequestBody SysDictDataBo dict) { + if (!dictDataService.checkDictDataUnique(dict)) { + return R.fail("淇敼瀛楀吀鏁版嵁'" + dict.getDictValue() + "'澶辫触锛屽瓧鍏搁敭鍊煎凡瀛樺湪"); + } dictDataService.updateDictData(dict); return R.ok(); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java index 30442ce..0e697db 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java @@ -64,4 +64,13 @@ * @return 缁撴灉 */ List<SysDictDataVo> updateDictData(SysDictDataBo bo); + + /** + * 鏍¢獙瀛楀吀閿�兼槸鍚﹀敮涓� + * + * @param dict 瀛楀吀鏁版嵁 + * @return 缁撴灉 + */ + boolean checkDictDataUnique(SysDictDataBo dict); + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java index 74d4454..1ab0faf 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.system.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -135,4 +136,21 @@ throw new ServiceException("鎿嶄綔澶辫触"); } + /** + * 鏍¢獙瀛楀吀閿�兼槸鍚﹀敮涓� + * + * @param dict 瀛楀吀鏁版嵁 + * @return 缁撴灉 + */ + @Override + public boolean checkDictDataUnique(SysDictDataBo dict) { + Long dictCode = ObjectUtil.isNull(dict.getDictCode()) ? -1L : dict.getDictCode(); + SysDictData entity = baseMapper.selectOne(new LambdaQueryWrapper<SysDictData>() + .eq(SysDictData::getDictType, dict.getDictType()).eq(SysDictData::getDictValue, dict.getDictValue())); + if (ObjectUtil.isNotNull(entity) && !dictCode.equals(entity.getDictCode())) { + return false; + } + return true; + } + } -- Gitblit v1.9.3