From eb34edfc7cf46e5cb5e3969d04315e6129dcbbd2 Mon Sep 17 00:00:00 2001 From: XiaoRuby <3114200645@qq.com> Date: 星期六, 26 八月 2023 11:43:33 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java | 98 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 96 insertions(+), 2 deletions(-) diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java index 38f0db1..eedf808 100644 --- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java +++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java @@ -1,12 +1,25 @@ package com.yuanchu.limslaboratory.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.limslaboratory.mapper.MenuMapper; +import com.yuanchu.limslaboratory.mapper.RoleManageMapper; +import com.yuanchu.limslaboratory.pojo.LimitPage; import com.yuanchu.limslaboratory.pojo.Menu; +import com.yuanchu.limslaboratory.pojo.RoleInfo; +import com.yuanchu.limslaboratory.pojo.RoleMenu; +import com.yuanchu.limslaboratory.pojo.dto.GetAllRoleAndMenuByConditionPageDto; +import com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto; +import com.yuanchu.limslaboratory.pojo.dto.RoleInfoDto; import com.yuanchu.limslaboratory.service.RoleManagerService; +import com.yuanchu.limslaboratory.utils.JsonUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -20,6 +33,9 @@ @Resource private MenuMapper menuMapper; + @Resource + private RoleManageMapper roleManageMapper; + @Override public Object getMenusTree() { List<Menu> menus = menuMapper.getMenuList(); @@ -29,10 +45,69 @@ .collect(Collectors.toList()); } + @Override + @Transactional(rollbackFor = Exception.class) + public boolean addRoleInfo(RoleInfoDto dto) { + //鏂板瑙掕壊 + //System.out.println(dto); + LocalDateTime createTime = DateUtil.toLocalDateTime(DateUtil.date()); + RoleInfo role=new RoleInfo(); + long nextId = IdUtil.getSnowflake().nextId(); + role.setId(nextId); + role.setName(dto.getRoleName()); + role.setCreateTime(createTime); + int insert = roleManageMapper.insertRole(role); + List<Map<String, Object>>addBranch=new ArrayList<>(); + reverseTree(dto.getMenuData(),addBranch); + List<RoleMenu> roleMenuList =new ArrayList<>(); + addBranch.forEach(item->{ + roleMenuList.add(new RoleMenu(null,nextId, + Long.valueOf(String.valueOf(item.get("id"))) + ,Boolean.valueOf(String.valueOf(item.get("selected"))) + ,Boolean.valueOf(String.valueOf(item.get("added"))) + ,Boolean.valueOf(String.valueOf(item.get("deleted"))) + ,Boolean.valueOf(String.valueOf(item.get("updated"))) + ,createTime + )); + }); + //roleMenuAddList.forEach(System.out::println); + int i = roleManageMapper.insertBatchRoleMenu(roleMenuList); + return insert>0&&i>0; + } + + @Override + public boolean assertRepeat(String roleName) { + List<RoleInfo> assertName = roleManageMapper.getAssertName(roleName); + return assertName.size()<1; + } + + @Override + public Map<String, Object> getAllRoleAndMenuInfo(GetAllRoleAndMenuByConditionPageDto dto) { + dto.setCurrentPage((dto.getCurrentPage()-1)*dto.getCurrentPage()); + List<RoleAndMenuDto> roleAndMenuDtos = roleManageMapper.selectAllRoleAndMenu(dto); + roleAndMenuDtos.forEach(r->{ + List<RoleMenu>roleMenuList=r.getRoleMenuList(); + System.out.println(roleMenuList); + List<RoleMenu> collect = roleMenuList.stream() + .filter(t -> t.getParentId() == 0) + .peek((menu) -> menu.setChildren(this.getRoleMenuChildren(menu, roleMenuList))) + .collect(Collectors.toList()); + r.setRoleMenuList(collect); + }); + roleAndMenuDtos.forEach(r->{ + r.getRoleMenuList().forEach(System.out::println); + }); + Map<String, Object>result=new HashMap<>(3); + result.put("list",roleAndMenuDtos); + int size = roleManageMapper.getRoleByName(dto.getName()).size(); + result.put("total",size); + return result; + } + private List<Menu> getEnumChildren(Menu root, List<Menu> all) { return all.stream() - .filter(t -> Objects.equals(t.getParentId(), root.getValue())) + .filter(t -> Objects.equals(t.getParentId(), root.getId())) .peek(g -> { //鎵惧瓙鑿滃崟 g.setChildren(getEnumChildren(g, all)); @@ -40,4 +115,23 @@ .collect(Collectors.toList()); } + private List<RoleMenu> getRoleMenuChildren(RoleMenu root, List<RoleMenu> all) { + return all.stream() + .filter(t -> Objects.equals(t.getParentId(), root.getMenuId())) + .peek(g -> { + //鎵惧瓙鑿滃崟 + g.setChildren(getRoleMenuChildren(g, all)); + }) + .collect(Collectors.toList()); + } + + private void reverseTree(List<Map<String, Object>>tree, List<Map<String, Object>>addBranch){ + tree.forEach(t->{ + addBranch.add(t); + if(t.get("children")!=null){ + List<Map<String, Object>> children = JsonUtil.jsonToPojo( JsonUtil.jsonToString(t.get("children")), List.class); + addBranch.addAll(children); + } + }); + } } -- Gitblit v1.9.3