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