Commit a8d7d0de authored by 雍欢's avatar 雍欢

可以通过角色来分配业务管理权限

parent e5920ded
......@@ -6,4 +6,5 @@
.tern-project
*.iml
/bin
/lib
\ No newline at end of file
/lib
src/main/resource/rebel.xml
/.settings
/.idea
/target
.classpath
.project
.tern-project
*.iml
/bin
/lib
src/main/resource/rebel.xml
\ No newline at end of file
......@@ -6,4 +6,5 @@
.tern-project
*.iml
/bin
/lib
\ No newline at end of file
/lib
src/main/resource/rebel.xml
\ No newline at end of file
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.huigou</groupId>
......@@ -48,6 +48,10 @@
<groupId>com.huigou</groupId>
<artifactId>huigou-data</artifactId>
</dependency>
<dependency>
<groupId>com.topsunit</groupId>
<artifactId>query-spring</artifactId>
</dependency>
</dependencies>
<build>
......
package com.huigou.uasp.bmp.opm.application;
import com.huigou.data.domain.query.EmptyQueryRequest;
import com.huigou.uasp.bmp.opm.domain.query.RoleBizManagementQueryRequest;
import java.util.List;
import java.util.Map;
/**
* 角色业务管理权限
*
* @author yonghuan
*/
public interface RoleBizManagementApplication {
/**
* 分配下属
*
* @param managerId 管理者ID
* @param manageTypeId 业务管理权限类别ID
* @param subordinationIds 下属ID列表
*/
void allocateSubordinations(String managerId, String manageTypeId, List<String> subordinationIds);
Map<String, Object> slicedQuerySubordination(RoleBizManagementQueryRequest queryRequest);
void deleteByIds(List<String> id);
}
package com.huigou.uasp.bmp.opm.domain.model.management;
import com.huigou.data.domain.listener.CreatorAndModifierListener;
import com.huigou.data.domain.model.AbstractEntity;
import com.huigou.data.domain.model.Creator;
import com.huigou.data.domain.model.Modifier;
import com.huigou.uasp.bmp.opm.domain.model.access.Role;
import com.huigou.uasp.bmp.opm.domain.model.org.Org;
import javax.persistence.*;
/**
* 角色业务管理权限,角色作为管理者。
*
* @author yonghuan
*/
@Table(name = "SA_OPRoleBizManagement")
@Entity
@EntityListeners({CreatorAndModifierListener.class})
public class RoleBizManagement extends AbstractEntity {
/**
* 管理者
*/
@ManyToOne
@JoinColumn(name = "manager_id")
private Role manager;
/**
* 业务管理权限类别
*/
@ManyToOne
@JoinColumn(name = "manage_type_id")
private BizManagementType bizManagementType;
/**
* 下属
*/
@ManyToOne
@JoinColumn(name = "subordination_id")
private Org subordination;
/**
* 创建者和修改者
*/
@Embedded
private Creator creator;
@Embedded
private Modifier modifier;
public Role getManager() {
return manager;
}
public void setManager(Role manager) {
this.manager = manager;
}
public BizManagementType getBizManagementType() {
return bizManagementType;
}
public void setBizManagementType(BizManagementType bizManagementType) {
this.bizManagementType = bizManagementType;
}
public Org getSubordination() {
return subordination;
}
public void setSubordination(Org subordination) {
this.subordination = subordination;
}
public Creator getCreator() {
return creator;
}
public void setCreator(Creator creator) {
this.creator = creator;
}
public Modifier getModifier() {
return modifier;
}
public void setModifier(Modifier modifier) {
this.modifier = modifier;
}
}
package com.huigou.uasp.bmp.opm.domain.query;
import com.huigou.data.domain.query.QueryAbstractRequest;
/**
* @author yonghuan
*/
public class RoleBizManagementQueryRequest extends QueryAbstractRequest {
private String managerId;
private String manageTypeId;
public String getManagerId() {
return managerId;
}
public void setManagerId(String managerId) {
this.managerId = managerId;
}
public String getManageTypeId() {
return manageTypeId;
}
public void setManageTypeId(String manageTypeId) {
this.manageTypeId = manageTypeId;
}
}
package com.huigou.uasp.bmp.opm.mapper.managment;
import com.huigou.uasp.bmp.opm.domain.query.RoleBizManagementQueryRequest;
import com.topsunit.query.annotations.Mapper;
import java.util.Map;
/**
* @author yonghuan
*/
@Mapper(xml = "config/uasp/query/bmp/roleBizManagement.xml")
public interface RoleBizManagementMapper {
Map<String, Object> slicedQuerySubordination(RoleBizManagementQueryRequest queryRequest);
}
package com.huigou.uasp.bmp.opm.repository.managment;
import com.huigou.uasp.bmp.opm.domain.model.management.RoleBizManagement;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @author yonghuan
*/
public interface RoleBizManagementRepository extends JpaRepository<RoleBizManagement, String>, JpaSpecificationExecutor<RoleBizManagement> {
}
......@@ -6,4 +6,5 @@
.tern-project
*.iml
/bin
/lib
\ No newline at end of file
/lib
src/main/resource/rebel.xml
\ No newline at end of file
......@@ -13,11 +13,13 @@ import com.huigou.uasp.bmp.opm.application.PermissionBuilder;
import com.huigou.uasp.bmp.opm.domain.model.management.BaseManagementType;
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.RoleBizManagement;
import com.huigou.uasp.bmp.opm.domain.model.org.Org;
import com.huigou.uasp.bmp.opm.domain.query.BizManagementTypesQueryRequest;
import com.huigou.uasp.bmp.opm.repository.managment.BaseManagementTypeRepository;
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.RoleBizManagementRepository;
import com.huigou.uasp.bmp.opm.repository.org.OrgRepository;
import com.huigou.util.StringUtil;
import org.springframework.util.Assert;
......@@ -35,6 +37,8 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage
private BizManagementRepository bizManagementRepository;
private RoleBizManagementRepository roleBizManagementRepository;
private OrgRepository orgRepository;
private PermissionBuilder permissionBuilder;
......@@ -51,6 +55,10 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage
this.bizManagementRepository = bizManagementRepository;
}
public void setRoleBizManagementRepository(RoleBizManagementRepository roleBizManagementRepository) {
this.roleBizManagementRepository = roleBizManagementRepository;
}
public void setOrgRepository(OrgRepository orgRepository) {
this.orgRepository = orgRepository;
}
......@@ -266,9 +274,14 @@ public class ManagementApplicationImpl extends BaseApplication implements Manage
Assert.notEmpty(ids, MessageSourceContext.getMessage(MessageConstants.IDS_NOT_BLANK));
List<BizManagement> bizManagements = this.bizManagementRepository.findAll(ids);
Assert.isTrue(bizManagements.size() == ids.size(), MessageSourceContext.getMessage(MessageConstants.IDS_EXIST_INVALID_ID, "业务管理权限"));
this.bizManagementRepository.delete(bizManagements);
List<RoleBizManagement> roleBizManagements = roleBizManagementRepository.findAll(ids);
Assert.isTrue(bizManagements.size() + roleBizManagements.size() == ids.size(), MessageSourceContext.getMessage(MessageConstants.IDS_EXIST_INVALID_ID, "业务管理权限"));
if(bizManagements.size()>0) {
this.bizManagementRepository.delete(bizManagements);
}
if(roleBizManagements.size()>0) {
roleBizManagementRepository.delete(roleBizManagements);
}
}
@Override
......
package com.huigou.uasp.bmp.opm.impl;
import com.huigou.uasp.bmp.opm.application.RoleBizManagementApplication;
import com.huigou.uasp.bmp.opm.domain.model.access.Role;
import com.huigou.uasp.bmp.opm.domain.model.management.BizManagementType;
import com.huigou.uasp.bmp.opm.domain.model.management.RoleBizManagement;
import com.huigou.uasp.bmp.opm.domain.model.org.Org;
import com.huigou.uasp.bmp.opm.domain.query.RoleBizManagementQueryRequest;
import com.huigou.uasp.bmp.opm.mapper.managment.RoleBizManagementMapper;
import com.huigou.uasp.bmp.opm.repository.managment.BizManagementTypeRepository;
import com.huigou.uasp.bmp.opm.repository.managment.RoleBizManagementRepository;
import com.huigou.uasp.bmp.opm.repository.org.OrgRepository;
import com.huigou.uasp.bmp.opm.repository.org.RoleRepository;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author yonghuan
*/
public class RoleBizManagementApplicationImpl implements RoleBizManagementApplication {
private RoleBizManagementRepository roleBizManagementRepository;
private BizManagementTypeRepository bizManagementTypeRepository;
private RoleRepository roleRepository;
private OrgRepository orgRepository;
private RoleBizManagementMapper roleBizManagementMapper;
public void setRoleBizManagementRepository(RoleBizManagementRepository roleBizManagementRepository) {
this.roleBizManagementRepository = roleBizManagementRepository;
}
public void setBizManagementTypeRepository(BizManagementTypeRepository bizManagementTypeRepository) {
this.bizManagementTypeRepository = bizManagementTypeRepository;
}
public void setRoleRepository(RoleRepository roleRepository) {
this.roleRepository = roleRepository;
}
public void setOrgRepository(OrgRepository orgRepository) {
this.orgRepository = orgRepository;
}
public void setRoleBizManagementMapper(RoleBizManagementMapper roleBizManagementMapper) {
this.roleBizManagementMapper = roleBizManagementMapper;
}
@Override
public void allocateSubordinations(String managerId, String manageTypeId, List<String> subordinationIds) {
List<RoleBizManagement> managements = subordinationIds.stream().distinct()
.map(subordinationId -> buildRoleBizManagement(manageTypeId, managerId, subordinationId))
.collect(Collectors.toList());
roleBizManagementRepository.save(managements);
}
private RoleBizManagement buildRoleBizManagement(String manageTypeId, String managerId, String subordinationId) {
RoleBizManagement rbm = new RoleBizManagement();
BizManagementType managementType = bizManagementTypeRepository.getOne(manageTypeId);
rbm.setBizManagementType(managementType);
Role role = roleRepository.findOne(managerId);
rbm.setManager(role);
Org subordination = orgRepository.findOne(subordinationId);
rbm.setSubordination(subordination);
return rbm;
}
@Override
public Map<String, Object> slicedQuerySubordination(RoleBizManagementQueryRequest queryRequest) {
return roleBizManagementMapper.slicedQuerySubordination(queryRequest);
}
@Override
public void deleteByIds(List<String> id) {
id.forEach(roleBizManagementRepository::delete);
}
}
......@@ -6,4 +6,5 @@
.tern-project
*.iml
/bin
/lib
\ No newline at end of file
/lib
src/main/resource/rebel.xml
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.huigou.uasp.bmp.opm.proxy;
import java.util.List;
import java.util.Map;
import com.huigou.uasp.bmp.opm.repository.managment.RoleBizManagementRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -36,6 +37,9 @@ public class ManagementApplicationProxy implements ManagementApplication {
@Autowired
private BizManagementRepository bizManagementRepository;
@Autowired
private RoleBizManagementRepository roleBizManagementRepository;
@Autowired
private OrgRepository orgRepository;
......@@ -55,6 +59,7 @@ public class ManagementApplicationProxy implements ManagementApplication {
managementApplicationImpl.setOrgRepository(orgRepository);
managementApplicationImpl.setSqlExecutorDao(sqlExecutorDao);
managementApplicationImpl.setCommonDomainService(commonDomainService);
managementApplicationImpl.setRoleBizManagementRepository(roleBizManagementRepository);
}
private ManagementApplication getManagementApplication() {
......
package com.huigou.uasp.bmp.opm.proxy;
import com.huigou.uasp.bmp.opm.application.RoleBizManagementApplication;
import com.huigou.uasp.bmp.opm.domain.query.RoleBizManagementQueryRequest;
import com.huigou.uasp.bmp.opm.impl.RoleBizManagementApplicationImpl;
import com.huigou.uasp.bmp.opm.mapper.managment.RoleBizManagementMapper;
import com.huigou.uasp.bmp.opm.repository.managment.BizManagementTypeRepository;
import com.huigou.uasp.bmp.opm.repository.managment.RoleBizManagementRepository;
import com.huigou.uasp.bmp.opm.repository.org.OrgRepository;
import com.huigou.uasp.bmp.opm.repository.org.RoleRepository;
import org.springframework.beans.factory.InitializingBean;
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;
/**
* @author yonghuan
*/
@Service
public class RoleBizManagementApplicationProxy implements RoleBizManagementApplication, InitializingBean {
private RoleBizManagementApplication target;
private RoleBizManagementRepository roleBizManagementRepository;
private BizManagementTypeRepository bizManagementTypeRepository;
private RoleRepository roleRepository;
private OrgRepository orgRepository;
private RoleBizManagementMapper roleBizManagementMapper;
@Autowired
public void setRoleBizManagementRepository(RoleBizManagementRepository roleBizManagementRepository) {
this.roleBizManagementRepository = roleBizManagementRepository;
}
@Autowired
public void setBizManagementTypeRepository(BizManagementTypeRepository bizManagementTypeRepository) {
this.bizManagementTypeRepository = bizManagementTypeRepository;
}
@Autowired
public void setRoleRepository(RoleRepository roleRepository) {
this.roleRepository = roleRepository;
}
@Autowired
public void setOrgRepository(OrgRepository orgRepository) {
this.orgRepository = orgRepository;
}
@Autowired
public void setRoleBizManagementMapper(RoleBizManagementMapper roleBizManagementMapper) {
this.roleBizManagementMapper = roleBizManagementMapper;
}
@Override
public void afterPropertiesSet() throws Exception {
RoleBizManagementApplicationImpl target = new RoleBizManagementApplicationImpl();
target.setRoleBizManagementRepository(roleBizManagementRepository);
target.setBizManagementTypeRepository(bizManagementTypeRepository);
target.setOrgRepository(orgRepository);
target.setRoleRepository(roleRepository);
target.setRoleBizManagementMapper(roleBizManagementMapper);
this.target = target;
}
@Transactional(rollbackFor = RuntimeException.class)
@Override
public void allocateSubordinations(String managerId, String manageTypeId, List<String> subordinationIds) {
target.allocateSubordinations(managerId, manageTypeId, subordinationIds);
}
@Override
public Map<String, Object> slicedQuerySubordination(RoleBizManagementQueryRequest queryRequest) {
return target.slicedQuerySubordination(queryRequest);
}
@Transactional(rollbackFor = RuntimeException.class)
@Override
public void deleteByIds(List<String> id) {
target.deleteByIds(id);
}
}
......@@ -6,4 +6,5 @@
.tern-project
*.iml
/bin
/lib
\ No newline at end of file
/lib
src/main/resource/rebel.xml
\ No newline at end of file
/.settings
/.idea
/target
.classpath
.project
.tern-project
*.iml
/bin
/lib
src/main/resource/rebel.xml
\ No newline at end of file
......@@ -6,4 +6,5 @@
.tern-project
*.iml
/bin
/lib
\ No newline at end of file
/lib
src/main/resource/rebel.xml
\ No newline at end of file
/.settings
/.idea
/target
.classpath
.project
.tern-project
*.iml
/bin
/lib
src/main/resource/rebel.xml
\ No newline at end of file
......@@ -6,4 +6,5 @@
.tern-project
*.iml
/bin
/lib
\ No newline at end of file
/lib
src/main/resource/rebel.xml
\ No newline at end of file
......@@ -6,4 +6,5 @@
.tern-project
*.iml
/bin
/lib
\ No newline at end of file
/lib
src/main/resource/rebel.xml
\ No newline at end of file
package com.huigou.uasp.bmp.opm.controller;
import com.huigou.context.MessageSourceContext;
import com.huigou.uasp.annotation.ControllerMapping;
import com.huigou.uasp.bmp.opm.application.RoleBizManagementApplication;
import com.huigou.uasp.bmp.opm.domain.query.RoleBizManagementQueryRequest;
import com.huigou.uasp.client.CommonController;
import com.huigou.util.SDO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.Assert;
import java.util.List;
import java.util.Map;
/**
* 角色业务管理权限
*
* @author yonghuan
*/
@ControllerMapping("roleBizManagement")
@Controller
public class RoleBizManagementController extends CommonController {
@Autowired
private RoleBizManagementApplication roleBizManagementApplication;
/**
* 跳转到角色业务管理权限界面
*/
public String forwardRoleBizManagement() {
String roleId = getSDO().getString("roleId");
Assert.hasText(roleId, MessageSourceContext.getMessage("roleId.not.blank"));
return forward("RoleBizManagement");
}
/**
* 为角色分配下属
*/
public String allocateSubordinations() {
SDO sdo = getSDO();
String managerId = sdo.getString("managerId");
List<String> subordinationIds = sdo.getStringList("subordinationIds");
String manageTypeId = sdo.getString("manageTypeId");
roleBizManagementApplication.allocateSubordinations(managerId, manageTypeId, subordinationIds);
return success();
}
/**
* 查询下属
*/
public String slicedQuerySubordination() {
RoleBizManagementQueryRequest queryRequest = getSDO().toQueryRequest(RoleBizManagementQueryRequest.class);
Map<String, Object> result = roleBizManagementApplication.slicedQuerySubordination(queryRequest);
return toResult(result);
}
public String deleteById() {
roleBizManagementApplication.deleteByIds(getSDO().getIds());
return success();
}
@Override
protected String getPagePath() {
return "/system/opm/rolebizmanagement/";
}
}
......@@ -833,7 +833,7 @@
<query name="management" label="业务管理权限">
<sql name="queryByManagerAndManageTypeId">
select a.id, s.full_Name, s.status, a.created_By_Name, a.created_Date,s.name
select a.id, s.full_Name,s.status, a.created_By_Name, a.created_Date,s.name, null role_name,null role_id
from SA_OPBizManagement a, SA_OPBizManagementType t, Sa_Oporg m,
SA_OPorg s
where a.manager_id = m.id
......@@ -841,9 +841,18 @@
and a.subordination_id = s.id
and m.id = :managerId
and t.id = :manageTypeId
union
select a.id, s.full_Name, s.status, a.created_By_Name, a.created_Date,s.name,m.name role_name,m.id role_id
from sa_oprolebizmanagement a, SA_OPBizManagementType t, sa_oprole m,
SA_OPorg s
where a.manager_id = m.id
and a.manage_type_id = t.id
and a.subordination_id = s.id
and m.id in (select ra.role_id from sa_opauthorize ra where ra.org_id=:managerId)
and t.id = :manageTypeId
</sql>
<sql name="queryBySubordinationAndManageTypeId">
select a.id, m.full_Name, m.status, a.created_By_Name, a.created_Date,m.name
select a.id, m.full_Name, m.status, a.created_By_Name, a.created_Date,m.name, null role_name,null role_id
from SA_OPBizManagement a, SA_OPBizManagementType t, Sa_Oporg m,
SA_OPorg s
where a.manager_id = m.id
......@@ -851,34 +860,72 @@
and a.subordination_id = s.id
and s.id = :subordinationId
and t.id = :manageTypeId
union
select a.id, m.full_Name, m.status, a.created_By_Name, a.created_Date,m.name,m.name role_name,m.id role_id
from sa_oprolebizmanagement a, SA_OPBizManagementType t, sa_oprole m,
SA_OPorg s
where a.manager_id = m.id
and a.manage_type_id = t.id
and a.subordination_id = s.id
and s.id = :subordinationId
and t.id = :manageTypeId
</sql>
<!-- 选择查询组织管理者的已分配的业务权限类别 -->
<sql name="selectOrgAllocatedBizManagementTypeForManager">
select *
from SA_OPBizManagementType bizManagementType
where id in (select manage_type_id
from SA_OPBizManagement b, SA_OPOrg o
where b.subordination_id = o.id
where exists (select 1
from SA_OPBizManagement b, SA_OPOrg o,sa_oporg manager
where bizManagementType.id=b.manage_type_id
and b.subordination_id = o.id
and b.manager_id=manager.id
and :selectedFullId like concat(o.full_Id, '%'))
or exists (select 1
from sa_oprolebizmanagement b, SA_OPOrg o,sa_oporg manager,sa_oprole r,sa_opauthorize ra
where bizManagementType.id=b.manage_type_id
and b.subordination_id = o.id
and b.manager_id=r.id
and r.id=ra.role_id
and manager.id=ra.org_id
and :selectedFullId like concat(o.full_Id, '%') )
</sql>
<!-- 选择查询组织下属的已分配的业务权限类别 -->
<sql name="selectOrgAllocatedBizManagementTypeForSubordination">
select *
from SA_OPBizManagementType bizManagementType
where id in (select manage_type_id
from SA_OPBizManagement b, SA_OPOrg o
where b.manager_id = o.id
where exists (select 1
from SA_OPBizManagement b, SA_OPOrg o,sa_oporg manager
where bizManagementType.id=b.manage_type_id
and b.manager_id = o.id
and b.manager_id=manager.id
and :selectedFullId like concat(o.full_Id,'%'))
or exists (select 1
from sa_oprolebizmanagement b, SA_OPOrg o,sa_oporg subordination,sa_oprole r,sa_opauthorize ra
where bizManagementType.id=b.manage_type_id
and b.manager_id = r.id
and b.subordination_id=subordination.id
and r.id=ra.role_id
and o.id=ra.org_id
and :selectedFullId like concat(o.full_Id, '%') )
</sql>
<!-- 选择管理者 -->
<sql name="selectBizManagementForManager">
select distinct m.full_name, s.status
select distinct m.full_name, m.status
from sa_opbizmanagement a, sa_oporg s, sa_oporg m
where a.subordination_id = s.id
and a.manager_id = m.id
and a.manage_type_id = :manageTypeId
and :selectedFullId like concat(s.full_id, '%')
and :selectedFullId like concat(s.full_id, '%')
union
select distinct m.full_Name, s.status
from sa_oprolebizmanagement a, sa_oprole r,
SA_OPorg s,sa_oporg m,sa_opauthorize ra
where a.manager_id = r.id
and ra.org_id=m.id
and ra.role_id=r.id
and a.subordination_id = s.id
and a.manage_type_id = :manageTypeId
and :selectedFullId like concat(s.full_id, '%')
</sql>
<!-- 选择下属 -->
<sql name="selectBizManagementForSubordination">
......@@ -887,13 +934,35 @@
where a.subordination_id = s.id
and a.manager_id = m.id
and a.manage_type_id = :manageTypeId
and :selectedFullId like concat(m.full_id, '%')
and :selectedFullId like concat(m.full_id, '%')
union
select distinct s.full_Name, s.status
from sa_oprolebizmanagement a, sa_oprole r,
SA_OPorg s,sa_oporg m,sa_opauthorize ra
where a.subordination_id=s.id
and a.manager_id = r.id
and ra.org_id=m.id
and ra.role_id=r.id
and a.manage_type_id = :manageTypeId
and :selectedFullId like concat(m.full_id, '%')
</sql>
</query>
<query name="managementQuery" label="管理权限查询">
<sql-query>
select t.id,
select t_2_.manager_name,
t_2_.manager_full_name,
t_2_.manager_status,
t_2_.sub_name,
t_2_.sub_full_name,
t_2_.sub_status,
t_2_.full_sequence,
t_2_.full_id,
t_2_.code,
t_2_.name,
t_2_.created_by_name,
t_2_.created_date
from (select t.id,
m.name as manager_name,
m.full_name as manager_full_name,
m.status as manager_status,
......@@ -905,7 +974,14 @@
p.code,
p.name,
t.created_by_name,
t.created_date
t.created_date,
t.manage_type_id,
m.id manager_id,
s.id subordination_id,
p.full_id biz_type_full_id,
p.name biz_type_name,
p.code biz_type_code
from sa_opbizmanagement t,
sa_oporg m,
sa_oporg s,
......@@ -913,16 +989,49 @@
where t.manager_id = m.id
and t.subordination_id = s.id
and t.manage_type_id = p.id
union
select t.id,
m.name as manager_name,
m.full_name as manager_full_name,
m.status as manager_status,
s.name as sub_name,
s.full_name as sub_full_name,
s.status as sub_status,
s.full_sequence,
s.full_id,
p.code,
p.name,
t.created_by_name,
t.created_date,
t.manage_type_id,
m.id manager_id,
s.id subordination_id,
p.full_id biz_type_full_id,
p.name biz_type_name,
p.code biz_type_code
from sa_oprolebizmanagement t,
sa_oporg m,
sa_oporg s,
sa_opbizmanagementtype p,
sa_oprole r,
sa_opauthorize ra
where t.manager_id = r.id
and t.subordination_id = s.id
and t.manage_type_id = p.id
and r.id=ra.role_id
and m.id=ra.org_id
) t_2_ where 1=1
</sql-query>
<condition column="manage_type_id" name="parentId" symbol="=" alias="t"/>
<condition column="manager_id" name="manageOrgId" symbol="half_like" alias="t"/>
<condition column="subordination_id" name="subordinationOrgId" symbol="=" alias="t"/>
<condition column="full_id" name="fullId" symbol="half_like" alias="p"/>
<condition column="keyValue" name="keyValue" symbol="like" alias="t">
(m.name like :keyValue or s.name like :keyValue)
<condition column="manage_type_id" name="parentId" symbol="=" alias="t_2_"/>
<condition column="manager_id" name="manageOrgId" symbol="half_like" alias="t_2_"/>
<condition column="subordination_id" name="subordinationOrgId" symbol="=" alias="t_2_"/>
<condition column="biz_type_full_id" name="fullId" symbol="half_like" alias="t_2_"/>
<condition column="keyValue" name="keyValue" symbol="like" alias="t_2_">
(t_2_.manager_name like :keyValue or t_2_.sub_name like :keyValue)
</condition>
<condition column="param" name="param" symbol="like" alias="p">
(p.code like :param or p.name like :param)
<condition column="param" name="param" symbol="like" alias="t_2_">
(t_2_.biz_type_code like :param or t_2_.biz_type_name like :param)
</condition>
</query>
......
<?xml version="1.0" encoding="UTF-8"?>
<query-mappings>
<query name="slicedQuerySubordination" label="角色业务管理权限" table="sa_oprolebizmanagement">
<sql-query>
select a.id, s.full_Name, s.status, a.created_By_Name, a.created_Date,s.name
from sa_oprolebizmanagement a, SA_OPBizManagementType t, sa_oprole m,
SA_OPorg s
where a.manager_id = m.id
and a.manage_type_id = t.id
and a.subordination_id = s.id
</sql-query>
<condition column="id" name="managerId" type="java.lang.String" symbol="=" alias="m"/>
<condition column="id" name="manageTypeId" type="java.lang.String" symbol="=" alias="t"/>
</query>
</query-mappings>
\ No newline at end of file
/.settings
/.idea
/target
.classpath
.project
.tern-project
*.iml
/bin
/lib
src/main/resource/rebel.xml
\ No newline at end of file
......@@ -6,4 +6,5 @@
.tern-project
*.iml
/bin
/lib
\ No newline at end of file
/lib
src/main/resource/rebel.xml
\ No newline at end of file
......@@ -457,6 +457,11 @@
<groupId>net.sf.cssbox</groupId>
<artifactId>jstyleparser</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>huigou-xt</finalName>
......
......@@ -112,11 +112,12 @@ $(function() {
columns: [
{ display: "名称", name: "name", width: 80, minWidth: 60, type: "string", align: "left" },
{ display: "路径", name: "fullName", width: 300, minWidth: 60, type: "string", align: "left" },
{ display: "组织状态", name: "status", width: 80, minWidth: 60, type: "string", align: "left",
{ display: "状态", name: "status", width: 80, minWidth: 60, type: "string", align: "left",
render: function (item){
return OpmUtil.getOrgStatusDisplay(item.status) ;
}
},
{ display: "角色名称", name: "roleName", width: 100, minWidth: 60, type: "string", align: "left" },
{ display: "创建人", name: "createdByName", width: 60, minWidth: 60, type: "string", align: "left" },
{ display: "创建日期", name: "createdDate", width: 140, minWidth: 60, type: "datetime", align: "left" }
],
......
var treeManager, gridManager, bizManagementGridManager,
refreshFlag, operateCfg = {}, manageTypeId = 0,
subordinationId = "", //下属组织ID
typeId = "subordination"; //授权方式ID
$(function() {
getQueryParameters();
bindEvents();
initializateUI();
initializeOperateCfg();
loadBizManagementType();
loadBizManagement();
function getQueryParameters() {
typeId = "subordination";
}
function initializeOperateCfg(){
var path = '/roleBizManagement/';
operateCfg.queryOrgAction ='/org/queryOrgs.ajax';
operateCfg.queryAction = path +'slicedQuerySubordination.ajax';
operateCfg.allocateSubordinations = path + 'allocateSubordinations.ajax';
operateCfg.deleteAction = path +'deleteById.ajax';
operateCfg.romoveCache = path +'removePermissionCache.ajax';
}
function bindEvents() {
$("#showDisabledOrg,#showMasterPsm, #showVirtualOrg").click(function () {
});
}
/**
* 加载业务权限类别
*/
function loadBizManagementType() {
var toolbarOptions={items:[]};
var queryManageCodes=$('#queryManageCodes').val();
if (Public.isBlank(queryManageCodes)) {
toolbarOptions = {
items: [
{ id: "queryThis", text: "选择查询", click: function(){
OpmUtil.showSelectBizManagementTypeDialog({
confirmHandler:function(){
_self = this;
var data = this.iframe.contentWindow.getBizManagementTypeData();
if (data == null) return;
UICtrl.gridSearch(bizManagementGridManager, {param:'',fullId:data.fullId});
_self.close();
}
});
}, img: "fa-search" }
]
};
}
bizManagementGridManager = UICtrl.grid("#bizManagementType", {
columns: [
{ display: "编码", name: "code", width: "120", minWidth: 60, type: "string", align: "left" },
{ display: "名称", name: "name", width: "150", minWidth: 60, type: "string", align: "left" }
],
dataAction: "server",
url: web_app.name + "/management/slicedQueryBizManagementTypesByKeyWord.ajax",
pageSize: 20,
parms: { nodeKindId: 2,queryManageCodes:queryManageCodes},
width: '100%',
height: "100%",
sortName: 'code',
sortOrder: 'asc',
heightDiff: -8,
checkbox: false,
toolbar: toolbarOptions,
fixedCellHeight: true,
selectRowButtonOnly: true,
rownumbers: true,
usePager: true,
onDblClickRow: function (data, rowindex, rowobj) {
doSearchBizManagement(data.id, data.name);
},
onSelectRow: function (data, rowindex, rowobj) {
doSearchBizManagement(data.id, data.name);
}
});
UICtrl.createGridToolBarQueryBtn('#bizManagementType',function(param){
UICtrl.gridSearch(bizManagementGridManager, {param:encodeURI(param),fullId:''});
});
}
function loadBizManagement() {
var toolbarOptions = {
items: [
{ id: "addOrg", text: "授权", click: allocateOrg, img: "fa-plus" },
{ id: "deleteOrg", text: "删除", click: deleteBizManagement, img: "fa-trash-o" },
{ id: "romoveCache", text: "清除权限缓存", click: romoveCache, img: "fa-files-o" },
{ id: 'doQuery',text:'查询业务权限授权',img:'fa-link',click:function(){
var manageType=$('#delegationManageType').val();
if (Public.isBlank(manageType)) {
manageType='';
}
var url=DataUtil.composeURLByParam('management/forwardPermissionBizManagementQuery.do',{manageType:manageType});
UICtrl.addTabItem({tabid:'permissionBizManagementQuery', text:'业务权限授权查询',url:url});
}}
]
};
gridManager = UICtrl.grid("#maingrid", {
columns: [
{ display: "名称", name: "name", width: 80, minWidth: 60, type: "string", align: "left" },
{ display: "路径", name: "fullName", width: 300, minWidth: 60, type: "string", align: "left" },
{ display: "组织状态", name: "status", width: 80, minWidth: 60, type: "string", align: "left",
render: function (item){
return OpmUtil.getOrgStatusDisplay(item.status) ;
}
},
{ display: "创建人", name: "createdByName", width: 60, minWidth: 60, type: "string", align: "left" },
{ display: "创建日期", name: "createdDate", width: 140, minWidth: 60, type: "datetime", align: "left" }
],
dataAction: "server",
url: web_app.name + operateCfg.queryAction,
pageSize: 20,
usePager: true,
toolbar: toolbarOptions,
width: "100%",
height: "100%",
heightDiff: -8,
checkbox: true,
fixedCellHeight: true,
selectRowButtonOnly: true,
onLoadData: function(){
return getRoleId() && manageTypeId;
}
});
}
function initializateUI() {
UICtrl.layout("#layout", {leftWidth: 3,rightWidth:6});
}
function deleteBizManagement() {
DataUtil.del({ action: operateCfg.deleteAction, gridManager: gridManager, onSuccess: reloadGrid });
}
});
function getRoleId() {
return $('#roleId').val();
}
function doSearchBizManagement(id, name){
if (manageTypeId != id) {
manageTypeId = id;
$("#layout").layout('setRightTitle',"<span class=\"tomato-color\">[" + name + "]</span>权限列表");
searchBizManagement();
}
}
function searchBizManagement() {
if (!manageTypeId){
return;
}
if (!getRoleId()){
return;
}
gridManager.options.parms.managerId = getRoleId();
//gridManager.options.parms.typeId = typeId;
gridManager.options.parms.manageTypeId = manageTypeId;
gridManager.options.newPage = 1;
reloadGrid();
}
/**
* 检查分配条件
*/
function checkAllocateCondition(){
if (!manageTypeId) {
Public.tip('请选择业务权限类别。');
return false;
}
return true;
}
function allocateOrg() {
if (!checkAllocateCondition()){
return;
}
var selectOrgparams = OpmUtil.getSelectOrgDefaultParams();
selectOrgparams = jQuery.extend(selectOrgparams, {selectableOrgKinds: "ogn,dpt,pos,psm"});
var options = {
params: selectOrgparams, confirmHandler: doSaveAllocateOrg,
closeHandler: onDialogCloseHandler, title: "选择组织"
};
OpmUtil.showSelectOrgDialog(options);
}
function doSaveAllocateOrg(){
var data = this.getSelectedData();
if (data.length == 0) {
Public.errorTip("请选择组织。");
return;
}
var _self = this;
var bizOrgIds = [];
for (var i = 0; i < data.length; i++) {
bizOrgIds[bizOrgIds.length] = data[i].id;
}
var params = {};
params.kindId = 2;
params.manageTypeId = manageTypeId;
params.managerId = getRoleId();
params.subordinationIds = $.toJSON(bizOrgIds);
var url = web_app.name + operateCfg.allocateSubordinations;
Public.ajax(url, params, function() {
refreshFlag = true;
_self.close();
});
}
function onDialogCloseHandler(){
if (refreshFlag) {
reloadGrid();
refreshFlag = false;
}
}
function reloadGrid() {
UICtrl.gridSearch(gridManager);
}
function romoveCache(){
Public.ajax(web_app.name +'/management/removePermissionCache.ajax');
}
\ No newline at end of file
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%@taglib uri="/WEB-INF/taglib.tld" prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<x:base include="layout,dialog,grid,tree"/>
<script src='<c:url value="/lib/jquery/jquery.commonTree.js"/>' type="text/javascript"></script>
<script src='<c:url value="/lib/jquery/jquery.comboDialog.js"/>' type="text/javascript"></script>
<script src='<c:url value="/system/opm/rolebizmanagement/RoleBizManagement.js?v=1"/>' type="text/javascript"></script>
<script src='<c:url value="/system/opm/management/BizManagementOrgFilterCondition.js"/>'
type="text/javascript"></script>
<script src='<c:url value="/system/opm/js/OpmUtil.js"/>' type="text/javascript"></script>
<script src='<c:url value="/system/opm/organization/SelectOrgCommonPage.js"/>' type="text/javascript"></script>
</head>
<body>
<div class="container-fluid">
<x:hidden name="roleId" />
<x:hidden name="orgRootId" id="delegationOrgRootId"/>
<x:hidden name="manageType" id="delegationManageType"/>
<x:hidden name="queryManageCodes"/>
<div id="layout">
<div position="center" title="权限管理" id="bizManagementList">
<div style="margin: 2px;margin-top:5px;">
<div id="bizManagementType"></div>
</div>
</div>
<div position="right" title="权限列表">
<div style="margin: 2px;margin-top:5px;">
<div id="maingrid"></div>
</div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
package com.huigou.uasp.bmp.fn.impl;
import com.huigou.context.OrgUnit;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class OrgFunTests {
@Autowired
private OrgFun orgFun;
@Test
public void findSubordinations() {
String orgFullId = "/E3B4E5C5C6454F81921CF58B7597CE2F.ogn/18FFF477AEEE4609B798015231B400C3.dpt/C18E23AAAA6940E09DF7C122332C51E0.pos/5EEB2DC861694A65933CB4CE9A8D870A@C18E23AAAA6940E09DF7C122332C51E0.psm";
// "/7609EDB28F974C5F948CAA24D5ADAB85.ogn"
List<OrgUnit> units = orgFun.findSubordinations(orgFullId, "admin",null,true, false);
System.out.println(units);
}
@Test
public void findSubordinationsForNearestManager() {
String orgFullId = "/E3B4E5C5C6454F81921CF58B7597CE2F.ogn/18FFF477AEEE4609B798015231B400C3.dpt/C18E23AAAA6940E09DF7C122332C51E0.pos/5EEB2DC861694A65933CB4CE9A8D870A@C18E23AAAA6940E09DF7C122332C51E0.psm";
List<OrgUnit> units = orgFun.findSubordinationsForNearestManager(orgFullId, "admin",null,false);
System.out.println(units);
}
@Test
public void findManagers() {
String orgFullId = "/E3B4E5C5C6454F81921CF58B7597CE2F.ogn/18FFF477AEEE4609B798015231B400C3.dpt/C18E23AAAA6940E09DF7C122332C51E0.pos/5EEB2DC861694A65933CB4CE9A8D870A@C18E23AAAA6940E09DF7C122332C51E0.psm";
List<OrgUnit> units = orgFun.findManagers(orgFullId, "admin",true, null);
System.out.println(units);
}
@Test
public void findNearestManagers() {
String orgFullId = "/E3B4E5C5C6454F81921CF58B7597CE2F.ogn/18FFF477AEEE4609B798015231B400C3.dpt/C18E23AAAA6940E09DF7C122332C51E0.pos/5EEB2DC861694A65933CB4CE9A8D870A@C18E23AAAA6940E09DF7C122332C51E0.psm";
List<OrgUnit> units = orgFun.findNearestManagers(orgFullId, "admin");
System.out.println(units);
}
@Test
public void hasManageType() {
String orgFullId = "/E3B4E5C5C6454F81921CF58B7597CE2F.ogn/18FFF477AEEE4609B798015231B400C3.dpt/C18E23AAAA6940E09DF7C122332C51E0.pos/5EEB2DC861694A65933CB4CE9A8D870A@C18E23AAAA6940E09DF7C122332C51E0.psm";
System.out.println("hasManageType: " + orgFun.hasManageType(orgFullId, "admin"));
}
}
......@@ -156,7 +156,7 @@
<shiro-cas.version>1.2.4</shiro-cas.version>
<cas-client-core.version>3.2.1</cas-client-core.version>
<!-- test -->
<junit.version>4.9</junit.version>
<junit.version>4.13</junit.version>
<spring-data-mongodb.version>1.9.3.RELEASE</spring-data-mongodb.version>
<huigou.uasp.version>1.2.7</huigou.uasp.version>
<classgraph.version>4.8.43</classgraph.version>
......@@ -1935,6 +1935,11 @@
<artifactId>jstyleparser</artifactId>
<version>${jstyleparser.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<distributionManagement>
......
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