Commit fcff3d84 authored by 雍欢's avatar 雍欢

1、消除QueryPermissionBuilderImpl 循环依赖

2、其他完善
parent 730b9829
...@@ -6,8 +6,8 @@ import com.huigou.context.OrgUnit; ...@@ -6,8 +6,8 @@ import com.huigou.context.OrgUnit;
import com.huigou.context.ThreadLocalUtil; import com.huigou.context.ThreadLocalUtil;
import com.huigou.data.datamanagement.*; import com.huigou.data.datamanagement.*;
import com.huigou.data.domain.model.CommonDomainConstants; import com.huigou.data.domain.model.CommonDomainConstants;
import com.huigou.data.jdbc.JDBCDao;
import com.huigou.data.jdbc.SQLQuery; import com.huigou.data.jdbc.SQLQuery;
import com.huigou.data.query.executor.SQLExecutorDao;
import com.huigou.data.query.model.QueryDescriptor; import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.SQLModel; import com.huigou.data.query.model.SQLModel;
import com.huigou.data.query.parser.model.PermissionModel; import com.huigou.data.query.parser.model.PermissionModel;
...@@ -24,7 +24,6 @@ import javax.annotation.Resource; ...@@ -24,7 +24,6 @@ import javax.annotation.Resource;
import java.io.Serializable; import java.io.Serializable;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Service("queryPermissionBuilder") @Service("queryPermissionBuilder")
public class QueryPermissionBuilderImpl implements QueryPermissionBuilder { public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
...@@ -41,9 +40,12 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder { ...@@ -41,9 +40,12 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
@Resource(name = "permissionCache") @Resource(name = "permissionCache")
private ICache icache; private ICache icache;
@Autowired @Autowired
protected SQLExecutorDao sqlExecutorDao; private SQLQuery sqlQuery;
@Autowired
private JDBCDao jdbcDao;
@Autowired
private QueryXmlLoadInterface queryXmlManager;
private Object orgFun; private Object orgFun;
...@@ -68,7 +70,7 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder { ...@@ -68,7 +70,7 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
// 不带参数的方法调用 // 不带参数的方法调用
orgFun = clazz.newInstance(); orgFun = clazz.newInstance();
Method method = clazz.getMethod("setSQLQuery", SQLQuery.class); Method method = clazz.getMethod("setSQLQuery", SQLQuery.class);
method.invoke(orgFun, this.sqlExecutorDao.getSqlQuery()); method.invoke(orgFun, sqlQuery);
this.findSubordinationsByOrgManageTypeMethod = clazz.getMethod(FIND_SUBORDINATIONS_BY_ORG_MANAGE_TYPE_METHOD_NAME, Object.class, String.class); this.findSubordinationsByOrgManageTypeMethod = clazz.getMethod(FIND_SUBORDINATIONS_BY_ORG_MANAGE_TYPE_METHOD_NAME, Object.class, String.class);
this.findSubordinationsForNearestManagerMethod = clazz.getMethod(FIND_SUBORDINATIONS_FOR_NEAREST_MANAGER_METHOD_NAME, Object.class, this.findSubordinationsForNearestManagerMethod = clazz.getMethod(FIND_SUBORDINATIONS_FOR_NEAREST_MANAGER_METHOD_NAME, Object.class,
...@@ -398,14 +400,14 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder { ...@@ -398,14 +400,14 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
* @return * @return
*/ */
private List<DataManageResourceGroup> doQueryDataManagement(String code, String personId) { private List<DataManageResourceGroup> doQueryDataManagement(String code, String personId) {
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(DATA_MANAGEMENT_XML_FILE_PATH, "dataManagement"); QueryDescriptor queryDescriptor = this.getQuery(DATA_MANAGEMENT_XML_FILE_PATH, "dataManagement");
// 查询包含的数据角色ID // 查询包含的数据角色ID
String sql = queryDescriptor.getSqlByName("queryPersonDataManageDetailByCode"); String sql = queryDescriptor.getSqlByName("queryPersonDataManageDetailByCode");
List<String> managedetalIds; List<String> managedetalIds;
if ("oracle".equals(sqlDialect)) { if ("oracle".equals(sqlDialect)) {
managedetalIds = this.sqlExecutorDao.queryToList(sql, String.class, code, personId); managedetalIds = this.jdbcDao.queryToList(sql, String.class, code, personId);
} else { } else {
managedetalIds = this.sqlExecutorDao.queryToList(sql, String.class, code, personId, code, personId); managedetalIds = this.jdbcDao.queryToList(sql, String.class, code, personId, code, personId);
} }
if (managedetalIds == null || managedetalIds.size() == 0) { if (managedetalIds == null || managedetalIds.size() == 0) {
return Collections.emptyList(); return Collections.emptyList();
...@@ -416,7 +418,7 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder { ...@@ -416,7 +418,7 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
for (String managedetalId : managedetalIds) { for (String managedetalId : managedetalIds) {
DataManageResourceGroup group = new DataManageResourceGroup(); DataManageResourceGroup group = new DataManageResourceGroup();
group.setDataManagedetalId(managedetalId); group.setDataManagedetalId(managedetalId);
List<DataManageResource> resources = this.sqlExecutorDao.queryToList(sqlResource, DataManageResource.class, managedetalId); List<DataManageResource> resources = this.jdbcDao.queryToList(sqlResource, DataManageResource.class, managedetalId);
if (resources != null && resources.size() > 0) { if (resources != null && resources.size() > 0) {
for (DataManageResource resource : resources) { for (DataManageResource resource : resources) {
// 解析数据资源信息 // 解析数据资源信息
...@@ -502,7 +504,7 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder { ...@@ -502,7 +504,7 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
*/ */
private List<DataManageResource> parseOrgManageType(DataManageResource resource, String personId) { private List<DataManageResource> parseOrgManageType(DataManageResource resource, String personId) {
String sql = "select t.full_id from sa_oporg t where t.status = 1 and t.person_id=?"; String sql = "select t.full_id from sa_oporg t where t.status = 1 and t.person_id=?";
List<String> fullIds = this.sqlExecutorDao.queryToList(sql, String.class, personId); List<String> fullIds = this.jdbcDao.queryToList(sql, String.class, personId);
List<DataManageResource> dataResources = new ArrayList<>(); List<DataManageResource> dataResources = new ArrayList<>();
List<OrgUnit> list = this.findSubordinations(personId, fullIds, resource.getKey()); List<OrgUnit> list = this.findSubordinations(personId, fullIds, resource.getKey());
if (list != null && list.size() > 0) { if (list != null && list.size() > 0) {
...@@ -529,16 +531,16 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder { ...@@ -529,16 +531,16 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
private DataManageFieldsGroup doQueryDataManageFields(String code) { private DataManageFieldsGroup doQueryDataManageFields(String code) {
DataManageFieldsGroup group = new DataManageFieldsGroup(); DataManageFieldsGroup group = new DataManageFieldsGroup();
group.setBusinessCode(code); group.setBusinessCode(code);
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(DATA_MANAGEMENT_XML_FILE_PATH, "opdatamanagebusinessField"); QueryDescriptor queryDescriptor = this.getQuery(DATA_MANAGEMENT_XML_FILE_PATH, "opdatamanagebusinessField");
// 查询使用的数据管理权限 // 查询使用的数据管理权限
String sql = queryDescriptor.getSqlByName("queryManageCodeByBusinessCode"); String sql = queryDescriptor.getSqlByName("queryManageCodeByBusinessCode");
String manageCode = this.sqlExecutorDao.queryToString(sql, code); String manageCode = this.jdbcDao.queryToString(sql, code);
if (StringUtil.isNotBlank(manageCode)) { if (StringUtil.isNotBlank(manageCode)) {
group.setManageCode(manageCode); group.setManageCode(manageCode);
} }
// 查询权限包含的字段 // 查询权限包含的字段
sql = queryDescriptor.getSqlByName("queryFieldsByBusinessCode"); sql = queryDescriptor.getSqlByName("queryFieldsByBusinessCode");
List<Map<String, Object>> list = this.sqlExecutorDao.queryToListMap(sql, code); List<Map<String, Object>> list = this.jdbcDao.queryToListMap(sql, code);
if (list == null || list.size() == 0) { if (list == null || list.size() == 0) {
return null; return null;
} }
...@@ -569,4 +571,10 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder { ...@@ -569,4 +571,10 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
} }
return group; return group;
} }
private QueryDescriptor getQuery(String queryFilePath, String queryName) {
QueryXmlModel model = queryXmlManager.loadConfigFile(queryFilePath);
QueryDescriptor queryDescriptor = new QueryDescriptor(model.getDeclaredQueries(queryName));
return queryDescriptor;
}
} }
...@@ -9,8 +9,8 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -9,8 +9,8 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional("transactionManager") @Transactional("transactionManager")
public class GeneralRepository extends GeneralRepositorySuper { public class GeneralRepository extends GeneralRepositorySuper {
@PersistenceContext(unitName="system") // @PersistenceContext(unitName="system")
@Qualifier(value = "entityManagerFactory") // @Qualifier(value = "entityManagerFactory")
private EntityManager em; private EntityManager em;
@Override @Override
......
...@@ -3,6 +3,7 @@ package com.huigou.shiro.session; ...@@ -3,6 +3,7 @@ package com.huigou.shiro.session;
import org.apache.shiro.session.Session; import org.apache.shiro.session.Session;
import org.apache.shiro.session.SessionListenerAdapter; import org.apache.shiro.session.SessionListenerAdapter;
import org.apache.shiro.session.mgt.eis.AbstractSessionDAO; import org.apache.shiro.session.mgt.eis.AbstractSessionDAO;
import org.apache.shiro.session.mgt.eis.SessionDAO;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -20,11 +21,11 @@ public class ShiroSessionListener extends SessionListenerAdapter { ...@@ -20,11 +21,11 @@ public class ShiroSessionListener extends SessionListenerAdapter {
private static final Logger logger = LoggerFactory.getLogger(ShiroSessionListener.class); private static final Logger logger = LoggerFactory.getLogger(ShiroSessionListener.class);
private AbstractSessionDAO sessionDAO; private SessionDAO sessionDAO;
private ICache icache; private ICache icache;
public void setSessionDAO(AbstractSessionDAO sessionDAO) { public void setSessionDAO(SessionDAO sessionDAO) {
this.sessionDAO = sessionDAO; this.sessionDAO = sessionDAO;
} }
......
...@@ -22,7 +22,7 @@ public interface ProcUnitHandlerRepository extends JpaRepository<ProcUnitHandler ...@@ -22,7 +22,7 @@ public interface ProcUnitHandlerRepository extends JpaRepository<ProcUnitHandler
ProcUnitHandler findFirstByBizIdAndProcUnitIdAndGroupId(String bizId, String procUnitId, Integer groupId); ProcUnitHandler findFirstByBizIdAndProcUnitIdAndGroupId(String bizId, String procUnitId, Integer groupId);
@Query(name = "procUnitHandler.findAllNextProcUnitHandlers", value = "select t from ProcUnitHandler t where t.bizId = :bizId and t.groupId > :groupId)") @Query(name = "procUnitHandler.findAllNextProcUnitHandlers", value = "select t from ProcUnitHandler t where t.bizId = :bizId and t.groupId > :groupId")
List<ProcUnitHandler> findAllNextProcUnitHandlers(@Param("bizId") String bizId, @Param("groupId") Integer groupId); List<ProcUnitHandler> findAllNextProcUnitHandlers(@Param("bizId") String bizId, @Param("groupId") Integer groupId);
@Query(name = "procUnitHandler.findNextGroupProcUnitHandlers", value = "select t from ProcUnitHandler t where t.bizId = :bizId\n" @Query(name = "procUnitHandler.findNextGroupProcUnitHandlers", value = "select t from ProcUnitHandler t where t.bizId = :bizId\n"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment