!155 fix: 修复字典键值可重复配置问题

Merge pull request !155 from ekko/fix/修复字典键值可重复配置问题
2.X
疯狂的狮子Li 9 months ago committed by Gitee
commit bf93c8a003
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F

@ -87,6 +87,9 @@ public class SysDictDataController extends BaseController {
@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 @@ public class SysDictDataController extends BaseController {
@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();
}

@ -64,4 +64,13 @@ public interface ISysDictDataService {
* @return
*/
List<SysDictDataVo> updateDictData(SysDictDataBo bo);
/**
*
*
* @param dict
* @return
*/
boolean checkDictDataUnique(SysDictDataBo dict);
}

@ -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 @@ public class SysDictDataServiceImpl implements ISysDictDataService {
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;
}
}

Loading…
Cancel
Save