Merge remote-tracking branch 'origin/feature/REQ-3034' into release/20241028

# Conflicts:
#	tyr-server/src/main/java/cn/axzo/tyr/server/controller/roleuser/RoleUserController.java
This commit is contained in:
lilong 2024-10-28 11:19:39 +08:00
commit 15fdf458df
6 changed files with 264 additions and 1 deletions

View File

@ -1,14 +1,27 @@
package cn.axzo.tyr.client.feign;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.framework.domain.web.result.ApiPageResult;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.model.roleuser.RoleUserUpdateReq;
import cn.axzo.tyr.client.model.roleuser.dto.GetUserAutoOwnRoleResp;
import cn.axzo.tyr.client.model.roleuser.dto.GetUserFeatureResourceIdsResp;
import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserDTO;
import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserRelationDTO;
import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserV2DTO;
import cn.axzo.tyr.client.model.roleuser.dto.SuperAminInfoResp;
import cn.axzo.tyr.client.model.roleuser.req.*;
import cn.axzo.tyr.client.model.roleuser.req.AutoOwnRoleUserReq;
import cn.axzo.tyr.client.model.roleuser.req.CreateSuperAdminRoleParam;
import cn.axzo.tyr.client.model.roleuser.req.GantOrUnGantaWorkerLeaderRoleReq;
import cn.axzo.tyr.client.model.roleuser.req.GetUserAutoOwnRoleReq;
import cn.axzo.tyr.client.model.roleuser.req.GetUserFeatureResourceIdsReq;
import cn.axzo.tyr.client.model.roleuser.req.ListRoleUserRelationParam;
import cn.axzo.tyr.client.model.roleuser.req.PageRoleUserRelationReq;
import cn.axzo.tyr.client.model.roleuser.req.RoleUserParam;
import cn.axzo.tyr.client.model.roleuser.req.RoleUserReq;
import cn.axzo.tyr.client.model.roleuser.req.SuperAdminParam;
import cn.axzo.tyr.client.model.roleuser.req.WorkerManagerRoleUserReq;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -136,4 +149,12 @@ public interface TyrSaasRoleUserApi {
*/
@PostMapping("/api/saas-role-user/batch-update-by-id")
ApiResult<Boolean> batchUpdateById(@RequestBody @Valid List<RoleUserUpdateReq> roleUserUpdateReqs);
/**
* 临时支持REQ-3034可以查询is_delete > 0的数据后续会删除谨慎使用
* @param param
* @return
*/
@PostMapping("/api/roleUserRelation/temporarily/page")
ApiResult<PageResp<SaasRoleUserRelationDTO>> pageRoleUserRelation(@RequestBody @Valid PageRoleUserRelationReq param);
}

View File

@ -0,0 +1,81 @@
package cn.axzo.tyr.client.model.roleuser.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SaasRoleUserRelationDTO {
/**
* 身份Id
*/
private Long identityId;
/**
* 身份类型 1:工人 2:从业人员 3:班组长 4:运营人员 5:政务人员
*/
private Integer identityType;
/**
* 角色Id
*/
private Long roleId;
/**
* 自然人Id
*/
private Long naturalPersonId;
/**
* 创建者
*/
private Long createBy;
/**
* 更新者
*/
private Long updateBy;
/**
* 所属单位Id 用户在当前工作台的所属单位
*/
private Long ouId;
/**
* 工作台Id
*/
private Long workspaceId;
/**
* 资源类型
*/
private Integer resourceType;
/**
* 资源Id
*/
private Long resourceId;
private Long id;
private Date createAt;
private Date updateAt;
private Long isDelete;
/**
* 角色类型
* cn.axzo.tyr.client.common.enums.RoleTypeEnum
*/
private String roleType;
private String roleCode;
}

View File

@ -0,0 +1,39 @@
package cn.axzo.tyr.client.model.roleuser.req;
import cn.axzo.basics.common.constant.enums.DeleteEnum;
import cn.axzo.tyr.client.model.base.WorkspaceOUPair;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import javax.validation.constraints.NotEmpty;
import java.util.Date;
import java.util.List;
import java.util.Set;
@SuperBuilder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageRoleUserRelationReq{
@Builder.Default
private Integer page = 1;
@Builder.Default
private Integer pageSize = 20;
@NotEmpty(message = "workspaceOUPairs不能为空")
private List<WorkspaceOUPair> workspaceOUPairs;
private Date updateAtLE;
private Date updateAtGE;
private Boolean includeDelete;
@NotEmpty(message = "roleIds不能为空")
private Set<Long> roleIds;
}

View File

@ -12,6 +12,7 @@ import cn.axzo.tyr.client.model.roleuser.RoleUserUpdateReq;
import cn.axzo.tyr.client.model.roleuser.dto.GetUserAutoOwnRoleResp;
import cn.axzo.tyr.client.model.roleuser.dto.GetUserFeatureResourceIdsResp;
import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserDTO;
import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserRelationDTO;
import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserV2DTO;
import cn.axzo.tyr.client.model.roleuser.dto.SuperAminInfoResp;
import cn.axzo.tyr.client.model.roleuser.req.AutoOwnRoleUserReq;
@ -20,6 +21,17 @@ import cn.axzo.tyr.client.model.roleuser.req.GantOrUnGantaWorkerLeaderRoleReq;
import cn.axzo.tyr.client.model.roleuser.req.GetUserAutoOwnRoleReq;
import cn.axzo.tyr.client.model.roleuser.req.GetUserFeatureResourceIdsReq;
import cn.axzo.tyr.client.model.roleuser.req.ListRoleUserRelationParam;
import cn.axzo.tyr.client.model.roleuser.req.PageRoleUserRelationReq;
import cn.axzo.tyr.client.model.roleuser.req.RoleUserParam;
import cn.axzo.tyr.client.model.roleuser.req.RoleUserReq;
import cn.axzo.tyr.client.model.roleuser.req.SuperAdminParam;
import cn.axzo.tyr.client.model.roleuser.req.WorkerManagerRoleUserReq;
import cn.axzo.tyr.client.model.roleuser.req.AutoOwnRoleUserReq;
import cn.axzo.tyr.client.model.roleuser.req.CreateSuperAdminRoleParam;
import cn.axzo.tyr.client.model.roleuser.req.GantOrUnGantaWorkerLeaderRoleReq;
import cn.axzo.tyr.client.model.roleuser.req.GetUserAutoOwnRoleReq;
import cn.axzo.tyr.client.model.roleuser.req.GetUserFeatureResourceIdsReq;
import cn.axzo.tyr.client.model.roleuser.req.ListRoleUserRelationParam;
import cn.axzo.tyr.client.model.roleuser.req.PageRoleUserRelationParam;
import cn.axzo.tyr.client.model.roleuser.req.RoleUserParam;
import cn.axzo.tyr.client.model.roleuser.req.RoleUserReq;
@ -28,14 +40,20 @@ import cn.axzo.tyr.client.model.roleuser.req.WorkerManagerRoleUserReq;
import cn.axzo.tyr.server.model.PermissionCacheKey;
import cn.axzo.tyr.server.repository.dao.SaasRoleUserRelationDao;
import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
import cn.axzo.tyr.server.repository.mapper.SaasRoleUserRelationMapper;
import cn.axzo.tyr.server.service.PermissionCacheService;
import cn.axzo.tyr.server.service.SaasRoleUserRelationService;
import cn.axzo.tyr.server.service.SaasRoleUserService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import cn.hutool.core.bean.BeanUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@ -43,6 +61,8 @@ import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
@ -59,6 +79,7 @@ public class RoleUserController implements TyrSaasRoleUserApi {
private final SaasRoleUserRelationService saasRoleUserRelationService;
private final SaasRoleUserRelationDao saasRoleUserRelationDao;
private final PermissionCacheService permissionCacheService;
private final SaasRoleUserRelationMapper saasRoleUserRelationMapper;
@Override
public ApiResult<Void> saveOrUpdate(@Valid RoleUserReq req) {
@ -288,4 +309,46 @@ public class RoleUserController implements TyrSaasRoleUserApi {
public ApiResult<Boolean> batchUpdateById(List<RoleUserUpdateReq> roleUserUpdateReqs) {
return ApiResult.ok(saasRoleUserService.batchUpdateById(roleUserUpdateReqs));
}
@Override
public ApiResult<PageResp<SaasRoleUserRelationDTO>> pageRoleUserRelation(PageRoleUserRelationReq param) {
IPage page = new Page<>(param.getPage(), param.getPageSize());
PageResp resp = new PageResp();
List<SaasRoleUserRelationDTO> saasRoleUserRelationDTOS = listNormalUser(param);
if (BooleanUtils.isTrue(param.getIncludeDelete())) {
List<SaasRoleUserRelationDTO> deleteUsers = saasRoleUserRelationMapper.pageRoleUserRelation(param);
saasRoleUserRelationDTOS.addAll(deleteUsers);
}
resp.setData(saasRoleUserRelationDTOS);
return ApiResult.ok(resp);
}
private List<SaasRoleUserRelationDTO> listNormalUser(PageRoleUserRelationReq param) {
if (CollectionUtils.isEmpty(param.getRoleIds()) && CollectionUtils.isEmpty(param.getWorkspaceOUPairs())) {
return Lists.newArrayList();
}
return saasRoleUserRelationService.listV2(ListRoleUserRelationParam.builder()
.roleIds(Lists.newArrayList(param.getRoleIds()))
.workspaceOuPairs(Optional.ofNullable(param.getWorkspaceOUPairs())
.map(e -> e.stream().map(f -> ListRoleUserRelationParam.WorkspaceOuPair.builder()
.workspaceId(f.getWorkspaceId())
.ouId(f.getOuId())
.build())
.collect(Collectors.toList()))
.orElse(null))
.build())
.stream()
.map(e -> {
SaasRoleUserRelationDTO saasRoleUserRelationDTO = SaasRoleUserRelationDTO.builder().build();
BeanUtils.copyProperties(e, saasRoleUserRelationDTO);
saasRoleUserRelationDTO.setId(e.getId());
saasRoleUserRelationDTO.setNaturalPersonId(e.getSaasRoleUser().getPersonId());
return saasRoleUserRelationDTO;
})
.collect(Collectors.toList());
}
}

View File

@ -1,5 +1,7 @@
package cn.axzo.tyr.server.repository.mapper;
import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserRelationDTO;
import cn.axzo.tyr.client.model.roleuser.req.PageRoleUserRelationReq;
import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import lombok.AllArgsConstructor;
@ -9,6 +11,7 @@ import lombok.NoArgsConstructor;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Set;
@Mapper
@ -22,6 +25,13 @@ public interface SaasRoleUserRelationMapper extends BaseMapper<SaasRoleUserRelat
*/
Set<Long> listRoleIds(@Param("param") ListRole listRole);
/**
* 临时支持REQ-3034后续会删除
* @param param
* @return
*/
List<SaasRoleUserRelationDTO> pageRoleUserRelation(@Param("param") PageRoleUserRelationReq param);
@Data
@Builder
@NoArgsConstructor

View File

@ -14,4 +14,53 @@
AND workspace_id = #{param.workspaceId}
</if>
</select>
<select id="pageRoleUserRelation" resultType="cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserRelationDTO">
SELECT t1.*,t2.role_code,t2.role_type
FROM
saas_role_user_relation t1
left join
saas_role t2
on t1.role_id = t2.id
<where>
<if test="param.workspaceOuPairs != null and param.workspaceOuPairs.size()>0">
(
<foreach collection="param.workspaceOuPairs" index="index" item="ouIdAndWorkspaceId" open="(" close=")"
separator=") or ( ">
1=1
<if test="ouIdAndWorkspaceId.workspaceId !=null">
and t1.workspace_id = #{ouIdAndWorkspaceId.workspaceId}
</if>
<if test="ouIdAndWorkspaceId.ouId !=null">
and t1.ou_id = #{ouIdAndWorkspaceId.ouId}
</if>
</foreach>
)
</if>
<if test="param.includeDelete != null and param.includeDelete == true">
AND t1.is_delete <![CDATA[ >= ]]> 0
</if>
<if test="param.includeDelete == null or param.includeDelete == false">
AND t1.is_delete = 0
</if>
<if test="param.updateAtLE != null">
AND t1.update_at <![CDATA[ <= ]]> #{param.updateAtLE}
</if>
<if test="param.updateAtGE != null">
AND t1.update_at <![CDATA[ >= ]]> #{param.updateAtGE}
</if>
<if test="param.roleIds != null and param.roleIds.size()>0">
AND t1.role_id IN
<foreach collection="param.roleIds" open="(" close=")" separator="," index="index" item="item">
#{item}
</foreach>
</if>
</where>
</select>
</mapper>