package com.tiesheng.role.controller; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.tiesheng.role.pojos.dao.CoreRoleAuthority; import com.tiesheng.role.pojos.dao.CoreRoleServer; import com.tiesheng.role.pojos.dto.OwnerMenuDTO; import com.tiesheng.role.pojos.dto.OwnerPointDTO; import com.tiesheng.role.pojos.vo.ServiceMenuVO; import com.tiesheng.role.service.CoreRoleService; import com.tiesheng.util.pojos.ApiResp; import com.tiesheng.util.pojos.TokenBean; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @RestController @RequestMapping("/comm/role") public class CommRoleController { @Resource CoreRoleService coreRoleService; /** * 获取自己拥有的服务 * * @return */ @GetMapping("/owner/server") public ApiResp> ownerServer(TokenBean tokenBean) { List allOwnerMenus = coreRoleService.getOwnerAuthorityLeafList(tokenBean.getId(), tokenBean.getRoleId()); List list = allOwnerMenus.stream().map(CoreRoleAuthority::getService).collect(Collectors.toList()); List roleServerList = new ArrayList<>(); if (CollUtil.isNotEmpty(list)) { roleServerList = coreRoleService.getServerMapper().selectList(new QueryWrapper() .in("id", list) .eq(CoreRoleServer.IS_DELETED, 0) .eq("is_open", 1) ); } return ApiResp.respOK(roleServerList); } /** * 获取自己拥有的菜单 * * @return */ @GetMapping("/owner/menu") public ApiResp> ownerMenu(@Valid OwnerMenuDTO dto, TokenBean tokenBean) { List ownerMenus = coreRoleService.getOwnerMenus(tokenBean.getId(), tokenBean.getRoleId(), dto); return ApiResp.respOK(ownerMenus); } /** * 获取自己拥有的功能点 * * @return */ @GetMapping("/owner/point") public ApiResp> ownerPoint(@Valid OwnerPointDTO dto, TokenBean tokenBean) { List allOwnerMenus = coreRoleService.getOwnerAuthorityLeafList(tokenBean.getId(), tokenBean.getRoleId()); String parentId; if (StrUtil.isNotEmpty(dto.getParentNo())) { CoreRoleAuthority selected = coreRoleService.getAuthorityMapper().selectOne(new QueryWrapper() .eq("no", dto.getParentNo()) .eq("is_deleted", 0) .last("limit 1") ); parentId = selected == null ? "" : selected.getId(); } else { parentId = ""; } List collect = allOwnerMenus.stream() .filter(it -> Objects.equals(it.getType(), "point")) .filter(it -> it.getService().equals(dto.getService())) .filter(it -> it.getPlatform().equals(dto.getPlatform())) .filter(it -> { if (StrUtil.isNotEmpty(parentId)) { return parentId.equals(it.getParent()); } return true; }).collect(Collectors.toList()); return ApiResp.respOK(collect); } }