Browse Source

[task-906]增加按角色代理选项,代理后代理人将接收到对应角色的事务,同时拥有对应角色的权限

Li Yuan 2 years ago
parent
commit
5d098f7c11
15 changed files with 57 additions and 99 deletions
  1. 0 7
      ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/repository/BpmAgentRepository.java
  2. 0 29
      ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/repository/impl/BpmAgentRepositoryImpl.java
  3. 12 10
      ibps-bpmnbase-root/modules/bpmn-model/src/main/java/com/lc/ibps/bpmn/persistence/handler/StringListTypeHandler.java
  4. 4 9
      ibps-bpmnbase-root/modules/bpmn-model/src/main/resources/com/lc/ibps/bpmn/persistence/mapping/BpmAgent.map.xml
  5. 1 1
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/auth/repository/ResourcesRepository.java
  6. 2 4
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/auth/repository/impl/ResourcesRepositoryImpl.java
  7. 1 1
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/auth/service/impl/ResourcesQueryService.java
  8. 7 1
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/persistence/dao/DefaultPartyRoleQueryDao.java
  9. 7 1
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/persistence/dao/impl/DefaultPartyRoleQueryDaoImpl.java
  10. 14 1
      ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/repository/impl/DefaultPartyRoleRepositoryImpl.java
  11. 8 1
      ibps-model-root/modules/org-model/src/main/resources/com/lc/ibps/org/party/persistence/mapping/DefaultPartyRole.map.xml
  12. 0 3
      ibps-provider-base-root/modules/provider-bpmn-api/src/main/java/com/lc/ibps/bpmn/api/IBpmAgentService.java
  13. 0 9
      ibps-provider-root/modules/provider-bpmn/src/main/java/com/lc/ibps/bpmn/provider/BpmAgentProvider.java
  14. 1 7
      ibps-provider-root/modules/provider-platform-default/src/main/java/com/lc/ibps/common/provider/ResourcesProvider.java
  15. 0 15
      ibps-provider-root/modules/provider-platform-default/src/main/java/com/lc/ibps/common/provider/RightsProvider.java

+ 0 - 7
ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/repository/BpmAgentRepository.java

@@ -34,11 +34,4 @@ public interface BpmAgentRepository extends IRepository<String, BpmAgentPo,BpmAg
 	 */
 	public List<BpmAgentPo> findByType(String agentType, String delegator, String procDefKey);
 
-	/**
-	 * 根据代理人查询角色代理信息
-	 *
-	 * @param agentId 代理人Id
-	 * @return
-	 */
-	public List<String> findRolesByAgentId(String agentId);
 }

+ 0 - 29
ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/repository/impl/BpmAgentRepositoryImpl.java

@@ -109,33 +109,4 @@ public class BpmAgentRepositoryImpl extends AbstractRepository<String, BpmAgentP
 		
 		return list;
 	}
-
-	@Override
-	public List<String> findRolesByAgentId(String agentId) {
-		List<BpmAgentPo> bpmAgentList = findByKey("findRulesByAgentId", null,
-				b().a("agenterId" ,agentId).a("isEnabled", BpmAgentPo.ENABLED).p());
-		List<String> roles = new ArrayList<>();
-
-		if(CollectionUtils.isNotEmpty(bpmAgentList)){
-			String EffectiveDateStr = null;
-			String expiryDateStr = null;
-			String currDateStr = DateFormatUtil.getCurrentDate();
-			for(Iterator<BpmAgentPo> iterator = bpmAgentList.iterator(); iterator.hasNext();){
-				BpmAgentPo bpmAgentPo = iterator.next();
-				if(CollectionUtils.isNotEmpty(bpmAgentPo.getBpmAgentRoleList())){
-					EffectiveDateStr = DateFormatUtil.formatDate(bpmAgentPo.getEffectiveTime());
-					expiryDateStr = DateFormatUtil.formatDate(bpmAgentPo.getExpiryTime());
-					// 不在代理有效期内的移除
-					if(DateUtil.compare(currDateStr, EffectiveDateStr)
-							|| DateUtil.compare(expiryDateStr, currDateStr)){
-						continue;
-					}
-					roles.addAll(bpmAgentPo.getBpmAgentRoleList());
-				}
-			}
-		}
-
-		return roles;
-	}
-
 }

+ 12 - 10
ibps-bpmnbase-root/modules/bpmn-model/src/main/java/com/lc/ibps/bpmn/persistence/handler/JsonArrayTypeHandler.java → ibps-bpmnbase-root/modules/bpmn-model/src/main/java/com/lc/ibps/bpmn/persistence/handler/StringListTypeHandler.java

@@ -2,7 +2,8 @@ package com.lc.ibps.bpmn.persistence.handler;
 
 
 
-import cn.hutool.json.JSONUtil;
+import com.lc.ibps.base.core.constants.StringPool;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.ibatis.type.BaseTypeHandler;
 import org.apache.ibatis.type.JdbcType;
 
@@ -10,47 +11,48 @@ import java.sql.CallableStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.Arrays;
 import java.util.List;
 
-public class JsonArrayTypeHandler extends BaseTypeHandler {
+public class StringListTypeHandler extends BaseTypeHandler<List<String>> {
 
     @Override
-    public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType)
+    public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType)
             throws SQLException {
-        ps.setString(i, JSONUtil.toJsonStr(parameter));
+        ps.setString(i, StringUtils.join(parameter, StringPool.COMMA));
     }
 
 
     @Override
-    public List getNullableResult(ResultSet rs, String columnName)
+    public List<String> getNullableResult(ResultSet rs, String columnName)
 
             throws SQLException {
 
         String sqlJson = rs.getString(columnName);
         if (null != sqlJson){
-            return JSONUtil.toList(JSONUtil.parseArray(sqlJson), Object.class);
+            return Arrays.asList(sqlJson.split(StringPool.COMMA));
         }
         return null;
 
     }
 
     @Override
-    public List getNullableResult(ResultSet rs, int columnIndex)
+    public List<String> getNullableResult(ResultSet rs, int columnIndex)
             throws SQLException {
         String sqlJson = rs.getString(columnIndex);
         if (null != sqlJson){
-            return JSONUtil.toList(JSONUtil.parseArray(sqlJson), Object.class);
+            return Arrays.asList(sqlJson.split(","));
         }
         return null;
     }
 
 
     @Override
-    public List getNullableResult(CallableStatement cs, int columnIndex)
+    public List<String> getNullableResult(CallableStatement cs, int columnIndex)
             throws SQLException {
         String sqlJson = cs.getString(columnIndex);
         if (null != sqlJson){
-            return JSONUtil.toList(JSONUtil.parseArray(sqlJson), Object.class);
+            return Arrays.asList(sqlJson.split(","));
         }
         return null;
     }

+ 4 - 9
ibps-bpmnbase-root/modules/bpmn-model/src/main/resources/com/lc/ibps/bpmn/persistence/mapping/BpmAgent.map.xml

@@ -15,7 +15,7 @@
 		<result property="createBy" column="CREATE_BY_" jdbcType="VARCHAR"/>
 		<result property="createTime" column="CREATE_TIME_" jdbcType="TIMESTAMP"/>
 		<result property="tenantId" column="TENANT_ID_" jdbcType="VARCHAR"/>
-		<result property="bpmAgentRoleList" column="AGENT_ROLES_" javaType="java.util.List" typeHandler="com.lc.ibps.bpmn.persistence.handler.JsonArrayTypeHandler"/>
+		<result property="bpmAgentRoleList" column="AGENT_ROLES_" javaType="java.util.List" typeHandler="com.lc.ibps.bpmn.persistence.handler.StringListTypeHandler"/>
 	</resultMap>
 	
 	<sql id="columns">
@@ -26,7 +26,7 @@
 		INSERT INTO IBPS_BPM_AGENT
 		(<include refid="columns"/>)
 		VALUES 
-		(#{id,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, #{delegatorId,jdbcType=VARCHAR}, #{agenterId,jdbcType=VARCHAR}, #{procDefKey,jdbcType=VARCHAR}, #{isEnabled,jdbcType=VARCHAR}, #{effectiveTime,jdbcType=TIMESTAMP}, #{expiryTime,jdbcType=TIMESTAMP}, #{agentType,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{tenantId,jdbcType=VARCHAR}, #{bpmAgentRoleList,jdbcType=VARCHAR,typeHandler=com.lc.ibps.bpmn.persistence.handler.JsonArrayTypeHandler})
+		(#{id,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, #{delegatorId,jdbcType=VARCHAR}, #{agenterId,jdbcType=VARCHAR}, #{procDefKey,jdbcType=VARCHAR}, #{isEnabled,jdbcType=VARCHAR}, #{effectiveTime,jdbcType=TIMESTAMP}, #{expiryTime,jdbcType=TIMESTAMP}, #{agentType,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{tenantId,jdbcType=VARCHAR}, #{bpmAgentRoleList,jdbcType=VARCHAR,typeHandler=com.lc.ibps.bpmn.persistence.handler.StringListTypeHandler})
 	</insert>
 	
 	<select id="get"   parameterType="java.lang.String" resultMap="BpmAgentPo">
@@ -49,12 +49,7 @@
 		</if>
 	</select>
 
-	<select id="findRulesByAgentId"   parameterType="java.util.Map" resultMap="BpmAgentPo">
-		SELECT <include refid="columns"/> FROM IBPS_BPM_AGENT
-		WHERE
-		AGENTER_ID_=#{agenterId}
-		AND IS_ENABLED_=#{isEnabled}
-	</select>
+
 	
 	<select id="findIdsByType"   parameterType="java.util.Map" resultMap="BpmAgentPo">
 		SELECT ID_ FROM IBPS_BPM_AGENT 
@@ -114,7 +109,7 @@
 		AGENT_TYPE_=#{agentType,jdbcType=VARCHAR},
 		CREATE_BY_=#{createBy,jdbcType=VARCHAR},
 		CREATE_TIME_=#{createTime,jdbcType=TIMESTAMP},
-		AGENT_ROLES_=#{bpmAgentRoleList,jdbcType=VARCHAR,typeHandler=com.lc.ibps.bpmn.persistence.handler.JsonArrayTypeHandler}
+		AGENT_ROLES_=#{bpmAgentRoleList,jdbcType=VARCHAR,typeHandler=com.lc.ibps.bpmn.persistence.handler.StringListTypeHandler}
 		WHERE
 		ID_=#{id}
 	</update>

+ 1 - 1
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/auth/repository/ResourcesRepository.java

@@ -23,7 +23,7 @@ public interface ResourcesRepository extends IRepository<String, ResourcesPo, Re
 	 *            *
 	 * @return
 	 */
-	List<ResourcesPo> getByUserIdSystemId(String userId, boolean isSuper, String systemId, List<String> agentRoles);
+	List<ResourcesPo> getByUserIdSystemId(String userId, boolean isSuper, String systemId);
 	
 	/**
 	 * 获取用户所拥有的所有资源

+ 2 - 4
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/auth/repository/impl/ResourcesRepositoryImpl.java

@@ -195,7 +195,7 @@ public class ResourcesRepositoryImpl extends AbstractRepository<String, Resource
 	}
 
 	@Override
-	public List<ResourcesPo> getByUserIdSystemId(String userId, boolean isSuper, String systemId, List<String> agentRoles) {
+	public List<ResourcesPo> getByUserIdSystemId(String userId, boolean isSuper, String systemId) {
 		if (StringUtil.isEmpty(userId)) {
 			return Collections.emptyList();
 		}
@@ -217,15 +217,13 @@ public class ResourcesRepositoryImpl extends AbstractRepository<String, Resource
 			
 			// 查询用户所有角色
 			userRoles = roleRepository.findUserRolesByUserId(userId);
-			if (BeanUtils.isEmpty(userRoles) && BeanUtils.isEmpty(agentRoles)) {
+			if (BeanUtils.isEmpty(userRoles)) {
 				return Collections.emptyList();
 			}
 		}
 
 		List<String> roleIds = new ArrayList<String>();
 
-		if(BeanUtils.isNotEmpty(agentRoles)) 	roleIds.addAll(agentRoles);
-
 		for (DefaultPartyRolePo userRole : userRoles) {
 			if(BeanUtils.isEmpty(userRole)) {
 				continue;

+ 1 - 1
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/auth/service/impl/ResourcesQueryService.java

@@ -43,7 +43,7 @@ public class ResourcesQueryService implements IResourcesQueryService {
 
 	@Override
 	public String findByUserIdSystemId(String userId, boolean isSuper, String systemId) {
-		List<ResourcesPo> list = resourcesRepository.getByUserIdSystemId(userId, isSuper, systemId,null);
+		List<ResourcesPo> list = resourcesRepository.getByUserIdSystemId(userId, isSuper, systemId);
 		return BeanUtils.isEmpty(list) ? null : JacksonUtil.toJsonString(list);
 	}
 

+ 7 - 1
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/persistence/dao/DefaultPartyRoleQueryDao.java

@@ -144,5 +144,11 @@ public interface DefaultPartyRoleQueryDao  extends IQueryDao<String,DefaultParty
 	 * @return 
 	 */
 	List<DefaultPartyRolePo> findRolesByResourceIds(List<String> resIds);
-	
+
+	/**
+	 * 通过代理人获取代理角色列表
+	 * @param agentId
+	 * @return
+	 */
+	List<String> findRolesByAgentId(String agentId);
 }

+ 7 - 1
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/persistence/dao/impl/DefaultPartyRoleQueryDaoImpl.java

@@ -115,6 +115,12 @@ public class DefaultPartyRoleQueryDaoImpl extends MyBatisQueryDaoImpl<String, De
 	public List<DefaultPartyRolePo> findRolesByResourceIds(List<String> resIds) {
 		return this.findByKey("findRolesByResourceIds", b().a("resIds", resIds).p());
 	}
-	
+
+	@Override
+	public List<String> findRolesByAgentId(String agentId) {
+		return (List<String>) this.findList("findRulesByAgentId",
+				b().a("agenterId" ,agentId).a("isEnabled", "enabled").p());
+	}
+
 }
 

+ 14 - 1
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/repository/impl/DefaultPartyRoleRepositoryImpl.java

@@ -7,6 +7,7 @@ import java.util.List;
 
 import javax.annotation.Resource;
 
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Repository;
 
@@ -190,6 +191,7 @@ public class DefaultPartyRoleRepositoryImpl extends AbstractRepository<String, D
 				findRolesByPosRel(roleIds, posId);
 			}
 		}
+		findRolesByAgentId(roleIds, userID);
 		
 		// 查询组织、岗位角色
 		if(roleIds.size() != 0){
@@ -208,6 +210,17 @@ public class DefaultPartyRoleRepositoryImpl extends AbstractRepository<String, D
 		return res;
 	}
 
+	private void findRolesByAgentId(List<String> roleIds, String userID) {
+		List<String> rolesByAgentId = defaultPartyRoleQueryDao.findRolesByAgentId(userID);
+		if(CollectionUtils.isNotEmpty(rolesByAgentId)){
+			for (String roles : rolesByAgentId) {
+				roleIds.addAll(Arrays.asList(roles.split(StringPool.COMMA)));
+			}
+
+		}
+
+	}
+
 	/**
 	 * 
 	 * 查询岗位所属组织的角色
@@ -247,7 +260,7 @@ public class DefaultPartyRoleRepositoryImpl extends AbstractRepository<String, D
 	 * 根据组织id查询所有父级的角色
 	 *
 	 * @param roleIds
-	 * @param employee 
+	 * @param orgId
 	 */
 	private void findRolesByOrgId(List<String> roleIds, String orgId) {
 		PartyOrgPo org = partyOrgRepository.get(orgId);

+ 8 - 1
ibps-model-root/modules/org-model/src/main/resources/com/lc/ibps/org/party/persistence/mapping/DefaultPartyRole.map.xml

@@ -305,5 +305,12 @@
 		#{id}
 		</foreach>
 	</select>
-	
+
+	<select id="findRulesByAgentId"   parameterType="java.util.Map" resultType="java.lang.String">
+		SELECT agent_roles_ FROM IBPS_BPM_AGENT
+		WHERE
+			AGENTER_ID_=#{agenterId}
+		  AND IS_ENABLED_=#{isEnabled}
+		  AND DATE(NOW()) BETWEEN DATE(effective_time_) AND DATE(expiry_time_)
+	</select>
 </mapper>

+ 0 - 3
ibps-provider-base-root/modules/provider-bpmn-api/src/main/java/com/lc/ibps/bpmn/api/IBpmAgentService.java

@@ -62,9 +62,6 @@ public interface IBpmAgentService {
 			@NotBlank(message = "{com.lc.ibps.bpmn.provider.public.id}")
 			@RequestParam(name="id", required = false)  String id) ;
 
-	@RequestMapping(value = "/roles",method = {RequestMethod.GET})
-	public APIResult<List<String>> roles();
-
 	/**
 	 * 批量删除【流程代理】记录
 	 * @param ids

+ 0 - 9
ibps-provider-root/modules/provider-bpmn/src/main/java/com/lc/ibps/bpmn/provider/BpmAgentProvider.java

@@ -107,15 +107,6 @@ public class BpmAgentProvider extends GenericProvider implements IBpmAgentServic
 		return result;
 	}
 
-	@ApiOperation(value = "代理角色列表", notes = "根据当前用户查询代理角色列表")
-	@Override
-	public APIResult<List<String>> roles() {
-		APIResult<List<String>> result = new APIResult<>();
-		User user = ContextUtil.getCurrentUser();
-		result.setData(bpmAgentRepository.findRolesByAgentId(user.getUserId()));
-		return result;
-	}
-
 	/**
 	 * 保存【流程代理】信息
 	 * @param bpmAgentPo

+ 1 - 7
ibps-provider-root/modules/provider-platform-default/src/main/java/com/lc/ibps/common/provider/ResourcesProvider.java

@@ -174,14 +174,8 @@ public class ResourcesProvider extends GenericProvider implements IResourcesServ
 			logger.debug("com.lc.ibps.common.provider.ResourcesProvider.findByParentIdAndSystemId()--->systemId={} ",
 					 systemId);
 			User user = ContextUtil.getCurrentUser();
-			List<String> agentRoles = null;
-			IBpmAgentService bpmAgentService = AppUtil.getBean(IBpmAgentService.class);
-			APIResult<List<String>> rolesResult = bpmAgentService.roles();
-			if(rolesResult.isSuccess()){
-				agentRoles = rolesResult.getData();
-			}
 			List<ResourcesPo> list = resourcesRepository.getByUserIdSystemId(user.getUserId(), user.isSuper(),
-					systemId,agentRoles);
+					systemId);
 			result.setData(list);
 		} catch (Exception e) {
 			setExceptionResult(result, StateEnum.ERROR_SYSTEM_RESOURCES.getCode(), I18nUtil.getMessage(StateEnum.ERROR_SYSTEM_RESOURCES.getCode()+""), e);

+ 0 - 15
ibps-provider-root/modules/provider-platform-default/src/main/java/com/lc/ibps/common/provider/RightsProvider.java

@@ -139,21 +139,6 @@ public class RightsProvider extends GenericProvider implements IRightsService, I
 			APIResult<Map<RightsType, List<String>>> ret = this.getPermissionsMap(rightsVo.getUserId());
 			if(ret.isSuccess()) {
 				permissionsMap = ret.getData();
-
-				// 获取代理角色
-				IBpmAgentService bpmAgentService = AppUtil.getBean(IBpmAgentService.class);
-				APIResult<List<String>> rolesResult = bpmAgentService.roles();
-				if(rolesResult.isSuccess()){
-					List<String> agentRoles = rolesResult.getData();
-					if(permissionsMap.containsKey(RightsType.ROLE)){
-						permissionsMap.get(RightsType.ROLE).addAll(agentRoles);
-					}else{
-						permissionsMap.put(RightsType.ROLE,agentRoles);
-					}
-
-
-				}
-
 			}
 			retVo.setPermissionsMap(permissionsMap);