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(); } 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); } 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; } }