refactor(role-query): 改变角色查询逻辑

This commit is contained in:
zhansihu 2023-10-19 16:26:39 +08:00
parent 24f30d7fd2
commit 707e748a64
6 changed files with 47 additions and 7 deletions

View File

@ -25,5 +25,5 @@ public class RoleWithUserQueryReq extends PageRequest {
private Long workspaceId; private Long workspaceId;
/** 企业工作台参建类型 **/ /** 企业工作台参建类型 **/
private List<Integer> workspaceJoinType; private Integer workspaceJoinType;
} }

View File

@ -4,10 +4,13 @@ import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.client.common.enums.RoleTypeEnum; import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
import cn.axzo.tyr.client.model.enums.IdentityType; import cn.axzo.tyr.client.model.enums.IdentityType;
import cn.axzo.tyr.client.model.req.RoleWithUserQueryReq;
import cn.axzo.tyr.server.repository.entity.SaasRole; import cn.axzo.tyr.server.repository.entity.SaasRole;
import cn.axzo.tyr.server.repository.entity.SaasRoleWithUser; import cn.axzo.tyr.server.repository.entity.SaasRoleWithUser;
import cn.axzo.tyr.server.repository.mapper.SaasRoleMapper; import cn.axzo.tyr.server.repository.mapper.SaasRoleMapper;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@ -90,5 +93,9 @@ public class SaasRoleDao extends ServiceImpl<SaasRoleMapper, SaasRole> {
.eq(SaasRole::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); .eq(SaasRole::getIsDelete, TableIsDeleteEnum.NORMAL.value).list();
} }
public Page<SaasRole> pageQueryForOUWorkspace(RoleWithUserQueryReq req) {
IPage<SaasRole> page = new Page<>(req.getPage(), req.getPageSize());
return this.baseMapper.pageQueryForOUWorkspace(page, req.getOuId(), req.getWorkspaceId(), req.getWorkspaceJoinType());
}
} }

View File

@ -4,6 +4,8 @@ import cn.axzo.tyr.client.model.enums.IdentityType;
import cn.axzo.tyr.server.repository.entity.SaasRole; import cn.axzo.tyr.server.repository.entity.SaasRole;
import cn.axzo.tyr.server.repository.entity.SaasRoleWithUser; import cn.axzo.tyr.server.repository.entity.SaasRoleWithUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;
@ -17,5 +19,7 @@ public interface SaasRoleMapper extends BaseMapper<SaasRole> {
List<SaasRoleWithUser> listSuperAdminByWorkspace(List<Long> workspaceIds); List<SaasRoleWithUser> listSuperAdminByWorkspace(List<Long> workspaceIds);
List<SaasRoleWithUser> listRoleUserByPermissionGroup(List<Long> permissionGroupIds, Set<Long> workspaceIds); List<SaasRoleWithUser> listRoleUserByPermissionGroup(List<Long> permissionGroupIds, Set<Long> workspaceIds);
Page<SaasRole> pageQueryForOUWorkspace(IPage<SaasRole> page, Long ouId, Long workspaceId, Integer workspaceJoinType);
} }

View File

@ -454,12 +454,7 @@ public class RoleServiceImpl implements RoleService {
public PageResp<RoleWithUserRes> queryRoleWithUser(RoleWithUserQueryReq req) { public PageResp<RoleWithUserRes> queryRoleWithUser(RoleWithUserQueryReq req) {
page2Default(req); page2Default(req);
//按role进行分页查询 - //按role进行分页查询 -
Page<SaasRole> rolePage = saasRoleDao Page<SaasRole> rolePage = saasRoleDao.pageQueryForOUWorkspace(req);
.page(new Page<>(req.getPage(), req.getPageSize()),
new LambdaQueryWrapper<SaasRole>()
.eq(SaasRole::getOwnerOuId, req.getOuId())
.eq(SaasRole::getWorkspaceId, req.getWorkspaceId())
.eq(SaasRole::getRoleType, RoleTypeEnum.COMMON.getValue()));
if (CollectionUtil.isEmpty(rolePage.getRecords())) { if (CollectionUtil.isEmpty(rolePage.getRecords())) {
return PageResp.list(req.getPage(), req.getPageSize(), 0L, Collections.emptyList()); return PageResp.list(req.getPage(), req.getPageSize(), 0L, Collections.emptyList());
} }

View File

@ -90,4 +90,20 @@
</select> </select>
<select id="pageQueryForOUWorkspace" resultType="cn.axzo.tyr.server.repository.entity.SaasRole">
SELECT
r.*
FROM
saas_role r
LEFT JOIN saas_role_group_relation rg ON r.id = rg.role_id
LEFT JOIN saas_role_group g ON rg.saas_role_group_id = g.id
WHERE
r.is_delete = 0
AND (
( r.workspace_id = #{workspaceId} AND r.owner_ou_id = #{ouId} AND r.role_type = 'common' )
OR
( r.owner_ou_id = - 1 AND FIND_IN_SET( #{workspaceJoinType},g.ou_type_code) > 0)
)
</select>
</mapper> </mapper>

View File

@ -10,8 +10,11 @@ import cn.axzo.tyr.client.model.req.RoleWithUserQueryReq;
import cn.axzo.tyr.client.model.res.RoleWithUserRes; import cn.axzo.tyr.client.model.res.RoleWithUserRes;
import cn.axzo.tyr.server.controller.role.SaasRoleController; import cn.axzo.tyr.server.controller.role.SaasRoleController;
import cn.axzo.tyr.server.repository.dao.SaasFeatureDao; import cn.axzo.tyr.server.repository.dao.SaasFeatureDao;
import cn.axzo.tyr.server.repository.dao.SaasRoleDao;
import cn.axzo.tyr.server.repository.dao.SaasRoleUserRelationDao; import cn.axzo.tyr.server.repository.dao.SaasRoleUserRelationDao;
import cn.axzo.tyr.server.repository.entity.SaasRole;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
@ -36,6 +39,9 @@ public class RoleUserTest {
@Autowired @Autowired
private SaasRoleController controller; private SaasRoleController controller;
@Autowired
private SaasRoleDao saasRoleDao;
@Test @Test
public void testList() { public void testList() {
saasRoleUserRelationDao.deleteByUser(BaseWorkspaceModel.builder() saasRoleUserRelationDao.deleteByUser(BaseWorkspaceModel.builder()
@ -59,5 +65,17 @@ public class RoleUserTest {
System.out.println(JSON.toJSONString(result)); System.out.println(JSON.toJSONString(result));
} }
@Test
public void testPageQueryForOUWorkspace() {
RoleWithUserQueryReq req = new RoleWithUserQueryReq();
req.setOuId(5195L);
req.setWorkspaceId(371L);
req.setWorkspaceJoinType(2);
req.setPage(1L);
req.setPageSize(20L);
Page<SaasRole> page = saasRoleDao.pageQueryForOUWorkspace(req);
System.out.println(JSON.toJSONString(page));
}
} }