package com.casic.missiles.server; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.ScopeEnums; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; @RequiredArgsConstructor @Service public class CommonServer { private final AbstractDeptService abstractDeptService; private final AbstractPermissionContext permissionContext; @Cacheable(value = "deptNameCache", key = "#deptId") public String getDeptNamesByDeptId(Long deptId) { List<Long> deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper<Dept> queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); queryWrapper.orderByAsc("pids"); List<Dept> deptList = abstractDeptService.list(queryWrapper); List<String> nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); String deptName = String.join("/", nameList); return deptName.indexOf("北京燃气集团/")==0?deptName.replace("北京燃气集团/",""):deptName; } // @Cacheable(value = "deptIdsCache") public String getDeptIds() { return getDeptIds(permissionContext.getAuthService().getLoginUser()); } public List<Long> getDeptIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 List<Long> deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); return deptIds; } return null; } public String getDeptIdStrs(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 List<Long> deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return ""; } @Cacheable(value = "deptScopeIdsCache", key = "#authUser.getId()") public String getDeptIds(AuthUser authUser) { String scopeType = authUser.getScopeType(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scopeType)) { return authUser.getDataScope() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return ""; } //todo:账户加缓存 public String getDeptScopeIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 List<Long> deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } else { //获取登录权限 return getDeptIds(permissionContext.getAuthService().getLoginUser()); } } }