1
0

MemberOrderSyncResendTask.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package com.kmall.admin.haikong.task;
  2. import com.fasterxml.jackson.core.type.TypeReference;
  3. import com.kmall.admin.entity.OrderGoodsEntity;
  4. import com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity;
  5. import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
  6. import com.kmall.admin.haikong.client.HaiKongMemberTemplate;
  7. import com.kmall.admin.haikong.constant.ErrorCodeConstants;
  8. import com.kmall.admin.haikong.constant.HaiKongMemberOrderResendStatusEnum;
  9. import com.kmall.admin.haikong.dto.MemberOrderInfoSyncDTO;
  10. import com.kmall.admin.haikong.dto.MemberScoreChangeDTO;
  11. import com.kmall.admin.haikong.dto.MemberScoreChangeResponseDTO;
  12. import com.kmall.admin.haikong.utils.Response;
  13. import com.kmall.admin.service.OrderGoodsService;
  14. import com.kmall.admin.service.haikong.HaiKongMemberOrderSyncResendService;
  15. import com.kmall.admin.utils.jackson.JacksonUtil;
  16. import org.slf4j.Logger;
  17. import org.slf4j.LoggerFactory;
  18. import org.springframework.beans.BeanUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.scheduling.annotation.Scheduled;
  21. import org.springframework.stereotype.Component;
  22. import org.springframework.util.CollectionUtils;
  23. import java.util.*;
  24. /**
  25. * 重发会员消费订单同步定时任务
  26. * @author lhm
  27. * @createDate 2021-12-01
  28. */
  29. @Component
  30. public class MemberOrderSyncResendTask {
  31. private static final Logger log = LoggerFactory.getLogger(MemberOrderSyncResendTask.class);
  32. @Autowired
  33. private HaiKongMemberTemplate haiKongMemberTemplate;
  34. @Autowired
  35. private OrderGoodsService orderGoodsService;
  36. @Autowired
  37. private HaiKongMemberOrderSyncResendService haiKongMemberOrderSyncResendService;
  38. @Scheduled(cron = "0 0/2 * * * ?")
  39. public void resend() {
  40. // 查询等待发送和发送失败的记录
  41. List<HaiKongMemberOrderSyncResendEntity> haiKongMemberOrderSyncResendEntities = haiKongMemberOrderSyncResendService.queryListByResendStatus();
  42. if (CollectionUtils.isEmpty(haiKongMemberOrderSyncResendEntities)) {
  43. return;
  44. }
  45. List<HaiKongMemberOrderSyncResendEntity> successList = new ArrayList<>();
  46. List<HaiKongMemberOrderSyncResendEntity> failedList = new ArrayList<>();
  47. haiKongMemberOrderSyncResendEntities.forEach(haiKongMemberOrderSyncResendEntity -> {
  48. MemberOrderInfoSyncDTO memberOrderInfoSyncDTO = new MemberOrderInfoSyncDTO();
  49. //新增传给海控会员系统添加商品明细
  50. HashMap<String, Object> orderIdMap = new HashMap<>();
  51. orderIdMap.put("orderId",haiKongMemberOrderSyncResendEntity.getOrderId());
  52. List<OrderGoodsEntity> orderGoodsEntities = orderGoodsService.queryList(orderIdMap);
  53. List list = new ArrayList<Map>();
  54. for (OrderGoodsEntity orderGoodsEntity : orderGoodsEntities) {
  55. HashMap<Object, Object> map = new HashMap<>();
  56. map.put("item_no",orderGoodsEntity.getSku());//商品编码
  57. map.put("item_name",orderGoodsEntity.getGoodsName());//名称
  58. map.put("item_price",orderGoodsEntity.getActualPaymentAmount());//商品实际支付金额
  59. //会员系统那边开发可不传这两个字段
  60. // map.put("add_score");//商品基础积分
  61. // map.put("active_score",);//商品活动积分
  62. map.put("use_score",orderGoodsEntity.getDeductionScore());//商品使用积分抵扣
  63. map.put("deduction_money",orderGoodsEntity.getDeductionPrice());//商品积分抵扣金额
  64. map.put("item_num",orderGoodsEntity.getNumber());//商品数量
  65. list.add(map);
  66. }
  67. memberOrderInfoSyncDTO.setItemInfoList(list);
  68. BeanUtils.copyProperties(haiKongMemberOrderSyncResendEntity, memberOrderInfoSyncDTO);
  69. String body = JacksonUtil.toJson(memberOrderInfoSyncDTO);
  70. haiKongMemberOrderSyncResendEntity.setLastResendTime(new Date());
  71. log.info("【重发】请求会员消费订单同步接口!请求体:{}", body);
  72. try {
  73. String responseJson = haiKongMemberTemplate.memberOrderSync(body);
  74. Response<String> response = JacksonUtil.fromListJson(responseJson, new TypeReference<Response<String>>() {});
  75. if (Objects.nonNull(response) && response.getSuccess()) {
  76. haiKongMemberOrderSyncResendEntity.setMemberSysOrderId(response.getData());
  77. haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_SUCCESS.getStatus());
  78. successList.add(haiKongMemberOrderSyncResendEntity);
  79. log.info("【重发】请求会员消费订单同步接口成功!响应数据:{}", responseJson);
  80. }/* else if (Objects.nonNull(response) && ErrorCodeConstants.MemberSysErrorCodeEnum.CODE_500.getCode().equals(response.getCode())) {
  81. haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
  82. failedList.add(haiKongMemberOrderSyncResendEntity);
  83. log.error("【重发】请求会员消费订单同步接口失败!响应:{}", responseJson);
  84. }*/ else {
  85. haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
  86. failedList.add(haiKongMemberOrderSyncResendEntity);
  87. log.error("【重发】请求会员消费订单同步接口失败!响应:{}", responseJson);
  88. }
  89. } catch (Exception e) {
  90. // lhm 重发状态是修改成无需重发应修改为重发失败供定时器去重发
  91. // haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
  92. haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
  93. failedList.add(haiKongMemberOrderSyncResendEntity);
  94. log.error("【重发】请求会员消费订单同步接口失败!异常:", e);
  95. }
  96. });
  97. if (!CollectionUtils.isEmpty(successList)) {
  98. haiKongMemberOrderSyncResendService.updateResendStatusBatch(successList);
  99. }
  100. if (!CollectionUtils.isEmpty(failedList)) {
  101. haiKongMemberOrderSyncResendService.updateResendStatusBatch(failedList);
  102. }
  103. log.info("【重发】此次重发会员消费订单同步接口!成功【{}】条,失败【{}】条!", successList.size(), failedList.size());
  104. }
  105. }