|
@@ -2,16 +2,28 @@ package cc.iotkit.data.service;
|
|
|
|
|
|
|
|
import cc.iotkit.data.dao.IJPACommData;
|
|
import cc.iotkit.data.dao.IJPACommData;
|
|
|
import cc.iotkit.data.dao.SysTenantPackageRepository;
|
|
import cc.iotkit.data.dao.SysTenantPackageRepository;
|
|
|
|
|
+import cc.iotkit.data.model.QTbSysTenantPackage;
|
|
|
import cc.iotkit.data.model.TbSysTenantPackage;
|
|
import cc.iotkit.data.model.TbSysTenantPackage;
|
|
|
import cc.iotkit.data.system.ISysTenantPackageData;
|
|
import cc.iotkit.data.system.ISysTenantPackageData;
|
|
|
|
|
+import cc.iotkit.data.util.PredicateBuilder;
|
|
|
import cc.iotkit.model.system.SysTenantPackage;
|
|
import cc.iotkit.model.system.SysTenantPackage;
|
|
|
import com.querydsl.jpa.impl.JPAQueryFactory;
|
|
import com.querydsl.jpa.impl.JPAQueryFactory;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
+import org.apache.logging.log4j.util.Strings;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.context.annotation.Primary;
|
|
import org.springframework.context.annotation.Primary;
|
|
|
import org.springframework.data.jpa.repository.JpaRepository;
|
|
import org.springframework.data.jpa.repository.JpaRepository;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.Arrays;
|
|
|
|
|
+import java.util.Collections;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
+
|
|
|
|
|
+import static cc.iotkit.data.model.QTbSysMenu.tbSysMenu;
|
|
|
|
|
+import static cc.iotkit.data.model.QTbSysRoleMenu.tbSysRoleMenu;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* @Author:tfd
|
|
* @Author:tfd
|
|
|
* @Date:2023/5/30 13:43
|
|
* @Date:2023/5/30 13:43
|
|
@@ -43,4 +55,31 @@ public class SysTenantPackageDataImpl implements ISysTenantPackageData, IJPAComm
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<Long> selectMenuListByPackageId(Long packageId, boolean menuCheckStrictly) {
|
|
|
|
|
+
|
|
|
|
|
+ String menus = jpaQueryFactory.select(QTbSysTenantPackage.tbSysTenantPackage.menuIds)
|
|
|
|
|
+ .from(QTbSysTenantPackage.tbSysTenantPackage).where(QTbSysTenantPackage.tbSysTenantPackage.id.eq(packageId)).fetchOne();
|
|
|
|
|
+ if(Strings.isNotEmpty(menus)){
|
|
|
|
|
+ List<Long> menuIds = Arrays.stream(menus.split(",")).map(item->Long.parseLong(item)).collect(Collectors.toList());
|
|
|
|
|
+ PredicateBuilder predicateBuilder = PredicateBuilder.instance()
|
|
|
|
|
+ .and(tbSysMenu.id.in(menuIds));
|
|
|
|
|
+
|
|
|
|
|
+ if (menuCheckStrictly) {
|
|
|
|
|
+ List<Long> roleIds = jpaQueryFactory.select(tbSysMenu.parentId)
|
|
|
|
|
+ .from(tbSysMenu)
|
|
|
|
|
+ .where(tbSysMenu.id.in(menuIds))
|
|
|
|
|
+ .fetch();
|
|
|
|
|
+ predicateBuilder.and(tbSysMenu.id.notIn(roleIds));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return jpaQueryFactory.select( tbSysMenu.id)
|
|
|
|
|
+ .from(tbSysMenu)
|
|
|
|
|
+ .where(predicateBuilder.build())
|
|
|
|
|
+ .orderBy(tbSysMenu.parentId.asc(), tbSysMenu.orderNum.asc()).fetch();
|
|
|
|
|
+ }else{
|
|
|
|
|
+ return Collections.emptyList();
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|