Merge branch 'master' into feature/REQ-2524

# Conflicts:
#	tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/RoleUserReq.java
This commit is contained in:
lilong 2024-06-06 09:30:13 +08:00
commit 439573efa5
21 changed files with 298 additions and 40 deletions

View File

@ -1,8 +1,12 @@
package cn.axzo.tyr.client.feign; package cn.axzo.tyr.client.feign;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.model.req.ListSaasRoleGroupParam;
import cn.axzo.tyr.client.model.req.PageSaasRoleGroupParam;
import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq; import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq;
import cn.axzo.tyr.client.model.req.UpdateRoleGroupOffsetReq; import cn.axzo.tyr.client.model.req.UpdateRoleGroupOffsetReq;
import cn.axzo.tyr.client.model.res.SaasRoleGroupDTO;
import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO; import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -72,4 +76,20 @@ public interface SaasRoleGroupApi {
*/ */
@PostMapping("/api/role/group/offset/update") @PostMapping("/api/role/group/offset/update")
ApiResult<Void> updateRoleGroupOffset(@Valid @RequestBody UpdateRoleGroupOffsetReq request); ApiResult<Void> updateRoleGroupOffset(@Valid @RequestBody UpdateRoleGroupOffsetReq request);
/**
* 角色分组page接口
* @param request
* @return
*/
@PostMapping("/api/saasRoleGroup/page")
ApiResult<PageResp<SaasRoleGroupDTO>> page(@RequestBody PageSaasRoleGroupParam request);
/**
* 角色分组list接口
* @param request
* @return
*/
@PostMapping("/api/saasRoleGroup/list")
ApiResult<List<SaasRoleGroupDTO>> list(@RequestBody ListSaasRoleGroupParam request);
} }

View File

@ -9,6 +9,7 @@ import cn.axzo.tyr.client.model.req.ListRoleReq;
import cn.axzo.tyr.client.model.req.PageRoleReq; import cn.axzo.tyr.client.model.req.PageRoleReq;
import cn.axzo.tyr.client.model.req.QueryByIdentityIdTypeReq; import cn.axzo.tyr.client.model.req.QueryByIdentityIdTypeReq;
import cn.axzo.tyr.client.model.req.QueryRoleByNameReq; import cn.axzo.tyr.client.model.req.QueryRoleByNameReq;
import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq;
import cn.axzo.tyr.client.model.req.QuerySaasRoleReq; import cn.axzo.tyr.client.model.req.QuerySaasRoleReq;
import cn.axzo.tyr.client.model.req.RoleWithUserQueryReq; import cn.axzo.tyr.client.model.req.RoleWithUserQueryReq;
import cn.axzo.tyr.client.model.req.TreeRoleReq; import cn.axzo.tyr.client.model.req.TreeRoleReq;

View File

@ -0,0 +1,29 @@
package cn.axzo.tyr.client.model.req;
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
import cn.axzo.foundation.dao.support.wrapper.Operator;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
@SuperBuilder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ListSaasRoleGroupParam {
@CriteriaField(field = "workspaceTypeCode", operator = Operator.EQ)
private Integer workspaceTypeCode;
@CriteriaField(field = "workspaceId", operator = Operator.EQ)
private Long workspaceId;
@CriteriaField(field = "ouId", operator = Operator.EQ)
private Long ouId;
@CriteriaField(ignore = true)
private Boolean needRole;
}

View File

@ -0,0 +1,31 @@
package cn.axzo.tyr.client.model.req;
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
import cn.axzo.foundation.page.IPageReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
@SuperBuilder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageSaasRoleGroupParam extends ListSaasRoleGroupParam implements IPageReq {
@CriteriaField(ignore = true)
Integer page;
@CriteriaField(ignore = true)
Integer pageSize;
/**
* 排序使用示例createTime__DESC
*/
@CriteriaField(ignore = true)
List<String> sort;
}

View File

@ -0,0 +1,67 @@
package cn.axzo.tyr.client.model.res;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SaasRoleGroupDTO {
private Long id;
/**
* 工作台类型字典code
*/
private String workspaceTypeCode;
/**
* 单位类型字典code
*/
private String ouTypeCode;
/**
* 名称
*/
private String name;
/**
* 所属工作台id
*/
private Long workspaceId;
/**
* 所属单位id
*/
private Long ouId;
/**
* 排序
*/
private Integer sort;
/**
* 分组CODE
*/
private String code;
/**
* 分类CODE, 用于代班长小组长的权限分类
*/
private String categoryCode;
/**
* 上级分组id
*/
private Long parentId;
/**
* 角色信息
*/
private List<SaasRoleRes> saasRoles;
}

View File

@ -69,6 +69,10 @@ public class RoleUserReq {
*/ */
private boolean isRecycleModel; private boolean isRecycleModel;
/**
* 操作人
*/
private Long operator;
/** /**
* 更新时是否覆盖特殊角色 * 更新时是否覆盖特殊角色
* 这些角色id是在nacos上的配置在cms的单位管理-通讯录不会回显该角色 * 这些角色id是在nacos上的配置在cms的单位管理-通讯录不会回显该角色
@ -77,8 +81,4 @@ public class RoleUserReq {
* true不覆盖 * true不覆盖
*/ */
private Boolean uncoverSpecialRoles; private Boolean uncoverSpecialRoles;
/**
* 操作人
*/
private Long operator;
} }

View File

@ -1,5 +1,6 @@
package cn.axzo.tyr.server.controller.permission; package cn.axzo.tyr.server.controller.permission;
import cn.axzo.basics.common.exception.ServiceException;
import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.feign.FeatureResourceApi; import cn.axzo.tyr.client.feign.FeatureResourceApi;
import cn.axzo.tyr.client.model.req.FeatureResourceTreeSaveReq; import cn.axzo.tyr.client.model.req.FeatureResourceTreeSaveReq;
@ -58,9 +59,10 @@ public class FeatureResourceController implements FeatureResourceApi {
@Override @Override
public ApiResult<Void> deleteFeatureResource(Long featureId, Long operatorId) { public ApiResult<Void> deleteFeatureResource(Long featureId, Long operatorId) {
log.info("deleteFeatureResource featureId : {}, operatorId : {}", featureId, operatorId); throw new ServiceException("暂时不支持删除权限点");
featureResourceService.deleteMenuFeature(featureId, operatorId); // log.info("deleteFeatureResource featureId : {}, operatorId : {}", featureId, operatorId);
return ApiResult.ok(); // featureResourceService.deleteMenuFeature(featureId, operatorId);
// return ApiResult.ok();
} }
@Override @Override

View File

@ -52,6 +52,8 @@ import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.Collections; import java.util.Collections;
@ -194,7 +196,6 @@ public class SaasRoleController implements TyrSaasRoleApi {
@Override @Override
public ApiResult<List<SaasRoleAndGroupVO>> queryInitRoleByWorkspaceId(String workspaceType) { public ApiResult<List<SaasRoleAndGroupVO>> queryInitRoleByWorkspaceId(String workspaceType) {
return ApiResult.ok(roleService.queryInitRoleByWorkspaceId(workspaceType)); return ApiResult.ok(roleService.queryInitRoleByWorkspaceId(workspaceType));
} }
@Override @Override

View File

@ -2,10 +2,14 @@ package cn.axzo.tyr.server.controller.role;
import cn.axzo.basics.common.exception.ServiceException; import cn.axzo.basics.common.exception.ServiceException;
import cn.axzo.foundation.exception.Axssert; import cn.axzo.foundation.exception.Axssert;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.feign.SaasRoleGroupApi; import cn.axzo.tyr.client.feign.SaasRoleGroupApi;
import cn.axzo.tyr.client.model.req.ListSaasRoleGroupParam;
import cn.axzo.tyr.client.model.req.PageSaasRoleGroupParam;
import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq; import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq;
import cn.axzo.tyr.client.model.req.UpdateRoleGroupOffsetReq; import cn.axzo.tyr.client.model.req.UpdateRoleGroupOffsetReq;
import cn.axzo.tyr.client.model.res.SaasRoleGroupDTO;
import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO; import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO;
import cn.axzo.tyr.server.repository.entity.SaasRoleGroup; import cn.axzo.tyr.server.repository.entity.SaasRoleGroup;
import cn.axzo.tyr.server.service.SaasRoleGroupService; import cn.axzo.tyr.server.service.SaasRoleGroupService;
@ -101,6 +105,16 @@ public class SaasRoleGroupController implements SaasRoleGroupApi {
return ApiResult.ok(); return ApiResult.ok();
} }
@Override
public ApiResult<PageResp<SaasRoleGroupDTO>> page(PageSaasRoleGroupParam request) {
return ApiResult.ok(saasRoleGroupService.page(request));
}
@Override
public ApiResult<List<SaasRoleGroupDTO>> list(ListSaasRoleGroupParam request) {
return ApiResult.ok(saasRoleGroupService.list(request));
}
/** /**
* 只支持移动一位 * 只支持移动一位
* @param request * @param request

View File

@ -74,10 +74,10 @@ public class CMSOtherRoleJobHandler extends IJobHandler {
log.info("CMSOtherRoleJobHandler start"); log.info("CMSOtherRoleJobHandler start");
// 查询无法回溯的角色 // 查询无法回溯的角色
List<SaasRole> oldRole = roleDao.lambdaQuery() List<SaasRole> oldRole = roleDao.lambdaQuery()
.ne(SaasRole::getWorkspaceId, -1l) .ne(SaasRole::getWorkspaceId, -1L)
.eq(SaasRole::getRoleType, "init") .eq(SaasRole::getRoleType, "init")
.in(SaasRole::getFitOuTypeBit, Arrays.asList(1, 2, 4, 8, 16)) .in(SaasRole::getFitOuTypeBit, Arrays.asList(1, 2, 4, 8, 16))
.eq(SaasRole::getFromPreRoleId, 0l) .eq(SaasRole::getFromPreRoleId, 0L)
.eq(BaseEntity::getIsDelete, 0) .eq(BaseEntity::getIsDelete, 0)
.list(); .list();
if (CollectionUtils.isEmpty(oldRole)) { if (CollectionUtils.isEmpty(oldRole)) {

View File

@ -141,8 +141,8 @@ public class CMSRoleJobHandler extends IJobHandler {
roleGroup.setWorkspaceTypeCode(workspaceTypCode); roleGroup.setWorkspaceTypeCode(workspaceTypCode);
roleGroup.setOuTypeCode(ouType); roleGroup.setOuTypeCode(ouType);
roleGroup.setName(groupName); roleGroup.setName(groupName);
roleGroup.setWorkspaceId(-1l); roleGroup.setWorkspaceId(-1L);
roleGroup.setOuId(-1l); roleGroup.setOuId(-1L);
roleGroup.setSort(1); roleGroup.setSort(1);
roleGroupDao.save(roleGroup); roleGroupDao.save(roleGroup);
@ -151,10 +151,10 @@ public class CMSRoleJobHandler extends IJobHandler {
SaasRole newRole = new SaasRole(); SaasRole newRole = new SaasRole();
newRole.setRoleType(RoleTypeEnum.INIT.getValue()); newRole.setRoleType(RoleTypeEnum.INIT.getValue());
newRole.setName(preRole.getName()); newRole.setName(preRole.getName());
newRole.setCreateBy(-1l); newRole.setCreateBy(-1L);
newRole.setUpdateBy(-1l); newRole.setUpdateBy(-1L);
newRole.setOwnerOuId(-1l); newRole.setOwnerOuId(-1L);
newRole.setWorkspaceId(-1l); newRole.setWorkspaceId(-1L);
roleDao.save(newRole); roleDao.save(newRole);
// 创建角色分组关联关系 // 创建角色分组关联关系

View File

@ -64,8 +64,8 @@ public class OMSRoleJobHandler extends IJobHandler {
roleGroup.setWorkspaceTypeCode("6"); roleGroup.setWorkspaceTypeCode("6");
roleGroup.setOuTypeCode("6"); roleGroup.setOuTypeCode("6");
roleGroup.setName("管理员"); roleGroup.setName("管理员");
roleGroup.setWorkspaceId(-1l); roleGroup.setWorkspaceId(-1L);
roleGroup.setOuId(-1l); roleGroup.setOuId(-1L);
roleGroup.setSort(1); roleGroup.setSort(1);
roleGroupDao.save(roleGroup); roleGroupDao.save(roleGroup);
// 查询OMS的角色 workspaceType=6 OMS的角色 // 查询OMS的角色 workspaceType=6 OMS的角色
@ -75,8 +75,8 @@ public class OMSRoleJobHandler extends IJobHandler {
.list(); .list();
// 重置老角色多余的字段 // 重置老角色多余的字段
oldRole.forEach(e -> { oldRole.forEach(e -> {
e.setWorkspaceId(-1l); e.setWorkspaceId(-1L);
e.setOwnerOuId(-1l); e.setOwnerOuId(-1L);
}); });
roleDao.updateBatchById(oldRole); roleDao.updateBatchById(oldRole);
// 保存角色分组关联关系 // 保存角色分组关联关系

View File

@ -50,7 +50,7 @@ public class SaasRoleGroupDao extends ServiceImpl<SaasRoleGroupMapper, SaasRoleG
public void delete(List<Long> id) { public void delete(List<Long> id) {
lambdaUpdate() lambdaUpdate()
.in(BaseEntity::getId,id) .in(BaseEntity::getId,id)
.set(BaseEntity::getIsDelete,1l) .set(BaseEntity::getIsDelete, 1L)
.update(); .update();
} }

View File

@ -9,6 +9,7 @@ import cn.axzo.tyr.client.model.req.ChangeGroupLeaderRoleReq;
import cn.axzo.tyr.client.model.req.FeatureRoleRelationReq; import cn.axzo.tyr.client.model.req.FeatureRoleRelationReq;
import cn.axzo.tyr.client.model.req.QueryByIdentityIdTypeReq; import cn.axzo.tyr.client.model.req.QueryByIdentityIdTypeReq;
import cn.axzo.tyr.client.model.req.QueryRoleByNameReq; import cn.axzo.tyr.client.model.req.QueryRoleByNameReq;
import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq;
import cn.axzo.tyr.client.model.req.QuerySaasRoleReq; import cn.axzo.tyr.client.model.req.QuerySaasRoleReq;
import cn.axzo.tyr.client.model.req.RoleWithUserQueryReq; import cn.axzo.tyr.client.model.req.RoleWithUserQueryReq;
import cn.axzo.tyr.client.model.res.FeatureRoleRelationResp; import cn.axzo.tyr.client.model.res.FeatureRoleRelationResp;

View File

@ -1,6 +1,10 @@
package cn.axzo.tyr.server.service; package cn.axzo.tyr.server.service;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.tyr.client.model.req.ListSaasRoleGroupParam;
import cn.axzo.tyr.client.model.req.PageSaasRoleGroupParam;
import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq; import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq;
import cn.axzo.tyr.client.model.res.SaasRoleGroupDTO;
import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO; import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO;
import cn.axzo.tyr.server.repository.entity.SaasRoleGroup; import cn.axzo.tyr.server.repository.entity.SaasRoleGroup;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@ -41,4 +45,9 @@ public interface SaasRoleGroupService extends IService<SaasRoleGroup> {
* @param type 1-仅查当前code 2-对应code角色组及子级角色组 3-仅对应code角色组的子级 * @param type 1-仅查当前code 2-对应code角色组及子级角色组 3-仅对应code角色组的子级
* **/ * **/
List<SaasRoleGroup> listByCodes(List<String> codes, int type); List<SaasRoleGroup> listByCodes(List<String> codes, int type);
List<SaasRoleGroupDTO> list(ListSaasRoleGroupParam param);
PageResp<SaasRoleGroupDTO> page(PageSaasRoleGroupParam param);
} }

View File

@ -595,7 +595,7 @@ public class RoleUserService implements SaasRoleUserService {
} }
List<SaasPgroupPermissionRelation> saasPgroupPermissionRelations = saasPgroupPermissionRelationDao.lambdaQuery() List<SaasPgroupPermissionRelation> saasPgroupPermissionRelations = saasPgroupPermissionRelationDao.lambdaQuery()
.eq(SaasPgroupPermissionRelation::getGroupId, saasPgroupRoleRelations.get(0).getGroupId()) .in(SaasPgroupPermissionRelation::getGroupId, saasPgroupRoleRelations.stream().map(SaasPgroupRoleRelation::getGroupId).collect(Collectors.toList()))
.eq(SaasPgroupPermissionRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); .eq(SaasPgroupPermissionRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list();
return GetUserFeatureResourceIdsResp.builder().featureResourceIds(saasPgroupPermissionRelations.stream() return GetUserFeatureResourceIdsResp.builder().featureResourceIds(saasPgroupPermissionRelations.stream()

View File

@ -318,22 +318,23 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@CacheEvict(value = SaasFeatureResourceCacheService.CACHE_FEATURE_RESOURCE_TREE,allEntries = true) @CacheEvict(value = SaasFeatureResourceCacheService.CACHE_FEATURE_RESOURCE_TREE,allEntries = true)
public void deleteMenuFeature(Long featureId, Long operatorId) { public void deleteMenuFeature(Long featureId, Long operatorId) {
if (featureId == null) {
return; // if (featureId == null) {
} // return;
List<SaasFeatureResource> featureDescendant = featureResourceDao.lambdaQuery() // }
.eq(BaseEntity::getIsDelete,0) // List<SaasFeatureResource> featureDescendant = featureResourceDao.lambdaQuery()
.apply("FIND_IN_SET('" + featureId + "', path)") // .eq(BaseEntity::getIsDelete,0)
.list(); // .apply("FIND_IN_SET('" + featureId + "', path)")
List<Long> featureIds = featureDescendant.stream().map(SaasFeatureResource::getId).collect(Collectors.toList()); // .list();
pgroupPermissionRelationService.deleteByFeatureIds(featureIds); // List<Long> featureIds = featureDescendant.stream().map(SaasFeatureResource::getId).collect(Collectors.toList());
// 删除自己及自己的子集 // pgroupPermissionRelationService.deleteByFeatureIds(featureIds);
featureResourceDao.lambdaUpdate() // // 删除自己及自己的子集
.eq(BaseEntity::getIsDelete,0) // featureResourceDao.lambdaUpdate()
.apply("FIND_IN_SET('" + featureId + "', path)") // .eq(BaseEntity::getIsDelete,0)
.set(SaasFeatureResource::getUpdateBy, operatorId) // .apply("FIND_IN_SET('" + featureId + "', path)")
.set(BaseEntity::getIsDelete,1) // .set(SaasFeatureResource::getUpdateBy, operatorId)
.update(); // .set(BaseEntity::getIsDelete,1)
// .update();
} }
@Override @Override

View File

@ -3,21 +3,35 @@ package cn.axzo.tyr.server.service.impl;
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum; import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
import cn.axzo.basics.common.exception.ServiceException; import cn.axzo.basics.common.exception.ServiceException;
import cn.axzo.foundation.exception.Axssert; import cn.axzo.foundation.exception.Axssert;
import cn.axzo.foundation.dao.support.converter.PageConverter;
import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.tyr.client.model.req.ListSaasRoleGroupParam;
import cn.axzo.tyr.client.model.req.PageSaasRoleGroupParam;
import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq; import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq;
import cn.axzo.tyr.client.model.res.SaasRoleGroupDTO;
import cn.axzo.tyr.client.model.res.SaasRoleRes;
import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO; import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO;
import cn.axzo.tyr.server.repository.dao.SaasRoleGroupDao; import cn.axzo.tyr.server.repository.dao.SaasRoleGroupDao;
import cn.axzo.tyr.server.repository.dao.SaasRoleGroupRelationDao; import cn.axzo.tyr.server.repository.dao.SaasRoleGroupRelationDao;
import cn.axzo.tyr.server.repository.entity.SaasRoleGroup; import cn.axzo.tyr.server.repository.entity.SaasRoleGroup;
import cn.axzo.tyr.server.repository.entity.SaasRoleGroupRelation; import cn.axzo.tyr.server.repository.entity.SaasRoleGroupRelation;
import cn.axzo.tyr.server.repository.mapper.SaasRoleGroupMapper; import cn.axzo.tyr.server.repository.mapper.SaasRoleGroupMapper;
import cn.axzo.tyr.server.service.RoleService;
import cn.axzo.tyr.server.service.SaasRoleGroupRelationService;
import cn.axzo.tyr.server.service.SaasRoleGroupService; import cn.axzo.tyr.server.service.SaasRoleGroupService;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
@ -25,10 +39,12 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.axzo.tyr.server.config.exception.BizResultCode.CANT_DELETE_ROLE_GROUP; import static cn.axzo.tyr.server.config.exception.BizResultCode.CANT_DELETE_ROLE_GROUP;
@ -40,6 +56,8 @@ public class SaasRoleGroupServiceImpl extends ServiceImpl<SaasRoleGroupMapper, S
implements SaasRoleGroupService { implements SaasRoleGroupService {
private final SaasRoleGroupDao saasRoleGroupDao; private final SaasRoleGroupDao saasRoleGroupDao;
private final SaasRoleGroupRelationDao saasRoleGroupRelationDao; private final SaasRoleGroupRelationDao saasRoleGroupRelationDao;
private final SaasRoleGroupRelationService saasRoleGroupRelationService;
private final RoleService roleService;
@Override @Override
public List<SaasRoleGroupVO> getList(QuerySaasRoleGroupReq req) { public List<SaasRoleGroupVO> getList(QuerySaasRoleGroupReq req) {
@ -255,4 +273,63 @@ public class SaasRoleGroupServiceImpl extends ServiceImpl<SaasRoleGroupMapper, S
} }
return Collections.emptyList(); return Collections.emptyList();
} }
@Override
public List<SaasRoleGroupDTO> list(ListSaasRoleGroupParam param) {
return PageConverter.drainAll(pageNumber -> {
PageSaasRoleGroupParam pageParam = PageSaasRoleGroupParam.builder().build();
BeanUtils.copyProperties(param, pageParam);
pageParam.setPage(pageNumber);
pageParam.setPageSize(500);
return page(pageParam);
});
}
@Override
public PageResp<SaasRoleGroupDTO> page(PageSaasRoleGroupParam param) {
QueryWrapper<SaasRoleGroup> wrapper = QueryWrapperHelper.fromBean(param, SaasRoleGroup.class);
wrapper.eq("is_delete", 0);
IPage<SaasRoleGroup> page = this.page(PageConverter.toMybatis(param, SaasRoleGroup.class), wrapper);
Map<Long, List<SaasRoleRes>> roles = listRoles(param, page.getRecords());
return PageConverter.toResp(page, (record) -> from(record, roles));
}
private SaasRoleGroupDTO from(SaasRoleGroup saasRoleGroup,
Map<Long, List<SaasRoleRes>> roles) {
SaasRoleGroupDTO saasRoleGroupDTO = SaasRoleGroupDTO.builder().build();
BeanUtils.copyProperties(saasRoleGroup, saasRoleGroupDTO);
saasRoleGroupDTO.setSaasRoles(roles.get(saasRoleGroupDTO.getId()));
return saasRoleGroupDTO;
}
private Map<Long, List<SaasRoleRes>> listRoles(PageSaasRoleGroupParam param,
List<SaasRoleGroup> saasRoleGroups) {
if (CollectionUtils.isEmpty(saasRoleGroups) || BooleanUtils.isNotTrue(param.getNeedRole())) {
return Collections.emptyMap();
}
SaasRoleGroupRelationService.ListSaasRoleGroupRelationParam listSaasRoleGroupRelationParam = SaasRoleGroupRelationService.ListSaasRoleGroupRelationParam.builder().build();
listSaasRoleGroupRelationParam.setSaasRoleGroupIds(Lists.transform(saasRoleGroups, SaasRoleGroup::getId));
List<SaasRoleGroupRelation> saasRoleGroupRelations = saasRoleGroupRelationService.list(listSaasRoleGroupRelationParam);
List<Long> roleIds = Lists.transform(saasRoleGroupRelations, SaasRoleGroupRelation::getRoleId);
if (CollectionUtils.isEmpty(roleIds)) {
return Collections.emptyMap();
}
RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder().build();
listSaasRoleParam.setRoleIds(roleIds);
Map<Long, SaasRoleRes> roles = roleService.list(listSaasRoleParam).stream()
.collect(Collectors.toMap(SaasRoleRes::getId, Function.identity()));
return saasRoleGroupRelations.stream()
.collect(Collectors.groupingBy(SaasRoleGroupRelation::getSaasRoleGroupId,
LinkedHashMap::new,
Collectors.mapping(e -> roles.get(e.getRoleId()), Collectors.toList())));
}
} }

View File

@ -14,6 +14,11 @@ spring:
include: swagger include: swagger
main: main:
allow-bean-definition-overriding: true allow-bean-definition-overriding: true
lifecycle:
timeout-per-shutdown-phase: 30s
server:
shutdown: graceful
mybatis-plus: mybatis-plus:
type-enums-package: cn.axzo.tyr.client.model.enums type-enums-package: cn.axzo.tyr.client.model.enums

View File

@ -55,7 +55,7 @@ public class RoleUserTest {
.ouId(123L) .ouId(123L)
.identityId(32L) .identityId(32L)
.identityType(IdentityType.PRACTITIONER) .identityType(IdentityType.PRACTITIONER)
.build(), Arrays.asList(4l)); .build(), Arrays.asList(4L));
} }
@Test @Test