refactor: 项目代码重构,优化管理系统代码细节

This commit is contained in:
haoxr
2023-03-11 10:57:24 +08:00
parent 6ab175871e
commit defbb6a93b
52 changed files with 739 additions and 776 deletions

View File

@@ -65,7 +65,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
Long parentId = dept.getParentId();
// 不在缓存ID列表的parentId是顶级节点ID以此作为递归开始
if (cacheDeptIds.contains(parentId) == false) {
list.addAll(recurDepartments(parentId, deptList));
list.addAll(recurDeptList(parentId, deptList));
cacheDeptIds.add(parentId); // 避免重复递归
}
}
@@ -85,18 +85,18 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
}
/**
* 递归生成部门层级列表
* 递归生成部门树形列表
*
* @param parentId
* @param deptList
* @return
*/
public List<DeptVO> recurDepartments(Long parentId, List<SysDept> deptList) {
public List<DeptVO> recurDeptList(Long parentId, List<SysDept> deptList) {
List<DeptVO> list = deptList.stream()
.filter(dept -> dept.getParentId().equals(parentId))
.map(dept -> {
DeptVO deptVO = deptConverter.entity2Vo(dept);
List<DeptVO> children = recurDepartments(dept.getId(), deptList);
List<DeptVO> children = recurDeptList(dept.getId(), deptList);
deptVO.setChildren(children);
return deptVO;
}).collect(Collectors.toList());
@@ -181,13 +181,15 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
@Override
public boolean deleteByIds(String ids) {
// 删除部门及子部门
Optional.ofNullable(Arrays.stream(ids.split(",")))
.ifPresent(deptIds -> deptIds.forEach(deptId ->
this.remove(new LambdaQueryWrapper<SysDept>()
.eq(SysDept::getId, deptId)
.or()
.apply("concat (',',tree_path,',') like concat('%,',{0},',%')", deptId))
));
if (StrUtil.isNotBlank(ids)) {
String[] menuIds = ids.split(",");
for (String deptId : menuIds) {
this.remove(new LambdaQueryWrapper<SysDept>()
.eq(SysDept::getId, deptId)
.or()
.apply("CONCAT (',',tree_path,',') LIKE CONCAT('%,',{0},',%')", deptId));
}
}
return true;
}

View File

@@ -1,142 +0,0 @@
package com.youlai.system.service.impl;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.converter.DictItemConverter;
import com.youlai.system.mapper.SysDictItemMapper;
import com.youlai.system.pojo.entity.SysDictItem;
import com.youlai.system.pojo.form.DictItemForm;
import com.youlai.system.pojo.query.DictItemPageQuery;
import com.youlai.system.pojo.vo.DictItemPageVO;
import com.youlai.system.service.SysDictItemService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 数据字典项业务实现类
*
* @author haoxr
* @date 2022/10/12
*/
@Service
@RequiredArgsConstructor
public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDictItem> implements SysDictItemService {
private final DictItemConverter dictItemConverter;
/**
* 字典数据项分页列表
*
* @param queryParams
* @return
*/
@Override
public Page<DictItemPageVO> listDictItemPages(DictItemPageQuery queryParams) {
// 查询参数
int pageNum = queryParams.getPageNum();
int pageSize = queryParams.getPageSize();
String keywords = queryParams.getKeywords();
String typeCode = queryParams.getTypeCode();
// 查询数据
Page<SysDictItem> dictItemPage = this.page(
new Page<>(pageNum, pageSize),
new LambdaQueryWrapper<SysDictItem>()
.like(StrUtil.isNotBlank(keywords), SysDictItem::getName, keywords)
.eq(StrUtil.isNotBlank(typeCode), SysDictItem::getTypeCode, typeCode)
.select(SysDictItem::getId, SysDictItem::getName, SysDictItem::getValue, SysDictItem::getStatus)
);
// 实体转换
Page<DictItemPageVO> pageResult = dictItemConverter.entity2Page(dictItemPage);
return pageResult;
}
/**
* 字典数据项表单详情
*
* @param id 字典数据项ID
* @return
*/
@Override
public DictItemForm getDictItemForm(Long id) {
// 获取entity
SysDictItem entity = this.getOne(new LambdaQueryWrapper<SysDictItem>()
.eq(SysDictItem::getId, id)
.select(
SysDictItem::getId,
SysDictItem::getTypeCode,
SysDictItem::getName,
SysDictItem::getValue,
SysDictItem::getStatus,
SysDictItem::getSort,
SysDictItem::getRemark
));
Assert.isTrue(entity != null, "字典数据项不存在");
// 实体转换
DictItemForm dictItemForm = dictItemConverter.entity2Form(entity);
return dictItemForm;
}
/**
* 新增字典数据项
*
* @param dictItemForm 字典数据项表单
* @return
*/
@Override
public boolean saveDictItem(DictItemForm dictItemForm) {
// 实体对象转换 form->entity
SysDictItem entity = dictItemConverter.form2Entity(dictItemForm);
// 持久化
boolean result = this.save(entity);
return result;
}
/**
* 修改字典数据项
*
* @param id 字典数据项ID
* @param dictItemForm 字典数据项表单
* @return
*/
@Override
public boolean updateDictItem(Long id, DictItemForm dictItemForm) {
SysDictItem entity = dictItemConverter.form2Entity(dictItemForm);
boolean result = this.updateById(entity);
return result;
}
/**
* 删除字典数据项
*
* @param idsStr 字典数据项ID多个以英文逗号(,)分割
* @return
*/
@Override
public boolean deleteDictItems(String idsStr) {
Assert.isTrue(StrUtil.isNotBlank(idsStr), "删除数据为空");
//
List<Long> ids = Arrays.asList(idsStr.split(","))
.stream()
.map(id -> Long.parseLong(id))
.collect(Collectors.toList());
// 删除字典数据项
boolean result = this.removeByIds(ids);
return result;
}
}

View File

@@ -0,0 +1,166 @@
package com.youlai.system.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.converter.DictConverter;
import com.youlai.system.mapper.SysDictMapper;
import com.youlai.system.pojo.entity.SysDict;
import com.youlai.system.pojo.form.DictForm;
import com.youlai.system.pojo.query.DictPageQuery;
import com.youlai.system.pojo.vo.DictPageVO;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.service.SysDictService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 数据字典项业务实现类
*
* @author haoxr
* @date 2022/10/12
*/
@Service
@RequiredArgsConstructor
public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements SysDictService {
private final DictConverter dictConverter;
/**
* 字典数据项分页列表
*
* @param queryParams
* @return
*/
@Override
public Page<DictPageVO> getDictPage(DictPageQuery queryParams) {
// 查询参数
int pageNum = queryParams.getPageNum();
int pageSize = queryParams.getPageSize();
String keywords = queryParams.getKeywords();
String typeCode = queryParams.getTypeCode();
// 查询数据
Page<SysDict> dictItemPage = this.page(
new Page<>(pageNum, pageSize),
new LambdaQueryWrapper<SysDict>()
.like(StrUtil.isNotBlank(keywords), SysDict::getName, keywords)
.eq(StrUtil.isNotBlank(typeCode), SysDict::getTypeCode, typeCode)
.select(SysDict::getId, SysDict::getName, SysDict::getValue, SysDict::getStatus)
);
// 实体转换
Page<DictPageVO> pageResult = dictConverter.entity2Page(dictItemPage);
return pageResult;
}
/**
* 字典数据项表单详情
*
* @param id 字典数据项ID
* @return
*/
@Override
public DictForm getDictForm(Long id) {
// 获取entity
SysDict entity = this.getOne(new LambdaQueryWrapper<SysDict>()
.eq(SysDict::getId, id)
.select(
SysDict::getId,
SysDict::getTypeCode,
SysDict::getName,
SysDict::getValue,
SysDict::getStatus,
SysDict::getSort,
SysDict::getRemark
));
Assert.isTrue(entity != null, "字典数据项不存在");
// 实体转换
DictForm dictForm = dictConverter.entity2Form(entity);
return dictForm;
}
/**
* 新增字典数据项
*
* @param dictForm 字典数据项表单
* @return
*/
@Override
public boolean saveDict(DictForm dictForm) {
// 实体对象转换 form->entity
SysDict entity = dictConverter.form2Entity(dictForm);
// 持久化
boolean result = this.save(entity);
return result;
}
/**
* 修改字典数据项
*
* @param id 字典数据项ID
* @param dictForm 字典数据项表单
* @return
*/
@Override
public boolean updateDict(Long id, DictForm dictForm) {
SysDict entity = dictConverter.form2Entity(dictForm);
boolean result = this.updateById(entity);
return result;
}
/**
* 删除字典数据项
*
* @param idsStr 字典数据项ID多个以英文逗号(,)分割
* @return
*/
@Override
public boolean deleteDict(String idsStr) {
Assert.isTrue(StrUtil.isNotBlank(idsStr), "删除数据为空");
//
List<Long> ids = Arrays.asList(idsStr.split(","))
.stream()
.map(id -> Long.parseLong(id))
.collect(Collectors.toList());
// 删除字典数据项
boolean result = this.removeByIds(ids);
return result;
}
/**
* 获取字典下拉列表
*
* @param typeCode
* @return
*/
@Override
public List<Option> listDictOptions(String typeCode) {
// 数据字典项
List<SysDict> dictList = this.list(new LambdaQueryWrapper<SysDict>()
.eq(SysDict::getTypeCode, typeCode)
.select(SysDict::getValue, SysDict::getName)
);
// 转换下拉数据
List<Option> options = CollectionUtil.emptyIfNull(dictList)
.stream()
.map(dictItem -> new Option(dictItem.getValue(), dictItem.getName()))
.collect(Collectors.toList());
return options;
}
}

View File

@@ -7,15 +7,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.pojo.entity.SysDict;
import com.youlai.system.pojo.vo.Option;
import com.youlai.system.converter.DictTypeConverter;
import com.youlai.system.mapper.SysDictTypeMapper;
import com.youlai.system.pojo.entity.SysDictItem;
import com.youlai.system.pojo.entity.SysDictType;
import com.youlai.system.pojo.form.DictTypeForm;
import com.youlai.system.pojo.query.DictTypePageQuery;
import com.youlai.system.pojo.vo.DictTypePageVO;
import com.youlai.system.service.SysDictItemService;
import com.youlai.system.service.SysDictService;
import com.youlai.system.service.SysDictTypeService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -36,7 +36,7 @@ import java.util.stream.Collectors;
public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDictType> implements SysDictTypeService {
private final SysDictItemService dictItemService;
private final SysDictService dictItemService;
private final DictTypeConverter dictTypeConverter;
/**
@@ -46,7 +46,7 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
* @return
*/
@Override
public Page<DictTypePageVO> listDictTypePages(DictTypePageQuery queryParams) {
public Page<DictTypePageVO> getDictTypePage(DictTypePageQuery queryParams) {
// 查询参数
int pageNum = queryParams.getPageNum();
int pageSize = queryParams.getPageSize();
@@ -74,7 +74,7 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
* @return
*/
@Override
public DictTypeForm getDictTypeFormData(Long id) {
public DictTypeForm getDictTypeForm(Long id) {
// 获取entity
SysDictType entity = this.getOne(new LambdaQueryWrapper<SysDictType>()
.eq(SysDictType::getId, id)
@@ -128,9 +128,9 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
String oldCode = sysDictType.getCode();
String newCode = dictTypeForm.getCode();
if (!StrUtil.equals(oldCode, newCode)) {
dictItemService.update(new LambdaUpdateWrapper<SysDictItem>()
.eq(SysDictItem::getTypeCode, oldCode)
.set(SysDictItem::getTypeCode, newCode)
dictItemService.update(new LambdaUpdateWrapper<SysDict>()
.eq(SysDict::getTypeCode, oldCode)
.set(SysDict::getTypeCode, newCode)
);
}
}
@@ -162,8 +162,8 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
.collect(Collectors.toList()
);
if (CollectionUtil.isNotEmpty(dictTypeCodes)) {
dictItemService.remove(new LambdaQueryWrapper<SysDictItem>()
.in(SysDictItem::getTypeCode, dictTypeCodes));
dictItemService.remove(new LambdaQueryWrapper<SysDict>()
.in(SysDict::getTypeCode, dictTypeCodes));
}
// 删除字典类型
boolean result = this.removeByIds(ids);
@@ -179,9 +179,9 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
@Override
public List<Option> listDictItemsByTypeCode(String typeCode) {
// 数据字典项
List<SysDictItem> dictItems = dictItemService.list(new LambdaQueryWrapper<SysDictItem>()
.eq(SysDictItem::getTypeCode, typeCode)
.select(SysDictItem::getValue, SysDictItem::getName)
List<SysDict> dictItems = dictItemService.list(new LambdaQueryWrapper<SysDict>()
.eq(SysDict::getTypeCode, typeCode)
.select(SysDict::getValue, SysDict::getName)
);
// 转换下拉数据

View File

@@ -50,7 +50,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
* @return
*/
@Override
public Page<RolePageVO> listRolePages(RolePageQuery queryParams) {
public Page<RolePageVO> getRolePage(RolePageQuery queryParams) {
// 查询参数
int pageNum = queryParams.getPageNum();
int pageSize = queryParams.getPageSize();
@@ -88,11 +88,13 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
);
// 实体转换
List<Option> list = roleConverter.roles2Options(roleList);
List<Option> list = roleConverter.entities2Options(roleList);
return list;
}
/**
* 保存角色
*
* @param roleForm
* @return
*/
@@ -116,12 +118,25 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
return result;
}
/**
* 获取角色表单数据
*
* @param roleId 角色ID
* @return {@link RoleForm} 角色表单数据
*/
@Override
public RoleForm getRoleForm(Long roleId) {
SysRole entity = this.getById(roleId);
RoleForm roleForm = roleConverter.entity2Form(entity);
return roleForm;
}
/**
* 修改角色状态
*
* @param roleId
* @param status
* @return
* @param roleId 角色ID
* @param status 角色状态(1:启用0:禁用)
* @return {@link Boolean}
*/
@Override
public boolean updateRoleStatus(Long roleId, Integer status) {
@@ -134,7 +149,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
/**
* 批量删除角色
*
* @param ids
* @param ids 角色ID多个使用英文逗号(,)分割
* @return
*/
@Override
@@ -154,14 +169,13 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
}
/**
* 获取角色的资源ID集合,资源包括菜单和权限
* 获取角色的菜单ID集合
*
* @param roleId
* @return
* @param roleId 角色ID
* @return 菜单ID集合(包括按钮权限ID)
*/
@Override
public List<Long> getRoleMenuIds(Long roleId) {
// 获取角色拥有的菜单ID集合
List<Long> menuIds = sysRoleMenuService.listMenuIdsByRoleId(roleId);
return menuIds;
}

View File

@@ -65,7 +65,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
* @return
*/
@Override
public IPage<UserPageVO> listUserPages(UserPageQuery queryParams) {
public IPage<UserPageVO> getUserPage(UserPageQuery queryParams) {
// 参数构建
int pageNum = queryParams.getPageNum();
@@ -73,7 +73,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
Page<UserBO> page = new Page<>(pageNum, pageSize);
// 查询数据
Page<UserBO> userBoPage = this.baseMapper.listUserPages(page, queryParams);
Page<UserBO> userBoPage = this.baseMapper.getUserPage(page, queryParams);
// 实体转换
Page<UserPageVO> userVoPage = userConverter.bo2Vo(userBoPage);