!708 update 优化代码小改动

* update 优化代码小改动的逻辑性错误
* update 优化代码小改动
This commit is contained in:
AprilWind 2025-06-27 05:34:43 +00:00 committed by 疯狂的狮子Li
parent 3f9919fbee
commit 5baf342478
7 changed files with 48 additions and 50 deletions

View File

@ -2,23 +2,24 @@ package org.dromara.system.controller.system;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import org.dromara.common.log.annotation.Log; import jakarta.servlet.http.HttpServletResponse;
import org.dromara.common.web.core.BaseController; import lombok.RequiredArgsConstructor;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.system.domain.bo.SysDictDataBo; import org.dromara.system.domain.bo.SysDictDataBo;
import org.dromara.system.domain.vo.SysDictDataVo; import org.dromara.system.domain.vo.SysDictDataVo;
import org.dromara.system.service.ISysDictDataService; import org.dromara.system.service.ISysDictDataService;
import org.dromara.system.service.ISysDictTypeService; import org.dromara.system.service.ISysDictTypeService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import jakarta.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@ -117,7 +118,7 @@ public class SysDictDataController extends BaseController {
@Log(title = "字典类型", businessType = BusinessType.DELETE) @Log(title = "字典类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{dictCodes}") @DeleteMapping("/{dictCodes}")
public R<Void> remove(@PathVariable Long[] dictCodes) { public R<Void> remove(@PathVariable Long[] dictCodes) {
dictDataService.deleteDictDataByIds(dictCodes); dictDataService.deleteDictDataByIds(Arrays.asList(dictCodes));
return R.ok(); return R.ok();
} }
} }

View File

@ -1,6 +1,8 @@
package org.dromara.system.controller.system; package org.dromara.system.controller.system;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
@ -11,11 +13,10 @@ import org.dromara.common.web.core.BaseController;
import org.dromara.system.domain.bo.SysDictTypeBo; import org.dromara.system.domain.bo.SysDictTypeBo;
import org.dromara.system.domain.vo.SysDictTypeVo; import org.dromara.system.domain.vo.SysDictTypeVo;
import org.dromara.system.service.ISysDictTypeService; import org.dromara.system.service.ISysDictTypeService;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@ -99,7 +100,7 @@ public class SysDictTypeController extends BaseController {
@Log(title = "字典类型", businessType = BusinessType.DELETE) @Log(title = "字典类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{dictIds}") @DeleteMapping("/{dictIds}")
public R<Void> remove(@PathVariable Long[] dictIds) { public R<Void> remove(@PathVariable Long[] dictIds) {
dictTypeService.deleteDictTypeByIds(dictIds); dictTypeService.deleteDictTypeByIds(Arrays.asList(dictIds));
return R.ok(); return R.ok();
} }

View File

@ -47,7 +47,7 @@ public interface ISysDictDataService {
* *
* @param dictCodes 需要删除的字典数据ID * @param dictCodes 需要删除的字典数据ID
*/ */
void deleteDictDataByIds(Long[] dictCodes); void deleteDictDataByIds(List<Long> dictCodes);
/** /**
* 新增保存字典数据信息 * 新增保存字典数据信息

View File

@ -62,7 +62,7 @@ public interface ISysDictTypeService {
* *
* @param dictIds 需要删除的字典ID * @param dictIds 需要删除的字典ID
*/ */
void deleteDictTypeByIds(Long[] dictIds); void deleteDictTypeByIds(List<Long> dictIds);
/** /**
* 重置字典缓存数据 * 重置字典缓存数据

View File

@ -4,20 +4,19 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.system.domain.SysDictData;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.redis.utils.CacheUtils; import org.dromara.common.redis.utils.CacheUtils;
import org.dromara.system.domain.SysDictData;
import org.dromara.system.domain.bo.SysDictDataBo; import org.dromara.system.domain.bo.SysDictDataBo;
import org.dromara.system.domain.vo.SysDictDataVo; import org.dromara.system.domain.vo.SysDictDataVo;
import org.dromara.system.mapper.SysDictDataMapper; import org.dromara.system.mapper.SysDictDataMapper;
import org.dromara.system.service.ISysDictDataService; import org.dromara.system.service.ISysDictDataService;
import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.CachePut; import org.springframework.cache.annotation.CachePut;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -95,12 +94,10 @@ public class SysDictDataServiceImpl implements ISysDictDataService {
* @param dictCodes 需要删除的字典数据ID * @param dictCodes 需要删除的字典数据ID
*/ */
@Override @Override
public void deleteDictDataByIds(Long[] dictCodes) { public void deleteDictDataByIds(List<Long> dictCodes) {
for (Long dictCode : dictCodes) { List<SysDictData> list = baseMapper.selectByIds(dictCodes);
SysDictData data = baseMapper.selectById(dictCode); baseMapper.deleteByIds(dictCodes);
baseMapper.deleteById(dictCode); list.forEach(x -> CacheUtils.evict(CacheNames.SYS_DICT, x.getDictType()));
CacheUtils.evict(CacheNames.SYS_DICT, data.getDictType());
}
} }
/** /**
@ -145,13 +142,11 @@ public class SysDictDataServiceImpl implements ISysDictDataService {
*/ */
@Override @Override
public boolean checkDictDataUnique(SysDictDataBo dict) { public boolean checkDictDataUnique(SysDictDataBo dict) {
Long dictCode = ObjectUtils.notNull(dict.getDictCode(), -1L); boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysDictData>()
SysDictData entity = baseMapper.selectOne(new LambdaQueryWrapper<SysDictData>() .eq(SysDictData::getDictType, dict.getDictType())
.eq(SysDictData::getDictType, dict.getDictType()).eq(SysDictData::getDictValue, dict.getDictValue())); .eq(SysDictData::getDictValue, dict.getDictValue())
if (ObjectUtil.isNotNull(entity) && !dictCode.equals(entity.getDictCode())) { .ne(ObjectUtil.isNotNull(dict.getDictCode()), SysDictData::getDictCode, dict.getDictCode()));
return false; return !exist;
}
return true;
} }
} }

View File

@ -98,10 +98,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService
@Override @Override
public List<SysDictDataVo> selectDictDataByType(String dictType) { public List<SysDictDataVo> selectDictDataByType(String dictType) {
List<SysDictDataVo> dictDatas = dictDataMapper.selectDictDataByType(dictType); List<SysDictDataVo> dictDatas = dictDataMapper.selectDictDataByType(dictType);
if (CollUtil.isNotEmpty(dictDatas)) { return CollUtil.isNotEmpty(dictDatas) ? dictDatas : null;
return dictDatas;
}
return null;
} }
/** /**
@ -133,17 +130,20 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService
* @param dictIds 需要删除的字典ID * @param dictIds 需要删除的字典ID
*/ */
@Override @Override
public void deleteDictTypeByIds(Long[] dictIds) { public void deleteDictTypeByIds(List<Long> dictIds) {
for (Long dictId : dictIds) { List<SysDictType> list = baseMapper.selectByIds(dictIds);
SysDictType dictType = baseMapper.selectById(dictId); list.forEach(x -> {
if (dictDataMapper.exists(new LambdaQueryWrapper<SysDictData>() boolean assigned = dictDataMapper.exists(new LambdaQueryWrapper<SysDictData>()
.eq(SysDictData::getDictType, dictType.getDictType()))) { .eq(SysDictData::getDictType, x.getDictType()));
throw new ServiceException(String.format("%1$s已分配,不能删除", dictType.getDictName())); if (assigned) {
throw new ServiceException(String.format("%1$s已分配,不能删除", x.getDictName()));
} }
CacheUtils.evict(CacheNames.SYS_DICT, dictType.getDictType()); });
CacheUtils.evict(CacheNames.SYS_DICT_TYPE, dictType.getDictType()); baseMapper.deleteByIds(dictIds);
} list.forEach(x -> {
baseMapper.deleteByIds(Arrays.asList(dictIds)); CacheUtils.evict(CacheNames.SYS_DICT, x.getDictType());
CacheUtils.evict(CacheNames.SYS_DICT_TYPE, x.getDictType());
});
} }
/** /**

View File

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.Constants;
import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.constant.SystemConstants;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StreamUtils;
@ -142,7 +143,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
} else { } else {
menus = baseMapper.selectMenuTreeByUserId(userId); menus = baseMapper.selectMenuTreeByUserId(userId);
} }
return getChildPerms(menus, 0); return getChildPerms(menus, Constants.TOP_PARENT_ID);
} }
/** /**
@ -221,7 +222,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
children.setQuery(menu.getQueryParam()); children.setQuery(menu.getQueryParam());
childrenList.add(children); childrenList.add(children);
router.setChildren(childrenList); router.setChildren(childrenList);
} else if (menu.getParentId().intValue() == 0 && menu.isInnerLink()) { } else if (menu.getParentId().equals(Constants.TOP_PARENT_ID) && menu.isInnerLink()) {
router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon()));
router.setPath("/"); router.setPath("/");
List<RouterVo> childrenList = new ArrayList<>(); List<RouterVo> childrenList = new ArrayList<>();
@ -375,11 +376,11 @@ public class SysMenuServiceImpl implements ISysMenuService {
* @param parentId 传入的父节点ID * @param parentId 传入的父节点ID
* @return String * @return String
*/ */
private List<SysMenu> getChildPerms(List<SysMenu> list, int parentId) { private List<SysMenu> getChildPerms(List<SysMenu> list, Long parentId) {
List<SysMenu> returnList = new ArrayList<>(); List<SysMenu> returnList = new ArrayList<>();
for (SysMenu t : list) { for (SysMenu t : list) {
// 根据传入的某个父节点ID,遍历该父节点的所有子节点 // 根据传入的某个父节点ID,遍历该父节点的所有子节点
if (t.getParentId() == parentId) { if (t.getParentId().equals(parentId)) {
recursionFn(list, t); recursionFn(list, t);
returnList.add(t); returnList.add(t);
} }