package com.ruoyi.sange.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.sange.domain.SystemRole; import com.ruoyi.sange.domain.SystemRoleMenu; import com.ruoyi.sange.service.ISystemRoleMenuService; import com.ruoyi.sange.service.ISystemRoleService; import com.ruoyi.sange.warpper.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; import java.util.stream.Collectors; /** * @author zhibing.pu * @Date 2025/2/19 16:41 */ @Api @RestController @RequestMapping("/api/systemRole") public class SystemRoleController extends BaseController { @Resource private ISystemRoleService systemRoleService; @Resource private ISystemRoleMenuService systemRoleMenuService; @GetMapping("/list") @ApiOperation(value = "获取列表数据", tags = {"管理后台-角色管理"}) public TableDataInfo list(SystemRoleList systemRoleList){ startPage(); List list = systemRoleService.list(systemRoleList.getName()); return getDataTable(list); } @PostMapping("/add") @ApiOperation(value = "添加角色", tags = {"管理后台-角色管理"}) public R add(@RequestBody AddSystemRole addSystemRole){ int count = systemRoleService.count(new LambdaQueryWrapper().eq(SystemRole::getDel, 0).eq(SystemRole::getName, addSystemRole.getName())); if(0 < count){ return R.fail("该角色名称已存在"); } SystemRole systemRole = new SystemRole(); systemRole.setName(addSystemRole.getName()); systemRole.setDel(0); systemRole.setCreateTime(LocalDateTime.now()); systemRoleService.save(systemRole); //添加角色菜单权限 List systemMenuIds = addSystemRole.getSystemMenuIds(); for (Integer systemMenuId : systemMenuIds) { SystemRoleMenu systemRoleMenu = new SystemRoleMenu(); systemRoleMenu.setSystemRoleId(systemRole.getId()); systemRoleMenu.setSystemMenuId(systemMenuId); systemRoleMenuService.save(systemRoleMenu); } return R.ok(); } @PutMapping("/edit") @ApiOperation(value = "编辑角色", tags = {"管理后台-角色管理"}) public R edit(@RequestBody EditSystemRole editSystemRole){ int count = systemRoleService.count(new LambdaQueryWrapper().eq(SystemRole::getDel, 0) .eq(SystemRole::getName, editSystemRole.getName()).ne(SystemRole::getId, editSystemRole.getId())); if(0 < count){ return R.fail("该角色名称已存在"); } SystemRole systemRole = systemRoleService.getById(editSystemRole.getId()); if(null == systemRole){ return R.fail("无效的角色数据"); } systemRole.setName(editSystemRole.getName()); systemRoleService.updateById(systemRole); //添加角色菜单权限 systemRoleMenuService.remove(new LambdaQueryWrapper().eq(SystemRoleMenu::getSystemRoleId, editSystemRole.getId())); List systemMenuIds = editSystemRole.getSystemMenuIds(); for (Integer systemMenuId : systemMenuIds) { SystemRoleMenu systemRoleMenu = new SystemRoleMenu(); systemRoleMenu.setSystemRoleId(systemRole.getId()); systemRoleMenu.setSystemMenuId(systemMenuId); systemRoleMenuService.save(systemRoleMenu); } return R.ok(); } @DeleteMapping("/delete/{id}") @ApiOperation(value = "删除角色", tags = {"管理后台-角色管理"}) public R delete(@PathVariable("id") Integer id){ SystemRole systemRole = systemRoleService.getById(id); systemRole.setDel(1); systemRoleService.updateById(systemRole); //删除角色菜单权限 systemRoleMenuService.remove(new LambdaQueryWrapper().eq(SystemRoleMenu::getSystemRoleId, id)); return R.ok(); } @GetMapping("/getSystemRoleInfo/{id}") @ApiOperation(value = "获取角色详情", tags = {"管理后台-角色管理"}) public R getSystemRoleInfo(@PathVariable("id") Integer id){ SystemRole systemRole = systemRoleService.getById(id); if(null == systemRole){ return R.fail("无效的角色数据"); } List list = systemRoleMenuService.list(new LambdaQueryWrapper().eq(SystemRoleMenu::getSystemRoleId, id)); SystemRoleInfo systemRoleInfo = new SystemRoleInfo(); systemRoleInfo.setId(systemRole.getId()); systemRoleInfo.setName(systemRoleInfo.getName()); systemRoleInfo.setSystemMenuIds(list.stream().map(SystemRoleMenu::getSystemMenuId).collect(Collectors.toList())); return R.ok(systemRoleInfo); } }