package cn.besteam.modules.system.controller; import cn.besteam.common.api.vo.Result; import cn.besteam.common.constant.CommonConstant; import cn.besteam.common.constant.ErrorCode; import cn.besteam.common.exception.BusinessException; import cn.besteam.common.util.oConvertUtils; import cn.besteam.modules.system.biz.SysRoleBiz; import cn.besteam.modules.system.dto.SysRoleLogoDTO; import cn.besteam.modules.system.entity.SysPermission; import cn.besteam.modules.system.entity.SysRole; import cn.besteam.modules.system.service.ISysPermissionService; import cn.besteam.modules.system.service.ISysRoleService; import cn.besteam.modules.system.vo.BatchReqVO; import cn.besteam.modules.system.vo.TreeModel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Title: Controller * @Description: 角色 * @author: besteam * @date: 2020-04-17 * @version: V1.0 */ @RestController @RequestMapping("/system/sysRole") @Slf4j @Api(description = "角色") public class SysRoleController { @Autowired private ISysRoleService sysRoleService; @Autowired private ISysPermissionService sysPermissionService; @Autowired private SysRoleBiz roleBiz; /** * 列表查询 * * @param keyword * @param type * @return */ @RequestMapping(value = "/list", method = RequestMethod.GET) @ApiOperation(value = "角色管理-列表模糊查询", notes = "角色管理-列表模糊查询") public Result queryPageList(@RequestParam(name = "keyword", required = false) String keyword, @RequestParam(name = "type",required = false) Integer type) { return Result.ok(roleBiz.listRole(keyword, type)); } /** * 添加 * * @param role * @return */ @RequestMapping(value = "/add", method = RequestMethod.POST) @ApiOperation(value = "角色管理-新增", notes = "角色管理-新增") @Transactional(rollbackFor = Exception.class) public Result add(@RequestBody @Validated SysRole role) { roleBiz.saveOrUpdate(role); return Result.ok("添加成功!"); } /** * 编辑 * * @param role * @return */ @RequestMapping(value = "/edit", method = RequestMethod.PUT) @ApiOperation(value = "角色管理-编辑", notes = "角色管理-编辑") public Result edit(@RequestBody SysRole role) { roleBiz.saveOrUpdate(role); return Result.ok("编辑成功!"); } /** * 通过id删除 * * @param id * @return */ @RequestMapping(value = "/delete", method = RequestMethod.DELETE) @ApiOperation(value = "角色管理-通过id删除", notes = "角色管理-通过id删除") public Result delete(@RequestParam(name = "id") String id) { return Result.ok(roleBiz.deleteRole(id)); } /** * 批量删除 * * @param vo * @return */ @RequestMapping(value = "/deleteBatch", method = RequestMethod.POST) @ApiOperation(value = "角色管理-批量删除", notes = "角色管理-批量删除") public Result deleteBatch(@Validated @RequestBody BatchReqVO vo) { return Result.ok(roleBiz.batchDelete(vo)); } /** * 通过id查询 * * @param id * @return */ @RequestMapping(value = "/queryById", method = RequestMethod.GET) @ApiOperation(value = "角色管理-通过id查询", notes = "角色管理-通过id查询") public Result queryById(@RequestParam(name = "id") String id) { Result result = new Result<>(); SysRole sysrole = sysRoleService.getById(id); if (sysrole == null) { result.error500("未找到对应实体"); } else { result.setResult(sysrole); result.setSuccess(true); } return result; } @RequestMapping(value = "/queryall", method = RequestMethod.GET) public Result queryall(@RequestParam(name = "type") Integer type) { List roleList = sysRoleService.list(Wrappers.lambdaQuery().eq(SysRole::getType, type)); for (SysRole sysRole : roleList) { int count = roleBiz.countUserByRole(sysRole.getId()); sysRole.setRoleName(sysRole.getRoleName() + " (" + count + ")"); } return Result.ok(roleList); } @ApiOperation(value = "用户角色授权功能,查询菜单权限树") @RequestMapping(value = "/queryTreeList", method = RequestMethod.GET) public Result> queryTreeList(HttpServletRequest request) { Result> result = new Result<>(); //全部权限ids List ids = new ArrayList<>(); try { LambdaQueryWrapper query = new LambdaQueryWrapper(); query.eq(SysPermission::getDelFlag, CommonConstant.DEL_FLAG_0); query.orderByAsc(SysPermission::getSortNo); List list = sysPermissionService.list(query); for (SysPermission sysPer : list) { ids.add(sysPer.getId()); } List treeList = new ArrayList<>(); getTreeModelList(treeList, list, null); Map resMap = new HashMap(); resMap.put("treeList", treeList); //全部树节点数据 resMap.put("ids", ids);//全部树ids result.setResult(resMap); result.setSuccess(true); } catch (Exception e) { log.error(e.getMessage(), e); } return result; } private void getTreeModelList(List treeList, List metaList, TreeModel temp) { for (SysPermission permission : metaList) { Integer tempPid = permission.getParentId(); TreeModel tree = new TreeModel(permission.getId(), tempPid, permission.getName(), permission.getRuleFlag(), permission.getIsLeaf()); if (temp == null && oConvertUtils.isEmpty(tempPid)) { treeList.add(tree); if (!tree.getIsLeaf()) { getTreeModelList(treeList, metaList, tree); } } else if (temp != null && tempPid != null && tempPid.equals(temp.getKey())) { temp.getChildren().add(tree); if (!tree.getIsLeaf()) { getTreeModelList(treeList, metaList, tree); } } } } @PostMapping("/uploadLogo") @ApiOperation(value = "配置logo") public Result uploadLogo(@RequestBody SysRoleLogoDTO dto) { SysRole sysRole = sysRoleService.getById(dto.getId()); if (sysRole == null) { throw new BusinessException(ErrorCode.ROLE_NOT_FOUND); } sysRole.setLogo(dto.getLogo()); return Result.ok(sysRoleService.updateById(sysRole)); } }