Merge remote-tracking branch 'origin/feature/REQ-1102' into feature/REQ-1102

This commit is contained in:
zhansihu 2023-09-13 09:54:13 +08:00
commit fd1aeee956
36 changed files with 547 additions and 56 deletions

View File

@ -9,16 +9,18 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* 权限集
*/
@FeignClient(name = "tyr", url = "${axzo.service.tyr:http://tyr:8080/api/saasPermissionGoup}")
@FeignClient(name = "tyr", url = "${axzo.service.tyr:http://tyr:8080}")
public interface SaasPermissionGroupApi {
/**
* 保存/更新
*/
@PostMapping("saveOrUpdate")
@PostMapping("/api/saasPermissionGoup/saveOrUpdate")
ApiResult<Void> saveOrUpdate(@RequestBody SaasPermissionGroupVO req);
/**
@ -26,19 +28,19 @@ public interface SaasPermissionGroupApi {
* @param id
* @return
*/
@PostMapping("getById")
@PostMapping("/api/saasPermissionGoup/getById")
ApiResult<SaasPermissionGroupVO> getById(@RequestParam("id") Long id);
/**
* 查询
*/
@PostMapping("query")
@PostMapping("/api/saasPermissionGoup/query")
ApiPageResult<SaasPermissionGroupVO> query(@RequestBody QuerySaasPermissionGroupReq req);
/**
* 删除
*/
@PostMapping("delete")
ApiResult<Void> delete(@RequestParam(required = true) Long id);
@PostMapping("/api/saasPermissionGoup/delete")
ApiResult delete(@RequestBody List<Long> id);
}

View File

@ -3,6 +3,7 @@ package cn.axzo.tyr.client.feign;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.model.req.QueryByIdentityIdTypeReq;
import cn.axzo.tyr.client.model.req.QuerySaasRoleReq;
import cn.axzo.tyr.client.model.res.QueryBatchByIdentityIdTypeRes;
import cn.axzo.tyr.client.model.vo.SaasRoleVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@ -12,7 +13,6 @@ import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Map;
/**
* 角色
@ -41,6 +41,12 @@ public interface SaasRoleApi {
@PostMapping("/api/saasRole/query")
ApiResult<List<SaasRoleVO>> query(@RequestBody QuerySaasRoleReq req);
/**
* 删除
*/
@PostMapping("/api/saasRole/delete")
ApiResult delete(@RequestBody List<Long> id);
/**
* 根据身份id身份类型查询权限列表批量
* @param identityType 身份类型 1:工人 2:班组长 3:从业人员 4:监管人员 5:运营人员
@ -54,7 +60,7 @@ public interface SaasRoleApi {
* @return
*/
@GetMapping("/api/saasRole/queryBatchByIdentityIdType")
ApiResult<Map<QueryByIdentityIdTypeReq, List<SaasRoleVO>>> queryBatchByIdentityIdType(@RequestBody List<QueryByIdentityIdTypeReq> req);
ApiResult<List<QueryBatchByIdentityIdTypeRes>> queryBatchByIdentityIdType(@RequestBody List<QueryByIdentityIdTypeReq> req);

View File

@ -13,28 +13,31 @@ import java.util.List;
/**
* 角色分组
*/
@FeignClient(name = "tyr", url = "${axzo.service.tyr:http://tyr:8080/api/saasRoleGroup}")
@FeignClient(name = "tyr", url = "${axzo.service.tyr:http://tyr:8080}")
public interface SaasRoleGroupApi {
/**
* 保存/更新
* @return
*/
@PostMapping("save")
ApiResult<Void> saveOrUpdate(@RequestBody SaasRoleGroupVO req);
@PostMapping("/api/saasRoleGroup/save")
ApiResult saveOrUpdate(@RequestBody SaasRoleGroupVO req);
/**
* 获取权限分组列表
* @return
*/
@PostMapping("getList")
@PostMapping("/api/saasRoleGroup/getList")
ApiResult<List<SaasRoleGroupVO>> getList(@RequestBody QuerySaasRoleGroupReq req);
@PostMapping("/api/saasRoleGroup/getById")
ApiResult<SaasRoleGroupVO> getById(@RequestParam("id") Long id);
/**
* 删除分组
* 删除
*/
@PostMapping("delete")
ApiResult<Void> delete(@RequestParam(required = true) Long id);
@PostMapping("/api/saasRoleGroup//api/saasPermissionGoup/delete")
ApiResult delete(@RequestBody List<Long> id);
}

View File

@ -10,7 +10,7 @@ import java.util.Map;
@AllArgsConstructor
public enum PermissionGroupType {
COMMON(1, "通用"),
Special (0, "例外"),
SPECIAL(0, "例外"),
;
private Integer code;

View File

@ -0,0 +1,29 @@
package cn.axzo.tyr.client.model.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;
@Getter
@AllArgsConstructor
public enum PermissionScope {
INCLUDE(1, "正选"),
EXCLUDE (2, "反选"),
;
private Integer code;
private String desc;
private static final Map<Integer, PermissionScope> MAPPING = new HashMap<>();
static {
for (PermissionScope type : PermissionScope.values()) {
MAPPING.put(type.code, type);
}
}
public static PermissionScope apply(Integer code) {
return code == null ? null :MAPPING.get(code);
}
}

View File

@ -0,0 +1,29 @@
package cn.axzo.tyr.client.model.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;
@Getter
@AllArgsConstructor
public enum PermissionScopeType {
WORKSPACE("workspace", "项目部"),
OU ("ou", "单位"),
;
private String code;
private String desc;
private static final Map<String, PermissionScopeType> MAPPING = new HashMap<>();
static {
for (PermissionScopeType type : PermissionScopeType.values()) {
MAPPING.put(type.code, type);
}
}
public static PermissionScopeType apply(Integer code) {
return code == null ? null :MAPPING.get(code);
}
}

View File

@ -29,4 +29,9 @@ public class ProductFeatureRelationSearchReq {
*/
private Long dictCodeId;
/**
* 字典的 code
*/
private String dictCode;
}

View File

@ -32,6 +32,11 @@ public class ProductFeatureRelationUpdateReq {
@NotNull(message = "字典 ouType ID 不能为空")
private Long dictCodeId;
/**
* 字典的 code
*/
private String dictCode;
/**
* 权限点 ID
*/

View File

@ -35,6 +35,16 @@ public class QuerySaasPermissionGroupReq extends PageRequest {
*/
private Integer isCommon;
/**
* 工作台id过滤权限集作用范围
*/
private List<Long> workspaceId;
/**
* 单位id过滤权限集作用范围
*/
private List<Long> ouId;
/**
* 创建者
*/

View File

@ -33,6 +33,16 @@ public class QuerySaasRoleReq {
*/
private List<String> ouTypeCode;
/**
* 工作台id过滤权限集作用范围
*/
private List<Long> workspaceId;
/**
* 单位id过滤权限集作用范围
*/
private List<Long> ouId;
/**
* 分组id
*/

View File

@ -0,0 +1,31 @@
package cn.axzo.tyr.client.model.res;
import cn.axzo.tyr.client.model.vo.SaasRoleVO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class QueryBatchByIdentityIdTypeRes {
Long identityId;
/**
* 身份类型 1:工人 2:班组长 3:从业人员 4:监管人员 5:运营人员
*/
Integer identityType;
Long workspaceId;
Long ouId;
List<SaasRoleVO> role;
}

View File

@ -46,9 +46,19 @@ public class SaasPermissionGroupVO {
*/
private String type;
/**
* 是否为通用权限集 1: 0:
*/
private Integer isCommon;
/**
* 权限
*/
private List<PermissionPointTreeNode> feature;
/**
* 权限范围
*/
private List<SaasRolePermissionScopeVO> scopes;
}

View File

@ -1,11 +1,17 @@
package cn.axzo.tyr.client.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SaasRoleGroupVO {
private Long id;
@ -13,22 +19,12 @@ public class SaasRoleGroupVO {
/**
* 工作台类型字典code
*/
private Long workspaceTypeCode;
private String workspaceTypeCode;
/**
* 单位类型字典code
*/
private List<Long> ouTypeCode;
/**
* 所属工作台id
*/
private Long workspaceId;
/**
* 所属单位id
*/
private Long ouId;
private List<String> ouTypeCode;
/**
* 名称

View File

@ -14,6 +14,8 @@ public class SaasRolePermissionScopeVO {
private Long id;
private Long pgroupId;
/**
* 选择类型: 1.正选 2.反选
*/

View File

@ -38,11 +38,6 @@ public class SaasRoleVO {
*/
private Long updateBy;
/**
* 分组id(这个关联关系应该放在上一级从结构上看上下级是多对多的如果放在下级返回上级的id不太合适)
*/
// private List<Long> roleGroupIds;
/**
* 权限组
*/
@ -53,7 +48,6 @@ public class SaasRoleVO {
*/
private Long isDelete;
private Date createAt;
private Date updateAt;
@ -65,5 +59,4 @@ public class SaasRoleVO {
public List<PermissionPointTreeNode> getFeature(){
return this.permissionGroup.stream().map(SaasPermissionGroupVO::getFeature).flatMap(List::stream).distinct().collect(Collectors.toList());
}
}

View File

@ -0,0 +1,65 @@
package cn.axzo.tyr.server.controller.role;
import cn.axzo.framework.domain.web.BizException;
import cn.axzo.framework.domain.web.code.BaseCode;
import cn.axzo.framework.domain.web.result.ApiPageResult;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.feign.SaasPermissionGroupApi;
import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq;
import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO;
import cn.axzo.tyr.server.repository.service.SaasPermissionGroupDao;
import cn.axzo.tyr.server.repository.service.SaasPermissionGroupScopeDao;
import cn.axzo.tyr.server.repository.service.SaasPgroupPermissionRelationDao;
import cn.axzo.tyr.server.service.PermissionGroupService;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Slf4j
@RestController
@RequiredArgsConstructor
public class SaasPermissionGroupController implements SaasPermissionGroupApi {
private final SaasPermissionGroupDao permissionGroupDao;
private final SaasPgroupPermissionRelationDao pgroupPermissionRelationDao;
private final SaasPermissionGroupScopeDao permissionGroupScopeDao;
private final PermissionGroupService permissionGroupService;
@Override
public ApiResult<Void> saveOrUpdate(SaasPermissionGroupVO req) {
return null;
}
@Override
public ApiResult<SaasPermissionGroupVO> getById(Long id) {
List<SaasPermissionGroupVO> pGroups = permissionGroupService.query(QuerySaasPermissionGroupReq.builder().ids(Lists.newArrayList(id)).build());
if (CollectionUtils.isEmpty(pGroups)) {
throw new BizException(BaseCode.BAD_REQUEST, "未查询到权限组信息");
}
return ApiResult.ok(pGroups.get(0));
}
@Override
public ApiPageResult<SaasPermissionGroupVO> query(QuerySaasPermissionGroupReq req) {
return ApiPageResult.ok(permissionGroupService.page(req));
}
@Transactional
@Override
public ApiResult delete(List<Long> id) {
// 删除权限集
permissionGroupDao.delete(id);
// 删除权限集权限关联关系
pgroupPermissionRelationDao.deleteByPGroupId(id);
// 删除权限集作用范围
permissionGroupScopeDao.deleteByPGroupId(id);
return ApiResult.ok();
}
}

View File

@ -6,6 +6,7 @@ import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.feign.SaasRoleApi;
import cn.axzo.tyr.client.model.req.QueryByIdentityIdTypeReq;
import cn.axzo.tyr.client.model.req.QuerySaasRoleReq;
import cn.axzo.tyr.client.model.res.QueryBatchByIdentityIdTypeRes;
import cn.axzo.tyr.client.model.vo.SaasRoleVO;
import cn.axzo.tyr.server.service.RoleService;
import com.google.common.collect.Lists;
@ -16,7 +17,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
* 权限
@ -53,13 +53,18 @@ public class SaasRoleController implements SaasRoleApi {
return ApiResult.ok(roleService.query(req));
}
@Override
public ApiResult delete(List<Long> id) {
return null;
}
@Override
public ApiResult<List<SaasRoleVO>> queryByIdentityIdType(Long identityId, Integer identityType,Long workspaceId,Long ouId) {
return ApiResult.ok(roleService.queryByIdentityIdType(identityId, identityType,workspaceId,ouId));
}
@Override
public ApiResult<Map<QueryByIdentityIdTypeReq, List<SaasRoleVO>>> queryBatchByIdentityIdType(List<QueryByIdentityIdTypeReq> req) {
public ApiResult<List<QueryBatchByIdentityIdTypeRes>> queryBatchByIdentityIdType(List<QueryByIdentityIdTypeReq> req) {
return ApiResult.ok(roleService.queryBatchByIdentityIdType(req));
}

View File

@ -1,12 +1,16 @@
package cn.axzo.tyr.server.controller.role;
import cn.axzo.framework.domain.web.BizException;
import cn.axzo.framework.domain.web.code.BaseCode;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.feign.SaasRoleGroupApi;
import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq;
import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO;
import cn.axzo.tyr.server.service.SaasRoleGroupService;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@ -15,11 +19,13 @@ import java.util.List;
@RestController
@RequiredArgsConstructor
public class SaasRoleGroupController implements SaasRoleGroupApi {
private final SaasRoleGroupService saasRoleGroupService;
@Override
public ApiResult<Void> saveOrUpdate(SaasRoleGroupVO req) {
return null;
public ApiResult saveOrUpdate(SaasRoleGroupVO req) {
saasRoleGroupService.saveOrUpdate(req);
return ApiResult.ok();
}
@Override
@ -28,7 +34,17 @@ public class SaasRoleGroupController implements SaasRoleGroupApi {
}
@Override
public ApiResult<Void> delete(Long id) {
return null;
public ApiResult<SaasRoleGroupVO> getById(Long id) {
List<SaasRoleGroupVO> roleGroups = saasRoleGroupService.getList(QuerySaasRoleGroupReq.builder().ids(Lists.newArrayList(id)).build());
if (CollectionUtils.isEmpty(roleGroups)) {
throw new BizException(BaseCode.BAD_REQUEST, "未查询到角色分组信息");
}
return ApiResult.ok(roleGroups.get(0));
}
@Override
public ApiResult delete(List<Long> id) {
return ApiResult.ok();
}
}

View File

@ -36,11 +36,15 @@ public class SaasPermissionGroup extends BaseEntity<SaasPermissionGroup> {
* 创建者
*/
private Long createBy;
private String creatorName;
/**
* 更新者
*/
private Long updateBy;
private String updatorName;
/**
* 权限集类型:feature data
*/

View File

@ -23,6 +23,12 @@ public class SaasPermissionGroupScope extends BaseEntity<SaasPermissionGroupScop
private static final long serialVersionUID = 972205950455439772L;
/**
* 权限组id
*/
@TableField("pgroup_id")
private Long pgroupId;
/**
* 选择类型: 1.正选 2.反选
*/

View File

@ -32,6 +32,11 @@ public class SaasProductModuleFeatureRelation extends BaseEntity<SaasProductModu
*/
private Long dictCodeId;
/**
* 产品关联的字典 Code 原值
*/
private String dictCode;
/**
* 权限点 ID
*/

View File

@ -1,12 +1,21 @@
package cn.axzo.tyr.server.repository.service;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.server.repository.entity.SaasPermissionGroup;
import cn.axzo.tyr.server.repository.mapper.SaasPermissionGroupMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class SaasPermissionGroupDao extends ServiceImpl<SaasPermissionGroupMapper, SaasPermissionGroup> {
public void delete(List<Long> id) {
lambdaUpdate()
.in(BaseEntity::getId,id)
.set(BaseEntity::getIsDelete,id)
.update();
}
}

View File

@ -1,5 +1,7 @@
package cn.axzo.tyr.server.repository.service;
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.server.repository.entity.SaasPermissionGroup;
import cn.axzo.tyr.server.repository.entity.SaasPermissionGroupScope;
import cn.axzo.tyr.server.repository.mapper.SaasPermissionGroupMapper;
@ -7,8 +9,16 @@ import cn.axzo.tyr.server.repository.mapper.SaasPermissionGroupScopeMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class SaasPermissionGroupScopeDao extends ServiceImpl<SaasPermissionGroupScopeMapper, SaasPermissionGroupScope> {
public void deleteByPGroupId(List<Long> pgroupId) {
lambdaUpdate()
.in(SaasPermissionGroupScope::getPgroupId,pgroupId)
.set(BaseEntity::getIsDelete, TableIsDeleteEnum.DELETE.value)
.update();
}
}

View File

@ -1,5 +1,7 @@
package cn.axzo.tyr.server.repository.service;
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
import cn.axzo.tyr.server.repository.entity.SaasRole;
import cn.axzo.tyr.server.repository.mapper.SaasPgroupPermissionRelationMapper;
@ -17,5 +19,13 @@ public class SaasPgroupPermissionRelationDao extends ServiceImpl<SaasPgroupPermi
this.remove(new LambdaQueryWrapper<SaasPgroupPermissionRelation>()
.in(SaasPgroupPermissionRelation::getFeatureId, permissionPointIds));
}
public void deleteByPGroupId(List<Long> pgroupId) {
lambdaUpdate()
.in(SaasPgroupPermissionRelation::getGroupId,pgroupId)
.set(BaseEntity::getIsDelete, TableIsDeleteEnum.DELETE.value)
.update();
}
}

View File

@ -1,5 +1,7 @@
package cn.axzo.tyr.server.repository.service;
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.server.repository.entity.SaasPermissionGroup;
import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation;
import cn.axzo.tyr.server.repository.mapper.SaasPermissionGroupMapper;
@ -7,8 +9,17 @@ import cn.axzo.tyr.server.repository.mapper.SaasPgroupRoleRelationMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class SaasPgroupRoleRelationDao extends ServiceImpl<SaasPgroupRoleRelationMapper, SaasPgroupRoleRelation> {
public void deleteByRoleId(List<Long> roleId) {
lambdaUpdate()
.in(SaasPgroupRoleRelation::getRoleId,roleId)
.set(BaseEntity::getIsDelete, TableIsDeleteEnum.DELETE.value)
.update();
}
}

View File

@ -1,5 +1,6 @@
package cn.axzo.tyr.server.repository.service;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.server.repository.entity.SaasRole;
import cn.axzo.tyr.server.repository.entity.SaasRoleGroup;
import cn.axzo.tyr.server.repository.mapper.SaasRoleGroupMapper;
@ -7,8 +8,17 @@ import cn.axzo.tyr.server.repository.mapper.SaasRoleMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class SaasRoleDao extends ServiceImpl<SaasRoleMapper, SaasRole> {
public void delete(List<Long> id) {
lambdaUpdate()
.in(BaseEntity::getId,id)
.set(BaseEntity::getIsDelete,id)
.update();
}
}

View File

@ -45,5 +45,12 @@ public class SaasRoleGroupDao extends ServiceImpl<SaasRoleGroupMapper, SaasRoleG
return eq.list();
}
public void delete(List<Long> id) {
lambdaUpdate()
.in(BaseEntity::getId,id)
.set(BaseEntity::getIsDelete,id)
.update();
}
}

View File

@ -1,5 +1,7 @@
package cn.axzo.tyr.server.repository.service;
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.server.repository.entity.SaasRoleGroup;
import cn.axzo.tyr.server.repository.entity.SaasRoleGroupRelation;
import cn.axzo.tyr.server.repository.mapper.SaasRoleGroupMapper;
@ -7,8 +9,17 @@ import cn.axzo.tyr.server.repository.mapper.SaasRoleGroupRelationMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class SaasRoleGroupRelationDao extends ServiceImpl<SaasRoleGroupRelationMapper, SaasRoleGroupRelation> {
public void deleteByRoleGroupId(List<Long> roleGroupId) {
lambdaUpdate()
.in(SaasRoleGroupRelation::getSaasRoleGroupId, roleGroupId)
.set(BaseEntity::getIsDelete, TableIsDeleteEnum.DELETE.value)
.update();
}
}

View File

@ -21,5 +21,13 @@ public class SaasRoleUserRelationDao extends ServiceImpl<SaasRoleUserRelationMap
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.list();
}
public void deleteByRoldId(List<Long> roleId) {
lambdaUpdate()
.in(SaasRoleUserRelation::getRoleId,roleId)
.set(BaseEntity::getIsDelete,TableIsDeleteEnum.DELETE.value)
.update();
}
}

View File

@ -1,5 +1,6 @@
package cn.axzo.tyr.server.service;
import cn.axzo.framework.domain.page.PageResp;
import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq;
import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO;
@ -19,6 +20,6 @@ public interface PermissionGroupService {
*/
public List<SaasPermissionGroupVO> query(QuerySaasPermissionGroupReq req);
PageResp<SaasPermissionGroupVO> page(QuerySaasPermissionGroupReq req);
}

View File

@ -2,6 +2,7 @@ package cn.axzo.tyr.server.service;
import cn.axzo.tyr.client.model.req.QueryByIdentityIdTypeReq;
import cn.axzo.tyr.client.model.req.QuerySaasRoleReq;
import cn.axzo.tyr.client.model.res.QueryBatchByIdentityIdTypeRes;
import cn.axzo.tyr.client.model.vo.SaasRoleVO;
import java.util.List;
@ -21,5 +22,5 @@ public interface RoleService {
List<SaasRoleVO> query(QuerySaasRoleReq req);
Map<QueryByIdentityIdTypeReq, List<SaasRoleVO>> queryBatchByIdentityIdType(List<QueryByIdentityIdTypeReq> req);
List<QueryBatchByIdentityIdTypeRes> queryBatchByIdentityIdType(List<QueryByIdentityIdTypeReq> req);
}

View File

@ -7,4 +7,8 @@ import java.util.List;
public interface SaasRoleGroupService {
List<SaasRoleGroupVO> getList(QuerySaasRoleGroupReq req);
void saveOrUpdate(SaasRoleGroupVO req);
void delete(Long id);
}

View File

@ -1,18 +1,25 @@
package cn.axzo.tyr.server.service.impl;
import cn.axzo.basics.common.BeanMapper;
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
import cn.axzo.framework.domain.page.PageResp;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.client.model.enums.PermissionScopeType;
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq;
import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SaasRolePermissionScopeVO;
import cn.axzo.tyr.server.repository.entity.SaasPermissionGroup;
import cn.axzo.tyr.server.repository.entity.SaasPermissionGroupScope;
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation;
import cn.axzo.tyr.server.repository.service.SaasPermissionGroupDao;
import cn.axzo.tyr.server.repository.service.SaasPermissionGroupScopeDao;
import cn.axzo.tyr.server.repository.service.SaasPgroupPermissionRelationDao;
import cn.axzo.tyr.server.repository.service.SaasPgroupRoleRelationDao;
import cn.axzo.tyr.server.service.PermissionGroupService;
import cn.axzo.tyr.server.service.PermissionPointService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
@ -44,6 +51,8 @@ public class PermissionGroupImpl implements PermissionGroupService {
SaasPgroupPermissionRelationDao permissionRelationDao;
@Autowired
PermissionPointService featureService;
@Autowired
SaasPermissionGroupScopeDao saasPermissionGroupScopeDao;
@Override
public List<SaasPermissionGroupVO> query(QuerySaasPermissionGroupReq req) {
@ -54,6 +63,12 @@ public class PermissionGroupImpl implements PermissionGroupService {
.in(SaasPgroupRoleRelation::getRoleId, req.getRoleIds())
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.list();
List<Long> hitIds = relationList.stream().map(SaasPgroupRoleRelation::getGroupId).distinct().collect(Collectors.toList());
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(req.getIds())) {
req.getIds().retainAll(hitIds);
} else {
req.setIds(hitIds);
}
// 如果没查询到关联关系则直接返回
if (CollectionUtils.isEmpty(relationList)) {
return new ArrayList<>();
@ -66,6 +81,7 @@ public class PermissionGroupImpl implements PermissionGroupService {
.eq(req.getCreateBy() != null, SaasPermissionGroup::getCreateBy, req.getCreateBy())
.eq(req.getUpdateBy() != null, SaasPermissionGroup::getUpdateBy, req.getUpdateBy())
.eq(StringUtils.isNotBlank(req.getType()), SaasPermissionGroup::getType, req.getType())
.like(StringUtils.isNotBlank(req.getName()), SaasPermissionGroup::getName, req.getName())
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.orderByDesc(BaseEntity::getId)
.list();
@ -73,9 +89,10 @@ public class PermissionGroupImpl implements PermissionGroupService {
if (CollectionUtils.isEmpty(groupList)) {
return new ArrayList<>();
}
List<Long> groupIds = groupList.stream().map(BaseEntity::getId).collect(Collectors.toList());
// 查询权限集关联的权限
List<SaasPgroupPermissionRelation> permissionList = permissionRelationDao.lambdaQuery()
.in(SaasPgroupPermissionRelation::getGroupId, groupList.stream().map(BaseEntity::getId).collect(Collectors.toList()))
.in(SaasPgroupPermissionRelation::getGroupId, groupIds)
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.list();
List<PermissionPointTreeNode> feature = null;
@ -83,6 +100,28 @@ public class PermissionGroupImpl implements PermissionGroupService {
// 查询featureCode
feature = featureService.listNodesByIds(permissionList.stream().map(SaasPgroupPermissionRelation::getFeatureId).collect(Collectors.toList()));
}
List<SaasPermissionGroupScope> saasPermissionGroupScopesSource = saasPermissionGroupScopeDao.lambdaQuery()
.in(SaasPermissionGroupScope::getPgroupId, groupIds)
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.list();
// 过滤权限集作用范围
List<SaasPermissionGroupScope> saasPermissionGroupScopes = saasPermissionGroupScopesSource.stream().filter(e -> {
// 过滤出选中的工作台
if (CollectionUtils.isNotEmpty(req.getWorkspaceId())
&& PermissionScopeType.WORKSPACE.getCode().equals(e.getScopeType())
&& req.getWorkspaceId().contains(e.getScopeId())) {
req.getWorkspaceId().contains(e.getScopeId());
return true;
}
// 过滤出选中的单位
if (CollectionUtils.isNotEmpty(req.getOuId())
&& PermissionScopeType.OU.getCode().equals(e.getScopeType())
&& req.getOuId().contains(e.getScopeId())) {
req.getWorkspaceId().contains(e.getScopeId());
return true;
}
return false;
}).collect(Collectors.toList());
// 组装填充字段
List<PermissionPointTreeNode> finalFeature = feature;
return groupList.stream().map(group ->
@ -90,11 +129,99 @@ public class PermissionGroupImpl implements PermissionGroupService {
.id(group.getId())
.name(group.getName())
.feature(finalFeature)
.scopes(saasPermissionGroupScopes.stream().filter(e -> e.getPgroupId().equals(group.getId())).map(e -> BeanMapper.copyBean(e, SaasRolePermissionScopeVO.class)).collect(Collectors.toList()))
.createBy(group.getCreateBy())
.updateBy(group.getUpdateBy())
.type(group.getType())
.isCommon(group.getIsCommon())
.build()
).collect(Collectors.toList());
}
@Override
public PageResp<SaasPermissionGroupVO> page(QuerySaasPermissionGroupReq req) {
// 如果角色id不为空则先查询角色权限集关联表
IPage<SaasPermissionGroup> iPage = req.toPage();
if (CollectionUtils.isNotEmpty(req.getRoleIds())) {
List<SaasPgroupRoleRelation> relationList = roleRelationDao.lambdaQuery()
.in(SaasPgroupRoleRelation::getRoleId, req.getRoleIds())
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.list();
List<Long> hitIds = relationList.stream().map(SaasPgroupRoleRelation::getGroupId).distinct().collect(Collectors.toList());
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(req.getIds())) {
req.getIds().retainAll(hitIds);
} else {
req.setIds(hitIds);
}
// 如果没查询到关联关系则直接返回
if (CollectionUtils.isEmpty(relationList)) {
return PageResp.zero(iPage.getCurrent(), iPage.getSize());
}
}
// 查询权限集
iPage = permissionGroupDao.lambdaQuery()
.in(CollectionUtils.isNotEmpty(req.getIds()), BaseEntity::getId, req.getIds())
.eq(req.getIsCommon() != null, SaasPermissionGroup::getIsCommon, req.getIsCommon())
.eq(req.getCreateBy() != null, SaasPermissionGroup::getCreateBy, req.getCreateBy())
.eq(req.getUpdateBy() != null, SaasPermissionGroup::getUpdateBy, req.getUpdateBy())
.eq(StringUtils.isNotBlank(req.getType()), SaasPermissionGroup::getType, req.getType())
.like(StringUtils.isNotBlank(req.getName()), SaasPermissionGroup::getName, req.getName())
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.orderByAsc(BaseEntity::getCreateAt).orderByAsc(BaseEntity::getId)
.page(iPage);
List<SaasPermissionGroup> groupList = iPage.getRecords();
// 如果权限集为空则直接返回
if (CollectionUtils.isEmpty(groupList)) {
return PageResp.zero(iPage.getCurrent(), iPage.getSize());
}
List<Long> groupIds = groupList.stream().map(BaseEntity::getId).collect(Collectors.toList());
// 查询权限集关联的权限
List<SaasPgroupPermissionRelation> permissionList = permissionRelationDao.lambdaQuery()
.in(SaasPgroupPermissionRelation::getGroupId, groupIds)
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.list();
List<PermissionPointTreeNode> feature = null;
if (CollectionUtils.isNotEmpty(permissionList)) {
// 查询featureCode
feature = featureService.listNodesByIds(permissionList.stream().map(SaasPgroupPermissionRelation::getFeatureId).collect(Collectors.toList()));
}
List<SaasPermissionGroupScope> saasPermissionGroupScopesSource = saasPermissionGroupScopeDao.lambdaQuery()
.in(SaasPermissionGroupScope::getPgroupId, groupIds)
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.list();
// 过滤权限集作用范围
List<SaasPermissionGroupScope> saasPermissionGroupScopes = saasPermissionGroupScopesSource.stream().filter(e -> {
// 过滤出选中的工作台
if (CollectionUtils.isNotEmpty(req.getWorkspaceId())
&& PermissionScopeType.WORKSPACE.getCode().equals(e.getScopeType())
&& req.getWorkspaceId().contains(e.getScopeId())) {
req.getWorkspaceId().contains(e.getScopeId());
return true;
}
// 过滤出选中的单位
if (CollectionUtils.isNotEmpty(req.getOuId())
&& PermissionScopeType.OU.getCode().equals(e.getScopeType())
&& req.getOuId().contains(e.getScopeId())) {
req.getWorkspaceId().contains(e.getScopeId());
return true;
}
return false;
}).collect(Collectors.toList());
// 组装填充字段
List<PermissionPointTreeNode> finalFeature = feature;
List<SaasPermissionGroupVO> pageList = groupList.stream().map(group ->
SaasPermissionGroupVO.builder()
.id(group.getId())
.name(group.getName())
.feature(finalFeature)
.scopes(saasPermissionGroupScopes.stream().filter(e -> e.getPgroupId().equals(group.getId())).map(e -> BeanMapper.copyBean(e, SaasRolePermissionScopeVO.class)).collect(Collectors.toList()))
.createBy(group.getCreateBy())
.updateBy(group.getUpdateBy())
.type(group.getType())
.isCommon(group.getIsCommon())
.build()
).collect(Collectors.toList());
return PageResp.list(iPage.getCurrent(), iPage.getSize(), iPage.getTotal(), pageList);
}
}

View File

@ -14,6 +14,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
@ -37,6 +38,7 @@ public class ProductFeatureRelationServiceImpl implements ProductFeatureRelation
List<SaasProductModuleFeatureRelation> list = saasProductModuleFeatureRelationDao.lambdaQuery()
.eq(SaasProductModuleFeatureRelation::getProductModuleId, req.getProductModuleId())
.eq(Objects.nonNull(req.getDictCodeId()), SaasProductModuleFeatureRelation::getDictCodeId, req.getDictCodeId())
.eq(StringUtils.hasLength(req.getDictCode()), SaasProductModuleFeatureRelation::getDictCode, req.getDictCode())
.list();
return ApiResult.ok(BeanMapper.copyList(list, ProductFeatureRelationVO.class));
}
@ -54,6 +56,7 @@ public class ProductFeatureRelationServiceImpl implements ProductFeatureRelation
SaasProductModuleFeatureRelation relation = new SaasProductModuleFeatureRelation();
relation.setProductModuleId(i.getProductModuleId());
relation.setDictCodeId(i.getDictCodeId());
relation.setDictCode(i.getDictCode());
relation.setFeatureId(featureId);
saveList.add(relation);
}));

View File

@ -6,6 +6,7 @@ import cn.axzo.tyr.client.model.req.QueryByIdentityIdTypeReq;
import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq;
import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq;
import cn.axzo.tyr.client.model.req.QuerySaasRoleReq;
import cn.axzo.tyr.client.model.res.QueryBatchByIdentityIdTypeRes;
import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SaasRoleVO;
import cn.axzo.tyr.server.repository.entity.*;
@ -55,7 +56,7 @@ public class RoleServiceImpl implements RoleService {
if (CollectionUtils.isEmpty(roleIds)) {
return new ArrayList<>();
}
return getByIds(roleIds, null);
return getByIds(roleIds, null, null,null);
}
/**
@ -63,7 +64,7 @@ public class RoleServiceImpl implements RoleService {
*
* @return
*/
public List<SaasRoleVO> getByIds(List<Long> roleIds, Integer isCommon) {
public List<SaasRoleVO> getByIds(List<Long> roleIds, Integer isCommon, List<Long> workspaceId, List<Long> ouId) {
if (CollectionUtils.isEmpty(roleIds)) {
return new ArrayList<>();
}
@ -78,9 +79,12 @@ public class RoleServiceImpl implements RoleService {
// 转map<roleId,relation>
pgrouRelationMap = saasPgroupRoleRelations.stream().collect(Collectors.groupingBy(SaasPgroupRoleRelation::getRoleId));
// 查询权限集
pGroupMap = permissionGroupService.query(QuerySaasPermissionGroupReq.builder().isCommon(isCommon)
.ids(saasPgroupRoleRelations.stream().map(SaasPgroupRoleRelation::getGroupId).collect(Collectors.toList()))
.build())
pGroupMap = permissionGroupService.query(QuerySaasPermissionGroupReq.builder()
.isCommon(isCommon)
.ids(saasPgroupRoleRelations.stream().map(SaasPgroupRoleRelation::getGroupId).collect(Collectors.toList()))
.workspaceId(workspaceId)
.ouId(ouId)
.build())
// 转map<pgroupId>
.stream().collect(Collectors.groupingBy(SaasPermissionGroupVO::getId));
}
@ -141,14 +145,20 @@ public class RoleServiceImpl implements RoleService {
.eq(StringUtils.isNotBlank(req.getRoleType()), SaasRole::getRoleType, req.getRoleType())
.orderByDesc(BaseEntity::getId)
.list();
return getByIds(list.stream().map(BaseEntity::getId).collect(Collectors.toList()), req.getIsCommon());
return getByIds(list.stream().map(BaseEntity::getId).collect(Collectors.toList()), req.getIsCommon(),req.getWorkspaceId(),req.getOuId());
}
@Override
public Map<QueryByIdentityIdTypeReq, List<SaasRoleVO>> queryBatchByIdentityIdType(List<QueryByIdentityIdTypeReq> req) {
HashMap<QueryByIdentityIdTypeReq, List<SaasRoleVO>> result = new HashMap<>();
public List<QueryBatchByIdentityIdTypeRes> queryBatchByIdentityIdType(List<QueryByIdentityIdTypeReq> req) {
List<QueryBatchByIdentityIdTypeRes> result = new ArrayList<>();
req.forEach(e -> {
result.put(e,queryByIdentityIdType(e.getIdentityId(),e.getIdentityType(),e.getWorkspaceId(),e.getOuId()));
result.add(QueryBatchByIdentityIdTypeRes.builder()
.identityId(e.getIdentityId())
.identityType(e.getIdentityType())
.workspaceId(e.getWorkspaceId())
.ouId(e.getOuId())
.role(queryByIdentityIdType(e.getIdentityId(),e.getIdentityType(),e.getWorkspaceId(),e.getOuId()))
.build());
});
return result;
}

View File

@ -1,12 +1,13 @@
package cn.axzo.tyr.server.service.impl;
import java.util.Date;
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq;
import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO;
import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation;
import cn.axzo.tyr.server.repository.entity.SaasRoleGroup;
import cn.axzo.tyr.server.repository.entity.SaasRoleGroupRelation;
import cn.axzo.tyr.server.repository.service.SaasRoleGroupDao;
import cn.axzo.tyr.server.repository.service.SaasRoleGroupRelationDao;
import cn.axzo.tyr.server.repository.service.*;
import cn.axzo.tyr.server.service.SaasRoleGroupService;
import cn.hutool.core.bean.BeanUtil;
import lombok.RequiredArgsConstructor;
@ -27,6 +28,11 @@ import java.util.stream.Collectors;
public class SaasRoleGroupServiceImpl implements SaasRoleGroupService {
private final SaasRoleGroupDao saasRoleGroupDao;
private final SaasRoleGroupRelationDao saasRoleGroupRelationDao;
private final SaasRoleDao roleDao;
private final SaasPgroupRoleRelationDao pgroupRoleRelationDao;
private final SaasPermissionGroupDao permissionGroupDao;
private final SaasPgroupPermissionRelationDao pgroupPermissionRelationDao;
private final SaasRoleUserRelationDao roleUserRelationDao;
@Override
public List<SaasRoleGroupVO> getList(QuerySaasRoleGroupReq req) {
@ -57,7 +63,7 @@ public class SaasRoleGroupServiceImpl implements SaasRoleGroupService {
.map(e -> {
SaasRoleGroupVO target = BeanUtil.copyProperties(e, SaasRoleGroupVO.class);
if (StringUtils.isNotBlank(e.getOuTypeCode())) {
target.setOuTypeCode(Arrays.stream(e.getOuTypeCode().split(",")).filter(StringUtils::isNotBlank).map(s -> Long.parseLong(s.trim())).collect(Collectors.toList()));
target.setOuTypeCode(Arrays.stream(e.getOuTypeCode().split(",")).filter(StringUtils::isNotBlank).map(s -> s.trim()).collect(Collectors.toList()));
}
target.setRoleIds(groupRoleMap.get(e.getId()));
return target;
@ -65,4 +71,35 @@ public class SaasRoleGroupServiceImpl implements SaasRoleGroupService {
return results;
}
@Override
public void saveOrUpdate(SaasRoleGroupVO req) {
// 拼接ouTypeCode字符串
String ouTypeCodeStr = null;
if (CollectionUtils.isNotEmpty(req.getOuTypeCode())) {
ouTypeCodeStr = StringUtils.join(req.getOuTypeCode(),",");
}
SaasRoleGroup saasRoleGroup = new SaasRoleGroup();
saasRoleGroup.setId(req.getId());
saasRoleGroup.setWorkspaceTypeCode(req.getWorkspaceTypeCode());
saasRoleGroup.setOuTypeCode(ouTypeCodeStr);
saasRoleGroup.setName(req.getName());
saasRoleGroup.setSort(req.getSort());
saasRoleGroupDao.saveOrUpdate(saasRoleGroup);
}
@Override
public void delete(Long id) {
// 删除分组
// 删除角色分组关联关系
//
// 删除权限分组关联关系
// 删除权限
// 删除权限集关联关系
// 删除权限集
}
}