package com.ydtech.modules.admin.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ydtech.constants.SysConstants; import com.ydtech.core.page.HttpResult; import com.ydtech.core.page.PageRequest; import com.ydtech.modules.admin.constants.RoleConstants; import com.ydtech.modules.admin.model.SysRole; import com.ydtech.modules.admin.model.SysRoleMenu; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.admin.service.SysRoleMenuService; import com.ydtech.modules.admin.service.SysRoleService; import com.ydtech.modules.base.controller.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import java.lang.reflect.Array; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** * 角色控制器 * * @author Yasepix * @date Oct 29, 2018 */ @RestController @RequestMapping("role") public class SysRoleController extends BaseController { @Autowired private SysRoleService sysRoleService; @Autowired private SysRoleMenuService sysRoleMenuService; // @PreAuthorize("hasAuthority('sys:role:add') AND hasAuthority('sys:role:edit')") @PostMapping(value = "/save") public HttpResult save(@RequestBody SysRole record) { SysRole role = sysRoleService.getById(record.getId()); // SysRole role = sysRoleService.selectByPk(record.getId()); if (role != null) { if (SysConstants.ADMIN.equalsIgnoreCase(role.getName())) { return HttpResult.error("超级管理员不允许修改!"); } } // 新增角色 if ((record.getId() == null || record.getId() == 0) && sysRoleService.findByName(record.getName()) != null) { return HttpResult.error("角色名已存在!"); } record.setSysType("1"); return HttpResult.ok(sysRoleService.saveOrUpdate(record)); } // @PreAuthorize("hasAuthority('sys:role:delete')") @PostMapping(value = "/delete") @Transactional public HttpResult delete(@RequestBody List records) { List sysRoleIds = records.stream().map(SysRole::getId).collect(Collectors.toList()); //TODO 应该做级联删除,暂时未做 return HttpResult.ok(sysRoleService.removeBatchByIds(sysRoleIds)); // return HttpResult.ok(sysRoleService.delete(records)); } // @PreAuthorize("hasAuthority('sys:role:view')") @PostMapping(value = "/findPage") public HttpResult findPage(@RequestBody PageRequest pageRequest) { return HttpResult.ok(sysRoleService.findPage(pageRequest)); } // @PreAuthorize("hasAuthority('sys:role:view')") @GetMapping(value = "/findAll") public HttpResult findAll() { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(SysRole::getDelFlag, "0"); lqw.eq(SysRole::getSysType, "1"); List list = sysRoleService.list(lqw); return HttpResult.ok(list); } @GetMapping(value = "/findRoleByUserId") public HttpResult findRoleByUserId() { //获取登录人员该有的角色信息 SysUser user = getUser(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); //获取角色的配置信息 RoleConstants roleConstants = RoleConstants.getRoleConstants(user.getRoleId()); if (!user.getId().equals("admin")) { if(ObjectUtils.isEmpty(roleConstants)){ lqw.eq(SysRole::getId, RoleConstants.R22.getCode()); }else if (!"".equals(roleConstants.getRoleIds())) { String[] split = roleConstants.getRoleIds().split(","); lqw.in(SysRole::getId, Arrays.asList(split)); } } lqw.eq(SysRole::getDelFlag, "0"); lqw.eq(SysRole::getSysType, "1"); List list = sysRoleService.list(lqw); return HttpResult.ok(list); } // @PreAuthorize("hasAuthority('sys:role:view')") @GetMapping(value = "/findRoleMenus") public HttpResult findRoleMenus(@RequestParam Long roleId) { return HttpResult.ok(sysRoleService.findRoleMenus(roleId)); } // @PreAuthorize("hasAuthority('sys:role:view')") @PostMapping(value = "/saveRoleMenus") public HttpResult saveRoleMenus(@RequestBody List records) { if (null == records || records.isEmpty()) { return HttpResult.error("参数空"); } SysRole sysRole = sysRoleService.getById(records.get(0).getRoleId()); if (SysConstants.ADMIN.equalsIgnoreCase(sysRole.getName())) { // 如果是超级管理员,不允许修改 return HttpResult.error("超级管理员拥有所有菜单权限,不允许修改!"); } // for (SysRoleMenu record : records) { // SysRole sysRole = sysRoleService.getById(record.getRoleId()); //// SysRole sysRole = sysRoleService.selectByPk(record.getRoleId()); // if (SysConstants.ADMIN.equalsIgnoreCase(sysRole.getName())) { // // 如果是超级管理员,不允许修改 // return HttpResult.error("超级管理员拥有所有菜单权限,不允许修改!"); // } // } return HttpResult.ok(sysRoleMenuService.saveRoleMenus(records)); } }