AdmResponse.java 2.6 KB

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