lixing 4 år sedan
förälder
incheckning
5d43f8a1e6
21 ändrade filer med 759 tillägg och 0 borttagningar
  1. 74 0
      fm-common/src/main/java/com/persagy/fm/common/config/RequiredParamsHandler.java
  2. 28 0
      fm-common/src/main/java/com/persagy/fm/common/config/WebConfig.java
  3. 37 0
      fm-common/src/main/java/com/persagy/fm/common/constant/enums/BoolEnum.java
  4. 133 0
      fm-common/src/main/java/com/persagy/fm/common/exception/FmExceptionHandler.java
  5. 14 0
      fm-common/src/main/java/com/persagy/fm/common/exception/RpcException.java
  6. 23 0
      fm-common/src/main/java/com/persagy/fm/common/model/RequiredParams.java
  7. 47 0
      fm-common/src/main/java/com/persagy/fm/common/model/RequiredParamsStorage.java
  8. 28 0
      fm-common/src/main/java/com/persagy/fm/common/model/dto/DmpBaseQueryDTO.java
  9. 16 0
      fm-common/src/main/java/com/persagy/fm/common/model/dto/DmpOrderDTO.java
  10. 22 0
      fm-common/src/main/java/com/persagy/fm/common/model/dto/DmpRequiredParam.java
  11. 18 0
      fm-common/src/main/java/com/persagy/fm/common/model/dto/EnumQueryDTO.java
  12. 16 0
      fm-common/src/main/java/com/persagy/fm/common/model/vo/EnumVO.java
  13. 31 0
      fm-common/src/main/java/com/persagy/fm/common/response/DmpPageResponse.java
  14. 17 0
      fm-common/src/main/java/com/persagy/fm/common/response/FmDmpResponseUtil.java
  15. 43 0
      fm-common/src/main/java/com/persagy/fm/common/response/FmResponseContent.java
  16. 35 0
      fm-common/src/main/java/com/persagy/fm/common/response/FmResponseItem.java
  17. 32 0
      fm-common/src/main/java/com/persagy/fm/common/response/FmResponseMsg.java
  18. 24 0
      fm-common/src/main/java/com/persagy/fm/common/response/FmResponseUpsertVO.java
  19. 54 0
      fm-common/src/main/java/com/persagy/fm/common/response/FmResponseUtil.java
  20. 28 0
      fm-common/src/main/java/com/persagy/fm/common/utils/DmpExceptionUtil.java
  21. 39 0
      fm-common/src/main/java/com/persagy/fm/common/utils/DmpUpsertResultUtil.java

+ 74 - 0
fm-common/src/main/java/com/persagy/fm/common/config/RequiredParamsHandler.java

@@ -0,0 +1,74 @@
+package com.persagy.fm.common.config;
+
+import com.persagy.fm.common.model.RequiredParams;
+import com.persagy.fm.common.model.RequiredParamsStorage;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @description:
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/8 9:35 上午
+ * @version: V1.0
+ **/
+public class RequiredParamsHandler extends HandlerInterceptorAdapter {
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        String requestURI = request.getRequestURI();
+        // swagger的文档不校验必填项
+        if (requestURI.indexOf(".html") != -1
+                || requestURI.indexOf(".js") != -1
+                || requestURI.indexOf(".css") != -1
+                || requestURI.indexOf("/swagger-resources") != -1
+        ) {
+            return true;
+        }
+        // 必填项校验
+        checkeRequiredParams(request);
+
+        RequiredParams data = new RequiredParams(
+                request.getParameter("groupCode"),
+                request.getParameter("schemaId"),
+                request.getParameter("projectId"),
+                request.getParameter("appId"),
+                request.getParameter("userId")
+        );
+
+        RequiredParamsStorage.set(data);
+        return true;
+    }
+
+    /**
+     * @description: 校验必填参数
+     * @param: request
+     * @return: void
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2021/3/9 6:29 下午
+     * @version: V1.0
+     */
+    private void checkeRequiredParams(HttpServletRequest request) {
+        String[] requiredParams = {"groupCode", "projectId", "appId", "userId"};
+        for (String requiredParam : requiredParams) {
+            if (StringUtils.isBlank(request.getParameter(requiredParam))) {
+                throw new IllegalArgumentException("缺少必填参数" + requiredParam);
+            }
+        }
+    }
+
+    @Override
+    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
+        RequiredParamsStorage.clear();
+    }
+
+    @Override
+    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+        RequiredParamsStorage.clear();
+    }
+}

+ 28 - 0
fm-common/src/main/java/com/persagy/fm/common/config/WebConfig.java

@@ -0,0 +1,28 @@
+package com.persagy.fm.common.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @description:
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/8 10:06 上午
+ * @version: V1.0
+ **/
+@Configuration
+public class WebConfig implements WebMvcConfigurer {
+
+    @Bean
+    public RequiredParamsHandler requiredParamsHandler() {
+        return new RequiredParamsHandler();
+    }
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        // 设置拦截的路径、不拦截的路径、优先级等等
+        registry.addInterceptor(requiredParamsHandler()).addPathPatterns("/**");
+    }
+}

+ 37 - 0
fm-common/src/main/java/com/persagy/fm/common/constant/enums/BoolEnum.java

@@ -0,0 +1,37 @@
+package com.persagy.fm.common.constant.enums;
+
+/**
+ * @description: 合法标志
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/9 2:56 下午
+ * @version: V1.0
+ */
+public enum BoolEnum {
+    FALSE("0", false),
+    TRUE("1", true);
+
+    private String type;
+    private Boolean desc;
+
+    BoolEnum(String type, Boolean desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public Boolean getDesc() {
+        return desc;
+    }
+
+    public void setDesc(Boolean desc) {
+        this.desc = desc;
+    }
+}

+ 133 - 0
fm-common/src/main/java/com/persagy/fm/common/exception/FmExceptionHandler.java

@@ -0,0 +1,133 @@
+package com.persagy.fm.common.exception;
+
+import com.persagy.common.enums.ResponseCode;
+import com.persagy.common.exception.BusinessException;
+import com.persagy.fm.common.response.FmResponseMsg;
+import com.persagy.fm.common.response.FmResponseUtil;
+import feign.FeignException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.converter.HttpMessageNotReadableException;
+import org.springframework.validation.BindException;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.servlet.NoHandlerFoundException;
+
+import javax.validation.ValidationException;
+
+/**
+ * @description: 通用异常处理类
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/5 5:10 下午
+ * @version: V1.0
+ **/
+@RestControllerAdvice
+@Slf4j
+public class FmExceptionHandler {
+    /**
+     * feign调用异常
+     */
+    @ExceptionHandler({RpcException.class})
+    public FmResponseMsg handleRpcException(RpcException e) {
+        log.error(e.getMessage(), e);
+        return FmResponseUtil.errorMsg(ResponseCode.C0110.getCode(), e.getMessage());
+    }
+
+
+    /**
+     * 空指针异常
+     */
+    @ExceptionHandler(NullPointerException.class)
+    public FmResponseMsg handleBusinessRuntimeException(NullPointerException e) {
+        log.error(e.getMessage(), e);
+        return FmResponseUtil.errorMsg(ResponseCode.B0001.getCode(), e.getMessage());
+    }
+
+    /**
+     * 自定义业务异常
+     */
+    @ExceptionHandler(BusinessException.class)
+    public FmResponseMsg handleBusinessRuntimeException(BusinessException e) {
+        log.error(e.getMessage(), e);
+        return FmResponseUtil.errorMsg(e.getErrorCode(), e.getErrorDesc());
+    }
+
+    /**
+     * 入参校验异常
+     */
+    @ExceptionHandler(MethodArgumentNotValidException.class)
+    public FmResponseMsg handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
+        log.error(e.getMessage(), e);
+        return FmResponseUtil.errorMsg(ResponseCode.A0400.getCode(), e.getBindingResult().getFieldError().getDefaultMessage());
+    }
+
+    /**
+     * 入参校验异常
+     */
+    @ExceptionHandler(BindException.class)
+    public FmResponseMsg handleBindException(BindException e) {
+        log.error(e.getMessage(), e);
+        return FmResponseUtil.errorMsg(ResponseCode.A0400.getCode(), e.getBindingResult().getFieldError().getDefaultMessage());
+    }
+
+    /**
+     * 参数校验异常,message 为手动抛出时定义的具体异常信息
+     */
+    @ExceptionHandler(ValidationException.class)
+    public FmResponseMsg handleValidationException(ValidationException e) {
+        log.error(e.getMessage(), e);
+        return FmResponseUtil.errorMsg(ResponseCode.A0400.getCode(), e.getCause().getMessage());
+    }
+
+    /**
+     * 参数校验异常,message 为手动抛出时定义的具体异常信息
+     */
+    @ExceptionHandler(IllegalArgumentException.class)
+    public FmResponseMsg handleIllegalArgumentException(IllegalArgumentException e) {
+        log.error(e.getMessage(), e);
+        return FmResponseUtil.errorMsg(ResponseCode.A0400.getCode(), e.getMessage());
+    }
+
+    /**
+     * URI请求链接没有映射
+     */
+    @ResponseStatus(HttpStatus.NOT_FOUND)
+    @ExceptionHandler(NoHandlerFoundException.class)
+    public FmResponseMsg handleNoHandlerFoundException(NoHandlerFoundException e) {
+        log.error(e.getMessage(), e);
+        return FmResponseUtil.errorMsg(ResponseCode.A0422.getCode(), e.getMessage());
+    }
+
+    /**
+     * Feign 调用异常
+     */
+    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
+    @ExceptionHandler(FeignException.class)
+    public FmResponseMsg handleFeignException(FeignException e) {
+        log.error(e.getMessage(), e);
+        return FmResponseUtil.errorMsg(ResponseCode.C0110.getCode(), e.getMessage());
+    }
+
+    /**
+     *  body体未找到
+     */
+    @ResponseStatus(HttpStatus.BAD_REQUEST)
+    @ExceptionHandler(HttpMessageNotReadableException.class)
+    public FmResponseMsg handleHttpMessageNotReadableException(HttpMessageNotReadableException e) {
+        log.error(e.getMessage(), e);
+        return FmResponseUtil.errorMsg(ResponseCode.A0402.getCode(), ResponseCode.A0402.getDesc());
+    }
+
+    /**
+     * 系统默认繁忙
+     */
+    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
+    @ExceptionHandler(Exception.class)
+    public FmResponseMsg handleException(Exception e) {
+        log.error(e.getMessage(), e);
+        return FmResponseUtil.errorMsg(ResponseCode.Z9999.getCode(), ResponseCode.Z9999.getDesc());
+    }
+}

+ 14 - 0
fm-common/src/main/java/com/persagy/fm/common/exception/RpcException.java

@@ -0,0 +1,14 @@
+package com.persagy.fm.common.exception;
+
+/**
+ * @description:
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/8 11:39 上午
+ * @version: V1.0
+ **/
+public class RpcException extends RuntimeException{
+    public RpcException (String message) {
+        super(message);
+    }
+}

+ 23 - 0
fm-common/src/main/java/com/persagy/fm/common/model/RequiredParams.java

@@ -0,0 +1,23 @@
+package com.persagy.fm.common.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @description:
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/8 9:57 上午
+ * @version: V1.0
+ **/
+@Setter
+@Getter
+@AllArgsConstructor
+public class RequiredParams {
+    private String groupCode;
+    private String schemaId;
+    private String projectId;
+    private String appId;
+    private String userId;
+}

+ 47 - 0
fm-common/src/main/java/com/persagy/fm/common/model/RequiredParamsStorage.java

@@ -0,0 +1,47 @@
+package com.persagy.fm.common.model;
+
+/**
+ * @description:
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/8 10:21 上午
+ * @version: V1.0
+ **/
+public class RequiredParamsStorage {
+    /**
+     * 线程内部存储类
+     */
+    private static final ThreadLocal<RequiredParams> STORAGE = new ThreadLocal();
+
+    public static void set(RequiredParams data) {
+        STORAGE.set(data);
+    }
+
+    public static RequiredParams get() {
+        return STORAGE.get();
+    }
+
+    public static void clear() {
+        STORAGE.remove();
+    }
+
+    public static String getGroupCode() {
+        return STORAGE.get().getGroupCode();
+    }
+
+    public static String getSchemaId() {
+        return STORAGE.get().getSchemaId();
+    }
+
+    public static String getProjectId() {
+        return STORAGE.get().getProjectId();
+    }
+
+    public static String getAppId() {
+        return STORAGE.get().getAppId();
+    }
+
+    public static String getUserId() {
+        return STORAGE.get().getUserId();
+    }
+}

+ 28 - 0
fm-common/src/main/java/com/persagy/fm/common/model/dto/DmpBaseQueryDTO.java

@@ -0,0 +1,28 @@
+package com.persagy.fm.common.model.dto;
+
+import lombok.Data;
+import org.apache.poi.ss.formula.functions.T;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @description: 数据中台查询基础类
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/8 11:56 上午
+ * @version: V1.0
+ **/
+@Data
+public class DmpBaseQueryDTO<T> {
+    /** 分页页码 */
+    private Integer page;
+    /** 分页大小 */
+    private Integer size;
+    /** 扩展字段 */
+    private Set<String> withColumns;
+    /** 排序字段 */
+    private List<DmpOrderDTO> orders;
+    /** 查询条件 */
+    private T criteria;
+}

+ 16 - 0
fm-common/src/main/java/com/persagy/fm/common/model/dto/DmpOrderDTO.java

@@ -0,0 +1,16 @@
+package com.persagy.fm.common.model.dto;
+
+import lombok.Data;
+
+/**
+ * @description: 数据中台排序对象
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/8 12:00 下午
+ * @version: V1.0
+ **/
+@Data
+public class DmpOrderDTO {
+    private String column;
+    private Boolean asc;
+}

+ 22 - 0
fm-common/src/main/java/com/persagy/fm/common/model/dto/DmpRequiredParam.java

@@ -0,0 +1,22 @@
+package com.persagy.fm.common.model.dto;
+
+import lombok.Data;
+
+/**
+ * @description: 数据中台基础类
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/4 10:05 上午
+ * @version: V1.0
+ **/
+@Data
+public class DmpRequiredParam {
+
+    private String userId;
+
+    private String appId;
+
+    private String groupCode;
+
+    private String projectId;
+}

+ 18 - 0
fm-common/src/main/java/com/persagy/fm/common/model/dto/EnumQueryDTO.java

@@ -0,0 +1,18 @@
+package com.persagy.fm.common.model.dto;
+
+import lombok.Data;
+import lombok.NonNull;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 枚举类查询DTO
+ *
+ * @author lixing
+ * @version V1.0 2021/3/12 6:26 下午
+ **/
+@Data
+public class EnumQueryDTO {
+    @NotNull(message = "枚举类型不能为空")
+    private String type;
+}

+ 16 - 0
fm-common/src/main/java/com/persagy/fm/common/model/vo/EnumVO.java

@@ -0,0 +1,16 @@
+package com.persagy.fm.common.model.vo;
+
+import lombok.Data;
+import org.checkerframework.checker.units.qual.K;
+
+/**
+ * 枚举vo类
+ *
+ * @author lixing
+ * @version V1.0 2021/3/12 6:24 下午
+ **/
+@Data
+public class EnumVO {
+    private String key;
+    private String value;
+}

+ 31 - 0
fm-common/src/main/java/com/persagy/fm/common/response/DmpPageResponse.java

@@ -0,0 +1,31 @@
+package com.persagy.fm.common.response;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @description:
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/8 2:06 下午
+ * @version: V1.0
+ **/
+public class DmpPageResponse<T> {
+    @Getter
+    @Setter
+    private String result;
+
+    @Getter
+    @Setter
+    private String message;
+
+    @Getter
+    @Setter
+    private Long count;
+
+    @Getter
+    @Setter
+    private List<T> data;
+}

+ 17 - 0
fm-common/src/main/java/com/persagy/fm/common/response/FmDmpResponseUtil.java

@@ -0,0 +1,17 @@
+package com.persagy.fm.common.response;
+
+import com.persagy.common.constant.DMPConstant;
+import com.persagy.common.utils.DMPResponseUtil;
+
+/**
+ * @description:
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/8 6:23 下午
+ * @version: V1.0
+ **/
+public class FmDmpResponseUtil extends DMPResponseUtil {
+    public static boolean isSuccess(DmpPageResponse pageResponse) {
+        return DMPConstant.DMP_RESULT_VAL.equals(pageResponse.getResult());
+    }
+}

+ 43 - 0
fm-common/src/main/java/com/persagy/fm/common/response/FmResponseContent.java

@@ -0,0 +1,43 @@
+package com.persagy.fm.common.response;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * @description: 服务接口调用返回值
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/9/21 11:01
+ * @version: V1.0
+ */
+@Data
+@NoArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class FmResponseContent<T> {
+
+    /**
+     * 响应码
+     */
+    private String respCode;
+
+    /**
+     * 成功时返回的列表数据
+     */
+    @JSONField(name = "Content")
+    private T content;
+
+    /**
+     * 成功时返回的列表数量
+     */
+    @JSONField(name = "Count")
+    private Integer count;
+
+    public FmResponseContent(String respCode, T content, Integer count) {
+        this.respCode = respCode;
+        this.content = content;
+        this.count = count;
+    }
+}

+ 35 - 0
fm-common/src/main/java/com/persagy/fm/common/response/FmResponseItem.java

@@ -0,0 +1,35 @@
+package com.persagy.fm.common.response;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @description: 服务接口调用返回值
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/9/21 11:01
+ * @version: V1.0
+ */
+@Data
+@NoArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class FmResponseItem<T> {
+
+    /**
+     * 响应码
+     */
+    private String respCode;
+
+    /**
+     * 成功时返回的对象数据
+     */
+    @JSONField(name = "Item")
+    private T item;
+
+    public FmResponseItem(String respCode, T item) {
+        this.respCode = respCode;
+        this.item = item;
+    }
+}

+ 32 - 0
fm-common/src/main/java/com/persagy/fm/common/response/FmResponseMsg.java

@@ -0,0 +1,32 @@
+package com.persagy.fm.common.response;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @description: 服务接口调用返回值
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/9/21 11:01
+ * @version: V1.0
+ */
+@Data
+@NoArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class FmResponseMsg {
+    /**
+     * 响应码
+     */
+    private String respCode;
+
+    /**
+     * 错误信息
+     */
+    private String resultMsg;
+
+    public FmResponseMsg(String respCode, String resultMsg) {
+        this.respCode = respCode;
+        this.resultMsg = resultMsg;
+    }
+}

+ 24 - 0
fm-common/src/main/java/com/persagy/fm/common/response/FmResponseUpsertVO.java

@@ -0,0 +1,24 @@
+package com.persagy.fm.common.response;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @description: fm的创建和更新结果VO类
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/10 11:33 上午
+ * @version: V1.0
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class FmResponseUpsertVO {
+    /**
+     * 响应码
+     */
+    private Long id;
+}

+ 54 - 0
fm-common/src/main/java/com/persagy/fm/common/response/FmResponseUtil.java

@@ -0,0 +1,54 @@
+package com.persagy.fm.common.response;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.common.enums.ResponseCode;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
+
+/**
+ * @description: 服务接口调用返回值工具类
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/9/21 11:01
+ * @version: V1.0
+ */
+public class FmResponseUtil {
+
+    public static <T extends List> FmResponseContent<T> successContent(T content) {
+        return successContent(content, content.size());
+    }
+
+    public static <T> FmResponseContent successContent(IPage page) {
+        return successContent(page.getRecords(),Long.valueOf(page.getTotal()).intValue());
+    }
+
+    public static <T extends List> FmResponseContent<T> successContent(T content, Integer count) {
+        return new FmResponseContent(ResponseCode.A00000.getCode(), content, count);
+    }
+
+    public static <T> FmResponseItem<T> successItem(T object) {
+        return new FmResponseItem(ResponseCode.A00000.getCode(), object);
+    }
+
+    public static FmResponseMsg successMsg(String resultMsg) {
+        if (StringUtils.isBlank(resultMsg)) {
+            resultMsg = ResponseCode.A00000.getDesc();
+        }
+        return new FmResponseMsg(ResponseCode.A00000.getCode(), resultMsg);
+    }
+
+    public static FmResponseMsg errorMsg(String resultMsg) {
+        return errorMsg(null, resultMsg);
+    }
+
+    public static FmResponseMsg errorMsg(String respCode, String resultMsg) {
+        if (StringUtils.isBlank(respCode)) {
+            respCode = ResponseCode.A10000.getCode();
+        }
+        if (StringUtils.isBlank(resultMsg)) {
+            resultMsg = ResponseCode.A10000.getDesc();
+        }
+        return new FmResponseMsg(respCode, resultMsg);
+    }
+}

+ 28 - 0
fm-common/src/main/java/com/persagy/fm/common/utils/DmpExceptionUtil.java

@@ -0,0 +1,28 @@
+package com.persagy.fm.common.utils;
+
+import com.persagy.fm.common.exception.RpcException;
+
+/**
+ * @description: 数据中台异常消息工具类
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/9 9:40 上午
+ * @version: V1.0
+ **/
+public class DmpExceptionUtil {
+
+    /**
+     * @description: 抛出dmp接口调用异常
+     * @param: interfaceName 接口名称
+     * @return: void
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2021/3/10 5:34 下午
+     * @version: V1.0
+     */
+    public static RpcException rpcException(String interfaceName) {
+        String rpcExceptionMessage = "Dmp%s接口调用异常";
+        return new RpcException(String.format(rpcExceptionMessage, interfaceName));
+    }
+}

+ 39 - 0
fm-common/src/main/java/com/persagy/fm/common/utils/DmpUpsertResultUtil.java

@@ -0,0 +1,39 @@
+package com.persagy.fm.common.utils;
+
+import com.persagy.fm.common.response.FmDmpResponseUtil;
+import com.persagy.fm.common.response.FmResponseItem;
+import com.persagy.fm.common.response.FmResponseUpsertVO;
+import com.persagy.fm.common.response.FmResponseUtil;
+
+/**
+ * @description:
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/10 11:27 上午
+ * @version: V1.0
+ **/
+public class DmpUpsertResultUtil {
+    /**
+     * @description: 处理数据中台创建或更新结果
+     * @param: dmpUpsertResult
+     * @param: id
+     * @param: dmpInterfaceName
+     * @return: com.persagy.fm.common.response.FmResponseItem<com.persagy.fm.person.model.dto.department.ResponseDepartmentItemVO>
+     * @exception:
+     * @author: lixing
+     * @company: Persagy Technology Co.,Ltd
+     * @since: 2021/3/10 11:26 上午
+     * @version: V1.0
+     */
+    public static FmResponseItem<FmResponseUpsertVO> dealDmpUpsertResult(
+            String dmpUpsertResult, Long id, String dmpInterfaceName) {
+        // 处理数据中台返回结果
+        if (FmDmpResponseUtil.isSuccess(dmpUpsertResult)) {
+            FmResponseUpsertVO fmResponseUpsertVO = new FmResponseUpsertVO();
+            fmResponseUpsertVO.setId(id);
+            return FmResponseUtil.successItem(fmResponseUpsertVO);
+        } else {
+            throw DmpExceptionUtil.rpcException(dmpInterfaceName);
+        }
+    }
+}