12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package com.kmall.admin.haikong.task;
- import com.fasterxml.jackson.core.type.TypeReference;
- import com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity;
- import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
- import com.kmall.admin.haikong.client.HaiKongMemberTemplate;
- import com.kmall.admin.haikong.constant.ErrorCodeConstants;
- import com.kmall.admin.haikong.constant.HaiKongMemberOrderResendStatusEnum;
- import com.kmall.admin.haikong.dto.MemberOrderInfoSyncDTO;
- import com.kmall.admin.haikong.dto.MemberScoreChangeDTO;
- import com.kmall.admin.haikong.dto.MemberScoreChangeResponseDTO;
- import com.kmall.admin.haikong.utils.Response;
- import com.kmall.admin.service.haikong.HaiKongMemberOrderSyncResendService;
- import com.kmall.admin.utils.jackson.JacksonUtil;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import org.springframework.util.CollectionUtils;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.Objects;
- /**
- * 重发会员消费订单同步定时任务
- * @author lhm
- * @createDate 2021-12-01
- */
- @Component
- public class MemberOrderSyncResendTask {
- private static final Logger log = LoggerFactory.getLogger(MemberOrderSyncResendTask.class);
- @Autowired
- private HaiKongMemberTemplate haiKongMemberTemplate;
- @Autowired
- private HaiKongMemberOrderSyncResendService haiKongMemberOrderSyncResendService;
- @Scheduled(cron = "0 0/2 * * * ?")
- public void resend() {
- // 查询等待发送和发送失败的记录
- List<HaiKongMemberOrderSyncResendEntity> haiKongMemberOrderSyncResendEntities = haiKongMemberOrderSyncResendService.queryListByResendStatus();
- if (CollectionUtils.isEmpty(haiKongMemberOrderSyncResendEntities)) {
- return;
- }
- List<HaiKongMemberOrderSyncResendEntity> successList = new ArrayList<>();
- List<HaiKongMemberOrderSyncResendEntity> failedList = new ArrayList<>();
- haiKongMemberOrderSyncResendEntities.forEach(haiKongMemberOrderSyncResendEntity -> {
- MemberOrderInfoSyncDTO memberOrderInfoSyncDTO = new MemberOrderInfoSyncDTO();
- BeanUtils.copyProperties(haiKongMemberOrderSyncResendEntity, memberOrderInfoSyncDTO);
- String body = JacksonUtil.toJson(memberOrderInfoSyncDTO);
- haiKongMemberOrderSyncResendEntity.setLastResendTime(new Date());
- log.info("【重发】请求会员消费订单同步接口!请求体:{}", body);
- try {
- String responseJson = haiKongMemberTemplate.changeMemberScore(body);
- Response<String> response = JacksonUtil.fromListJson(responseJson, new TypeReference<Response<String>>() {});
- if (Objects.nonNull(response) && ErrorCodeConstants.MemberSysErrorCodeEnum.CODE_0.getCode().equals(response.getCode())) {
- haiKongMemberOrderSyncResendEntity.setMemberSysOrderId(response.getData());
- haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_SUCCESS.getStatus());
- successList.add(haiKongMemberOrderSyncResendEntity);
- log.info("【重发】请求会员消费订单同步接口成功!响应数据:{}", responseJson);
- } else if (Objects.nonNull(response) && ErrorCodeConstants.MemberSysErrorCodeEnum.CODE_500.getCode().equals(response.getCode())) {
- haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
- failedList.add(haiKongMemberOrderSyncResendEntity);
- log.error("【重发】请求会员消费订单同步接口失败!响应:{}", responseJson);
- } else {
- haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
- failedList.add(haiKongMemberOrderSyncResendEntity);
- log.error("【重发】请求会员消费订单同步接口失败!响应:{}", responseJson);
- }
- } catch (Exception e) {
- haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
- failedList.add(haiKongMemberOrderSyncResendEntity);
- log.error("【重发】请求会员消费订单同步接口失败!异常:", e);
- }
- });
- if (!CollectionUtils.isEmpty(successList)) {
- haiKongMemberOrderSyncResendService.updateResendStatusBatch(successList);
- }
- if (!CollectionUtils.isEmpty(failedList)) {
- haiKongMemberOrderSyncResendService.updateResendStatusBatch(failedList);
- }
- log.info("【重发】此次重发会员消费订单同步接口!成功【{}】条,失败【{}】条!", successList.size(), failedList.size());
- }
- }
|