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

实现引用权限

parent 91d4cb14
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