From 91e4ba507f9806c975a4273154d79f1a43b836c4 Mon Sep 17 00:00:00 2001 From: ZengTao <2773468879@qq.com> Date: 星期一, 29 四月 2024 13:42:29 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes --- hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 103 insertions(+), 0 deletions(-) diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java index 5b78836..2d08603 100644 --- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java +++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java @@ -1,10 +1,28 @@ package com.mes.role.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.mes.entity.request.GeneralRequest; +import com.mes.menu.entity.SysMenu; import com.mes.role.entity.SysRole; +import com.mes.role.entity.SysRoleMenu; +import com.mes.role.entity.vo.SysRoleVO; import com.mes.role.mapper.SysRoleMapper; +import com.mes.role.service.SysRoleMenuService; import com.mes.role.service.SysRoleService; +import com.mes.userinfo.entity.SysUserRole; +import com.mes.userinfo.service.SysUserRoleService; +import com.mes.userinfo.service.SysUserService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -15,6 +33,91 @@ * @since 2024-04-11 */ @Service +@Slf4j public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService { + @Autowired + SysRoleMenuService sysRoleMenuService; + + @Autowired + SysUserService sysUserService; + + @Autowired + SysUserRoleService sysUserRoleService; + + @Override + @Transactional(rollbackFor = Exception.class) + public SysRole saveRole(SysRoleVO sysRoleVO) { + log.info("淇濆瓨瑙掕壊淇℃伅锛岀敓鎴愬搴旂殑瑙掕壊id"); + SysRole sysRole = new SysRole(); + BeanUtils.copyProperties(sysRoleVO, sysRole); + this.save(sysRole); + //淇濆瓨瑙掕壊鏉冮檺淇℃伅 + saveRoleMenu(sysRole.getId(), sysRoleVO.getMenuList()); + return sysRole; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public String updateRole(SysRoleVO sysRoleVO) { + log.info("淇濆瓨瑙掕壊淇℃伅锛岀敓鎴愬搴旂殑瑙掕壊id"); + SysRole sysRole = new SysRole(); + BeanUtils.copyProperties(sysRoleVO, sysRole); + this.updateById(sysRole); + //淇濆瓨瑙掕壊鏉冮檺淇℃伅 + return saveRoleMenu(sysRole.getId(), sysRoleVO.getMenuList()); + } + + @Override + public List<SysRoleVO> queryRole(GeneralRequest request) { + MPJLambdaWrapper<SysRole> wrapper = new MPJLambdaWrapper<>(); + wrapper.selectAll(SysRole.class) + .selectCollection(SysMenu.class, SysRoleVO::getMenuList) + .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysRole::getId) + .leftJoin(SysMenu.class, SysMenu::getId, SysRoleMenu::getMenuId) + .like(StringUtils.hasText(request.getKey()), SysRole::getName, request.getKey()); + return baseMapper.selectJoinList(SysRoleVO.class, wrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public String deleteRole(List<Long> ids) { + log.info("鍒犻櫎瑙掕壊淇℃伅"); + this.removeByIds(ids); + + log.info("鍒犻櫎涓棿琛ㄤ俊鎭�"); + sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, ids)); + sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().in(SysRoleMenu::getRoleId, ids)); + + log.info("娓呯┖缂撳瓨涓殑鏉冮檺淇℃伅"); + ids.stream().forEach(id -> sysUserService.clearUserAuthorityInfoByRoleId(id)); + return "success"; + } + + /** + * 淇濆瓨瑙掕壊鏉冮檺淇℃伅 + * + * @param roleId + * @param menuList + * @return + */ + private String saveRoleMenu(Long roleId, List<SysMenu> menuList) { + log.info("閰嶇疆瑙掕壊鑿滃崟鍏冲績"); + List<SysRoleMenu> roleMenuList = menuList.stream().map(menu -> { + SysRoleMenu roleMenu = new SysRoleMenu(); + roleMenu.setRoleId(roleId); + roleMenu.setMenuId(menu.getId()); + return roleMenu; + }).collect(Collectors.toList()); + log.info("娓呯┖瑙掕壊鏉冮檺琛ㄤ腑璇ヨ鑹蹭俊鎭�"); + + + // 鍏堝垹闄ゅ師鏉ョ殑璁板綍锛屽啀淇濆瓨鏂扮殑 + sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId)); + sysRoleMenuService.saveBatch(roleMenuList); + + // 鍒犻櫎缂撳瓨 + sysUserService.clearUserAuthorityInfoByRoleId(roleId); + return "success"; + } } -- Gitblit v1.8.0