AdmResponse.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package com.persagy.proxy.adm.request;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.persagy.proxy.adm.utils.AdmEntityTransferUtil;
  5. import com.persagy.proxy.common.entity.DmpResult;
  6. import lombok.AllArgsConstructor;
  7. import lombok.Data;
  8. import lombok.NoArgsConstructor;
  9. import java.util.List;
  10. /**
  11. * ADM 通用返回结果
  12. * @author Charlie Yu
  13. * @date 2021-08-16
  14. */
  15. @Data
  16. @NoArgsConstructor
  17. @AllArgsConstructor
  18. public class AdmResponse {
  19. private final static String SUCCESS = "success";
  20. private final static String FAILURE = "failure";
  21. /** 结果 */
  22. private String result;
  23. /** 消息 */
  24. private String message;
  25. /** 符合条件的总记录数 */
  26. private Long total;
  27. /** 页码 */
  28. private Integer pageNumber;
  29. /** 每页条数 */
  30. private Integer pageSize;
  31. /** 查询到的数据列表 */
  32. private List<?> content;
  33. public static AdmResponse success() {
  34. return new AdmResponse(SUCCESS, null, 0L, 1, 500, null);
  35. }
  36. public static AdmResponse failure(String message) {
  37. return new AdmResponse(FAILURE, message, null, null, null, null);
  38. }
  39. public static AdmResponse success(List<?> content) {
  40. return new AdmResponse(SUCCESS, null, CollUtil.isEmpty(content) ? 0L :content.size()*1L, 1, 500, content);
  41. }
  42. /**
  43. * 从数据中台结果转换
  44. * @param admRequest
  45. * @param dmpResult
  46. * @param clazz
  47. * @param <T>
  48. * @return
  49. */
  50. public static <T> AdmResponse fromDmp(AdmQueryCriteria admRequest, DmpResult<JSONArray> dmpResult, Class<T> clazz) {
  51. if(!DmpResult.SUCCESS.equals(dmpResult.getResult())) {
  52. return failure("调用中台查询接口出错:" + dmpResult.getMessage());
  53. }
  54. // 转换为结果
  55. List<T> admVOs = AdmEntityTransferUtil.toAdmMultiEntity(dmpResult.getData(), admRequest.getProjection(), clazz);
  56. Long total = dmpResult.getCount() == null ? null : dmpResult.getCount().longValue();
  57. Integer pageNo = admRequest == null ? null : admRequest.getPageNumber();
  58. Integer pageSize = admRequest == null ? null : admRequest.getPageSize();
  59. return new AdmResponse(SUCCESS, null, total, pageNo, pageSize, admVOs);
  60. }
  61. }