From 7ef4892f9f24f941aca37e6b3991b808a0aca619 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期五, 08 九月 2023 11:16:35 +0800 Subject: [PATCH] 优化 --- ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 168 insertions(+), 0 deletions(-) diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java new file mode 100644 index 0000000..9f060c4 --- /dev/null +++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java @@ -0,0 +1,168 @@ +package com.ycl.service.user.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.dto.UmsMenuNode; +import com.ycl.entity.dict.DataDictionary; +import com.ycl.entity.user.*; +import com.ycl.mapper.dict.DataDictionary2Mapper; +import com.ycl.mapper.user.UmsMenuMapper; +import com.ycl.mapper.user.UmsResourceMapper; +import com.ycl.mapper.user.UmsRoleMapper; +import com.ycl.service.user.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 鍚庡彴瑙掕壊绠$悊Service瀹炵幇绫� + * Created by macro on 2018/9/30. + */ +@Service +public class UmsRoleServiceImpl extends ServiceImpl<UmsRoleMapper, UmsRole> implements UmsRoleService { + @Autowired + private UmsAdminCacheService adminCacheService; + @Autowired + private UmsRoleMenuRelationService roleMenuRelationService; + @Autowired + private UmsRoleResourceRelationService roleResourceRelationService; + + private UmsMenuService umsMenuService; + + @Autowired + public void setUmsMenuService(UmsMenuService umsMenuService) { + this.umsMenuService = umsMenuService; + } + + @Resource + private UmsMenuMapper umsMenuMapper; + @Resource + private UmsResourceMapper umsResourceMapper; + @Resource + private DataDictionary2Mapper dataDictionary2Mapper; + + @Override + public boolean create(UmsRole role) { + role.setCreateTime(new Date()); + role.setAdminCount(0); + role.setSort(0); + return save(role); + } + + @Override + public boolean delete(List<Long> ids) { + boolean success = removeByIds(ids); + adminCacheService.delResourceListByRoleIds(ids); + return success; + } + + @Override + public Page<UmsRole> list(String keyword, Integer pageSize, Integer pageNum) { + Page<UmsRole> page = new Page<>(pageNum, pageSize); + QueryWrapper<UmsRole> wrapper = new QueryWrapper<>(); + LambdaQueryWrapper<UmsRole> lambda = wrapper.lambda(); + if (StrUtil.isNotEmpty(keyword)) { + lambda.like(UmsRole::getName, keyword); + } + Page<UmsRole> resultPage = page(page, wrapper); + List<UmsRole> roles = resultPage.getRecords(); + List<Long> types = roles.stream().map(UmsRole::getType).collect(Collectors.toList()); + if (types.size() > 0) { + LambdaQueryWrapper<DataDictionary> dicQuery = new LambdaQueryWrapper<>(); + dicQuery.in(DataDictionary::getId, types); + List<DataDictionary> dics = dataDictionary2Mapper.selectList(dicQuery); + for (UmsRole role : roles) { + for (DataDictionary dic : dics) { + if (dic.getId().equals(role.getType())) { + role.setTypeText(dic.getName()); + } + } + } + } + return resultPage; + } + + @Override + public List<UmsMenuNode> getMenuList(Long adminId) { + List<UmsMenu> menuList = umsMenuMapper.getMenuList(adminId); + List<UmsMenuNode> result = menuList.stream() + .filter(menu -> menu.getParentId().equals(0L)) + .map(menu -> umsMenuService.covertMenuNode(menu, menuList)).collect(Collectors.toList()); + return result; + } + + + @Override + public List<UmsRole> getRoleListByCodes(List<String> codes) { + LambdaQueryWrapper<UmsRole> wrapper = new LambdaQueryWrapper<UmsRole>().in(UmsRole::getCode, codes); + return baseMapper.selectList(wrapper); + } + + @Override + public List<UmsMenu> listMenu(Long roleId) { + return umsMenuMapper.getMenuListByRoleId(roleId); + } + + @Override + public List<UmsResource> listResource(Long roleId) { + return umsResourceMapper.getResourceListByRoleId(roleId); + } + + @Override + public int allocMenu(Long roleId, List<Long> menuIds) { + //鍏堝垹闄ゅ師鏈夊叧绯� + QueryWrapper<UmsRoleMenuRelation> wrapper = new QueryWrapper<>(); + wrapper.lambda().eq(UmsRoleMenuRelation::getRoleId, roleId); + roleMenuRelationService.remove(wrapper); + //鎵归噺鎻掑叆鏂板叧绯� + List<UmsRoleMenuRelation> relationList = new ArrayList<>(); + for (Long menuId : menuIds) { + UmsRoleMenuRelation relation = new UmsRoleMenuRelation(); + relation.setRoleId(roleId); + relation.setMenuId(menuId); + relationList.add(relation); + } + roleMenuRelationService.saveBatch(relationList); + return menuIds.size(); + } + + @Override + public int allocResource(Long roleId, List<Long> resourceIds) { + //鍏堝垹闄ゅ師鏈夊叧绯� + QueryWrapper<UmsRoleResourceRelation> wrapper = new QueryWrapper<>(); + wrapper.lambda().eq(UmsRoleResourceRelation::getRoleId, roleId); + roleResourceRelationService.remove(wrapper); + //鎵归噺鎻掑叆鏂板叧绯� + List<UmsRoleResourceRelation> relationList = new ArrayList<>(); + for (Long resourceId : resourceIds) { + UmsRoleResourceRelation relation = new UmsRoleResourceRelation(); + relation.setRoleId(roleId); + relation.setResourceId(resourceId); + relationList.add(relation); + } + roleResourceRelationService.saveBatch(relationList); + adminCacheService.delResourceListByRole(roleId); + return resourceIds.size(); + } + + @Override + public Boolean updateStatusBatch(List<Long> ids, Integer status) { + List<UmsRole> roles = new ArrayList<>(); + for (Long id : ids) { + UmsRole umsRole = UmsRole.builder(). + id(id).status(status).build(); + roles.add(umsRole); + } + updateBatchById(roles, roles.size()); + adminCacheService.delResourceListByRoleIds(ids); + return true; + } +} -- Gitblit v1.8.0