Commit 7d5e22a5 authored by 雍欢's avatar 雍欢

实现引用权限

parent 91d4cb14
package com.huigou.uasp.bmp.opm.application; package com.huigou.uasp.bmp.opm.application;
import java.util.List;
import java.util.Map;
import com.huigou.context.RoleKind; import com.huigou.context.RoleKind;
import com.huigou.data.domain.query.FolderAndCodeAndNameQueryRequest; import com.huigou.data.domain.query.FolderAndCodeAndNameQueryRequest;
import com.huigou.data.domain.query.ParentIdQueryRequest; import com.huigou.data.domain.query.ParentIdQueryRequest;
...@@ -16,9 +13,12 @@ import com.huigou.uasp.bmp.opm.domain.query.PermissionsByRoleIdQueryRequest; ...@@ -16,9 +13,12 @@ import com.huigou.uasp.bmp.opm.domain.query.PermissionsByRoleIdQueryRequest;
import com.huigou.uasp.bmp.opm.domain.query.RolesQueryRequestQueryRequest; import com.huigou.uasp.bmp.opm.domain.query.RolesQueryRequestQueryRequest;
import com.huigou.util.SDO; import com.huigou.util.SDO;
import java.util.List;
import java.util.Map;
/** /**
* 访问控制应用 * 访问控制应用
* *
* @author gongmm * @author gongmm
*/ */
public interface AccessApplication { public interface AccessApplication {
...@@ -29,82 +29,70 @@ public interface AccessApplication { ...@@ -29,82 +29,70 @@ public interface AccessApplication {
/** /**
* 保存角色 * 保存角色
* *
* @param role * @param role 角色
* 角色
* @return 角色ID * @return 角色ID
*/ */
String saveRole(Role role); String saveRole(Role role);
/** /**
* 从数据库读取一个角色数据 * 从数据库读取一个角色数据
* *
* @param id * @param id 角色ID
* 角色ID
*/ */
Role loadRole(String id); Role loadRole(String id);
/** /**
* 删除角色 * 删除角色
* *
* @param ids * @param ids 角色ID列表
* 角色ID列表
*/ */
void deleteRoles(List<String> ids); void deleteRoles(List<String> ids);
/** /**
* 更新排序号 * 更新排序号
* *
* @param roles * @param roles 角色ID和排序号的Map
* 角色ID和排序号的Map
*/ */
void updateRolesSequence(Map<String, Integer> params); void updateRolesSequence(Map<String, Integer> params);
/** /**
* 移动角色 * 移动角色
* *
* @param ids * @param ids 角色ID列表
* 角色ID列表 * @param parentId 父ID
* @param parentId
* 父ID
*/ */
void moveRoles(List<String> ids, String parentId); void moveRoles(List<String> ids, String parentId);
/** /**
* 移动租户角色 * 移动租户角色
* *
* @param ids * @param ids 角色ID列表
* 角色ID列表 * @param parentId 父ID
* @param parentId
* 父ID
*/ */
void moveTenantRoles(List<String> ids, String parentId); void moveTenantRoles(List<String> ids, String parentId);
/** /**
* 获取角色下一个排序号 * 获取角色下一个排序号
* *
* @param parentId * @param parentId 父ID
* 父ID
* @return 角色下一个排序号 * @return 角色下一个排序号
*/ */
Integer getRoleNextSequence(String parentId); Integer getRoleNextSequence(String parentId);
/** /**
* 查询角色数据 * 查询角色数据
* *
* @param tenantKindId * @param tenantKindId 租户类别
* 租户类别 * @param parentId 父ID
* @param parentId
* 父ID
* @return * @return
*/ */
List<Map<String, Object>> queryRoles(String tenantKindId, String parentId); List<Map<String, Object>> queryRoles(String tenantKindId, String parentId);
/** /**
* 分页查询角色数据 * 分页查询角色数据
* *
* @param queryRequest * @param queryRequest 查询 对象
* 查询 对象
* @return * @return
*/ */
Map<String, Object> slicedQueryRoles(RolesQueryRequestQueryRequest queryRequest); Map<String, Object> slicedQueryRoles(RolesQueryRequestQueryRequest queryRequest);
...@@ -116,26 +104,23 @@ public interface AccessApplication { ...@@ -116,26 +104,23 @@ public interface AccessApplication {
/** /**
* 保存权限 * 保存权限
* *
* @param permission * @param permission 权限实体
* 权限实体
* @return 权限ID * @return 权限ID
*/ */
String savePermission(Permission permission); String savePermission(Permission permission);
/** /**
* 更新权限 * 更新权限
* *
* @param permission * @param permission 权限实体
* 权限实体
*/ */
void updatePermission(Permission permission); void updatePermission(Permission permission);
/** /**
* 加载权限 * 加载权限
* *
* @param id * @param id 权限ID
* 权限ID
* @return 权限实体 * @return 权限实体
*/ */
Permission loadPermission(String id); Permission loadPermission(String id);
...@@ -144,223 +129,190 @@ public interface AccessApplication { ...@@ -144,223 +129,190 @@ public interface AccessApplication {
* 删除权限 * 删除权限
* <p> * <p>
* 若权限已分配给角色,不能删除。 * 若权限已分配给角色,不能删除。
* *
* @param ids * @param ids 权限ID列表
* 权限ID列表
*/ */
void deletePermissions(List<String> ids); void deletePermissions(List<String> ids);
/** /**
* 更新权限排序号 * 更新权限排序号
* *
* @param permissions * @param permissions 权限ID和排序号的Map
* 权限ID和排序号的Map
*/ */
void updatePermissionsSequence(Map<String, Integer> permissions); void updatePermissionsSequence(Map<String, Integer> permissions);
/** /**
* 更新权限状态 * 更新权限状态
* *
* @param ids * @param ids 权限ID列表
* 权限ID列表 * @param status 状态
* @param status
* 状态
*/ */
void updatePermissionsStatus(List<String> ids, Integer status); void updatePermissionsStatus(List<String> ids, Integer status);
/** /**
* 移动权限 * 移动权限
* *
* @param ids * @param ids 权限ID列表
* 权限ID列表 * @param parentId 父ID
* @param parentId
* 父ID
*/ */
void movePermissions(List<String> ids, String parentId); void movePermissions(List<String> ids, String parentId);
/** /**
* 查询权限 * 查询权限
* *
* @param queryRequest * @param queryRequest 权限查询对象
* 权限查询对象
* @return 查询结果集 * @return 查询结果集
*/ */
Map<String, Object> queryPermissions(FolderAndCodeAndNameQueryRequest queryRequest); Map<String, Object> queryPermissions(FolderAndCodeAndNameQueryRequest queryRequest);
/** /**
* 保存界面元素权限 * 保存界面元素权限
* *
* @param uiElementPermissions * @param uiElementPermissions 界面元素权限列表
* 界面元素权限列表
*/ */
void saveUIElementPermissions(List<UIElementPermission> uiElementPermissions); void saveUIElementPermissions(List<UIElementPermission> uiElementPermissions);
/** /**
* 删除界面元素权限 * 删除界面元素权限
* *
* @param ids * @param ids 界面元素ID列表
* 界面元素ID列表
*/ */
void deleteUIElementPermissions(List<String> ids); void deleteUIElementPermissions(List<String> ids);
/** /**
* 分页查询界面元素权限 * 分页查询界面元素权限
* *
* @param queryRequest * @param queryRequest 查询模型
* 查询模型
* @return * @return
*/ */
Map<String, Object> slicedQueryUIElementPermissions(ParentIdQueryRequest queryRequest); Map<String, Object> slicedQueryUIElementPermissions(ParentIdQueryRequest queryRequest);
/** /**
* 得到权限的下一个排序号 * 得到权限的下一个排序号
* *
* @param parentId * @param parentId 父ID
* 父ID
* @return * @return
*/ */
Integer getPermissionNextSequence(String parentId); Integer getPermissionNextSequence(String parentId);
/** /**
* 分配角色 * 分配角色
* *
* @param orgId * @param orgId 组织ID
* 组织ID * @param roleIds 角色ID列表
* @param roleIds
* 角色ID列表
*/ */
void allocateRoles(String orgId, List<String> roleIds); void allocateRoles(String orgId, List<String> roleIds);
/** /**
* 取消分配角色 * 取消分配角色
* *
* @param orgId * @param orgId 组织ID
* 组织ID * @param roleIds 角色ID列表
* @param roleIds
* 角色ID列表
*/ */
void deallocateRoles(String orgId, List<String> roleIds); void deallocateRoles(String orgId, List<String> roleIds);
/** /**
* 查询授权 * 查询授权
* *
* @param queryRequest * @param queryRequest 查询模型
* 查询模型
* @return * @return
*/ */
Map<String, Object> queryAuthorizations(AuthorizationsQueryRequest queryRequest); Map<String, Object> queryAuthorizations(AuthorizationsQueryRequest queryRequest);
/** /**
* 查询权限 * 查询权限
* *
* @param parentId * @param parentId 父ID
* 父ID
* @return * @return
*/ */
List<Map<String, Object>> queryPermissionsByParentId(String parentId); List<Map<String, Object>> queryPermissionsByParentId(String parentId);
/** /**
* 根据角色ID查询功能权限 * 根据角色ID查询功能权限
* *
* @param roleId * @param roleId 角色ID
* 角色ID * @param parentId 父ID
* @param parentId
* 父ID
* @return * @return
*/ */
List<Permission> queryAllocatedPermissions(String roleId, String parentId); List<Permission> queryAllocatedPermissions(String roleId, String parentId);
/** /**
* 查询权限 * 查询权限
* *
* @param queryRequest * @param queryRequest 查询模型
* 查询模型
* @return * @return
*/ */
Map<String, Object> slicedQueryPermissionsByRoleId(PermissionsByRoleIdQueryRequest queryRequest); Map<String, Object> slicedQueryPermissionsByRoleId(PermissionsByRoleIdQueryRequest queryRequest);
/** /**
* 分页查询已授权的权限 * 分页查询已授权的权限
* *
* @param queryRequest * @param queryRequest 查询模型
* 查询模型
* @return * @return
*/ */
Map<String, Object> slicedQueryAuthorizedPermissionsByOrgFullId(AuthorizedPermissionsByOrgFullIdQueryRequest queryRequest); Map<String, Object> slicedQueryAuthorizedPermissionsByOrgFullId(AuthorizedPermissionsByOrgFullIdQueryRequest queryRequest);
/** /**
* 分配功能权限 * 分配功能权限
* *
* @param roleId * @param roleId 角色ID
* 角色ID * @param oneLevelPermissionId 一级权限ID
* @param oneLevelPermissionId * @param permissionIds 权限ID列表
* 一级权限ID
* @param permissionIds
* 权限ID列表
*/ */
void allocateFunPermissions(String roleId, String oneLevelPermissionId, List<String> permissionIds); void allocateFunPermissions(String roleId, String oneLevelPermissionId, List<String> permissionIds);
/** /**
* 取消分配功能权限 * 取消分配功能权限
* *
* @param roleId * @param roleId 角色ID
* 角色ID * @param permissionIds 权限ID列表
* @param permissionIds
* 权限ID列表
*/ */
void deallocateFunPermissions(String roleId, List<String> permissionIds); void deallocateFunPermissions(String roleId, List<String> permissionIds);
/** /**
* 查询人员的功能权限 * 查询人员的功能权限
* *
* @param personId * @param personId 人员ID
* 人员ID
* @return * @return
*/ */
List<String> queryPersonFunPermissions(String personId); List<String> queryPersonFunPermissions(String personId);
/** /**
* 查询人员角色 * 查询人员角色
* *
* @param personId * @param personId 人员ID
* 人员ID
* @return * @return
*/ */
List<String> queryPersonRoleIds(String personId); List<String> queryPersonRoleIds(String personId);
/** /**
* 获取人员角色类别 * 获取人员角色类别
* *
* @param personId * @param personId 人员ID
* 人员ID
* @return * @return
*/ */
RoleKind getPersonRoleKind(String personId); RoleKind getPersonRoleKind(String personId);
/** /**
* 加载资源操作 * 加载资源操作
* *
* @param id * @param id 资源操作ID
* 资源操作ID * @return 资源操作
* @return
* 资源操作
*/ */
ResourceOperation loadResourceOperation(String id); ResourceOperation loadResourceOperation(String id);
/** /**
* 查询人员功能权限 * 查询人员功能权限
* *
* @param personId * @param personId 人员id
* 人员id * @param parentId 父id
* @param parentId
* 父id
* @return * @return
*/ */
List<Map<String, Object>> queryPersonFunctions(String personId, String parentId); List<Map<String, Object>> queryPersonFunctions(String personId, String parentId);
/** /**
* 查询人员一级下的所有功能,不包括文件夹 * 查询人员一级下的所有功能,不包括文件夹
* *
* @param personId * @param personId
* @param parentId * @param parentId
* @return * @return
...@@ -369,7 +321,7 @@ public interface AccessApplication { ...@@ -369,7 +321,7 @@ public interface AccessApplication {
/** /**
* 查询人员一级下的所有功能 * 查询人员一级下的所有功能
* *
* @param personId * @param personId
* @param parentId * @param parentId
* @return * @return
...@@ -378,43 +330,40 @@ public interface AccessApplication { ...@@ -378,43 +330,40 @@ public interface AccessApplication {
/** /**
* 检验人员是否具有某个功能权限 * 检验人员是否具有某个功能权限
* *
* @param personId * @param personId 人员ID
* 人员ID * @param funcCode 功能编码
* @param funcCode
* 功能编码
* @return * @return
*/ */
boolean checkPersonFunPermissions(String personId, String funcCode); boolean checkPersonFunPermissions(String personId, String funcCode);
/** /**
* 加人员角色 * 加人员角色
* *
* @param personId * @param personId 人员id
* 人员id
* @return * @return
*/ */
List<Map<String, Object>> loadPersonRole(String personId); List<Map<String, Object>> loadPersonRole(String personId);
/** /**
* 管理权限鉴权 * 管理权限鉴权
* *
* @author
* @param * @param
* @return boolean * @return boolean
* @author
*/ */
boolean authenticationManageType(SDO sdo); boolean authenticationManageType(SDO sdo);
/** /**
* 查询界面元素操作 * 查询界面元素操作
* *
* @return * @return
*/ */
Map<String, Object> queryUIElementOperations(); Map<String, Object> queryUIElementOperations();
/** /**
* 查询界面元素权限 * 查询界面元素权限
* *
* @param function * @param function
* @param operator * @param operator
* @param isId * @param isId
...@@ -431,4 +380,9 @@ public interface AccessApplication { ...@@ -431,4 +380,9 @@ public interface AccessApplication {
* 同步三员权限 * 同步三员权限
*/ */
void synThreeMemberPermission(); void synThreeMemberPermission();
/**
* 引用角色
*/
void quoteRole(String sourceOrgId, String destOrgId);
} }
package com.huigou.uasp.bmp.opm.domain.model.access;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
/**
* 人员角色授权
*
* @author yonghuan
*/
@Table(name = "sa_opauthorize")
@Entity
public class Authorize implements Serializable {
@EmbeddedId
private AuthorizeId id;
public Authorize() {
}
public Authorize(String orgId, String roleId) {
id = new AuthorizeId(orgId, roleId);
}
public AuthorizeId getId() {
return id;
}
public void setId(AuthorizeId id) {
this.id = id;
}
}
package com.huigou.uasp.bmp.opm.domain.model.access;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import java.io.Serializable;
import java.util.Objects;
/**
* @author yonghuan
*/
@Embeddable
public class AuthorizeId implements Serializable {
/**
* 组织id
*/
@Column(name = "org_id")
private String orgId;
/**
* 角色id
*/
@Column(name = "role_id")
private String roleId;
public AuthorizeId() {
}
public AuthorizeId(String orgId, String roleId) {
this.orgId = orgId;
this.roleId = roleId;
}
public String getOrgId() {
return orgId;
}
public void setOrgId(String orgId) {
this.orgId = orgId;
}
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AuthorizeId that = (AuthorizeId) o;
return orgId.equals(that.orgId) &&
roleId.equals(that.roleId);
}
@Override
public int hashCode() {
return Objects.hash(orgId, roleId);
}
}
package com.huigou.uasp.bmp.opm.repository.managment; package com.huigou.uasp.bmp.opm.repository.managment;
import java.util.Collection;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import com.huigou.uasp.bmp.opm.domain.model.management.BizManagement; import com.huigou.uasp.bmp.opm.domain.model.management.BizManagement;
import com.huigou.uasp.bmp.opm.domain.model.management.BizManagementType; import com.huigou.uasp.bmp.opm.domain.model.management.BizManagementType;
import com.huigou.uasp.bmp.opm.domain.model.org.Org; import com.huigou.uasp.bmp.opm.domain.model.org.Org;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.Collection;
import java.util.List;
public interface BizManagementRepository extends JpaRepository<BizManagement, String>, JpaSpecificationExecutor<BizManagement> { public interface BizManagementRepository extends JpaRepository<BizManagement, String>, JpaSpecificationExecutor<BizManagement> {
List<BizManagement> findByManagerInAndBizManagementTypeAndSubordinationIn(Collection<Org> managers, BizManagementType bizManagementType, List<BizManagement> findByManagerInAndBizManagementTypeAndSubordinationIn(Collection<Org> managers, BizManagementType bizManagementType,
Collection<Org> subordinations); Collection<Org> subordinations);
@Query("from BizManagement bm where bm.manager.id=:managerId and exists (select 1 from Org o where o.id=bm.subordination.id)")
List<BizManagement> findByManagerId(@Param("managerId") String managerId);
} }
package com.huigou.uasp.bmp.opm.repository.org; package com.huigou.uasp.bmp.opm.repository.org;
import java.util.List; import com.huigou.uasp.bmp.opm.domain.model.access.Role;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import com.huigou.uasp.bmp.opm.domain.model.access.Role; import java.util.List;
public interface RoleRepository extends JpaRepository<Role, String> { public interface RoleRepository extends JpaRepository<Role, String> {
Long countByParentId(String parentId); Long countByParentId(String parentId);
@Modifying @Modifying
@Query("update Role set status = -1 where kindId = 'superAdministrator'") @Query("update Role set status = -1 where kindId = 'superAdministrator'")
int hideSuperAdministrator(); int hideSuperAdministrator();
List<Role> findByKindId(String kindId); List<Role> findByKindId(String kindId);
@Query("select count(p) from Role r join r.permissions p where r.id = ?1") @Query("select count(p) from Role r join r.permissions p where r.id = ?1")
int countPermissionsByRoleId(String roleId); int countPermissionsByRoleId(String roleId);
/**
* 查询组织拥有的有效角色信息。
*
* @param orgId 组织id
* @return 组织拥有的有效角色信息
*/
@Query("from Role r where r.status=1 and exists (select 1 from Authorize a where a.id.orgId=:orgId and a.id.roleId=r.id)")
List<Role> findByOrgId(@Param("orgId") String orgId);
} }
...@@ -4,6 +4,7 @@ import java.util.ArrayList; ...@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert; import org.springframework.util.Assert;
...@@ -795,4 +796,14 @@ public class AccessApplicationImpl extends BaseApplication implements AccessAppl ...@@ -795,4 +796,14 @@ public class AccessApplicationImpl extends BaseApplication implements AccessAppl
} }
} }
@Override
public void quoteRole(String sourceOrgId, String destOrgId) {
List<String> roleIds = roleRepository.findByOrgId(sourceOrgId).stream()
.map(Role::getId)
.collect(Collectors.toList());
if (roleIds.size() > 0) {
allocateRoles(destOrgId, roleIds);
}
}
} }
\ No newline at end of file
package com.huigou.uasp.bmp.opm.impl; package com.huigou.uasp.bmp.opm.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.util.Assert;
import com.huigou.context.MessageSourceContext; import com.huigou.context.MessageSourceContext;
import com.huigou.data.domain.model.CommonDomainConstants; import com.huigou.data.domain.model.CommonDomainConstants;
import com.huigou.data.domain.model.MessageConstants; import com.huigou.data.domain.model.MessageConstants;
...@@ -26,6 +20,12 @@ import com.huigou.uasp.bmp.opm.repository.managment.BizManagementRepository; ...@@ -26,6 +20,12 @@ import com.huigou.uasp.bmp.opm.repository.managment.BizManagementRepository;
import com.huigou.uasp.bmp.opm.repository.managment.BizManagementTypeRepository; import com.huigou.uasp.bmp.opm.repository.managment.BizManagementTypeRepository;
import com.huigou.uasp.bmp.opm.repository.org.OrgRepository; import com.huigou.uasp.bmp.opm.repository.org.OrgRepository;
import com.huigou.util.StringUtil; import com.huigou.util.StringUtil;
import org.springframework.util.Assert;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class ManagementApplicationImpl extends BaseApplication implements ManagementApplication { public class ManagementApplicationImpl extends BaseApplication implements ManagementApplication {
...@@ -121,7 +121,7 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage ...@@ -121,7 +121,7 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage
} else { } else {
dbBizManagementType = this.loadBizManagementType(bizManagementType.getId()); dbBizManagementType = this.loadBizManagementType(bizManagementType.getId());
Assert.notNull(dbBizManagementType, MessageSourceContext.getMessage(MessageConstants.OBJECT_NOT_FOUND_BY_ID, dbBizManagementType.getId(), Assert.notNull(dbBizManagementType, MessageSourceContext.getMessage(MessageConstants.OBJECT_NOT_FOUND_BY_ID, dbBizManagementType.getId(),
dbBizManagementType.getClass().getName())); dbBizManagementType.getClass().getName()));
oldName = dbBizManagementType.getName(); oldName = dbBizManagementType.getName();
dbBizManagementType.fromEntity(bizManagementType); dbBizManagementType.fromEntity(bizManagementType);
} }
...@@ -146,8 +146,8 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage ...@@ -146,8 +146,8 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage
baseManagementType = this.baseManagementTypeRepository.findFirstByBizManagementType(bizManagementType); baseManagementType = this.baseManagementTypeRepository.findFirstByBizManagementType(bizManagementType);
if (baseManagementType != null) { if (baseManagementType != null) {
Assert.isTrue(false, Assert.isTrue(false,
MessageSourceContext.getMessage(MessageConstants.OBJECT_REFERENCED_BY_WHO, bizManagementType.getName(), MessageSourceContext.getMessage(MessageConstants.OBJECT_REFERENCED_BY_WHO, bizManagementType.getName(),
baseManagementType.getName())); baseManagementType.getName()));
} }
} }
...@@ -206,8 +206,8 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage ...@@ -206,8 +206,8 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage
List<BizManagement> bizManagements = new ArrayList<BizManagement>(managerIds.size()); List<BizManagement> bizManagements = new ArrayList<BizManagement>(managerIds.size());
List<BizManagement> allocatedBizManagements = this.bizManagementRepository.findByManagerInAndBizManagementTypeAndSubordinationIn(managers, List<BizManagement> allocatedBizManagements = this.bizManagementRepository.findByManagerInAndBizManagementTypeAndSubordinationIn(managers,
bizManagementType, bizManagementType,
subordinations); subordinations);
BizManagement bizManagement; BizManagement bizManagement;
boolean allocated; boolean allocated;
...@@ -339,6 +339,21 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage ...@@ -339,6 +339,21 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage
@Override @Override
public void quoteBizManagement(String sourceOrgId, String destOrgId) { public void quoteBizManagement(String sourceOrgId, String destOrgId) {
if (!orgRepository.exists(sourceOrgId) || !orgRepository.exists(destOrgId)) {
return;
}
this.bizManagementRepository.findByManagerId(sourceOrgId)
.stream()
.collect(Collectors.groupingBy(BizManagement::getBizManagementType))
.forEach((manageType, bizManagements) -> {
List<String> subordinationIds = bizManagements.stream()
.map(BizManagement::getSubordination)
.map(Org::getId)
.collect(Collectors.toList());
if (subordinationIds.size() > 0) {
allocateSubordinations(destOrgId, manageType.getId(), subordinationIds);
}
});
} }
} }
package com.huigou.uasp.bmp.opm.proxy; package com.huigou.uasp.bmp.opm.proxy;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import com.huigou.context.MessageSourceContext; import com.huigou.context.MessageSourceContext;
import com.huigou.context.RoleKind; import com.huigou.context.RoleKind;
import com.huigou.context.TmspmConifg; import com.huigou.context.TmspmConifg;
...@@ -28,14 +20,15 @@ import com.huigou.uasp.bmp.opm.domain.query.AuthorizedPermissionsByOrgFullIdQuer ...@@ -28,14 +20,15 @@ import com.huigou.uasp.bmp.opm.domain.query.AuthorizedPermissionsByOrgFullIdQuer
import com.huigou.uasp.bmp.opm.domain.query.PermissionsByRoleIdQueryRequest; import com.huigou.uasp.bmp.opm.domain.query.PermissionsByRoleIdQueryRequest;
import com.huigou.uasp.bmp.opm.domain.query.RolesQueryRequestQueryRequest; import com.huigou.uasp.bmp.opm.domain.query.RolesQueryRequestQueryRequest;
import com.huigou.uasp.bmp.opm.impl.AccessApplicationImpl; import com.huigou.uasp.bmp.opm.impl.AccessApplicationImpl;
import com.huigou.uasp.bmp.opm.repository.org.PermissionRepository; import com.huigou.uasp.bmp.opm.repository.org.*;
import com.huigou.uasp.bmp.opm.repository.org.ResourceOperationRepository;
import com.huigou.uasp.bmp.opm.repository.org.RolePermissionRepository;
import com.huigou.uasp.bmp.opm.repository.org.RoleRepository;
import com.huigou.uasp.bmp.opm.repository.org.SysFunctionRepository;
import com.huigou.uasp.bmp.opm.repository.org.UIElementPermissionRepository;
import com.huigou.uasp.bmp.opm.repository.org.UIElementRepository;
import com.huigou.util.SDO; import com.huigou.util.SDO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.List;
import java.util.Map;
@Service("accessApplicationProxy") @Service("accessApplicationProxy")
public class AccessApplicationProxy { public class AccessApplicationProxy {
...@@ -308,4 +301,13 @@ public class AccessApplicationProxy { ...@@ -308,4 +301,13 @@ public class AccessApplicationProxy {
public void synThreeMemberPermission() { public void synThreeMemberPermission() {
getAccessApplication().synThreeMemberPermission(); getAccessApplication().synThreeMemberPermission();
} }
/**
* 引用角色
*/
@Transactional
public void quoteRole(String sourceOrgId, String destOrgId) {
getAccessApplication().quoteRole(sourceOrgId, destOrgId);
}
} }
package com.huigou.uasp.bmp.opm.proxy; package com.huigou.uasp.bmp.opm.proxy;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.huigou.data.domain.query.CodeAndNameQueryRequest; import com.huigou.data.domain.query.CodeAndNameQueryRequest;
import com.huigou.data.domain.service.CommonDomainService; import com.huigou.data.domain.service.CommonDomainService;
import com.huigou.data.query.executor.SQLExecutorDao; import com.huigou.data.query.executor.SQLExecutorDao;
...@@ -20,13 +13,14 @@ import com.huigou.uasp.bmp.opm.domain.model.org.Person; ...@@ -20,13 +13,14 @@ import com.huigou.uasp.bmp.opm.domain.model.org.Person;
import com.huigou.uasp.bmp.opm.domain.query.OrgPropertyDefinitionQueryRequest; import com.huigou.uasp.bmp.opm.domain.query.OrgPropertyDefinitionQueryRequest;
import com.huigou.uasp.bmp.opm.domain.query.OrgQueryModel; import com.huigou.uasp.bmp.opm.domain.query.OrgQueryModel;
import com.huigou.uasp.bmp.opm.impl.OrgApplicationImpl; import com.huigou.uasp.bmp.opm.impl.OrgApplicationImpl;
import com.huigou.uasp.bmp.opm.repository.org.OrgPropertyDefinitionRepository; import com.huigou.uasp.bmp.opm.repository.org.*;
import com.huigou.uasp.bmp.opm.repository.org.OrgRepository;
import com.huigou.uasp.bmp.opm.repository.org.OrgTemplateRepository;
import com.huigou.uasp.bmp.opm.repository.org.OrgTypeRepository;
import com.huigou.uasp.bmp.opm.repository.org.PersonRepository;
import com.huigou.uasp.bmp.opm.repository.org.RoleRepository;
import com.huigou.uasp.bmp.securitypolicy.application.SecurityPolicyApplication; import com.huigou.uasp.bmp.securitypolicy.application.SecurityPolicyApplication;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@Service("orgApplicationProxy") @Service("orgApplicationProxy")
public class OrgApplicationProxy { public class OrgApplicationProxy {
...@@ -65,6 +59,10 @@ public class OrgApplicationProxy { ...@@ -65,6 +59,10 @@ public class OrgApplicationProxy {
private CoreApplicationFactory coreApplicationFactory; private CoreApplicationFactory coreApplicationFactory;
private OrgApplication orgApplication; private OrgApplication orgApplication;
@Autowired
private AccessApplicationProxy accessApplicationProxy;
@Autowired
private ManagementApplicationProxy managementApplicationProxy;
void initProperties(OrgApplicationImpl orgApplicationImpl) { void initProperties(OrgApplicationImpl orgApplicationImpl) {
orgApplicationImpl.setCommonDomainService(commonDomainService); orgApplicationImpl.setCommonDomainService(commonDomainService);
...@@ -245,9 +243,10 @@ public class OrgApplicationProxy { ...@@ -245,9 +243,10 @@ public class OrgApplicationProxy {
return getOrgApplication().queryPersonMembersByPersonId(personId); return getOrgApplication().queryPersonMembersByPersonId(personId);
} }
@Transactional @Transactional(rollbackFor = RuntimeException.class)
public void quoteAuthorizationAndBizManagement(String sourceOrgId, String destOrgId) { public void quoteAuthorizationAndBizManagement(String sourceOrgId, String destOrgId) {
getOrgApplication().quoteAuthorizationAndBizManagement(sourceOrgId, destOrgId); accessApplicationProxy.quoteRole(sourceOrgId, destOrgId);
managementApplicationProxy.quoteBizManagement(sourceOrgId, destOrgId);
} }
@Transactional @Transactional
...@@ -290,7 +289,7 @@ public class OrgApplicationProxy { ...@@ -290,7 +289,7 @@ public class OrgApplicationProxy {
public Person loadPersonByLoginName(String loginName) { public Person loadPersonByLoginName(String loginName) {
return getOrgApplication().loadPersonByLoginName(loginName); return getOrgApplication().loadPersonByLoginName(loginName);
} }
public Person loadPersonByCaNo(String caNo) { public Person loadPersonByCaNo(String caNo) {
return getOrgApplication().loadPersonByCaNo(caNo); return getOrgApplication().loadPersonByCaNo(caNo);
} }
...@@ -309,7 +308,7 @@ public class OrgApplicationProxy { ...@@ -309,7 +308,7 @@ public class OrgApplicationProxy {
public void updatePassword(String oldPassword, String newPassword) { public void updatePassword(String oldPassword, String newPassword) {
getOrgApplication().updatePassword(oldPassword, newPassword); getOrgApplication().updatePassword(oldPassword, newPassword);
} }
@Transactional @Transactional
public void initPassword(String personId) { public void initPassword(String personId) {
getOrgApplication().initPassword(personId); getOrgApplication().initPassword(personId);
......
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