package com.yunzhi.demo.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yunzhi.demo.common.BaseController; import com.yunzhi.demo.common.Constants; import com.yunzhi.demo.common.ResponseBean; import com.yunzhi.demo.common.StringUtils; import com.yunzhi.demo.entity.*; import com.yunzhi.demo.service.ISysMenuService; import com.yunzhi.demo.service.ISysUserRoleService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import com.yunzhi.demo.service.ISysRoleService; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; /** *

* 角色 前端控制器 *

* * @author yansen * @since 2021-04-15 */ @Api(tags = "角色") @RestController @RequestMapping("/") public class SysRoleController extends BaseController { private final Logger logger = LoggerFactory.getLogger(SysRoleController.class); @Autowired ISysRoleService iSysRoleService; @Autowired ISysUserRoleService iSysUserRoleService; @Autowired ISysMenuService iSysMenuService; /** * 分页查询列表 * @param pageNum * @param pageSize * @return */ @RequestMapping(value="/admin/role",method= RequestMethod.GET) @ApiOperation(value="列表", notes = "列表", httpMethod = "GET", response = ResponseBean.class) public ResponseBean sysRoleList(@ApiParam("页码") @RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum, @ApiParam("单页数据量") @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize) throws Exception{ SysUser sysUser = getCurrentUser(); boolean isSuperAdmin = Constants.SUPER_ADMIN_ID.equals(sysUser.getUserId()); // 非管理员, 只能看到自己授权的角色 List roleIds = new ArrayList<>(); if (!isSuperAdmin) { List userRoleList = iSysUserRoleService.getListByUser(sysUser.getUserId()); if (userRoleList != null) { for (SysUserRole userRole : userRoleList) { roleIds.add(userRole.getRoleId()); } } if (roleIds.size() == 0) { // 设置一个不存在的 id, 目的是为了让 sql 查询不到数据 roleIds.add(-1); } } IPage pg = new Page<>(pageNum, pageSize); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in(!isSuperAdmin, "role_id", roleIds); queryWrapper.gt("role_id", Constants.SUPER_ADMIN_ROLE); queryWrapper.gt("status", Constants.STATUS_DELETED); queryWrapper.orderByAsc("sort_no"); queryWrapper.orderByDesc("create_date"); IPage result = iSysRoleService.page(pg, queryWrapper); return ResponseBean.success(result); } /** * 保存对象 * @param sysRole 实体对象 * @return */ @RequestMapping(value="/admin/role",method= RequestMethod.POST) @ApiOperation(value="保存", notes = "保存", httpMethod = "POST", response = ResponseBean.class) public ResponseBean sysRoleAdd(@ApiParam("保存内容") @RequestBody SysRole sysRole) throws Exception{ if (StringUtils.isEmpty(sysRole.getName())) { throw new Exception("角色名称不能为空"); } if (iSysRoleService.save(sysRole)){ return ResponseBean.success(sysRole); }else { return ResponseBean.error("保存失败, 请重试", ResponseBean.ERROR_UNAVAILABLE); } } /** * 根据id删除对象 * @param id 实体ID */ @RequestMapping(value="/admin/role/{id}", method= RequestMethod.DELETE) @ApiOperation(value="删除", notes = "删除", httpMethod = "DELETE", response = ResponseBean.class) public ResponseBean sysRoleDelete(@ApiParam("对象ID") @PathVariable Integer id) throws Exception{ SysRole sysRole = iSysRoleService.getById(id); if (null == sysRole || Constants.STATUS_DELETED.equals(sysRole.getStatus())) { return ResponseBean.success("success"); } sysRole.setStatus(Constants.STATUS_DELETED); if(iSysRoleService.updateById(sysRole)){ return ResponseBean.success("success"); }else { return ResponseBean.error("删除失败, 请重试", ResponseBean.ERROR_UNAVAILABLE); } } /** * 修改对象 * @param id 实体ID * @param sysRole 实体对象 * @return */ @RequestMapping(value="/admin/role/{id}",method= RequestMethod.PUT) @ApiOperation(value="更新", notes = "更新", httpMethod = "PUT", response = ResponseBean.class) public ResponseBean sysRoleUpdate(@ApiParam("对象ID") @PathVariable Integer id, @ApiParam("更新内容") @RequestBody SysRole sysRole) throws Exception{ if (StringUtils.isEmpty(sysRole.getName())) { throw new Exception("角色名称不能为空"); } if (!id.equals(sysRole.getRoleId())) { throw new Exception("校验角色信息失败"); } if (iSysRoleService.updateById(sysRole)){ return ResponseBean.success(iSysRoleService.getById(id)); }else { return ResponseBean.error("修改失败, 请重试", ResponseBean.ERROR_UNAVAILABLE); } } /** * 根据id查询对象 * @param id 实体ID */ @RequestMapping(value="/admin/role/{id}",method= RequestMethod.GET) @ApiOperation(value="查询角色信息", notes = "详情", httpMethod = "GET", response = ResponseBean.class) public ResponseBean sysRoleGet(@ApiParam("对象ID") @PathVariable Integer id) throws Exception{ SysRole sysRole = iSysRoleService.getById(id); if (null == sysRole || Constants.STATUS_DELETED.equals(sysRole.getStatus())) { throw new Exception("未找到指定的角色信息"); } List menuList = iSysMenuService.getListByRole(id); if (null != menuList) { sysRole.setMenuList(menuList); } return ResponseBean.success(sysRole); } }