REQ-2299 【开发】 获取枚举值

This commit is contained in:
yangheng 2024-04-23 14:50:46 +08:00
parent 6016b586e3
commit a795125ab2
9 changed files with 210 additions and 3 deletions

View File

@ -0,0 +1,39 @@
package cn.axzo.tyr.client.common.enums;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.List;
@Getter
@AllArgsConstructor
public enum AttrPermissionEnum {
SELF_ONLY(1, "仅本人数据"),
SELF_SUBORDINATE(2, "本人及下属数据"),
DEPARTMENT_ONLY(3, "仅本部门数据"),
DEPARTMENT_SUBORDINATE(4, "本部门及以下数据"),
UNIT_ONLY(5, "仅本单位数据"),
UNIT_DIRECT_SUBORDINATE(6, "本单位及下级直属单位数据"),
UNIT_COOPERATE_SUBORDINATE(7, "本单位及下级协同(直属+合作)单位数据"),
UNIT_ALL_SUBORDINATE(8, "本单位及以下协同(直属+合作)单位数据"),
WORKSPACE(9, "本项目部数据"),
EQUAL_TO_ROW(10, "同行级数据权限"),
;
private final Integer value;
private final String desc;
public static List<AttrPermissionEnum> listAttrPermissionForWorkspace() {
return Lists.newArrayList(AttrPermissionEnum.values());
}
public static List<AttrPermissionEnum> listAttrPermissionForNotWorkspace() {
return Lists.newArrayList(SELF_ONLY, SELF_SUBORDINATE,
DEPARTMENT_ONLY, DEPARTMENT_SUBORDINATE, UNIT_ONLY, EQUAL_TO_ROW);
}
}

View File

@ -0,0 +1,32 @@
package cn.axzo.tyr.client.common.enums;
import cn.axzo.framework.domain.ServiceException;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 1-租户类型 2-行级权限规则&单位/OMS/政务监管平台的数据权限
* 3-行级权限规则&项目数据权限 4-字段值查看范围&单位/OMS/政务监管平台的数据权限 5-字段值查看范围&项目数据权限
*/
@Getter
@AllArgsConstructor
public enum EnumTypeEnum {
TENANT_SCOPE(1, "租户类型"),
ROW_PERMISSION_AND_NOT_WORKSPACE(2, "行级权限规则&单位/OMS/政务监管平台的数据权限"),
ROW_PERMISSION_AND_WORKSPACE(3, "行级权限规则&项目数据权限"),
ATTR_PERMISSION_AND_NOT_WORKSPACE(4, "字段值查看范围&单位/OMS/政务监管平台的数据权限"),
ATTR_PERMISSION_AND_WORKSPACE(5, "字段值查看范围&项目数据权限"),
;
public final Integer value;
private final String desc;
public static EnumTypeEnum valueOf(Integer type) {
for (EnumTypeEnum enumTypeEnum : EnumTypeEnum.values()) {
if (enumTypeEnum.getValue().equals(type)) {
return enumTypeEnum;
}
}
throw new ServiceException(ReturnCodeEnum.TYPE_UNKNOWN.getMessage());
}
}

View File

@ -40,6 +40,8 @@ public enum ReturnCodeEnum{
DATA_OBJECT_ATTR_NAME_CODE_DUPLICATE(908, "数据对象字段名或code有重复请检查"),
DATA_OBJECT_RULE_DUPLICATE(908, "规则名有重复,请检查"),
TYPE_UNKNOWN(909, "未知类型"),
;

View File

@ -0,0 +1,47 @@
package cn.axzo.tyr.client.common.enums;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.List;
/**
* 行级权限规则
*/
@Getter
@AllArgsConstructor
public enum RowPermissionEnum {
SELF_ONLY(1, "仅本人数据"),
SELF_SUBORDINATE(2, "本人及下属数据"),
DEPARTMENT_ONLY(3, "仅本部门数据"),
DEPARTMENT_SUBORDINATE(4, "本部门及以下数据"),
UNIT_ONLY(5, "仅本单位数据"),
UNIT_DIRECT_SUBORDINATE(6, "本单位及下级直属单位数据"),
UNIT_COOPERATE_SUBORDINATE(7, "本单位及下级协同(直属+合作)单位数据"),
UNIT_ALL_SUBORDINATE(8, "本单位及以下协同(直属+合作)单位数据"),
WORKSPACE(9, "本项目部数据"),
;
private final Integer value;
private final String desc;
public static List<RowPermissionEnum> listRowPermissionForWorkspace() {
return Lists.newArrayList(RowPermissionEnum.values());
}
public static List<RowPermissionEnum> listRowPermissionForNotWorkspace() {
return Lists.newArrayList(SELF_ONLY, SELF_SUBORDINATE,
DEPARTMENT_ONLY, DEPARTMENT_SUBORDINATE, UNIT_ONLY);
}
}

View File

@ -0,0 +1,20 @@
package cn.axzo.tyr.client.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 租户范围
*/
@Getter
@AllArgsConstructor
public enum TenantScopeEnum {
WORKSPACE(1, "项目租户"),
OU(2, "单位租户"),
OMS(3, "OMS"),
GOVERNMENT(4, "OMS"),
;
private final Integer value;
private final String desc;
}

View File

@ -5,13 +5,16 @@ import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.model.req.CreateDataObjectReq;
import cn.axzo.tyr.client.model.req.EditDataObjectReq;
import cn.axzo.tyr.client.model.req.PageDataObjectReq;
import cn.axzo.tyr.client.model.res.EnumRes;
import cn.axzo.tyr.client.model.res.SimpleDataObjectRes;
import org.springframework.cloud.openfeign.FeignClient;
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;
/**
* 数据权限
@ -41,4 +44,12 @@ public interface DataObjectApi {
*/
@PostMapping("/api/dataObject/page")
ApiResult<PageResult<SimpleDataObjectRes>> pageDataObject(@RequestBody @Valid PageDataObjectReq req);
/**
* 获取枚举值
* @param type 1-租户类型 2-行级权限规则&单位/OMS/政务监管平台的数据权限 3-行级权限规则&项目数据权限 4-字段值查看范围&单位/OMS/政务监管平台的数据权限 5-字段值查看范围&项目数据权限
* @return
*/
@GetMapping("/api/dataObject/enumerate")
ApiResult<List<EnumRes>> getEnumList(@RequestParam Integer type);
}

View File

@ -0,0 +1,21 @@
package cn.axzo.tyr.client.model.res;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class EnumRes {
/**
* 枚举值数字用于向后端传参
*/
private Integer value;
/**
* 枚举值文本用于前端展示
*/
private String desc;
}

View File

@ -25,7 +25,7 @@ import java.util.List;
public class ExceptionAdviceHandler {
@ExceptionHandler(cn.axzo.framework.domain.ServiceException.class)
public ApiResult<Void> basicsServiceExceptionHandler(ServiceException e) {
public ApiResult<Void> basicsServiceExceptionHandler(cn.axzo.framework.domain.ServiceException e) {
log.warn("业务异常", e);
return ApiResult.err(e.getMessage());
}

View File

@ -1,18 +1,28 @@
package cn.axzo.tyr.server.controller.data.object;
import cn.axzo.core.domain.PageResult;
import cn.axzo.framework.auth.domain.ContextInfoHolder;
import cn.axzo.framework.domain.ServiceException;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.common.enums.AttrPermissionEnum;
import cn.axzo.tyr.client.common.enums.EnumTypeEnum;
import cn.axzo.tyr.client.common.enums.ReturnCodeEnum;
import cn.axzo.tyr.client.common.enums.RowPermissionEnum;
import cn.axzo.tyr.client.common.enums.TenantScopeEnum;
import cn.axzo.tyr.client.feign.DataObjectApi;
import cn.axzo.tyr.client.model.req.CreateDataObjectReq;
import cn.axzo.tyr.client.model.req.EditDataObjectReq;
import cn.axzo.tyr.client.model.req.PageDataObjectReq;
import cn.axzo.tyr.client.model.res.EnumRes;
import cn.axzo.tyr.client.model.res.SimpleDataObjectRes;
import cn.axzo.tyr.server.service.DataObjectService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 数据权限
*/
@ -23,7 +33,6 @@ public class DataObjectController implements DataObjectApi {
private final DataObjectService dataObjectService;
public ApiResult<Long> createDataObject(CreateDataObjectReq req) {
return ApiResult.ok(dataObjectService.createDataObject(req));
}
@ -46,4 +55,30 @@ public class DataObjectController implements DataObjectApi {
}
/**
* 1-租户类型 2-行级权限规则&单位/OMS/政务监管平台的数据权限
* 3-行级权限规则&项目数据权限 4-字段值查看范围&单位/OMS/政务监管平台的数据权限 5-字段值查看范围&项目数据权限
*
* @param type 1-租户类型 2-行级权限规则&单位/OMS/政务监管平台的数据权限 3-行级权限规则&项目数据权限 4-字段值查看范围&单位/OMS/政务监管平台的数据权限 5-字段值查看范围&项目数据权限
* @return
*/
@Override
public ApiResult<List<EnumRes>> getEnumList(Integer type) {
EnumTypeEnum typeEnum = EnumTypeEnum.valueOf(type);
switch (typeEnum) {
case TENANT_SCOPE:
return ApiResult.ok(Arrays.stream(TenantScopeEnum.values()).map(e -> EnumRes.builder().value(e.getValue()).desc(e.getDesc()).build()).collect(Collectors.toList()));
case ROW_PERMISSION_AND_NOT_WORKSPACE:
return ApiResult.ok(RowPermissionEnum.listRowPermissionForNotWorkspace().stream().map(e -> EnumRes.builder().value(e.getValue()).desc(e.getDesc()).build()).collect(Collectors.toList()));
case ROW_PERMISSION_AND_WORKSPACE:
return ApiResult.ok(RowPermissionEnum.listRowPermissionForWorkspace().stream().map(e -> EnumRes.builder().value(e.getValue()).desc(e.getDesc()).build()).collect(Collectors.toList()));
case ATTR_PERMISSION_AND_NOT_WORKSPACE:
return ApiResult.ok(AttrPermissionEnum.listAttrPermissionForNotWorkspace().stream().map(e -> EnumRes.builder().value(e.getValue()).desc(e.getDesc()).build()).collect(Collectors.toList()));
case ATTR_PERMISSION_AND_WORKSPACE:
return ApiResult.ok(AttrPermissionEnum.listAttrPermissionForWorkspace().stream().map(e -> EnumRes.builder().value(e.getValue()).desc(e.getDesc()).build()).collect(Collectors.toList()));
default:
throw new ServiceException(ReturnCodeEnum.TYPE_UNKNOWN.getMessage());
}
}
}