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;
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.BizManagementType;
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> {
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;
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.Modifying;
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> {
Long countByParentId(String parentId);
@Modifying
@Query("update Role set status = -1 where kindId = 'superAdministrator'")
int hideSuperAdministrator();
List<Role> findByKindId(String kindId);
@Query("select count(p) from Role r join r.permissions p where r.id = ?1")
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;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
......@@ -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;
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.data.domain.model.CommonDomainConstants;
import com.huigou.data.domain.model.MessageConstants;
......@@ -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.org.OrgRepository;
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 {
......@@ -121,7 +121,7 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage
} else {
dbBizManagementType = this.loadBizManagementType(bizManagementType.getId());
Assert.notNull(dbBizManagementType, MessageSourceContext.getMessage(MessageConstants.OBJECT_NOT_FOUND_BY_ID, dbBizManagementType.getId(),
dbBizManagementType.getClass().getName()));
dbBizManagementType.getClass().getName()));
oldName = dbBizManagementType.getName();
dbBizManagementType.fromEntity(bizManagementType);
}
......@@ -146,8 +146,8 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage
baseManagementType = this.baseManagementTypeRepository.findFirstByBizManagementType(bizManagementType);
if (baseManagementType != null) {
Assert.isTrue(false,
MessageSourceContext.getMessage(MessageConstants.OBJECT_REFERENCED_BY_WHO, bizManagementType.getName(),
baseManagementType.getName()));
MessageSourceContext.getMessage(MessageConstants.OBJECT_REFERENCED_BY_WHO, bizManagementType.getName(),
baseManagementType.getName()));
}
}
......@@ -206,8 +206,8 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage
List<BizManagement> bizManagements = new ArrayList<BizManagement>(managerIds.size());
List<BizManagement> allocatedBizManagements = this.bizManagementRepository.findByManagerInAndBizManagementTypeAndSubordinationIn(managers,
bizManagementType,
subordinations);
bizManagementType,
subordinations);
BizManagement bizManagement;
boolean allocated;
......@@ -339,6 +339,21 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage
@Override
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;
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.RoleKind;
import com.huigou.context.TmspmConifg;
......@@ -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.RolesQueryRequestQueryRequest;
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.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.uasp.bmp.opm.repository.org.*;
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")
public class AccessApplicationProxy {
......@@ -308,4 +301,13 @@ public class AccessApplicationProxy {
public void synThreeMemberPermission() {
getAccessApplication().synThreeMemberPermission();
}
/**
* 引用角色
*/
@Transactional
public void quoteRole(String sourceOrgId, String destOrgId) {
getAccessApplication().quoteRole(sourceOrgId, destOrgId);
}
}
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.service.CommonDomainService;
import com.huigou.data.query.executor.SQLExecutorDao;
......@@ -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.OrgQueryModel;
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.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.opm.repository.org.*;
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")
public class OrgApplicationProxy {
......@@ -65,6 +59,10 @@ public class OrgApplicationProxy {
private CoreApplicationFactory coreApplicationFactory;
private OrgApplication orgApplication;
@Autowired
private AccessApplicationProxy accessApplicationProxy;
@Autowired
private ManagementApplicationProxy managementApplicationProxy;
void initProperties(OrgApplicationImpl orgApplicationImpl) {
orgApplicationImpl.setCommonDomainService(commonDomainService);
......@@ -245,9 +243,10 @@ public class OrgApplicationProxy {
return getOrgApplication().queryPersonMembersByPersonId(personId);
}
@Transactional
@Transactional(rollbackFor = RuntimeException.class)
public void quoteAuthorizationAndBizManagement(String sourceOrgId, String destOrgId) {
getOrgApplication().quoteAuthorizationAndBizManagement(sourceOrgId, destOrgId);
accessApplicationProxy.quoteRole(sourceOrgId, destOrgId);
managementApplicationProxy.quoteBizManagement(sourceOrgId, destOrgId);
}
@Transactional
......@@ -290,7 +289,7 @@ public class OrgApplicationProxy {
public Person loadPersonByLoginName(String loginName) {
return getOrgApplication().loadPersonByLoginName(loginName);
}
public Person loadPersonByCaNo(String caNo) {
return getOrgApplication().loadPersonByCaNo(caNo);
}
......@@ -309,7 +308,7 @@ public class OrgApplicationProxy {
public void updatePassword(String oldPassword, String newPassword) {
getOrgApplication().updatePassword(oldPassword, newPassword);
}
@Transactional
public void initPassword(String 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