From 81c09770d32f549f6acefcc995630c38302e4753 Mon Sep 17 00:00:00 2001 From: wangjibo Date: Thu, 4 Jan 2024 16:22:54 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=8E=88=E6=9D=83=E6=88=96=E8=80=85=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E6=8E=88=E6=9D=83=E5=B9=B3=E5=8F=B0=E7=8F=AD=E7=BB=84?= =?UTF-8?q?=E9=95=BF=E5=92=8C=E9=A1=B9=E7=9B=AE=E5=86=85=E7=8F=AD=E7=BB=84?= =?UTF-8?q?=E9=95=BF=E8=A7=92=E8=89=B2=202.oms=20=E9=A2=84=E8=AE=BE?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E7=AE=A1=E7=90=86=20=E6=B7=BB=E5=8A=A0=20pro?= =?UTF-8?q?ductRoleType=20=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tyr/client/feign/TyrSaasRoleUserApi.java | 6 +++ .../model/enums/WorkerLeaderRoleEnum.java | 28 ++++++++++ .../req/GantOrUnGantaWorkerLeaderRoleReq.java | 54 +++++++++++++++++++ .../roleuser/RoleUserController.java | 6 +++ .../dao/SaasRoleUserRelationDao.java | 13 +++++ .../server/repository/entity/SaasRole.java | 5 ++ .../server/service/SaasRoleUserService.java | 6 +++ .../server/service/impl/RoleServiceImpl.java | 11 ++++ .../server/service/impl/RoleUserService.java | 30 +++++++++++ 9 files changed, 159 insertions(+) create mode 100644 tyr-api/src/main/java/cn/axzo/tyr/client/model/enums/WorkerLeaderRoleEnum.java create mode 100644 tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/GantOrUnGantaWorkerLeaderRoleReq.java 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 366aa5eb..bb3dacbe 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 @@ -31,6 +31,12 @@ public interface TyrSaasRoleUserApi { ApiResult saveOrUpdate(@RequestBody @Valid RoleUserReq req); + /** + * 授权或者取消授权平台班组长和项目内班组长角色 + */ + @PostMapping("/api/saas-role-user/grant-or-ungrant-worker-leader") + ApiResult grantOrUngrantWorkerLeader(@RequestBody @Valid GantOrUnGantaWorkerLeaderRoleReq req); + /** * 保存/更新 用户的角色,每次传入新的角色ID时都会覆盖原来的所有角色 * 此接口不能修改非管理员角色 diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/enums/WorkerLeaderRoleEnum.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/enums/WorkerLeaderRoleEnum.java new file mode 100644 index 00000000..ca1e8d0a --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/enums/WorkerLeaderRoleEnum.java @@ -0,0 +1,28 @@ +package cn.axzo.tyr.client.model.enums; + +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; + +import java.util.HashMap; +import java.util.Map; + +@AllArgsConstructor +@NoArgsConstructor +public enum WorkerLeaderRoleEnum { + ENT_TEAM_MANAGER(1, "平台班组长"), + PROJ_TEAM_MANAGER(2, "项目内班组长"); + + private Integer code; + private String desc; + + private static final Map MAPPING = new HashMap<>(); + static { + for (WorkerLeaderRoleEnum workerLeaderRoleEnum : WorkerLeaderRoleEnum.values()) { + MAPPING.put(workerLeaderRoleEnum.code, workerLeaderRoleEnum); + } + } + + public static WorkerLeaderRoleEnum apply(Integer code) { + return code == null ? null :MAPPING.get(code); + } +} \ No newline at end of file diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/GantOrUnGantaWorkerLeaderRoleReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/GantOrUnGantaWorkerLeaderRoleReq.java new file mode 100644 index 00000000..147ac4e0 --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/roleuser/req/GantOrUnGantaWorkerLeaderRoleReq.java @@ -0,0 +1,54 @@ +package cn.axzo.tyr.client.model.roleuser.req; + +import cn.axzo.tyr.client.model.enums.WorkerLeaderRoleEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + + +/** + * 授权或者取消授权接口 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class GantOrUnGantaWorkerLeaderRoleReq { + + /** + * 工作台id + */ + @NotNull + private Long workspaceId; + + /** + * 单位id + */ + @NotNull + private Long ouId; + + /** + * 身份id + */ + @NotNull + private Long identityId; + + /** + * 自然人id + */ + @NotNull + private Long personId; + + /** + * true 授权 + * false 取消授权 + */ + @NotNull + private Boolean grant; + + @NotNull + private WorkerLeaderRoleEnum workerLeaderRoleEnum; +} 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 ace06058..c85b9cbe 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 @@ -40,6 +40,12 @@ public class RoleUserController implements TyrSaasRoleUserApi { return ApiResult.ok(); } + @Override + public ApiResult grantOrUngrantWorkerLeader(GantOrUnGantaWorkerLeaderRoleReq req) { + saasRoleUserService.grantOrUngrantWorkerLeader(req); + return ApiResult.ok(); + } + @Override public ApiResult batchSaveOrUpdate(List req) { for (RoleUserReq roleUserReq : req) { diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/dao/SaasRoleUserRelationDao.java b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/dao/SaasRoleUserRelationDao.java index 533f84f7..2fedb8b4 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/dao/SaasRoleUserRelationDao.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/dao/SaasRoleUserRelationDao.java @@ -79,5 +79,18 @@ public class SaasRoleUserRelationDao extends ServiceImpl { private Long ownerOuId; + /** + * 产品单位类型 + * 1:总包 2:建设单位 3:监理单位 4:劳务分包 5:专业分包 6:OMS通用 7:企业通用 8:企业内班组 9:项目内班组 + */ + private Integer productUnitType; /** * 创建者 diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasRoleUserService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasRoleUserService.java index 9a3f2b5d..37fc170c 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasRoleUserService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasRoleUserService.java @@ -71,4 +71,10 @@ public interface SaasRoleUserService { * 删除单位参与的工作台的所有的人员与角色。 目前主要是用于移除参与单位的地方 */ void removeWorkspaceOuAllUserRole(Long workspaceId, Long ouId); + + + /** + * 授权或者取消授权平台班组长和项目内班组长角色 + */ + void grantOrUngrantWorkerLeader(GantOrUnGantaWorkerLeaderRoleReq req); } \ No newline at end of file diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java index 65d8fe5f..fcd2921c 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java @@ -376,6 +376,7 @@ public class RoleServiceImpl implements RoleService { saasRole.setWorkspaceId(saveOrUpdateRole.getWorkspaceId()); saasRole.setOwnerOuId(saveOrUpdateRole.getOwnerOuId()); saasRole.setWorkspaceType(Integer.parseInt(saveOrUpdateRole.getGroupTree().get(0).getWorkspaceTypeCode())); + saasRole.setProductUnitType(setProductUnitType(saveOrUpdateRole.getGroupTree().get(0))); saasRole.setUpdateBy(saveOrUpdateRole.getOperatorId()); saasRole.setUpdateAt(now); String message = "角色校验异常"; @@ -429,6 +430,16 @@ public class RoleServiceImpl implements RoleService { return saasRole; } + /** + * 产品单位类型 + */ + private Integer setProductUnitType(SaveOrUpdateRoleVO.GroupInfoVO groupInfoVO) { + SaasRoleGroup saasRoleGroup = saasRoleGroupDao.lambdaQuery() + .in(SaasRoleGroup::getId, groupInfoVO.getId()) + .eq(SaasRoleGroup::getIsDelete, TableIsDeleteEnum.NORMAL.value).one(); + return Integer.parseInt(saasRoleGroup.getOuTypeCode()); + } + private void validFeature(List featureIds) { if (CollectionUtils.isEmpty(featureIds)) { return; diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java index b2c28699..dc5770f6 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleUserService.java @@ -6,8 +6,10 @@ import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.tyr.client.common.enums.RoleTypeEnum; import cn.axzo.tyr.client.model.BaseWorkspaceModel; import cn.axzo.tyr.client.model.enums.IdentityType; +import cn.axzo.tyr.client.model.enums.WorkerLeaderRoleEnum; import cn.axzo.tyr.client.model.roleuser.dto.SuperAminInfoResp; 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.RoleUserReq; import cn.axzo.tyr.client.model.roleuser.req.SuperAdminParam; import cn.axzo.tyr.server.repository.dao.SaasRoleDao; @@ -49,6 +51,10 @@ public class RoleUserService implements SaasRoleUserService { // 单位类型默认角色关系,后面可以座位管理员的逻辑进行迭代 @Value("#{${participateUnitDefaultRoleId:{}}}") public Map participateUnitDefaultRoleId; + @Value("${platWorkerLeaderRoleId:100000}") + private Long entWorkerLeaderRoleId; + @Value("${platWorkerLeaderRoleId:100001}") + private Long projWorkerLeaderRoleId; /** * 获取分包负责人等特殊角色 @@ -276,4 +282,28 @@ public class RoleUserService implements SaasRoleUserService { roleUserRelationDao.removeWorkspaceOuAllUserRole(workspaceId, ouId); } + @Override + public void grantOrUngrantWorkerLeader(GantOrUnGantaWorkerLeaderRoleReq req) { + Boolean grant = req.getGrant(); + // 授权 + if(Objects.equals(grant, Boolean.TRUE)){ + SaasRoleUserRelation saasRoleUserRelation = new SaasRoleUserRelation(); + saasRoleUserRelation.setIdentityId(req.getIdentityId()); + saasRoleUserRelation.setIdentityType(IdentityType.WORKER_LEADER.getCode()); + saasRoleUserRelation.setNaturalPersonId(req.getPersonId()); + saasRoleUserRelation.setOuId(req.getOuId()); + saasRoleUserRelation.setWorkspaceId(req.getWorkspaceId()); + if(Objects.equals(req.getWorkerLeaderRoleEnum(), WorkerLeaderRoleEnum.ENT_TEAM_MANAGER)){ + // 平台班组长 + saasRoleUserRelation.setRoleId(entWorkerLeaderRoleId); + }else{ + // 项目内班组长 + saasRoleUserRelation.setRoleId(projWorkerLeaderRoleId); + } + roleUserRelationDao.save(saasRoleUserRelation); + }else{ + // 取消授权 + roleUserRelationDao.removeWorkerLeaderRole(req.getIdentityId(), IdentityType.WORKER_LEADER, req.getWorkspaceId(), req.getOuId()); + } + } }