From fb9e286342938f63af535eb2a363f783a63213db Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 28 五月 2025 11:13:57 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile into dev

---
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java |  708 ++++++++++++++++++++++------------------------------------
 1 files changed, 274 insertions(+), 434 deletions(-)

diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
index cb0705f..927370a 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
@@ -12,7 +12,16 @@
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.chargingPile.api.feignClient.SiteClient;
+import com.ruoyi.chargingPile.api.model.Site;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.web.page.BasePage;
 import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.common.security.annotation.Logical;
+import com.ruoyi.other.api.domain.TRoleSite;
+import com.ruoyi.other.api.feignClient.RoleSiteClient;
+import com.ruoyi.system.api.model.GetSysRoleByIds;
 import com.ruoyi.system.domain.SysMenus;
 import com.ruoyi.system.domain.SysRoleMenu;
 import com.ruoyi.system.domain.SysUserRole;
@@ -25,6 +34,7 @@
 import com.ruoyi.system.service.ISysRoleService;
 import com.ruoyi.system.service.ISysUserRoleService;
 import com.ruoyi.system.service.ISysUserService;
+import io.seata.spring.annotation.GlobalTransactional;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -45,443 +55,273 @@
 
 /**
  * 角色信息
- * 
+ *
  * @author ruoyi
  */
 @RestController
 @RequestMapping("/role")
 @Api(tags = "角色模块")
-public class SysRoleController extends BaseController
-{
-    @Autowired
-    private ISysRoleService roleService;
-
-    @Autowired
-    private ISysUserService userService;
-
-    @Autowired
-    private ISysDeptService deptService;
-
-    @Resource
-    private SysRoleMenuMapper sysRoleMenuMapper;
-
-    @Autowired
-    private ISysUserRoleService sysUserRoleService;
-
-
-    @Resource
-    private SysMenuMapper menuMapper;
-
-    @ApiOperation("获取所有角色信息根据公司id")
-    @GetMapping("/list")
-    public AjaxResult list(Integer companyId)
-    {
-        SysRole role = new SysRole();
-        role.setCompanyId(companyId);
-        List<SysRole> list = roleService.selectRoleList(role);
-        return AjaxResult.success(list);
-    }
-
-
-
-    @ApiOperation("获取所有角色信息根据公司id--分页")
-    @GetMapping("/listPage")
-    public AjaxResult listPage(Integer companyId,int pageNumber,int pageSize)
-    {
-        PageInfo<SysRole> pageInfo = new PageInfo<>(pageNumber, pageSize);
-
-        PageInfo<SysRole> page = roleService.page(pageInfo, new LambdaQueryWrapper<SysRole>().eq(SysRole::getCompanyId, companyId).ne(SysRole::getRoleId,20));
-        return AjaxResult.success(page);
-    }
-
-
-    @ApiOperation("角色启用停用")
-    @GetMapping("/roleStart")
-    public AjaxResult roleStart(Long roleId)
-    {
-        SysRole role = roleService.selectRoleById(roleId);
-        if(role.getStatus().equals("1")){
-            role.setStatus("0");
-        }else {
-            role.setStatus("1");
-        }
-        return AjaxResult.success(roleService.updateRole(role));
-    }
-
-
-
-    @ApiOperation("添加角色")
-    @PostMapping("/roleAdd")
-    public AjaxResult roleAdd(@Validated @RequestBody RoleAddDto dto)
-    {
-        SysRole role = new SysRole();
-        role.setRoleName(dto.getRoleName());
-        long count = roleService.count(Wrappers.lambdaQuery(SysRole.class)
-                    .eq(SysRole::getRoleName,dto.getRoleName())
-                    .eq(SysRole::getCompanyId,dto.getCompanyId()));
-        if(count>0){
-            return AjaxResult.error("角色已存在,请重新输入");
-        }
-        List<Long> menuIds1 = dto.getMenuIds();
-        if(CollectionUtils.isEmpty(menuIds1)){
-            return AjaxResult.error("菜单id不能为空");
-        }
-        role.setMenuIds(dto.getMenuIds().toArray((new Long[dto.getMenuIds().size()])));
-        // 添加角色
-        role.setCompanyId(dto.getCompanyId());
-        role.setCarDataAuth(dto.getCarDataAuth());
-        role.setCarTrainOperAuth(dto.getCarTrainOperAuth());
-        role.setContractDataAuth(dto.getContractDataAuth());
-        role.setCreateBy(SecurityUtils.getUsername());
-        role.setCreateTime(new Date());
-        roleService.insertRole(role);
-//        ArrayList<SysRoleMenu> sysRoleMenus = new ArrayList<>();
-//        List<Long> menuIds = dto.getMenuIds();
-//        for (Long menuId : menuIds) {
-//            SysRoleMenu sysRoleMenu = new SysRoleMenu();
-//            sysRoleMenu.setMenuId(menuId);
-//            sysRoleMenu.setRoleId(role.getRoleId());
-//            sysRoleMenus.add(sysRoleMenu);
-//        }
-//        sysRoleMenuMapper.batchRoleMenu(sysRoleMenus);
-        return AjaxResult.success();
-    }
-
-
-    @ApiOperation("角色详情")
-    @GetMapping("/roleInfo")
-    public AjaxResult roleInfo( @RequestParam Long id)
-    {
-        SysRole role = roleService.selectRoleById(id);
-        RoleInfoVo roleInfoVo = new RoleInfoVo();
-        roleInfoVo.setRoleId(role.getRoleId());
-        roleInfoVo.setCarDataAuth(role.getCarDataAuth());
-        roleInfoVo.setCarTrainOperAuth(role.getCarTrainOperAuth());
-        roleInfoVo.setContractDataAuth(role.getContractDataAuth());
-        roleInfoVo.setRoleName(role.getRoleName());
-        // 获取当前角色的菜单id
-        List<Long> menusId = sysRoleMenuMapper.selectList(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, id)).stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
-        if(menusId.size()==0){
-            return AjaxResult.success(new ArrayList<>());
-        }
-        //获取当前的权限菜单
-        List<SysMenus> all = menuMapper.getAllInIds(menusId);
-        // 第三级
-        List<SysMenus> s3 = all.stream().filter(e -> e.getMenuType().equals("F")).collect(Collectors.toList());
-        // 第二级
-        List<SysMenus> s2 = all.stream().filter(e -> e.getMenuType().equals("C")).collect(Collectors.toList());
-        // 第一级
-        List<SysMenus> s1 = all.stream().filter(e -> e.getMenuType().equals("M")).collect(Collectors.toList());
-
-        for (SysMenus menus : s2) {
-            List<SysMenus> collect = s3.stream().filter(e -> e.getParentId().equals(menus.getMenuId())).collect(Collectors.toList());
-            menus.setChildren(collect);
-        }
-
-        for (SysMenus menus : s1) {
-            List<SysMenus> collect = s2.stream().filter(e -> e.getParentId().equals(menus.getMenuId())).collect(Collectors.toList());
-            menus.setChildren(collect);
-        }
-
-        roleInfoVo.setMenus(menusId);
-        return AjaxResult.success(roleInfoVo);
-    }
-
-
-    @ApiOperation("用户获取权限菜单")
-    @GetMapping("/roleInfoFromUserId")
-    public AjaxResult roleInfoFromUserId( @RequestParam Long userId)
-    {
-        SysUserRole one = sysUserRoleService.getOne(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
-        Long id =one.getRoleId();
-        // 获取当前角色的菜单id
-        List<Long> menusId = sysRoleMenuMapper.selectList(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, id)).stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
-        if(menusId.size()==0){
-            return AjaxResult.success(new ArrayList<>());
-        }
-        if(id!=1){
-            menusId = menusId.stream().filter(e->e!=1074 && e!=1075 && e!=1193 && e!=1194).collect(Collectors.toList());
-        }
-        //获取当前的权限菜单
-        List<SysMenus> all = menuMapper.getAllInIds(menusId);
-        // 第三级
-        List<SysMenus> s3 = all.stream().filter(e -> e.getMenuType().equals("F")).collect(Collectors.toList());
-        // 第二级
-        List<SysMenus> s2 = all.stream().filter(e -> e.getMenuType().equals("C")).collect(Collectors.toList());
-        // 第一级
-        List<SysMenus> s1 = all.stream().filter(e -> e.getMenuType().equals("M")).collect(Collectors.toList());
-
-        for (SysMenus menus : s2) {
-            List<SysMenus> collect = s3.stream().filter(e -> e.getParentId().equals(menus.getMenuId())).collect(Collectors.toList());
-            menus.setChildren(collect);
-        }
-
-        for (SysMenus menus : s1) {
-            List<SysMenus> collect = s2.stream().filter(e -> e.getParentId().equals(menus.getMenuId())).collect(Collectors.toList());
-            menus.setChildren(collect);
-        }
-
-        return AjaxResult.success(s1);
-    }
-
-
-
-
-    @ApiOperation("编辑角色")
-    @PostMapping("/roleUpdate")
-    public AjaxResult roleUpdate(@Validated @RequestBody RoleUpdateDto dto)
-    {
-        SysRole role = new SysRole();
-        role.setRoleName(dto.getRoleName());
-        SysRole one = roleService.getOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleId, dto.getRoleId()));
-        List<SysRole> sysRoles = roleService.isExitUpdate(dto.getRoleName(),dto.getRoleId(),one.getCompanyId());
-        if(sysRoles.size()>0){
-            return AjaxResult.error("角色已存在,请重新输入");
-        }
-        // 编辑角色
-        role.setCarDataAuth(dto.getCarDataAuth());
-        role.setCarTrainOperAuth(dto.getCarTrainOperAuth());
-        role.setContractDataAuth(dto.getContractDataAuth());
-        role.setUpdateBy(SecurityUtils.getUsername());
-        role.setUpdateTime(new Date());
-        role.setRoleId(dto.getRoleId());
-        roleService.updateRole(role);
-        ArrayList<SysRoleMenu> sysRoleMenus = new ArrayList<>();
-        List<Long> menuIds = dto.getMenuIds();
-        // 移除原来的权限菜单
-        if(menuIds.contains(1061L)){
-            sysRoleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>()
-                    .eq(SysRoleMenu::getRoleId,dto.getRoleId()));
-        }else {
-            sysRoleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>()
-                    .eq(SysRoleMenu::getRoleId,dto.getRoleId())
-                    .ne(SysRoleMenu::getMenuId,1061L)
-                    .ne(SysRoleMenu::getMenuId,1062L)
-                    .ne(SysRoleMenu::getMenuId,1065L)
-                    .ne(SysRoleMenu::getMenuId,1073L)
-                    .ne(SysRoleMenu::getMenuId,1161L)
-                    .ne(SysRoleMenu::getMenuId,1203L)
-            );
-        }
-        for (Long menuId : menuIds) {
-            SysRoleMenu sysRoleMenu = new SysRoleMenu();
-            sysRoleMenu.setMenuId(menuId);
-            sysRoleMenu.setRoleId(role.getRoleId());
-            sysRoleMenus.add(sysRoleMenu);
-        }
-        sysRoleMenuMapper.batchRoleMenu(sysRoleMenus);
-        return AjaxResult.success();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-    @Log(title = "角色管理", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:role:export")
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SysRole role)
-    {
-        List<SysRole> list = roleService.selectRoleList(role);
-        ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);
-        util.exportExcel(response, list, "角色数据");
-    }
-
-    /**
-     * 根据角色编号获取详细信息
-     */
-    @RequiresPermissions("system:role:query")
-    @GetMapping(value = "/{roleId}")
-    public AjaxResult getInfo(@PathVariable Long roleId)
-    {
-        roleService.checkRoleDataScope(roleId);
-        return success(roleService.selectRoleById(roleId));
-    }
-
-    /**
-     * 新增角色
-     */
-    @RequiresPermissions("system:role:add")
-    @Log(title = "角色管理", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysRole role)
-    {
-        if (!roleService.checkRoleNameUnique(role))
-        {
-            return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在");
-        }
-        else if (!roleService.checkRoleKeyUnique(role))
-        {
-            return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
-        }
-        role.setCreateBy(SecurityUtils.getUsername());
-        return toAjax(roleService.insertRole(role));
-
-    }
-
-    /**
-     * 修改保存角色
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "角色管理", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysRole role)
-    {
-        roleService.checkRoleAllowed(role);
-        roleService.checkRoleDataScope(role.getRoleId());
-        if (!roleService.checkRoleNameUnique(role))
-        {
-            return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在");
-        }
-        else if (!roleService.checkRoleKeyUnique(role))
-        {
-            return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
-        }
-        role.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(roleService.updateRole(role));
-    }
-
-    /**
-     * 修改保存数据权限
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "角色管理", businessType = BusinessType.UPDATE)
-    @PutMapping("/dataScope")
-    public AjaxResult dataScope(@RequestBody SysRole role)
-    {
-        roleService.checkRoleAllowed(role);
-        roleService.checkRoleDataScope(role.getRoleId());
-        return toAjax(roleService.authDataScope(role));
-    }
-
-    /**
-     * 状态修改
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "角色管理", businessType = BusinessType.UPDATE)
-    @PutMapping("/changeStatus")
-    public AjaxResult changeStatus(@RequestBody SysRole role)
-    {
-        roleService.checkRoleAllowed(role);
-        roleService.checkRoleDataScope(role.getRoleId());
-        role.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(roleService.updateRoleStatus(role));
-    }
-
-    /**
-     * 删除角色
-     */
-    @RequiresPermissions("system:role:remove")
-    @Log(title = "角色管理", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{roleIds}")
-    public AjaxResult remove(@PathVariable Long[] roleIds)
-    {
-        return toAjax(roleService.deleteRoleByIds(roleIds));
-    }
-
-
-
-    /**
-     * 停用角色
-     */
-    @RequiresPermissions("system:role:stop")
-    @Log(title = "角色管理", businessType = BusinessType.STOP)
-    @PutMapping("/stop")
-    public AjaxResult stop(@RequestBody Long roleId)
-    {
-        SysRole sysRole = roleService.selectRoleById(roleId);
-        if(sysRole.getStatus().equals("0")){
-            sysRole.setStatus("1");
-        }else {
-            sysRole.setStatus("0");
-        }
-        return toAjax(roleService.updateRole(sysRole));
-    }
-
-    /**
-     * 获取角色选择框列表
-     */
-    @RequiresPermissions("system:role:query")
-    @GetMapping("/optionselect")
-    public AjaxResult optionselect()
-    {
-        return success(roleService.selectRoleAll());
-    }
-    /**
-     * 查询已分配用户角色列表
-     */
-    @RequiresPermissions("system:role:list")
-    @GetMapping("/authUser/allocatedList")
-    public TableDataInfo allocatedList(SysUser user)
-    {
-        startPage();
-        List<SysUser> list = userService.selectAllocatedList(user);
-        return getDataTable(list);
-    }
-
-    /**
-     * 查询未分配用户角色列表
-     */
-    @RequiresPermissions("system:role:list")
-    @GetMapping("/authUser/unallocatedList")
-    public TableDataInfo unallocatedList(SysUser user)
-    {
-        startPage();
-        List<SysUser> list = userService.selectUnallocatedList(user);
-        return getDataTable(list);
-    }
-
-    /**
-     * 取消授权用户
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "角色管理", businessType = BusinessType.GRANT)
-    @PutMapping("/authUser/cancel")
-    public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole)
-    {
-        return toAjax(roleService.deleteAuthUser(userRole));
-    }
-
-    /**
-     * 批量取消授权用户
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "角色管理", businessType = BusinessType.GRANT)
-    @PutMapping("/authUser/cancelAll")
-    public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds)
-    {
-        return toAjax(roleService.deleteAuthUsers(roleId, userIds));
-    }
-
-    /**
-     * 批量选择用户授权
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "角色管理", businessType = BusinessType.GRANT)
-    @PutMapping("/authUser/selectAll")
-    public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds)
-    {
-        roleService.checkRoleDataScope(roleId);
-        return toAjax(roleService.insertAuthUsers(roleId, userIds));
-    }
-
-    /**
-     * 获取对应角色部门树列表
-     */
-    @RequiresPermissions("system:role:query")
-    @GetMapping(value = "/deptTree/{roleId}")
-    public AjaxResult deptTree(@PathVariable("roleId") Long roleId)
-    {
-        AjaxResult ajax = AjaxResult.success();
-        ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
-        ajax.put("depts", deptService.selectDeptTreeList(new SysDept()));
-        return ajax;
-    }
+public class SysRoleController extends BaseController {
+	@Resource
+	private ISysRoleService roleService;
+	
+	@Resource
+	private ISysUserService userService;
+	
+	@Resource
+	private ISysDeptService deptService;
+	
+	@Resource
+	private SysRoleMenuMapper sysRoleMenuMapper;
+	
+	@Resource
+	private ISysUserRoleService sysUserRoleService;
+	
+	@Resource
+	private SysMenuMapper menuMapper;
+	
+	@Resource
+	private RoleSiteClient roleSiteClient;
+	
+	@Resource
+	private SiteClient siteClient;
+	
+	
+	
+	@RequiresPermissions(value = {"/systemUserManagement", "/systemUserManagement/add", "/systemUserManagement/update", "/roleManagement", "/partners",
+			"/partners/add", "/partners/seleete", "/partners/update"}, logical = Logical.OR)
+	@ApiOperation(value = "获取角色列表", tags = {"管理后台-系统用户管理"})
+	@GetMapping("/list")
+	public AjaxResult list() {
+		List<SysRole> list = roleService.list(new LambdaQueryWrapper<SysRole>().eq(SysRole::getDelFlag, 0).eq(SysRole::getStatus, 0));
+		return AjaxResult.success(list);
+	}
+	
+	
+	@RequiresPermissions(value = {"/roleManagement"}, logical = Logical.OR)
+	@ResponseBody
+	@GetMapping("/listPage")
+	@ApiOperation(value = "获取角色列表", tags = {"管理后台-角色管理"})
+	public AjaxResult listPage(String name, BasePage basePage) {
+		PageInfo<SysRole> pageInfo = new PageInfo<>(basePage.getPageCurr(), basePage.getPageSize());
+		LambdaQueryWrapper<SysRole> wrapper = new LambdaQueryWrapper<SysRole>().eq(SysRole::getStatus, 0).eq(SysRole::getDelFlag, 0);
+		if (StringUtils.isNotEmpty(name)) {
+			wrapper.like(SysRole::getRoleName, name);
+		}
+		
+		PageInfo<SysRole> page = roleService.page(pageInfo, wrapper.orderByDesc(SysRole::getCreateTime));
+		for (SysRole record : page.getRecords()) {
+			List<Integer> data = roleSiteClient.getSiteIds(record.getRoleId()).getData();
+			List<Site> sites = siteClient.getSiteByIds(data).getData();
+			if (null != sites) {
+				List<String> collect = sites.stream().map(Site::getName).collect(Collectors.toList());
+				record.setSiteNames(collect);
+			}
+			long count = sysUserRoleService.count(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getRoleId, record.getRoleId()));
+			record.setNumber(count);
+		}
+		return AjaxResult.success(page);
+	}
+	
+	
+	@RequiresPermissions(value = {"/roleManagement/add"}, logical = Logical.OR)
+	@ResponseBody
+	@PostMapping("/roleAdd")
+	@ApiOperation(value = "添加角色", tags = {"管理后台-角色管理"})
+	@GlobalTransactional(rollbackFor = Exception.class)//分布式事务
+	public AjaxResult roleAdd(@Validated @RequestBody RoleAddDto dto) {
+		SysRole role = new SysRole();
+		role.setRoleName(dto.getRoleName());
+		long count = roleService.count(Wrappers.lambdaQuery(SysRole.class)
+				.eq(SysRole::getRoleName, dto.getRoleName()));
+		if (count > 0) {
+			return AjaxResult.error("角色已存在,请重新输入");
+		}
+		List<Long> menuIds1 = dto.getMenuIds();
+		if (CollectionUtils.isEmpty(menuIds1)) {
+			return AjaxResult.error("菜单id不能为空");
+		}
+		role.setMenuIds(dto.getMenuIds().toArray((new Long[dto.getMenuIds().size()])));
+		// 添加角色
+		role.setRemark(dto.getRemark());
+		role.setCreateBy(SecurityUtils.getUsername());
+		role.setCreateTime(new Date());
+		roleService.insertRole(role);
+		
+		//添加站点权限
+		if(null != dto.getSiteIds()){
+			List<TRoleSite> roleSites = new ArrayList<>();
+			for (Integer siteId : dto.getSiteIds()) {
+				TRoleSite roleSite = new TRoleSite();
+				roleSite.setRoleId(role.getRoleId().intValue());
+				roleSite.setSiteId(siteId);
+				roleSites.add(roleSite);
+			}
+			roleSiteClient.addRoleSite(roleSites);
+		}
+		return AjaxResult.success();
+	}
+	
+	
+	@RequiresPermissions(value = {"/roleManagement/info", "/roleManagement/update"}, logical = Logical.OR)
+	@GetMapping("/roleInfo")
+	@ApiOperation(value = "角色详情", tags = {"管理后台-角色管理"})
+	public AjaxResult roleInfo(@RequestParam Long id) {
+		SysRole role = roleService.selectRoleById(id);
+		RoleInfoVo roleInfoVo = new RoleInfoVo();
+		roleInfoVo.setRoleId(role.getRoleId());
+		roleInfoVo.setRoleName(role.getRoleName());
+		// 获取当前角色的菜单id
+		List<Long> menusId = sysRoleMenuMapper.selectList(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, id)).stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
+		if (menusId.size() == 0) {
+			return AjaxResult.success(new ArrayList<>());
+		}
+		//获取当前的权限菜单
+		List<SysMenus> all = menuMapper.getAllInIds(menusId);
+		// 第三级
+		List<SysMenus> s3 = all.stream().filter(e -> e.getMenuType().equals("F")).collect(Collectors.toList());
+		// 第二级
+		List<SysMenus> s2 = all.stream().filter(e -> e.getMenuType().equals("C")).collect(Collectors.toList());
+		// 第一级
+		List<SysMenus> s1 = all.stream().filter(e -> e.getMenuType().equals("M")).collect(Collectors.toList());
+		
+		for (SysMenus menus : s2) {
+			List<SysMenus> collect = s3.stream().filter(e -> e.getParentId().equals(menus.getMenuId())).collect(Collectors.toList());
+			menus.setChildren(collect);
+		}
+		
+		for (SysMenus menus : s1) {
+			List<SysMenus> collect = s2.stream().filter(e -> e.getParentId().equals(menus.getMenuId())).collect(Collectors.toList());
+			menus.setChildren(collect);
+		}
+		roleInfoVo.setMenus(menusId);
+		roleInfoVo.setRemark(role.getRemark());
+		List<Integer> siteIds = roleSiteClient.getSiteIds(role.getRoleId()).getData();
+		if (null != siteIds && siteIds.size() > 0) {
+			List<Site> sites = siteClient.getSiteByIds(siteIds).getData();
+			List<String> siteNames = sites.stream().map(Site::getName).collect(Collectors.toList());
+			roleInfoVo.setSiteNames(siteNames);
+			roleInfoVo.setSiteIds(siteIds);
+		}
+		return AjaxResult.success(roleInfoVo);
+	}
+	
+	
+	@RequiresPermissions(value = {"/roleManagement/update"}, logical = Logical.OR)
+	@PostMapping("/roleUpdate")
+	@ApiOperation(value = "编辑角色", tags = {"管理后台-角色管理"})
+	@GlobalTransactional(rollbackFor = Exception.class)//分布式事务
+	public AjaxResult roleUpdate(@Validated @RequestBody RoleUpdateDto dto) {
+		SysRole role = new SysRole();
+		role.setRoleName(dto.getRoleName());
+		SysRole one = roleService.getOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleName, dto.getRoleName()));
+		if (null != one && !one.getRoleId().equals(dto.getRoleId())) {
+			return AjaxResult.error("角色已存在,请重新输入");
+		}
+		role.setRemark(dto.getRemark());
+		role.setUpdateBy(SecurityUtils.getUsername());
+		role.setUpdateTime(new Date());
+		role.setRoleId(dto.getRoleId());
+		roleService.updateRole(role);
+		ArrayList<SysRoleMenu> sysRoleMenus = new ArrayList<>();
+		List<Long> menuIds = dto.getMenuIds();
+		// 移除原来的权限菜单
+		if (menuIds.contains(1061L)) {
+			sysRoleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>()
+					.eq(SysRoleMenu::getRoleId, dto.getRoleId()));
+		} else {
+			sysRoleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>()
+					.eq(SysRoleMenu::getRoleId, dto.getRoleId())
+					.ne(SysRoleMenu::getMenuId, 1061L)
+					.ne(SysRoleMenu::getMenuId, 1062L)
+					.ne(SysRoleMenu::getMenuId, 1065L)
+					.ne(SysRoleMenu::getMenuId, 1073L)
+					.ne(SysRoleMenu::getMenuId, 1161L)
+					.ne(SysRoleMenu::getMenuId, 1203L)
+			);
+		}
+		for (Long menuId : menuIds) {
+			SysRoleMenu sysRoleMenu = new SysRoleMenu();
+			sysRoleMenu.setMenuId(menuId);
+			sysRoleMenu.setRoleId(role.getRoleId());
+			sysRoleMenus.add(sysRoleMenu);
+		}
+		sysRoleMenuMapper.batchRoleMenu(sysRoleMenus);
+		//删除旧站点数据
+		roleSiteClient.delRoleSite(dto.getRoleId());
+		//添加站点权限
+		List<TRoleSite> roleSites = new ArrayList<>();
+		if(null != dto.getSiteIds()){
+			for (Integer siteId : dto.getSiteIds()) {
+				TRoleSite roleSite = new TRoleSite();
+				roleSite.setRoleId(role.getRoleId().intValue());
+				roleSite.setSiteId(siteId);
+				roleSites.add(roleSite);
+			}
+		}
+		roleSiteClient.addRoleSite(roleSites);
+		return AjaxResult.success();
+	}
+	
+	
+	/**
+	 * 删除角色
+	 */
+	@RequiresPermissions(value = {"/roleManagement/del"}, logical = Logical.OR)
+	@Log(title = "角色管理", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{roleIds}")
+	@ApiOperation(value = "删除角色", tags = {"管理后台-角色管理"})
+	public AjaxResult remove(@PathVariable Long[] roleIds) {
+		return toAjax(roleService.deleteRoleByIds(roleIds));
+	}
+	
+	
+	/**
+	 * 查询已分配用户角色列表
+	 */
+	@RequiresPermissions("/roleManagement")
+	@GetMapping("/authUser/allocatedList")
+	public TableDataInfo allocatedList(SysUser user) {
+		startPage();
+		List<SysUser> list = userService.selectAllocatedList(user);
+		return getDataTable(list);
+	}
+	
+	/**
+	 * 查询未分配用户角色列表
+	 */
+	@RequiresPermissions("/roleManagement")
+	@GetMapping("/authUser/unallocatedList")
+	public TableDataInfo unallocatedList(SysUser user) {
+		startPage();
+		List<SysUser> list = userService.selectUnallocatedList(user);
+		return getDataTable(list);
+	}
+	
+	
+	/**
+	 * 获取对应角色部门树列表
+	 */
+	@RequiresPermissions("")
+	@GetMapping(value = "/deptTree/{roleId}")
+	public AjaxResult deptTree(@PathVariable("roleId") Long roleId) {
+		AjaxResult ajax = AjaxResult.success();
+		ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
+		ajax.put("depts", deptService.selectDeptTreeList(new SysDept()));
+		return ajax;
+	}
+	
+	
+	/**
+	 * 根据id集合获取数据
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@ResponseBody
+	@PostMapping(value = "/getSysRoleByIds")
+	public R<List<SysRole>> getSysRoleByIds(@RequestBody GetSysRoleByIds ids) {
+		List<SysRole> sysRoleByIds = roleService.getSysRoleByIds(ids.getIds());
+		return R.ok(sysRoleByIds);
+	}
 }

--
Gitblit v1.7.1