diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/TyrSaasRoleUserApi.java b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/TyrSaasRoleUserApi.java index 09e90b0d..5fb80f5e 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/TyrSaasRoleUserApi.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/TyrSaasRoleUserApi.java @@ -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 batchUpdateById(@RequestBody @Valid List roleUserUpdateReqs); + + /** + * 临时支持REQ-3034,可以查询is_delete > 0的数据,后续会删除,谨慎使用 + * @param param + * @return + */ + @PostMapping("/api/roleUserRelation/temporarily/page") + ApiResult> pageRoleUserRelation(@RequestBody @Valid PageRoleUserRelationReq param); } diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/dto/SaasRoleUserRelationDTO.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/dto/SaasRoleUserRelationDTO.java new file mode 100644 index 00000000..b4b69369 --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/dto/SaasRoleUserRelationDTO.java @@ -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; +} diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/PageRoleUserRelationReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/PageRoleUserRelationReq.java new file mode 100644 index 00000000..a23b2f86 --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/PageRoleUserRelationReq.java @@ -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 workspaceOUPairs; + + private Date updateAtLE; + + private Date updateAtGE; + + private Boolean includeDelete; + + @NotEmpty(message = "roleIds不能为空") + private Set roleIds; +} diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/roleuser/RoleUserController.java b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/roleuser/RoleUserController.java index 17e1f647..d320ab66 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/roleuser/RoleUserController.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/roleuser/RoleUserController.java @@ -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 saveOrUpdate(@Valid RoleUserReq req) { @@ -288,4 +309,46 @@ public class RoleUserController implements TyrSaasRoleUserApi { public ApiResult batchUpdateById(List roleUserUpdateReqs) { return ApiResult.ok(saasRoleUserService.batchUpdateById(roleUserUpdateReqs)); } + + @Override + public ApiResult> pageRoleUserRelation(PageRoleUserRelationReq param) { + IPage page = new Page<>(param.getPage(), param.getPageSize()); + PageResp resp = new PageResp(); + + List saasRoleUserRelationDTOS = listNormalUser(param); + + if (BooleanUtils.isTrue(param.getIncludeDelete())) { + List deleteUsers = saasRoleUserRelationMapper.pageRoleUserRelation(param); + saasRoleUserRelationDTOS.addAll(deleteUsers); + } + + resp.setData(saasRoleUserRelationDTOS); + return ApiResult.ok(resp); + } + + private List 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()); + } } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/mapper/SaasRoleUserRelationMapper.java b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/mapper/SaasRoleUserRelationMapper.java index 3eabbd1f..ad0f6e40 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/mapper/SaasRoleUserRelationMapper.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/mapper/SaasRoleUserRelationMapper.java @@ -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 listRoleIds(@Param("param") ListRole listRole); + /** + * 临时支持REQ-3034,后续会删除 + * @param param + * @return + */ + List pageRoleUserRelation(@Param("param") PageRoleUserRelationReq param); + @Data @Builder @NoArgsConstructor diff --git a/tyr-server/src/main/resources/mapper/SaasRoleUserRelationMapper.xml b/tyr-server/src/main/resources/mapper/SaasRoleUserRelationMapper.xml index c42978b8..43d2ed52 100644 --- a/tyr-server/src/main/resources/mapper/SaasRoleUserRelationMapper.xml +++ b/tyr-server/src/main/resources/mapper/SaasRoleUserRelationMapper.xml @@ -14,4 +14,53 @@ AND workspace_id = #{param.workspaceId} + + \ No newline at end of file