|
@@ -10,6 +10,7 @@ import com.sckw.core.exception.SystemException;
|
|
|
import com.sckw.core.model.constant.Global;
|
|
import com.sckw.core.model.constant.Global;
|
|
|
import com.sckw.core.model.enums.ApprovalEnum;
|
|
import com.sckw.core.model.enums.ApprovalEnum;
|
|
|
import com.sckw.core.model.enums.ClientTypeEnum;
|
|
import com.sckw.core.model.enums.ClientTypeEnum;
|
|
|
|
|
+import com.sckw.core.model.enums.EntTypeEnum;
|
|
|
import com.sckw.core.model.enums.MenuTypeEnum;
|
|
import com.sckw.core.model.enums.MenuTypeEnum;
|
|
|
import com.sckw.core.model.enums.SystemTypeEnum;
|
|
import com.sckw.core.model.enums.SystemTypeEnum;
|
|
|
import com.sckw.core.utils.BeanUtils;
|
|
import com.sckw.core.utils.BeanUtils;
|
|
@@ -28,8 +29,11 @@ import com.sckw.system.model.pojo.FindMenuTreePojo;
|
|
|
import com.sckw.system.model.pojo.FindPojoParam;
|
|
import com.sckw.system.model.pojo.FindPojoParam;
|
|
|
import com.sckw.system.model.vo.req.*;
|
|
import com.sckw.system.model.vo.req.*;
|
|
|
import com.sckw.system.model.vo.res.*;
|
|
import com.sckw.system.model.vo.res.*;
|
|
|
|
|
+import com.sckw.system.util.MenuEntTypeForUsingRolesUtil;
|
|
|
import com.sckw.transport.api.dubbo.TransportRemoteService;
|
|
import com.sckw.transport.api.dubbo.TransportRemoteService;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
|
|
+import org.slf4j.Logger;
|
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -460,11 +464,26 @@ public class KwsMenuService {
|
|
|
.collect(Collectors.groupingBy(KwsMenu::getParentId, LinkedHashMap::new, Collectors.toList()));
|
|
.collect(Collectors.groupingBy(KwsMenu::getParentId, LinkedHashMap::new, Collectors.toList()));
|
|
|
|
|
|
|
|
List<AppMenuPermItemResVo> result = new ArrayList<>(menus.size());
|
|
List<AppMenuPermItemResVo> result = new ArrayList<>(menus.size());
|
|
|
|
|
+ menus=menus.stream().filter(x->Objects.equals(x.getParentId(),0L) && Objects.equals(x.getType(),1)).collect(Collectors.toList());
|
|
|
|
|
+ Long entId = LoginUserHolder.getEntId();
|
|
|
|
|
+ List<KwsEntType> listByEntId = kwsEntTypeDao.findListByEntId(entId);
|
|
|
|
|
+ List<String> entTypes =listByEntId.stream().map(KwsEntType::getType).map(String::valueOf).toList();
|
|
|
for (KwsMenu m : menus) {
|
|
for (KwsMenu m : menus) {
|
|
|
|
|
+ if (Objects.equals(m.getType(), MenuTypeEnum.DIRECTORY.getCode())
|
|
|
|
|
+ && CollectionUtils.isNotEmpty(entTypes)
|
|
|
|
|
+ && !MenuEntTypeForUsingRolesUtil.usingRolesMatchesAnyEntType(m.getUsingRoles(), entTypes)) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
AppMenuPermItemResVo vo = toAppMenuPermItemResVo(m);
|
|
AppMenuPermItemResVo vo = toAppMenuPermItemResVo(m);
|
|
|
List<KwsMenu> children = buttonsByParent.getOrDefault(m.getId(), Collections.emptyList());
|
|
List<KwsMenu> children = buttonsByParent.getOrDefault(m.getId(), Collections.emptyList());
|
|
|
List<AppMenuPermItemResVo> btnVos = new ArrayList<>(children.size());
|
|
List<AppMenuPermItemResVo> btnVos = new ArrayList<>(children.size());
|
|
|
for (KwsMenu c : children) {
|
|
for (KwsMenu c : children) {
|
|
|
|
|
+ // type 为按钮(2)时,在已登录企业类型非空的前提下,要求 using_roles 与任一企业类型匹配,否则不下发
|
|
|
|
|
+ if (Objects.equals(c.getType(), MenuTypeEnum.BUTTON.getCode())
|
|
|
|
|
+ && CollectionUtils.isNotEmpty(entTypes)
|
|
|
|
|
+ && !MenuEntTypeForUsingRolesUtil.usingRolesMatchesAnyEntType(c.getUsingRoles(), entTypes)) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
btnVos.add(toAppMenuPermItemResVo(c));
|
|
btnVos.add(toAppMenuPermItemResVo(c));
|
|
|
}
|
|
}
|
|
|
vo.setButtons(btnVos);
|
|
vo.setButtons(btnVos);
|