Merge remote-tracking branch 'origin/master' into feature/REQ-2595

# Conflicts:
#	tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureResourceServiceImpl.java
#	tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasRoleUserRelationServiceImpl.java
#	tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java
This commit is contained in:
lilong 2024-11-04 14:51:13 +08:00
commit 8bb439593b
188 changed files with 8506 additions and 97 deletions

View File

@ -15,8 +15,8 @@
<name>tyr</name>
<modules>
<module>tyr-server</module>
<module>tyr-api</module>
<module>tyr-server</module>
</modules>
<properties>

View File

@ -32,6 +32,10 @@
<artifactId>dao-support-lib</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.axzo.basics</groupId>
<artifactId>basics-profiles-common</artifactId>
</dependency>
<dependency>
<groupId>cn.axzo.maokai</groupId>

View File

@ -0,0 +1,184 @@
package cn.axzo.tyr.client.common;
import cn.axzo.basics.common.constant.enums.OrganizationalNodeTypeEnum;
import cn.axzo.basics.common.constant.enums.OrganizationalUnitTypeEnum;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.stream.Collectors;
public class SaasRoleFits {
private static Map<Long, OrganizationalUnitTypeEnum> ouTypeMap = new HashMap<>();
private static Map<Integer, Long> ouTypeValueToBitMap = new HashMap<>();
static {
ouTypeMap.put(1L, OrganizationalUnitTypeEnum.PRIMARY_CONTRACTING_UNIT); //总包
ouTypeMap.put(2L, OrganizationalUnitTypeEnum.CONSTRUCTION_UNIT); //建设单位
ouTypeMap.put(4L, OrganizationalUnitTypeEnum.SUPERVISION_UNIT); //监理单位
ouTypeMap.put(8L, OrganizationalUnitTypeEnum.LABOR_SUBCONTRACTING); //劳务分包
ouTypeMap.put(16L, OrganizationalUnitTypeEnum.PROFESSIONAL_SUBCONTRACTING); //专业分包
ouTypeMap.put(32L, OrganizationalUnitTypeEnum.PROJECT_OUT_TEAM); //平台班组
ouTypeMap.put(64L, OrganizationalUnitTypeEnum.AXZ_PLATFORM); //平台班组
for(Entry<Long, OrganizationalUnitTypeEnum> e : ouTypeMap.entrySet())
ouTypeValueToBitMap.put(e.getValue().getValue(), e.getKey());
}
static Map<Long, OrganizationalNodeTypeEnum> ouNodeTypeMap = new HashMap<>();
private static Map<Integer, Long> ouNodeTypeValueToBitMap = new HashMap<>();
static {
ouNodeTypeMap.put(1L, OrganizationalNodeTypeEnum.DEPARTMENT); // 部门
ouNodeTypeMap.put(2L, OrganizationalNodeTypeEnum.TEAM); //班组
ouNodeTypeMap.put(3L, OrganizationalNodeTypeEnum.GROUP); // 小组
ouNodeTypeMap.put(4L, OrganizationalNodeTypeEnum.PROJECT_TEAM); // 项目内班组
ouNodeTypeMap.put(5L, OrganizationalNodeTypeEnum.PROJECT_GROUP); // 项目内小组
for(Entry<Long, OrganizationalNodeTypeEnum> e : ouNodeTypeMap.entrySet())
ouNodeTypeValueToBitMap.put(e.getValue().getValue(), e.getKey());
}
public static List<OrganizationalUnitTypeEnum> splitToFitOuTypeEnums(Long fitOuType) {
if (isZero(fitOuType)) {
return new ArrayList<>(ouTypeMap.values());
}
List<OrganizationalUnitTypeEnum> list = toListByCheckBit(fitOuType, ouTypeMap);
return list;
}
public static List<Integer> splitToFitOuTypeValues(Long fitOuType) {
if (isZero(fitOuType)) {
return ouTypeMap.values().stream().map(OrganizationalUnitTypeEnum::getValue)
.collect(Collectors.toList());
}
List<OrganizationalUnitTypeEnum> list = toListByCheckBit(fitOuType, ouTypeMap);
return list.stream().map(OrganizationalUnitTypeEnum::getValue).collect(Collectors.toList());
}
public static List<Integer> splitToFitOuNodeTypeValues(Long fitOuNodeType) {
if (isZero(fitOuNodeType)) {
return ouNodeTypeMap.values().stream().map(OrganizationalNodeTypeEnum::getValue)
.collect(Collectors.toList());
}
List<OrganizationalNodeTypeEnum> list = toListByCheckBit(fitOuNodeType, ouNodeTypeMap);
return list.stream().map(OrganizationalNodeTypeEnum::getValue).collect(Collectors.toList());
}
public static List<OrganizationalNodeTypeEnum> splitToFitOuNodeTypeEnums(Long fitOuNodeType) {
if (isZero(fitOuNodeType)) {
return new ArrayList<>(ouNodeTypeMap.values());
}
List<OrganizationalNodeTypeEnum> list = toListByCheckBit(fitOuNodeType, ouNodeTypeMap);
return list;
}
public static Long concatFitOuTypeByList(List<OrganizationalUnitTypeEnum> fitOuTypeList) {
if (CollectionUtils.isEmpty(fitOuTypeList)) {
return Long.valueOf(OrganizationalUnitTypeEnum.ALL_TYPE.getBitValue());
}
Set<OrganizationalUnitTypeEnum> set = new HashSet<>(fitOuTypeList);
Long result = 0L;
for (OrganizationalUnitTypeEnum type : set) {
result += ouTypeValueToBitMap.get(type.getValue());
}
return result;
}
public static Long concatFitOuNodeTypeByList(List<OrganizationalNodeTypeEnum> fitOuNodeTypeList) {
if (CollectionUtils.isEmpty(fitOuNodeTypeList)) {
return Long.valueOf(OrganizationalNodeTypeEnum.ALL_TYPE.getBitValue());
}
Set<OrganizationalNodeTypeEnum> set = new HashSet<>(fitOuNodeTypeList);
Long result = 0L;
for (OrganizationalNodeTypeEnum type : set) {
result += ouNodeTypeValueToBitMap.get(type.getValue());
}
return result;
}
public static Long concatFitOuTypeByValues(List<Integer> fitOuTypeList) {
if (CollectionUtils.isEmpty(fitOuTypeList)) {
return Long.valueOf(OrganizationalUnitTypeEnum.ALL_TYPE.getBitValue());
}
Set<Integer> set = new HashSet<>(fitOuTypeList);
Long result = 0L;
for(Integer type : set) {
result |= ouTypeValueToBitMap.get(type);
}
return result;
}
public static Long concatFitOuNodeTypeByValues(List<Integer> fitOuNodeTypeList) {
if (CollectionUtils.isEmpty(fitOuNodeTypeList)) {
return Long.valueOf(OrganizationalNodeTypeEnum.ALL_TYPE.getBitValue());
}
Set<Integer> set = new HashSet<>(fitOuNodeTypeList);
Long result = 0L;
for (Integer type : set) {
result |= ouNodeTypeValueToBitMap.get(type);
}
return result;
}
public static boolean isFitOuType(Long fitOuTypeBit, Integer ouType) {
if (fitOuTypeBit == null || fitOuTypeBit == 0 || fitOuTypeBit == 65535L) {
return true;
}
Long bit = ouTypeValueToBitMap.get(ouType);
long result = bit & fitOuTypeBit;
return result > 0;
}
public static boolean isFitOuNodeType(Long fitOuNodeTypeBit, Integer ouNodeType) {
if (fitOuNodeTypeBit == null || fitOuNodeTypeBit == 0 || fitOuNodeTypeBit == 65535L) {
return true;
}
Long bit = ouNodeTypeValueToBitMap.get(ouNodeType);
long result = bit & fitOuNodeTypeBit;
return result > 0;
}
///以下是工具函数
private static boolean isZero(Long l) {
if (l == null) {
return true;
}
if (l == 0L) {
return true;
}
if (l == 65535L) {
return true;
}
return false;
}
private static <T> List<T> toListByCheckBit(Long fitOuType, Map<Long, T> map) {
if(fitOuType == null || fitOuType == 0L)
return Collections.emptyList();
List<T> list = new ArrayList<>();
for(Long key : map.keySet()) {
long result = fitOuType & key;
if(result > 0L) {
list.add(map.get(key));
}
}
return list;
}
public static void main(String[] args) {
List<Integer> list = SaasRoleFits.splitToFitOuTypeValues(1+2+4L);
System.out.println(list);
Long value = SaasRoleFits.concatFitOuNodeTypeByValues(list);
System.out.println(value);
}
}

View File

@ -0,0 +1,40 @@
package cn.axzo.tyr.client.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* @author cn
* @version 1.0
* @description
* @date 2022/5/18 14:57
*
* @deprecated 这个类只用在历史代码迁移上新的业务里不要用这个
* 因为一个Feature可能不只是属于一个产品类型就像一个Feature不只是属于一个产品板块一样
* 这种单一化的判断会引来新的BUG
*
*/
@Getter
@RequiredArgsConstructor
@Deprecated
public enum ProductTypeEnum {
/**
* 总包企业产品
*/
PT_ENT_ZB(1, "PT_ENT_ZB"), //原来叫CEMS但这个名字跟terminal搅在一起了所以重新做了枚举值来区分
/**
* 总包项目产品
*/
PT_PROJ(2, "PT_PROJ"), //原来叫PMS但这个名字跟terminal搅在一起了所以重新做了枚举值来区分
PT_OMS(6, "PT_OMS") //
;
//TODO:以后增加其他的产品类型 -- 3:政企产品 4:分包企业产品 5:班组产品
@EnumValue
private final Integer code;
private final String name;
}

View File

@ -11,12 +11,12 @@ import lombok.Getter;
* @date 2022/7/4 10:51
*/
public enum SaasPositionEnum {
PLAT_TEAM_OWNER("plat_teamowner", "平台级班组长"),
PLAT_ACTING_MONITOR("plat_actingmonitor", "班组管理员"),
PLAT_GROUP_LEADER("plat_groupleader", "平台级小组长"),
WORKSPACE_TEAM_OWNER("workspace_teamowner", "工作台级班组长"),
WORKSPACE_ACTING_MONITOR("workspace_actingmonitor", "工作台级代班长"),
WORKSPACE_GROUP_LEADER("workspace_groupleader", "工作台级小组长"),;
PLAT_TEAM_OWNER("plat_teamowner", "平台级班组长", 8),
PLAT_ACTING_MONITOR("plat_actingmonitor", "班组管理员", 8),
PLAT_GROUP_LEADER("plat_groupleader", "平台级小组长", 8),
WORKSPACE_TEAM_OWNER("workspace_teamowner", "工作台级班组长", 9),
WORKSPACE_ACTING_MONITOR("workspace_actingmonitor", "工作台级代班长", 9),
WORKSPACE_GROUP_LEADER("workspace_groupleader", "工作台级小组长", 9),;
@Getter
@EnumValue
@ -26,9 +26,13 @@ public enum SaasPositionEnum {
@Getter
private final String desc;
SaasPositionEnum(String value, String desc) {
@Getter
private final Integer productUnitType;
SaasPositionEnum(String value, String desc, Integer productUnitType) {
this.code = value;
this.desc = desc;
this.productUnitType = productUnitType;
}
public static SaasPositionEnum getValueByCode(String code) {

View File

@ -12,10 +12,13 @@ import cn.axzo.tyr.client.model.product.ProductSearchListReq;
import cn.axzo.tyr.client.model.product.ProductSearchPageReq;
import cn.axzo.tyr.client.model.product.ProductUpdateReq;
import cn.axzo.tyr.client.model.product.ProductVO;
import cn.axzo.tyr.client.model.req.ProductQueryReq;
import cn.axzo.tyr.client.model.req.ProductSaveReq;
import cn.axzo.tyr.client.model.req.UpdateProductStatusReq;
import cn.axzo.tyr.client.model.res.GovernmentTerminalResp;
import cn.axzo.tyr.client.model.res.ProductQueryResp;
import cn.axzo.tyr.client.model.res.WorkspaceProductResp;
import cn.azxo.framework.common.model.CommonResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
@ -25,6 +28,7 @@ import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Map;
@ -174,4 +178,20 @@ public interface ProductApi {
*/
@PostMapping("api/auth/product/getDetail")
ApiResult<ProductVO> getDetail(@Validated @RequestBody ProductDetailReq req);
/**
* 获取产品列表
*/
@PostMapping("api/product/listWithOutDelete")
CommonResponse<List<ProductQueryResp>> listWithOutDelete(@RequestBody @Valid ProductQueryReq req);
/**
* 用于创建/获取OMS的产品使用
* 主要用于OMS第一次创建服务包时进行数据处理使用
*
* 首先会获取OMS类型的基础产品获取成功就直接返回
* 未获取到会直接创建一个类型是OMS的产品默认选中所有的OMS类型菜单
*/
@PostMapping("api/product/createOrGetOmsProduct")
CommonResponse<Long> createOrGetOmsProduct();
}

View File

@ -0,0 +1,27 @@
package cn.axzo.tyr.client.feign;
import cn.axzo.tyr.client.model.permission.IdentityAndAccountResp;
import cn.axzo.tyr.client.model.permission.IdentityKey;
import cn.axzo.tyr.client.model.permission.QueryIdentityByPermissionReq;
import cn.azxo.framework.common.model.CommonResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import javax.validation.Valid;
import java.util.List;
/**
* @author : liuchuntao
* @date : 2022/6/9 14:40
* @description : 权限-与人相关
*/
@FeignClient(name = "tyr", url = "${axzo.service.tyr:http://tyr:8080}")
public interface SaasAuthApi {
@PostMapping("api/feature/findIdentityKeysByParams")
CommonResponse<List<IdentityKey>> findIdentityKeysByParams(@RequestBody @Valid QueryIdentityByPermissionReq req);
@PostMapping("api/feature/findIdentityAndAccountInfosByParams")
CommonResponse<List<IdentityAndAccountResp>> findIdentityAndAccountInfosByParams(@RequestBody @Valid QueryIdentityByPermissionReq req);
}

View File

@ -0,0 +1,40 @@
package cn.axzo.tyr.client.feign;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.model.permission.ApplicationFeatureRes;
import cn.axzo.tyr.client.model.permission.GetInfoByMicroAppItemIdReq;
import cn.axzo.tyr.client.model.permission.SaasFeatureRes;
import cn.axzo.tyr.client.model.req.GetByIdsReq;
import cn.axzo.tyr.client.model.req.ListAllFeatureByTerminalReq;
import cn.axzo.tyr.client.model.res.SaasFeatureBO;
import cn.azxo.framework.common.model.CommonResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
* @author cn
* @version 1.0
* @description
* @date 11/23/2022 11:06 AM
*/
@FeignClient(name = "tyr", url = "${axzo.service.tyr:http://tyr:8080}")
public interface SaasFeatureApi {
/**
* 获取所有原生和小程序 (只取第二级数据 防止菜单配置错误 如下 (模块-小程序-小程序))
*/
@PostMapping("/api/app/application/feature")
CommonResponse<List<ApplicationFeatureRes>> getAppApplicationFeature(@RequestBody List<String> terminals);
@PostMapping("/api/saasFeature/getInfoByMicroAppItemId")
ApiResult<List<SaasFeatureRes>> getInfoByMicroAppItemId(@RequestBody GetInfoByMicroAppItemIdReq req);
@PostMapping("/api/saasFeature/getByIds")
ApiResult<List<SaasFeatureBO>> getByIds(@RequestBody GetByIdsReq req);
@PostMapping("/api/saasFeature/listAllFeatureByTerminal")
ApiResult<List<SaasFeatureBO>> listAllFeatureByTerminal(@RequestBody ListAllFeatureByTerminalReq req);
}

View File

@ -2,7 +2,11 @@ package cn.axzo.tyr.client.feign;
import cn.axzo.framework.domain.web.result.ApiPageResult;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.model.permission.ListByWorkspaceIdAndOuIdReq;
import cn.axzo.tyr.client.model.permission.ListFeatureIdByGroupIdsReq;
import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq;
import cn.axzo.tyr.client.model.res.SaasPermissionGroupRes;
import cn.axzo.tyr.client.model.res.SaasPgroupPermissionRelationRes;
import cn.axzo.tyr.client.model.vo.DeletePermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO;
import cn.axzo.tyr.client.model.vo.SaveOrUpdatePermissionGroupVO;
@ -52,4 +56,10 @@ public interface SaasPermissionGroupApi {
@PostMapping("/api/saasPermissionGoup/deletePermissionGroupSpecial")
ApiResult<Void> deletePermissionGroupSpecial(@RequestBody @Valid DeletePermissionGroupVO group);
@PostMapping("/api/saasPermissionGoup/listByWorkspaceIdAndOuId")
ApiResult<List<SaasPermissionGroupRes>> listByWorkspaceIdAndOuId(@RequestBody @Valid ListByWorkspaceIdAndOuIdReq group);
@PostMapping("/api/saasPermissionGoup/listFeatureIdByGroupIds")
ApiResult<List<SaasPgroupPermissionRelationRes>> listFeatureIdByGroupIds(@RequestBody @Valid ListFeatureIdByGroupIdsReq group);
}

View File

@ -0,0 +1,26 @@
package cn.axzo.tyr.client.feign;
import cn.axzo.tyr.client.model.permission.SaasPositionTemplateExBO;
import cn.axzo.tyr.client.model.permission.SaasPositionTemplateReq;
import cn.azxo.framework.common.model.CommonResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
* 职位模板职位模板的权限树相关的API
**/
@FeignClient(name = "tyr", url = "${axzo.service.tyr:http://tyr:8080}")
public interface SaasPositionTemplateApi {
/**
* 查询 职位权限集分类权限集
* @param req
* @return
*/
@PostMapping("api/saas/positionTemplate/list")
CommonResponse<List<SaasPositionTemplateExBO>> findPositionTemplateWithPermissionGroup(@RequestBody SaasPositionTemplateReq req);
}

View File

@ -0,0 +1,65 @@
package cn.axzo.tyr.client.feign;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import cn.axzo.tyr.client.model.permission.IdentityAndAccountResp;
import cn.axzo.tyr.client.model.permission.SaasUserRoleExBO;
import cn.axzo.tyr.client.model.permission.WorkspaceGrantAdminRoleByPhoneReq;
import cn.axzo.tyr.client.model.permission.WorkspaceGrantAdminRoleReq;
import cn.axzo.tyr.client.model.req.ListUserRoleByParams;
import cn.axzo.tyr.client.model.req.QuerySuperAdminReq;
import cn.axzo.tyr.client.model.req.UpdateUserJobReq;
import cn.axzo.tyr.client.model.res.SuperAminInfoResp;
import cn.azxo.framework.common.model.CommonResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.Valid;
import java.util.List;
/**
* 2022-06-13高伟陈亮谭杰评审了此API
*
* @author : liuchuntao
* @description : saas角色处理
*/
@FeignClient(name = "tyr", url = "${axzo.service.tyr:http://tyr:8080}")
@Validated
public interface SaasRoleApi {
/**
* workpaceId + ownerOuId + roleId + identifyId 赋予角色支持角色赋予的同时 角色创建
* work for: 组织 + 服务包
*/
@PostMapping("api/saas/role/grantAdminRole")
CommonResponse<Boolean> grantAdminRole(@RequestBody @Valid List<WorkspaceGrantAdminRoleReq> req);
/**
* workpaceId + ownerOuId + roleId + 手机号 + 姓名 赋予角色支持角色赋予的同时 角色创建
* work for: 组织 + 服务包
*/
@PostMapping("api/saas/role/grantAdminRoleByPhone")
CommonResponse<List<IdentityAndAccountResp>> grantAdminRoleByPhone(@RequestBody @Valid List<WorkspaceGrantAdminRoleByPhoneReq> req);
@PostMapping("api/saas/role/user/update")
CommonResponse<Boolean> updateUserRole(@RequestBody @Valid UpdateUserJobReq req);
/**
* @param adminReqs
* @return
*/
@PostMapping("api/saas/role/batchFindSuperAdmin")
CommonResponse<List<SuperAminInfoResp>> batchFindSuperAdmin(@RequestBody @Valid List<QuerySuperAdminReq> adminReqs);
/**
* 根据 工作台id + 单位id 查询已关联的人员列表 work for: 工作流
*/
@PostMapping("api/saas/role/findSuperAdmin")
CommonResponse<SuperAminInfoResp> findSuperAdmin(@RequestBody @Valid QuerySuperAdminReq req);
@PostMapping("api/saas/role/listUserRoleExByParams")
CommonResponse<List<SaasUserRoleExBO>> getUserRoleExListMapByIdentityIdAndWorkspaceId(@RequestBody @Valid ListUserRoleByParams req);
}

View File

@ -0,0 +1,29 @@
package cn.axzo.tyr.client.feign;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.model.req.GetByIdsReq;
import cn.axzo.tyr.client.model.req.WorkspaceUpdateUserRoleDTO;
import cn.axzo.tyr.client.model.res.SaasFeatureBO;
import cn.azxo.framework.common.model.CommonResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @author yanglin
*/
@FeignClient(name = "tyr", url = "${axzo.service.tyr:http://tyr:8080}")
public interface SaasRoleUserRelationApi {
/**
* 用户帐户注销
*/
@PostMapping("api/roleUserRelation/deleteByPersonId")
CommonResponse<Boolean> deleteByPersonId(@RequestParam("personId") Long personId);
@PostMapping("/api/roleUserRelation/updateWorkspaceUserRoles")
ApiResult<Boolean> updateWorkspaceUserRoles(@RequestBody WorkspaceUpdateUserRoleDTO req);
}

View File

@ -1,14 +1,38 @@
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.permission.BaseIdentityReq;
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 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.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 org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -136,4 +160,15 @@ 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);
@PostMapping("/api/saas-role-user/batch-update-identity-by-id")
ApiResult<Void> updateIdentityId(@RequestBody @Valid List<BaseIdentityReq> req);
}

View File

@ -0,0 +1,28 @@
package cn.axzo.tyr.client.model.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum FeatureTypeEnum {
/**
* 0.模块 1.菜单 2页面 3功能
*/
/**
* 枚举值
*/
MODEL(0,"模块"),
MENU(1,"菜单"),
PAGE(2,"2页面"),
FEATURE(3,"页面元素");
@EnumValue
@JsonValue //标记json返回的值
public final Integer code;
public final String name;
}

View File

@ -0,0 +1,45 @@
package cn.axzo.tyr.client.model.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.Arrays;
/**
* @author tanjie@axzo.cn
* @date 2022/10/10 10:50
*/
@Getter
@RequiredArgsConstructor
public enum SaasJobTypeEnum {
//主岗
MASTER_JOB(1,"岗位"),
//兼岗
SLAVE_JOB(2,"协助岗位");
@EnumValue
@JsonValue
private Integer value;
private String desc;
SaasJobTypeEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
public static SaasJobTypeEnum create(Integer value){
return match(value);
}
public static SaasJobTypeEnum match(Integer saasJobType) {
return Arrays.stream(values()).filter(e -> e.getValue().equals(saasJobType)).findFirst().get();
}
public boolean isMaster() {
return value.equals(MASTER_JOB.getValue());
}
}

View File

@ -0,0 +1,53 @@
package cn.axzo.tyr.client.model.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 3A 里面这个类的 code 值可以直接对应到 workspaceType
*
* 尽量不用枚举的文字用数字就好
*
*
*/
@Getter
public enum WorkspaceTypeWithLegacyEnum {
/**
* 枚举值
*/
ENT_SPACE(1, "CEMS"),
PROJ_SPACE(2, "CMS"),
OMS_SPACE(6, "OMS");
@EnumValue
@JsonValue //标记json返回的值
private final Integer code;
private final String name;
WorkspaceTypeWithLegacyEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
private static Map<Integer, WorkspaceTypeWithLegacyEnum> map = null;
public static WorkspaceTypeWithLegacyEnum getByCode(Integer code) {
if (map == null) {
map = Arrays.stream(values()).collect(Collectors.toMap(WorkspaceTypeWithLegacyEnum::getCode, Function.identity()));
}
return map.get(code);
}
public boolean isCmsProject() {
return this.equals(WorkspaceTypeWithLegacyEnum.PROJ_SPACE);
}
}

View File

@ -0,0 +1,30 @@
package cn.axzo.tyr.client.model.permission;
import javax.validation.constraints.NotNull;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/5/11 14:09
* @description : 账户绑定自然人
*/
@Data
public class AccountBindPersonReq {
/**
* 账户Id
*/
private Long accountId;
/**
* 手机号
*/
private String phone;
/**
* 自然人Id
*/
@NotNull(message = "自然人Id不能为空")
private Long naturalPersonId;
}

View File

@ -0,0 +1,64 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ApplicationFeatureRes {
/**
* 菜单id
*/
private Long featureId;
/**
* 菜单名称
*/
private String featureName;
/**
* 父节点菜单id
*/
private Long parentFeatureId;
/**
* 父节点菜单名称
*/
private String parentFeatureName;
/**
* 图标名(原生使用)
* 小程序使用自己配置中的图标
*/
private String icon;
/**
* 1:cms 2:小程序 4:原生 如果菜单同时又对应app上展示 则填写对应linkUrl 和linkExt
*/
private Integer linkType;
/**
* 小程序id(小程序使用 关联micro_app_item id)
*/
private String microAppItemId;
/**
* 路由地址(小程序使用)
*/
private String linkUrl;
/**
* 扩展字段(原生使用)
*/
private String linkExt;
/**
*
*/
private String terminal;
}

View File

@ -0,0 +1,57 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author : liuchuntao
* @date : 2022/6/14 18:37
* @description : 获取权限信息基础参数
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class BaseAuthorizationReq {
/**
* 身份Id
*/
private Long identityId;
/**
* 身份类型
*/
private IdentityType identityType;
private Integer identityTypeInt;
public Integer getIdentityTypeInt() {
if (identityType == null) {
return null;
}
return identityType.getCode();
}
/**
* 工作台Id
*/
private Long workspaceId;
/**
* 单位Id
*/
private Long ouId;
/**
* 指定端的权限
*/
private String terminal;
private Integer ouType;
}

View File

@ -0,0 +1,28 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/6/5 10:53
* @description : 账号合并身份信息
*/
@Data
public class BaseIdentityReq {
/**
* 原身份Id
*/
private Long oldIdentityId;
/**
* 新身份Id
*/
private Long newIdentityId;
/**
* 身份类型
*/
private Integer identityType;
}

View File

@ -0,0 +1,30 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CommonUserReq {
/**
* 身份Id
*/
private Long identityId;
/**
* 身份类型
*/
private IdentityType identityType;
/**
* 指定端的权限
*/
private String terminal;
}

View File

@ -0,0 +1,22 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
/**
* 这个类只有两个字段 如果需要增加字段的请写新类继承它
*/
@Data
public class CommonWorkspaceIdAndOuIdReq {
/**
* 工作台id
*/
private Long workspaceId;
/**
* 单位id : 非必填
*/
private Long ouId;
// 这个类只有两个字段 如果需要增加字段的请写新类继承它
}

View File

@ -0,0 +1,30 @@
package cn.axzo.tyr.client.model.permission;
import java.util.List;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
/**
*/
@Data
public class CreatePermissionGroupReq{
/**
* 权限集名称
*/
@NotBlank(message = "权限集名称不能为空")
@Length(max = 20, message = "权限集名称不能超过20个字符")
private String name;
/**
* 权限集的具体权限对应的功能id 列表
*/
@NotEmpty(message = "权限集不能为空")
private List<Long> featureIds;
/**
* 备注
*/
private String description;
}

View File

@ -0,0 +1,16 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
/**
* @author: wangli
* @date: 2022/5/27 15:42
*/
@Data
public class CreateResRoleDTO {
/**
* 工作台ID
*/
private Long workspaceId;
}

View File

@ -0,0 +1,46 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author : liuchuntao
* @date : 2022/5/19 15:35
* @description :
*/
@Data
public class CreateRoleReq {
@NotNull(message = "身份Id不能为空")
private Long identityId;
@NotNull(message = "身份类型不能为空")
private Long identityType;
/**
* 自然人Id
*/
@NotNull(message = "自然人Id不能为空")
private Long naturalPersonId;
/**
* 手机号
*/
@NotNull(message = "手机号不能为空")
private String phone;
@NotEmpty(message = "角色Id集合不能为空")
private List<Long> roleIds;
@NotNull(message = "工作台Id不能为空")
private Long workspaceId;
/**
* 单位Id
*/
@NotNull(message = "单位Id不能为空")
private Long organizationalUnitId;
}

View File

@ -0,0 +1,34 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/5/27 18:26
* @description :
*/
@Data
public class CreateWorkspaceAdminDto {
/**
* 身份Id
*/
private Long identityId;
/**
* 身份类型
*/
private Integer identityType;
/**
* 工作台Id
*/
private Long workspaceId;
/**
* 单位Id
*/
private Long ouId;
}

View File

@ -0,0 +1,27 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
/**
* @author zhangPeng
* @description
* @date 2021/1/26 17:22
*/
@Data
public class DecodeQrCodeBo {
/**
* 目标值 - 类型不同值不同
*/
private String value;
/**
* 类型 - personal(个人信息) - team班组 - http三方地址
*/
private String type;
/**
* 属于那一个平台的二维码
*/
private String terminal;
}

View File

@ -0,0 +1,18 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
/**
*/
@Data
public class DeletePermissionGroupReq {
/**
* 主键id
*/
private Long id;
/**
* 权限集描述
*/
private String description;
}

View File

@ -0,0 +1,15 @@
package cn.axzo.tyr.client.model.permission;
import java.util.List;
import lombok.Data;
/**
*/
@Data
public class DeleteRoleOfUserReq {
/**
* 用户角色关联关系的主键集合
*/
private List<Long> ids;
}

View File

@ -0,0 +1,23 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class FeatureByIdentityResp {
private Long identityId;
private IdentityType identityType;
private List<String> featureCodes;
}

View File

@ -0,0 +1,24 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class FeatureIdAndFeaturePathBO {
/**
* 菜单id
*/
private Long featureId;
/**
* 菜单表path字段
*/
private String featurePath;
}

View File

@ -0,0 +1,39 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @author: cl
* @description: 授权功能请求实体
* @date: 2022-06-17
**/
@Getter
@Setter
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class FeatureItemResp {
/**
* 是否授权
*/
private Boolean isGrant;
/**
* 功能编码
*/
private String featureCode;
/**
* 功能名称
*/
private String featureName;
}

View File

@ -0,0 +1,50 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.FieldDefaults;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
/**
* @author cn
* @version 1.0
* @description
* @date 2022/8/15 19:58
*/
@Getter
@Setter
@ToString(callSuper = true)
@FieldDefaults(level = AccessLevel.PRIVATE)
public class FeaturePermissionReq {
/**
* 工作台id
*/
@NotNull
@Min(value = 1)
Long workspaceId;
/**
* 单位id
*/
@NotNull
@Min(value = 1)
Long ouId;
/**
* 指定端的权限
*/
String terminal;
@NotNull
@Min(value = 1)
Long identityId;
@NotNull
@Min(value = 0)
Integer identityType;
public IdentityType getIdentityTypeEnum() {
return IdentityType.getIdentityType(identityType);
}
}

View File

@ -0,0 +1,24 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.FieldDefaults;
import java.util.Set;
/**
* @author cn
* @version 1.0
* @description
* @date 11/23/2022 11:18 AM
*/
@Getter
@Setter
@ToString(callSuper = true)
@FieldDefaults(level = AccessLevel.PRIVATE)
public class FeaturePermissionRes {
boolean superAdmin = false;
Set<String> permissionCodes;
}

View File

@ -0,0 +1,44 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/6/14 18:37
* @description : 获取权限信息基础参数
*/
@Data
public class FilterFeatureTreeReq {
/**
* 身份Id
*/
private Long identityId;
private IdentityType identityType;
/**
* 工作台Id
*/
private Long workspaceId;
/**
* 单位Id
*/
private Long ouId;
/**
* 指定端的权限
*/
private String terminal;
/**
* FeatureType: 类型 0.模块 1.菜单 2页面 3功能
* 此字段=0只返回模块=1返回到菜单级=2返回到页面级=3到功能级
* 此字段默认到功能级 会做为递归的深度限制
*------
*/
private Integer limitFeatureTypeLevel = 3;
}

View File

@ -0,0 +1,20 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.common.page.PageRequest;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/5/21 15:35
* @description :获取角色列表
*/
@Data
public class FindUserWorkspaceRoleReq extends PageRequest {
/**
* 关键字暂定角色名称
*/
private String keyWords;
}

View File

@ -0,0 +1,22 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.common.page.PageRequest;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.Data;
@Data
public class GargantuanRoleQueryReq extends PageRequest {
private String roleNameLike;
private String userNameLike;
private String workspaceType;
private Long workspaceId;
private Long ownerOuId;
private IdentityType identityType;
}

View File

@ -0,0 +1,17 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GetInfoByMicroAppItemIdReq {
private List<Long> appItemId;
}

View File

@ -0,0 +1,69 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.common.constant.enums.OrganizationalUnitTypeEnum;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class GrantAgencyAdminRoleDTO {
/**
* 工作台id与context校验
*/
@NotNull(message = "工作台Id不能为空")
private Long workspaceId;
/**
* 单位id : 必填
*/
@NotNull(message = "单位Id不能为空")
private Long ouId;
public OrganizationalUnitTypeEnum getOrganizationalUnitTypeEnum() {
return OrganizationalUnitTypeEnum.getByType(organizationalUnitType);
}
/**
* 单位类型
*/
@NotNull(message = "单位类型不能为空")
@Min(value = 1)
private Integer organizationalUnitType;
/**
* 被赋予角色的人的身份类型
*/
@NotNull(message = "身份类型不能为空")
private IdentityType identityType;
/**
* 手机号
*/
@NotBlank(message = "手机号不能为空")
private String phoneNo;
/**
* 用户名
*/
@NotBlank(message = "用户名不能为空")
private String userName;
/**
* 之前的所有RoleId都被更新
*/
@NotEmpty(message = "角色列表不能为空")
private List<Long> updateRoleIds;
}

View File

@ -0,0 +1,21 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
import java.util.List;
/**
*/
@Data
public class GrantRoleToUserReq extends CommonWorkspaceIdAndOuIdReq {
private List<Long> roleIds;
/**
* 身份Id
*/
private Long identityId;
/**
* 身份类型 1:工人 2:从业人员 3:班组长 4:运营人员 5:政务人员
*/
private Integer identityType;
}

View File

@ -0,0 +1,39 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @author: cl
* @description: 授权功能返回实体
* @date: 2022-06-17
**/
@Getter
@Setter
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class GroupPermissionResp {
/**
* 是否授权
*/
private Boolean isGrant;
/**
* 功能编码
*/
private String groupPermissionId;
/**
* 功能名称
*/
private String groupPermissionName;
}

View File

@ -0,0 +1,49 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import cn.axzo.trade.datasecurity.core.annotation.CryptField;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/5/11 11:20
* @description :
*/
@Data
public class IdentityAndAccountDTO {
/**
* 身份Id
*/
private Long identityId;
/**
* 身份类型
*/
private IdentityType identityType;
/**
* 账户Id
*/
private Long accountId;
/**
* 手机号
*/
@CryptField
private String phone;
/**
* 真实姓名
*/
private String realName;
/**
* 自然人Id
*/
private Long naturalPersonId;
}

View File

@ -0,0 +1,49 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.Data;
import java.io.Serializable;
/**
* @author : liuchuntao
* @date : 2022/5/11 11:20
* @description :
*/
@Data
public class IdentityAndAccountResp implements Serializable {
/**
* 身份Id
*/
private Long identityId;
/**
* 身份类型
*/
private IdentityType identityType;
/**
* 账户Id
*
* @deprecated 此字段业务中不要使用全部用身份id来处理业务
*/
@Deprecated
private Long accountId;
/**
* 手机号
*/
private String phone;
/**
* 真实姓名
*/
private String realName;
/**
* 自然人Id
*/
private Long naturalPersonId;
}

View File

@ -0,0 +1,19 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class IdentityKey {
private Long identityId;
private IdentityType identityType;
}

View File

@ -0,0 +1,34 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.FieldDefaults;
/**
* @author cn
* @version 1.0
* @description
* @date 2022/10/12 15:23
*/
@Getter
@Setter
@ToString
@FieldDefaults(level = AccessLevel.PRIVATE)
public class JobDto {
/**
* 岗位id
*/
Long jobId;
/**
* 岗位code
*/
String jobCode;
/**
* 岗位名字
*/
String jobName;
}

View File

@ -0,0 +1,40 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @author: cl
* @description: 企业班组响应
* @date: 2022-06-17
**/
@Getter
@Setter
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class LeaderResp {
/**
* 身份ID
*/
private Long identityId;
private IdentityType identityType;
/**
* 角色名称
*/
private String roleName;
/**
*角色ID
*/
private Long roleId;
}

View File

@ -0,0 +1,17 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ListByWorkspaceIdAndOuIdReq {
private Long workspaceId;
private Long ouId;
}

View File

@ -0,0 +1,17 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ListFeatureIdByGroupIdsReq {
private List<Long> groupIds;
}

View File

@ -0,0 +1,27 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Set;
/**
* @author cn
* @version 1.0
* @description
* @date 2022/10/13 16:54
*/
@Getter
@Setter
@ToString
public class ListRoleReq {
@NotNull
@Min(value = 0)
private Long workspaceId;
@NotEmpty
private Set<Long> roleIds;
}

View File

@ -0,0 +1,21 @@
package cn.axzo.tyr.client.model.permission;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* @author cn
* @version 1.0
* @description
* @date 2022/10/13 16:54
*/
@Getter
@Setter
@ToString
@EqualsAndHashCode
public class ListRoleRes {
private Long roleId;
private String jobCode;
}

View File

@ -0,0 +1,28 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Set;
/**
* @author cn
* @version 1.0
* @description
* @date 2022/10/14 11:52
*/
@Getter
@Setter
@ToString
public class ListUserRoleReq {
@NotNull
@Min(value = 0)
private Long workspaceId;
private Long ouId;
@NotEmpty
private Set<String> roleCodes;
}

View File

@ -0,0 +1,33 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.common.manager.auth.base.UserContext;
import lombok.Data;
/**
* @ClassName LoginLogSaveDTO
* @Author zhangran
* @Date 2022/6/11 18:14
**/
@Data
public class LoginLogSaveDTO {
/**
* m账号
*/
private String account;
/**
* 登录状态1-成功2-失败
*/
private Integer loginStatus;
/**
* 错误原因
*/
private String failReason;
/**
* 平台
*/
private String terminal;
private UserContext userContext;
}

View File

@ -0,0 +1,23 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author zhangPeng
* @description
* @date 2021/1/26 17:16
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class LoginSuccessBo {
private String accessToken;
/**
* 终端
*/
private String terminal;
}

View File

@ -0,0 +1,30 @@
package cn.axzo.tyr.client.model.permission;
import java.util.List;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/6/5 10:50
* @description :账号合并Req
*/
@Data
public class MergeAccountReq {
/**
* 原自然人Id
*/
private Long oldPerSonId;
/**
* 新自然人Id
*/
private Long newPerSonId;
/**
* 身份列表
*/
private List<BaseIdentityReq> baseIdentity;
}

View File

@ -0,0 +1,21 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
/**
* @author haiyangjin
* @date 2023/8/23
*/
@Data
public class MoveFeatureReq {
// @NotEmpty(message = "featureCode 不能为空")
private String featureCode;
private String moveToFeatureCode;
private Long id;
private Long moveToId;
private String token;
}

View File

@ -0,0 +1,24 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class NativeFeatureResp {
/*
* 企业端菜单id
*/
private Long entFeatureId;
/*
* 项目端菜单id
*/
private Long projFeatureId;
}

View File

@ -0,0 +1,79 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.common.page.PageRequest;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @author : liuchuntao
* @date : 2022/6/28 20:08
* @description : 操作日志请求参数
*/
@Data
public class OperateLogQueryReq extends PageRequest {
/**
* 调用方服务名
*/
private String serviceName;
/**
* 操作人
*/
private String operateUserName;
/**
* 事件类型
*/
private List<String> featureCodes;
/**
* 功能name
*/
private String featureName;
/**
* 开始时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;
/**
* 结束时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endTime;
/**
* 工作台Id
*/
private Long workspaceId;
/**
* 单位Id
*/
private Long ouId;
/**
* 身份Id
*/
private Long identityId;
/**
* 身份类型
*/
private Integer identityType;
/**
* 操作类型 1:add 2:add_batch 3:update 4:update_batch 5:delete 6:delete_batch
*/
private Integer operateType;
/**
* 操作表名
*/
private String operateTable;
}

View File

@ -0,0 +1,51 @@
package cn.axzo.tyr.client.model.permission;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* @author : liuchuntao
* @date : 2022/6/28 20:08
* @description : 操作日志响应
*/
@Data
public class OperateLogQueryResp {
/**
* 操作人
*/
private String operateUserName;
/**
* 事件类型
*/
private String featureCode;
/**
* 事件类型
*/
private String featureName;
/**
* 事件摘要
*/
private String contentSummary;
/**
* 操作时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date operateTime;
/**
* 操作人手机号
*/
private String operateUserPhone;
/**
* 所属单位名称
*/
private String ouName;
}

View File

@ -0,0 +1,28 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/6/14 15:19
* @description : 查询拥有权限的工作台和单位Id
*/
@Data
public class OwnSpaceAndOuInfoDTO {
/**
* 工作台Id
*/
private Long workspaceType;
/**
* 工作台Id
*/
private Long workspaceId;
/**
* 单位Id
*/
private Long ouId;
}

View File

@ -0,0 +1,28 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/6/14 15:19
* @description : 查询拥有权限的工作台和单位Id
*/
@Data
public class OwnSpaceAndOuInfoResp {
/**
* 工作台Id
*/
private Long workspaceType;
/**
* 工作台Id
*/
private Long workspaceId;
/**
* 单位Id
*/
private Long ouId;
}

View File

@ -0,0 +1,12 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.common.page.PageRequest;
import lombok.Data;
/**
* @author hewei@axzo.cn
* @date 2022/12/6 10:28
*/
@Data
public class PageDefaultDto extends PageRequest {
}

View File

@ -0,0 +1,19 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.common.page.PageRequest;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/6/29 16:00
* @description : 权限集分页搜索相关
*/
@Data
public class PagePermissionGroupReq extends PageRequest {
/**
* 搜索内容
*/
private String searchKey;
}

View File

@ -0,0 +1,54 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @author: cl
* @description: 代班组权限响应
* @date: 2022-06-17
**/
@Getter
@Setter
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class PayoffRoleResp {
/**
* 单位id
*/
private Long ouId;
/**
* 角色身份ID
*/
private Long identityId;
/**
* 角色身份类型用于检查是否匹配
*/
private Integer identityType;
/**
* 手机号
*/
private String phone;
/**
* 真实姓名
*/
private String realName;
/**
* 账户Id
*/
private Long accountId;
}

View File

@ -0,0 +1,31 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import cn.axzo.framework.auth.domain.TerminalInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Set;
/**
* 鉴权处理对象
*
* @version V1.0
* @author: ZhanSiHu
* @date: 2024/4/15 14:55
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PermissionCheckBO {
private Long personId;
private Long identityId;
private IdentityType identityType;
private Long ouId;
private Long workspaceId;
private Set<String> featureCodes;
private TerminalInfo terminalInfo;
}

View File

@ -0,0 +1,24 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ProductAndFeatureBO {
/**
* 产品id
*/
private Long productId;
/**
* 菜单id
*/
private Long featureId;
}

View File

@ -0,0 +1,24 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ProductAndFeaturePathBO {
/**
* 产品id
*/
private Long productId;
/**
* 菜单表path字段
*/
private String featurePath;
}

View File

@ -0,0 +1,22 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class ProductQueryReq {
/**
* 1总包企业产品 2:总包项目产品 3:政企产品 4:分包企业产品 5:班组产品
*/
@NotNull(message = "产品类型不能为空")
private Integer productType;
/**
* 基础产品与否 0:基础产品 1:普通产品
*/
private Integer commonProduct;
}

View File

@ -0,0 +1,44 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
import java.util.Date;
/**
* @author : liuchuntao
* @date : 2022/5/18 18:50
* @description : 产品查询响应
*/
@Data
public class ProductQueryResp {
protected Long id;
/**
* 创建时间
*/
protected Date createAt;
/**
* 修改时间
*/
protected Date updateAt;
/**
* 1总包企业产品 2:总包项目产品 3:政企产品 4:分包企业产品 5:班组产品
*/
private Integer productType;
/**
* 产品板块名字
*/
private String productName;
/**
* 基础产品与否 0:基础产品 1:普通产品
*/
private Integer commonProduct;
/**
* 产品板块备注
*/
private String remark;
}

View File

@ -0,0 +1,23 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 二维码
*
* @author liuyang
* @date 2020/6/15
**/
@NoArgsConstructor
@AllArgsConstructor
@Data
public class QrCodeBo {
/**
* code码
*/
private String code;
}

View File

@ -0,0 +1,14 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
@Data
public class QueryFeatureReq extends CommonWorkspaceIdAndOuIdReq {
/**
* 是否查询子节点 0: 不查询: 1:查询( 默认0)
*/
private Integer loadChildrens = 0;
}

View File

@ -0,0 +1,46 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.Data;
import java.util.List;
/**
* @author : liuchuntao
* @date : 2022/6/9 14:42
* @description : 获取拥有指定权限的人员列表
*/
@Data
public class QueryIdentityByPermissionDTO {
/**
* 权限列表
* Query的语义是只要有一个code就算命中而不是必须有所有code权限
*/
private List<String> codes;
private Long roleId;
/**
* 工作台Id
*/
private Long workspaceId;
/**
* 单位Id
*/
private Long ouId;
/**
* 身份Id
*/
private Long identityId;
private IdentityType identityType;
/**
* 指定端的权限
*/
private String terminal;
}

View File

@ -0,0 +1,101 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.Data;
import java.util.List;
/**
* @author : liuchuntao
* @date : 2022/6/9 14:42
* @description : 获取拥有指定权限的人员列表
*/
@Data
public class QueryIdentityByPermissionReq {
/**
* 权限列表
* Query的语义是只要有一个code就算命中而不是必须有所有code权限
*/
private List<String> codes;
private Long roleId;
/**
* 工作台Id
*/
private Long workspaceId;
/**
* 单位Id
*/
private Long ouId;
/**
* 身份Id
*/
private Long identityId;
private IdentityType identityType;
/**
* 指定端的权限
*/
private String terminal;
public List<String> getCodes() {
return codes;
}
public void setCodes(List<String> codes) {
this.codes = codes;
}
public Long getRoleId() {
return roleId;
}
public void setRoleId(Long roleId) {
this.roleId = roleId;
}
public Long getWorkspaceId() {
return workspaceId;
}
public void setWorkspaceId(Long workspaceId) {
this.workspaceId = workspaceId;
}
public Long getOuId() {
return ouId;
}
public void setOuId(Long ouId) {
this.ouId = ouId;
}
public Long getIdentityId() {
return identityId;
}
public void setIdentityId(Long identityId) {
this.identityId = identityId;
}
public IdentityType getIdentityType() {
return identityType;
}
public void setIdentityType(IdentityType identityType) {
this.identityType = identityType;
}
public String getTerminal() {
return terminal;
}
public void setTerminal(String terminal) {
this.terminal = terminal;
}
}

View File

@ -0,0 +1,17 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
import java.util.List;
/**
* @author hewei@axzo.cn
* @date 2022/10/13 17:17
*/
@Data
public class QueryPermissionGroupByCategoryIdReq {
private Long productCategoryId;
private List<Long> groupIds;
}

View File

@ -0,0 +1,29 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.common.page.PageRequest;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author hewei@axzo.cn
* @date 2022/10/11 16:33
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class QueryProductReq extends PageRequest {
/**
* 功能分组id
*/
private Long productId;
/**
* 权限集id列表
*/
private List<Long> groupIds;
}

View File

@ -0,0 +1,69 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.common.constant.enums.OrganizationalUnitTypeEnum;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.springframework.util.CollectionUtils;
import javax.validation.constraints.NotEmpty;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
/**
* @author : liuchuntao
* @date : 2022/6/27 14:05
* @description : 通过角色名字查询角色信息
*/
@Data
public class QueryRoleByNameReq extends CommonWorkspaceIdAndOuIdReq {
@NotEmpty(message = "角色名字不能为空")
private List<String> roleNames;
/**
* 单位类型
*/
private Set<Integer> ouTypes;
@JsonIgnore
public int getFitOuTypeBit() {
int fitOuTypeBit = 0;
if (!CollectionUtils.isEmpty(ouTypes)) {
Optional<Integer> reduce = ouTypes.stream()
.map(OrganizationalUnitTypeEnum::getByType).filter(Objects::nonNull)
.map(OrganizationalUnitTypeEnum::getBitValue).reduce((a, b) -> {
a |= b;
return a;
});
if (reduce.isPresent()) {
fitOuTypeBit = reduce.get();
}
}
return fitOuTypeBit;
}
/**
* 节点类型
*/
private Set<Integer> nodeTypes;
@JsonIgnore
public int getFitNodeTypeBit() {
int fitOuNodeTypeBit = 0;
if (!CollectionUtils.isEmpty(nodeTypes)) {
Optional<Integer> reduce = nodeTypes.stream()
.map(OrganizationalUnitTypeEnum::getByType).filter(Objects::nonNull)
.map(OrganizationalUnitTypeEnum::getBitValue).reduce((a, b) -> {
a |= b;
return a;
});
if (reduce.isPresent()) {
fitOuNodeTypeBit = reduce.get();
}
}
return fitOuNodeTypeBit;
}
}

View File

@ -0,0 +1,30 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/6/27 14:06
* @description : 通过名字查询角色响应
*/
@Data
public class QueryRoleByNameResp {
/**
* 角色名字
*/
private String roleName;
/**
* 角色Id
*/
private Long roleId;
/**
* 角色类型common 普通角色 super_admin超级管理员(禁止删除) admin子管理员(禁止删除) init初始化内置角色
*/
private String roleType;
}

View File

@ -0,0 +1,24 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.common.page.PageRequest;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/5/19 14:21
* @description : 模板信息查询
*/
@Data
public class QueryRoleTemplateReq extends PageRequest {
/**
* 模板Id
*/
private Long templateId;
/**
* 1总包企业级 2:总包项目级 3:政企级 4:分包企业级 5:班组级
*/
private Integer type;
}

View File

@ -0,0 +1,50 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
*
*
* 用来查询基于PositionTemplate分配的RolePermissionGroup
*
* @author gaowei
*
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class QuerySaasPermissionGroupInPositionTemplateReq {
/**
* 项目部工作台ID不可为空
*/
@NotNull
private Long workspaceId;
/**
* 对应SaasRoleUserRelation表里的ouId
*/
private Long ouId;
/**
* 身份ID可以为空为空则忽略此查询条件
*/
private List<Long> identityIds;
private IdentityType identityType;
/**
* 职位Code列表
* 可以为空为空则忽略此查询条件
*/
private List<String> positionCodeList;
}

View File

@ -0,0 +1,38 @@
package cn.axzo.tyr.client.model.permission;
import java.util.List;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.Builder;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/5/28 13:56
* @description : 通过工作台Id 单位Id 查询用户角色信息
*/
@Data
@Builder
public class QuerySaasRoleByIdentityListDTO {
/**
* 身份IdList
*/
private List<Long> identityIds;
/**
* 身份类型
*/
private IdentityType identityType;
/**
* 工作台id
*/
private Long workspaceId;
/**
* 单位Id
*/
private Long ouId;
}

View File

@ -0,0 +1,43 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author : liuchuntao
* @date : 2022/5/19 15:01
* @description : 查询用户拥有得角色
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class QueryUserRoleReq {
/**
* 工作台Id
*/
private Long workspaceId;
/**
* 单位Id
*/
private Long ouId;
/**
* 身份Id列表
*/
private List<Long> identityIds;
private IdentityType identityType;
private List<String> roleTypes;
private List<Long> roleIds;
}

View File

@ -0,0 +1,26 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author liuyang
* 删除token
*/
@Data
public class RemoveTokenDto {
/**
* 账号ID
*/
@NotNull(message = "账号ID不能为空")
private Integer acctId;
/**
* 客户端ID
*/
@NotBlank(message = "客户端ID不能为空")
private String clientId;
}

View File

@ -0,0 +1,32 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/5/19 15:13
* @description : 角色基本信息
*/
@Data
public class RoleBaseInfo {
/**
* id
*/
private Long id;
/**
* 角色名称
*/
private String name;
/**
* 角色描述
*/
private String description;
/**
* 角色类型common 普通角色 super_admin超级管理员 admin子管理员 init初始化内置角色
*/
private String roleType;
}

View File

@ -0,0 +1,28 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/5/27 15:50
* @description :
*/
@Data
public class RoleByIdentityIdAndWorkspaceIdReq {
/**
* 身份id
*/
private Long identityId;
// /**
// * 身份类型
// */
// private IdentityTypeEnum identityType;
/**
* 工作台id
*/
private Long workspaceId;
}

View File

@ -0,0 +1,36 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author: cl
* @description: 班组长权限分类实体
* @date: 2022-06-17
**/
@Getter
@Setter
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class RoleResp {
/**
* 权限集分类名称
*/
private String roleName;
/**
* 授权的权限
*/
@NotNull
private List<GroupPermissionResp> groupPermissionList;
}

View File

@ -0,0 +1,33 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/5/19 14:23
* @description : 模板响应
*/
@Data
public class RoleTemplateResp {
/**
* Id
*/
private Long id;
/**
* 模板名字
*/
private String templateName;
/**
* 1总包企业级 2:总包项目级 3:政企级 4:分包企业级 5:班组级
*/
private Integer type;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,100 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class SaasFeatureBO {
/**
* 适用单位类型
*/
private Long fitOuTypeBit;
/**
* id
*/
private Long id;
/**
* 名称
*/
private String featureName;
/**
* 描述
*/
private String description;
/**
* code
*/
private String featureCode;
/**
* 图标地址
*/
private String icon;
/**
* 菜单上级id
*/
private Long parentId;
/**
* 链接地址
*/
private String linkUrl;
/**
* 1:CMS 2:小程序 4:原生
*/
private Integer linkType;
/**
* 扩展字段
*/
private String linkExt;
/**
* 小程序id 关联micro_app_item id
*/
private String microAppItemId;
/**
* 路径
*/
private String path;
/**
* 排序
*/
private Integer sort;
/**
* terminal
*/
private String terminal;
/**
* 类型 0.模块 1.菜单 2页面 3功能
*/
private Integer featureType;
/**
* 是否需要权限 1.需要 2:不需要
*/
private Integer needAuth;
/**
* 是否删除
*/
private Long isDelete;
/**
* 创建人id
*/
private Long createBy;
/**
* 创建时间
*/
private LocalDateTime createAt;
/**
* 更新时间
*/
private LocalDateTime updateAt;
/**
* 修改人id
*/
private Long updateBy;
private Long productId;
private String productName;
private String legacyLayout;
}

View File

@ -0,0 +1,64 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
@Data
public class SaasFeatureDTO {
private Long id;
/**
* 描述
*/
private String description;
/**
* 名称
*/
private String featureName;
/**
* code
*/
private String featureCode;
/**
* 图标地址
*/
private String icon;
/**
* 菜单上级id
*/
private Long parentId;
/**
* 链接地址
*/
private String linkUrl;
/**
* 1:CMS 2:小程序 4:原生
*/
private Integer linkType;
/**
* 扩展字段
*/
private String linkExt;
/**
* 小程序id 关联micro_app_item id
*/
private String microAppItemId;
/**
* 排序
*/
private Integer sort;
/**
* 菜单适用于平台 0:企业工作台 1:项目工作台
*/
private Integer perspectiveTerminal;
/**
* 类型 0.模块 1.菜单 2页面 3功能
*/
private Integer featureType;
/**
* 是否需要权限 1.需要 2:不需要
*/
private Integer needAuth;
private Long productId;
}

View File

@ -0,0 +1,140 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SaasFeatureRes {
private Long id;
/**
* 创建时间
*/
private Date createAt;
/**
* 修改时间
*/
private Date updateAt;
/**
* 是否删除 0正常1删除
*/
private Long isDelete;
/**
* 名称
*/
private String featureName;
/**
* code
*/
private String featureCode;
/**
* 描述
*/
private String description;
/**
* 图标地址
*/
private String icon;
/**
* 菜单上级id
*/
private Long parentId;
/**
* 链接地址
*/
private String linkUrl;
/**
* 1:CMS 2:小程序 4:原生
*/
private Integer linkType;
/**
* 扩展字段
*/
private String linkExt;
/**
* 小程序id 关联micro_app_item id
*/
private String microAppItemId;
/**
* 路径
*/
private String path;
/**
* 排序
*/
private Integer sort;
/**
* {@link cn.axzo.framework.auth.domain.TerminalInfo }查看NT开头 downloadResource
* 菜单适用于平台 NT_CMS_WEB_ENT_ZB:企业工作台 NT_CMS_WEB_PROJ:项目工作台
* NT_CMP_APP_ENT_ZB:从业人员企业端 NT_CMP_APP_PROJ:从业人员项目端
* NT_CM_APP_CM_LEADER:班组长侧 NT_CM_APP_WORKER:工人侧
* NT_OMS_WEB OMS运营管理后台 NT_SM:数据大屏
* NT_SCREEN 数据大屏
*/
private String terminal;
/**
* 类型 0.模块 1.菜单 2页面 3功能
*/
private Integer featureType;
/**
* 创建人id
*/
private Long createBy;
/**
* 修改人id
*/
private Long updateBy;
/**
* 适用单位类型 1:总包 2:建设单位 4:监理单位 8:劳务分包 16:专业分包 0都可以用 只会挂在最末级
*/
private Long fitOuTypeBit;
/**
* 适用节点类型 1:部门 2:班组 4:小组 只会挂在最末级
*/
private Long fitOuNodeTypeBit;
/**
* 适配老接口 应用所属 system:系统应用 personal:个人应用 business:业务应用 只会挂在第一级别
*/
private String legacyLayout;
/**
* 网关专属字段所属应用
* 后续会换成枚举暂时枚举未定义完全
*/
private String appName;
/**
* 网关专属字段是否授权 0:无需要授权 1:需要授权
*/
private Integer needAuth;
/**
* 网关专属字段是否认证 0:无需要认证 1:需要认证
*/
private Integer needCert;
/**
* 网关专属字段 功能URL对应后端接口url
*/
private String featureUrl;
private String businessNo;
private String parentBusinessNo;
}

View File

@ -0,0 +1,24 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.common.page.PageRequest;
import lombok.Data;
@Data
public class SaasFeatureSearchDTO extends PageRequest {
/**
* 权限名称/权限code
*/
private String key;
/**
* 权限集名称
*/
private String groupName;
/**
* 目标平台
*/
private String perspectiveTerminal;
}

View File

@ -0,0 +1,179 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.common.model.IBaseTree;
import cn.axzo.tyr.client.model.enums.FeatureTypeEnum;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* @author : liuchuntao
* @date : 2022/5/16 10:31
* @description : saas 资源树
*/
@Data
public class SaasFeatureTreeResp implements IBaseTree<SaasFeatureTreeResp, String> {
/**
* 元素 Id
*/
private Long id;
/**
* 父级 Id
*/
private Long parentId;
/**
* 0.模块 1.菜单 2页面 3功能 99:-不可编辑
*/
private Integer menuType;
/**
* 元素名称
*/
private String name;
/**
* code
*/
private String code;
/**
* 图标名
*/
private String icon;
/**
* 路由地址
*/
private String linkUrl;
/**
* 1:安心筑企业 2:小程序 4:原生 如果菜单同时又对应app上展示 则填写对应linkUrl 和linkExt
*/
private Integer linkType;
/**
* 扩展字段 原生使用
*/
private String linkExt;
/**
* 排序号
*/
private Integer sort;
/**
* 小程序id 关联micro_app_item id
*/
private String microAppItemId;
/**
* 菜单适用于平台 NT_CMS_WEB_ENT_ZB:企业工作台 NT_CMS_WEB_PROJ:项目工作台
* NT_CMP_APP_ENT_ZB:从业人员企业端 NT_CMP_APP_PROJ:从业人员项目端
* NT_CM_APP_CM_LEADER:班组长侧 NT_CM_APP_WORKER:工人侧
* NT_OMS_WEB OMS运营管理后台 NT_SM:数据大屏
* NT_SCREEN 数据大屏
* */
private String terminal;
/**
* 备注
*/
private String remark;
/**
* 创建时间
*/
private Date createAt;
/**
* 更新时间
*/
private Date updateAt;
/**
* 1:总包 2:建设单位 4:监理单位 8:劳务分包 16:专业分包
*/
private List<Integer> fitOuTypes;
/**
* 1:部门 2:班组 4:小组
*/
private List<Integer> fitOuNodeTypes;
/**
* 适配老接口 应用所属 system:系统应用 personal:个人应用 business:业务应用 只会挂在第一级别
*/
private String legacyLayout;
/**
* 网关专属字段所属应用
*/
private String appName;
/**
* 网关专属字段是否授权 0:无需要授权 1:需要授权
*/
private Integer needAuth;
/**
* 网关专属字段是否认证 0:无需要认证 1:需要认证
*/
private Integer needCert;
/**
* 网关专属字段 功能URL对应后端接口url
*/
private String featureUrl;
/**
* 当前所有子级里面是否有功能code
*/
@JsonIgnore
public boolean isHadFeatureFunction() {
if (!Objects.equals(menuType, FeatureTypeEnum.FEATURE.getCode())) {
if (CollectionUtils.isEmpty(children)) {
return false;
}
return children.stream().anyMatch(SaasFeatureTreeResp::isHadFeatureFunction);
}
return true;
}
/**
* 子集
*/
private List<SaasFeatureTreeResp> children;
@Override
@JsonIgnore
public String getNodeCode() {
return businessNo;
}
@Override
@JsonIgnore
public String getParentNodeCode() {
return parentBusinessNo;
}
@Override
@JsonIgnore
public List<SaasFeatureTreeResp> getNodeChildren() {
return children;
}
@Override
public void setNodeChildren(List<SaasFeatureTreeResp> nodeChildren) {
this.children = nodeChildren;
}
private String businessNo;
private String parentBusinessNo;
}

View File

@ -0,0 +1,103 @@
package cn.axzo.tyr.client.model.permission;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class SaasHierarchyFeatureBO {
/**
* 适用单位类型
*/
private Long fitOuTypeBit;
/**
* id
*/
private Long id;
/**
* 名称
*/
private String featureName;
/**
* 描述
*/
private String description;
/**
* code
*/
private String featureCode;
/**
* 图标地址
*/
private String icon;
/**
* 菜单上级id
*/
private Long parentId;
/**
* 链接地址
*/
private String linkUrl;
/**
* 1:CMS 2:小程序 4:原生
*/
private Integer linkType;
/**
* 扩展字段
*/
private String linkExt;
/**
* 小程序id 关联micro_app_item id
*/
private String microAppItemId;
/**
* 路径
*/
private String path;
/**
* 排序
*/
private Integer sort;
/**
* terminal
*/
private String terminal;
/**
* 类型 0.模块 1.菜单 2页面 3功能
*/
private Integer featureType;
/**
* 是否需要权限 1.需要 2:不需要
*/
private Integer needAuth;
/**
* 是否删除
*/
private Long isDelete;
/**
* 创建人id
*/
private Long createBy;
/**
* 创建时间
*/
private LocalDateTime createAt;
/**
* 更新时间
*/
private LocalDateTime updateAt;
/**
* 修改人id
*/
private Long updateBy;
private Long productId;
private String productName;
private String legacyLayout;
private List<SaasHierarchyFeatureBO> child;
}

View File

@ -0,0 +1,75 @@
package cn.axzo.tyr.client.model.permission;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
/**
* TODO: 这里的字段和Model的字段对不上
*
* @author gaowei
*
*/
@Data
public class SaasPermissionGroupBO extends Model<SaasPermissionGroupBO> {
private Long id;
/**
* 产品Id
*/
private Long productId;
/**
* 权限集名称
*/
private String name;
/**
* 权限集描述
*/
private String description;
/**
* 适用单位类型 1总包 2分包 3分包总包
*/
private Integer ouType;
/**
* 权限集类型 1查看 2操作管理
*/
private Integer type;
/**
* 是否删除0否other是
*/
private Long isDelete;
/**
* 创建时间
*/
private LocalDateTime createAt;
/**
* 更新时间
*/
private LocalDateTime updateAt;
/**
* 创建者
*/
private Long createBy;
/**
* 更新者
*/
private Long updateBy;
/**
* 是否自定义 0:不是 1: 如果为1 custom_space_id 不能为空
*/
private Integer isCustom;
/**
* 工作台Id
*/
private Long customSpaceId;
/**
* 功能IDs
*/
private List<Long> featureIds;
}

View File

@ -0,0 +1,33 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SaasPermissionGroupInPositionTemplate {
/**
* 分类名称对应角色分组名称
*/
private String categoryName;
/**
* 分类编码对应角色分组code
*/
private String categoryCode;
/**
* 权限集id
*/
private Long permissionGroupId;
/**
* 权限集名称对应角色名称
*/
private String permissionGroupName;
}

View File

@ -0,0 +1,45 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SaasPositionTemplateExBO {
/**
* id
*/
private Long id;
/**
* 职位名对应角色分组名
*/
private String name;
/**
* 编码对应角色分组code
*/
private String code;
/**
* 描述
*/
private String description;
/**
* 职位类型:1:平台级别类型2:workspace级别类型对应角色分组工作台类型
*/
private Integer type;
private List<SaasPermissionGroupInPositionTemplate> permissionGroups;
}

View File

@ -0,0 +1,26 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SaasPositionTemplateReq {
/**
* 可以为空为空就是忽略此条件
*/
private List<Long> positionTemplateIdList;
/**
* 可以为空为空就是忽略此条件
*/
private List<String> positionCodeList;
}

View File

@ -0,0 +1,29 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* saas-角色(SaasRole)表实体类
*
* @author makejava
* @since 2022-05-24 11:18:41
*/
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class SaasRoleAndIdentityBO extends SaasRoleBO {
private Long identityId;
private IdentityType identityType;
private int jobType;
}

View File

@ -0,0 +1,62 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* saas-角色(SaasRole)表实体类
*
* @author makejava
* @since 2022-05-24 11:18:41
*/
@Getter
@Setter
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class SaasRoleBO {
private Long roleId;
/**
* 角色名称
*/
private String roleName;
/**
* 角色类型common 普通角色 super_admin超级管理员(禁止删除) admin子管理员(禁止删除) init初始化内置角色
*/
private RoleTypeEnum roleType;
/**
* 角色描述
*/
private String description;
/**
* 工作台Id
*/
private Long workspaceId;
/**
* 0:企业工作台 1:项目工作台
*/
private Integer workspaceType;
/**
* 角色所属单位Id 可能是总包,也可能是分包
*/
private Long ownerOuId;
/**
* 岗位编码
*/
private String jobCode;
}

View File

@ -0,0 +1,95 @@
package cn.axzo.tyr.client.model.permission;
import java.util.ArrayList;
import java.util.List;
import javax.validation.constraints.NotBlank;
import cn.axzo.basics.common.constant.enums.OrganizationalNodeTypeEnum;
import cn.axzo.basics.common.constant.enums.OrganizationalUnitTypeEnum;
import cn.axzo.tyr.client.common.SaasRoleFits;
import cn.axzo.tyr.client.model.enums.WorkspaceTypeWithLegacyEnum;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class SaasRoleCreateOrUpdateReq {
private Long id;
@NotBlank(message = "名字不能为空")
private String name;
private String description;
private String roleType;
/**
* 表示这个Role可以使用哪些权限集里的权限
*/
private List<Long> permissionGroupIds = new ArrayList<>();
private WorkspaceTypeWithLegacyEnum workspaceType;
/**
* 工作台Id
*/
private Long workspaceId;
/**
* 角色owner单位Id 实际角色和用户的所属关系 具体查询relation的ouId
*/
private Long ownerOuId;
/**
* 适用单位类型 1:总包 2:建设单位 4:监理单位 8:劳务分包 16:专业分包 0都可以用 只会挂在最末级
*/
private Long fitOuTypeBit;
/**
* 适用节点类型 1:部门 2:班组 4:小组 只会挂在最末级
*/
private Long fitOuNodeTypeBit;
public List<OrganizationalUnitTypeEnum> getFitOuTypeEnumList() {
return SaasRoleFits.splitToFitOuTypeEnums(this.fitOuTypeBit);
}
public List<OrganizationalNodeTypeEnum> getFitOuNodeTypeEnumList() {
return SaasRoleFits.splitToFitOuNodeTypeEnums(this.fitOuNodeTypeBit);
}
public List<Integer> getFitOuTypeValueList() {
return SaasRoleFits.splitToFitOuTypeValues(this.fitOuTypeBit);
}
public List<Integer> getFitOuNodeTypeValueList() {
return SaasRoleFits.splitToFitOuNodeTypeValues(this.fitOuNodeTypeBit);
}
public void setFitOuTypeByValues(List<Integer> fitOuTypeList) {
this.fitOuTypeBit = SaasRoleFits.concatFitOuTypeByValues(fitOuTypeList);
}
public void setFitOuNodeTypeByValues(List<Integer> fitOuNodeTypeList) {
this.fitOuNodeTypeBit = SaasRoleFits.concatFitOuNodeTypeByValues(fitOuNodeTypeList);
}
public void setFitOuTypeByEnums(List<OrganizationalUnitTypeEnum> fitOuTypeList) {
this.fitOuTypeBit = SaasRoleFits.concatFitOuTypeByList(fitOuTypeList);
}
public void setFitOuNodeTypeByEnums(List<OrganizationalNodeTypeEnum> fitOuNodeTypeList) {
this.fitOuNodeTypeBit = SaasRoleFits.concatFitOuNodeTypeByList(fitOuNodeTypeList);
}
public boolean isFitOuType(Integer ouType) {
return SaasRoleFits.isFitOuType(this.fitOuTypeBit, ouType);
}
public boolean isFitOuNodeType(Integer ouNodeType) {
return SaasRoleFits.isFitOuNodeType(this.fitOuNodeTypeBit, ouNodeType);
}
}

View File

@ -0,0 +1,70 @@
package cn.axzo.tyr.client.model.permission;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.List;
/**
* @author: wangli
* @date: 2022/5/26 14:18
*/
@Data
@Accessors(chain = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SaasRoleDTO {
private Long id;
/**
* 角色名称
*/
@NotBlank(message = "名字不能为空")
private String name;
/**
* 角色描述
*/
private String description;
/**
* 权限集
*/
private List<Long> groupIds = new ArrayList<>();
/**
* 工作台ID
*/
private Long workspaceId;
/**
* 工作台类型
*/
private Integer workspaceType;
/**
* 所属单位ID
*/
private Long ownerOuId;
/**
* 角色类型
*/
private String roleType;
/**
* 是否删除
*/
private Long isDelete;
/**
* 职位模板I
*/
private Long positionTemplateId;
}

View File

@ -0,0 +1,35 @@
package cn.axzo.tyr.client.model.permission;
import cn.axzo.basics.profiles.common.enums.IdentityType;
import lombok.Builder;
import lombok.Data;
/**
* @author : liuchuntao
* @date : 2022/5/30 16:00
* @description : 删除指定工作台角色-用户关联关系
*/
@Data
@Builder
public class SaasRoleDelDTO {
/**
* 工作台Id
*/
private Long workspaceId;
/**
* 单位Id
*/
private Long ouId;
/**
* 身份Id
*/
private Long identityId;
/**
* 身份类型
*/
private IdentityType identityType;
}

Some files were not shown because too many files have changed in this diff Show More