MemberOrderSyncResendTask.java 5.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package com.kmall.admin.haikong.task;
  2. import com.fasterxml.jackson.core.type.TypeReference;
  3. import com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity;
  4. import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
  5. import com.kmall.admin.haikong.client.HaiKongMemberTemplate;
  6. import com.kmall.admin.haikong.constant.ErrorCodeConstants;
  7. import com.kmall.admin.haikong.constant.HaiKongMemberOrderResendStatusEnum;
  8. import com.kmall.admin.haikong.dto.MemberOrderInfoSyncDTO;
  9. import com.kmall.admin.haikong.dto.MemberScoreChangeDTO;
  10. import com.kmall.admin.haikong.dto.MemberScoreChangeResponseDTO;
  11. import com.kmall.admin.haikong.utils.Response;
  12. import com.kmall.admin.service.haikong.HaiKongMemberOrderSyncResendService;
  13. import com.kmall.admin.utils.jackson.JacksonUtil;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.BeanUtils;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.scheduling.annotation.Scheduled;
  19. import org.springframework.stereotype.Component;
  20. import org.springframework.util.CollectionUtils;
  21. import java.util.ArrayList;
  22. import java.util.Date;
  23. import java.util.List;
  24. import java.util.Objects;
  25. /**
  26. * 重发会员消费订单同步定时任务
  27. * @author lhm
  28. * @createDate 2021-12-01
  29. */
  30. @Component
  31. public class MemberOrderSyncResendTask {
  32. private static final Logger log = LoggerFactory.getLogger(MemberOrderSyncResendTask.class);
  33. @Autowired
  34. private HaiKongMemberTemplate haiKongMemberTemplate;
  35. @Autowired
  36. private HaiKongMemberOrderSyncResendService haiKongMemberOrderSyncResendService;
  37. @Scheduled(cron = "0 0/2 * * * ?")
  38. public void resend() {
  39. // 查询等待发送和发送失败的记录
  40. List<HaiKongMemberOrderSyncResendEntity> haiKongMemberOrderSyncResendEntities = haiKongMemberOrderSyncResendService.queryListByResendStatus();
  41. if (CollectionUtils.isEmpty(haiKongMemberOrderSyncResendEntities)) {
  42. return;
  43. }
  44. List<HaiKongMemberOrderSyncResendEntity> successList = new ArrayList<>();
  45. List<HaiKongMemberOrderSyncResendEntity> failedList = new ArrayList<>();
  46. haiKongMemberOrderSyncResendEntities.forEach(haiKongMemberOrderSyncResendEntity -> {
  47. MemberOrderInfoSyncDTO memberOrderInfoSyncDTO = new MemberOrderInfoSyncDTO();
  48. BeanUtils.copyProperties(haiKongMemberOrderSyncResendEntity, memberOrderInfoSyncDTO);
  49. String body = JacksonUtil.toJson(memberOrderInfoSyncDTO);
  50. haiKongMemberOrderSyncResendEntity.setLastResendTime(new Date());
  51. log.info("【重发】请求会员消费订单同步接口!请求体:{}", body);
  52. try {
  53. String responseJson = haiKongMemberTemplate.changeMemberScore(body);
  54. Response<String> response = JacksonUtil.fromListJson(responseJson, new TypeReference<Response<String>>() {});
  55. if (Objects.nonNull(response) && ErrorCodeConstants.MemberSysErrorCodeEnum.CODE_0.getCode().equals(response.getCode())) {
  56. haiKongMemberOrderSyncResendEntity.setMemberSysOrderId(response.getData());
  57. haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_SUCCESS.getStatus());
  58. successList.add(haiKongMemberOrderSyncResendEntity);
  59. log.info("【重发】请求会员消费订单同步接口成功!响应数据:{}", responseJson);
  60. } else if (Objects.nonNull(response) && ErrorCodeConstants.MemberSysErrorCodeEnum.CODE_500.getCode().equals(response.getCode())) {
  61. haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
  62. failedList.add(haiKongMemberOrderSyncResendEntity);
  63. log.error("【重发】请求会员消费订单同步接口失败!响应:{}", responseJson);
  64. } else {
  65. haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
  66. failedList.add(haiKongMemberOrderSyncResendEntity);
  67. log.error("【重发】请求会员消费订单同步接口失败!响应:{}", responseJson);
  68. }
  69. } catch (Exception e) {
  70. haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
  71. failedList.add(haiKongMemberOrderSyncResendEntity);
  72. log.error("【重发】请求会员消费订单同步接口失败!异常:", e);
  73. }
  74. });
  75. if (!CollectionUtils.isEmpty(successList)) {
  76. haiKongMemberOrderSyncResendService.updateResendStatusBatch(successList);
  77. }
  78. if (!CollectionUtils.isEmpty(failedList)) {
  79. haiKongMemberOrderSyncResendService.updateResendStatusBatch(failedList);
  80. }
  81. log.info("【重发】此次重发会员消费订单同步接口!成功【{}】条,失败【{}】条!", successList.size(), failedList.size());
  82. }
  83. }