package com.persagy.proxy.adm.request; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONArray; import com.persagy.proxy.adm.utils.AdmEntityTransferUtil; import com.persagy.proxy.common.entity.DmpResult; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; /** * ADM 通用返回结果 * @author Charlie Yu * @date 2021-08-16 */ @Data @NoArgsConstructor @AllArgsConstructor public class AdmResponse { private final static String SUCCESS = "success"; private final static String FAILURE = "failure"; /** 结果 */ private String result; /** 消息 */ private String message; /** 符合条件的总记录数 */ private Long total; /** 页码 */ private Integer pageNumber; /** 每页条数 */ private Integer pageSize; /** 查询到的数据列表 */ private List content; public static AdmResponse success() { return new AdmResponse(SUCCESS, null, 0L, 1, 500, null); } public static AdmResponse failure(String message) { return new AdmResponse(FAILURE, message, null, null, null, null); } public static AdmResponse success(List content) { return new AdmResponse(SUCCESS, null, CollUtil.isEmpty(content) ? 0L :content.size()*1L, 1, 500, content); } /** * 从数据中台结果转换 * @param admRequest * @param dmpResult * @param clazz * @param * @return */ public static AdmResponse fromDmp(AdmQueryCriteria admRequest, DmpResult dmpResult, Class clazz) { if(!DmpResult.SUCCESS.equals(dmpResult.getResult())) { return failure("调用中台查询接口出错:" + dmpResult.getMessage()); } // 转换为结果 List admVOs = AdmEntityTransferUtil.toAdmMultiEntity(dmpResult.getData(), admRequest.getProjection(), clazz); Long total = dmpResult.getCount() == null ? null : dmpResult.getCount().longValue(); Integer pageNo = admRequest == null ? null : admRequest.getPageNumber(); Integer pageSize = admRequest == null ? null : admRequest.getPageSize(); return new AdmResponse(SUCCESS, null, total, pageNo, pageSize, admVOs); } }