Commit cc453a8c by fanjiaxin

推客分佣单入库

parent a0528cf4
Pipeline #75635 passed with stages
in 1 minute 8 seconds
......@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.netease.yanxuan.wx.store.sharer.biz.service.ICommissionOrderService;
import com.netease.yanxuan.wx.store.sharer.common.exception.BizException;
import com.netease.yanxuan.wx.store.sharer.dal.mapper.*;
import com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.*;
import com.netease.yanxuan.wx.store.sharer.integration.handler.impl.WeChatCommissionOrderDetailRequest;
......@@ -54,13 +55,13 @@ public class CommissionOrderServiceImpl implements ICommissionOrderService {
public Long getLatestCommissionSyncTimestamp() {
// 同步成功最大时间戳记录
LambdaQueryWrapper<SharerOrder> orderLqw = Wrappers.lambdaQuery();
orderLqw.select(SharerOrder::getOrderCreateTime);
orderLqw.orderByDesc(SharerOrder::getOrderCreateTime);
orderLqw.select(SharerOrder::getOrderUpdateTime);
orderLqw.orderByDesc(SharerOrder::getOrderUpdateTime);
orderLqw.last("LIMIT 1");
SharerOrder sharerOrder = sharerOrderMapper.selectOne(orderLqw);
long maxTimeStamp = 0L;
if (null != sharerOrder && null != sharerOrder.getOrderCreateTime()) {
maxTimeStamp = Math.max(maxTimeStamp, sharerOrder.getOrderCreateTime().getTime() / 1000);
if (null != sharerOrder && null != sharerOrder.getOrderUpdateTime()) {
maxTimeStamp = Math.max(maxTimeStamp, sharerOrder.getOrderUpdateTime().getTime() / 1000);
}
return maxTimeStamp;
}
......@@ -89,7 +90,7 @@ public class CommissionOrderServiceImpl implements ICommissionOrderService {
@Override
public void doCommissionOrderFailRetry() {
int pageNum = 1;
int pageSize = 10;
int pageSize = 20;
Page<SharerOrderSyncFail> pageData;
LambdaQueryWrapper<SharerOrderSyncFail> failLqw = Wrappers.lambdaQuery();
failLqw.lt(SharerOrderSyncFail::getRetryCount, COMMISSION_ORDER_SYNC_MAX_RETRY_COUNT);
......@@ -100,15 +101,6 @@ public class CommissionOrderServiceImpl implements ICommissionOrderService {
break;
}
for (SharerOrderSyncFail fail : pageData.getRecords()) {
LambdaQueryWrapper<SharerOrder> orderLqw = Wrappers.lambdaQuery();
orderLqw.eq(SharerOrder::getOrderId, fail.getOrderId());
orderLqw.eq(SharerOrder::getSkuId, fail.getSkuId());
Long count = sharerOrderMapper.selectCount(orderLqw);
if (null != count && count > 0) {
// 已经同步,溢出失败记录
sharerOrderSyncFailMapper.deleteById(fail.getId());
continue;
}
// 推客分佣单入库
doSyncCommissionOrder(fail.getOrderId(), fail.getSkuId());
}
......@@ -120,26 +112,30 @@ public class CommissionOrderServiceImpl implements ICommissionOrderService {
*/
private void doSyncCommissionOrder(String orderId, String skuId) {
WeChatCommissionOrderDetailVO detailVO;
WeChatCommissionOrderDetailVO.CommssionOrderDetailVO commssionOrder;
try {
detailVO = weChatCommissionOrderDetailRequest.handle(orderId, skuId);
} catch (Exception e) {
log.error("[op:doSyncCommissionOrder] 推客分佣单获取详情异常", e);
String failMsg = StringUtils.substring(e.getMessage(), 0, 5000);
doSaveCommissionOrderSyncFail(orderId, skuId, String.join("推客分佣单获取详情异常;", failMsg));
return;
}
try {
if (null == detailVO) {
log.info("[op:doSyncCommissionOrder] 推客分佣单不存在");
return;
throw new BizException("推客分佣单获取详情为空");
}
WeChatCommissionOrderDetailVO.CommssionOrderDetailVO commssionOrder = detailVO.getCommssion_order();
commssionOrder = detailVO.getCommssion_order();
if (null == commssionOrder) {
log.info("[op:doSyncCommissionOrder] 推客分佣单明细不存在");
return;
throw new BizException("推客分佣单获取详情为空");
}
log.info("[op:doSyncCommissionOrder] 推客分佣单获取详情 detailVO:{}", JSON.toJSONString(commssionOrder));
} catch (Exception e) {
log.error("[op:doSyncCommissionOrder] 推客分佣单获取详情异常", e);
String failMsg = StringUtils.substring(e.getMessage(), 0, 5000);
doSaveCommissionOrderSyncFail(orderId, skuId, String.join("推客分佣单获取详情异常;", failMsg));
return;
}
try {
// 数据入库
doSaveCommissionOrder(commssionOrder);
// 成功后删除错误记录
doDeleteCommissionOrderSyncFail(orderId, skuId);
} catch (Exception e) {
log.error("[op:doSyncCommissionOrder] 推客分佣单信息入库异常", e);
String failMsg = StringUtils.substring(e.getMessage(), 0, 5000);
......@@ -150,6 +146,16 @@ public class CommissionOrderServiceImpl implements ICommissionOrderService {
/**
* 保存分佣单同步失败记录
*/
private void doDeleteCommissionOrderSyncFail(String orderId, String skuId) {
LambdaQueryWrapper<SharerOrderSyncFail> failLqw = Wrappers.lambdaQuery();
failLqw.eq(SharerOrderSyncFail::getOrderId, orderId);
failLqw.eq(SharerOrderSyncFail::getSkuId, skuId);
sharerOrderSyncFailMapper.delete(failLqw);
}
/**
* 保存分佣单同步失败记录
*/
private void doSaveCommissionOrderSyncFail(String orderId, String skuId, String failMsg) {
try {
LambdaQueryWrapper<SharerOrderSyncFail> failLqw = Wrappers.lambdaQuery();
......
......@@ -45,7 +45,7 @@ public class WeChatCommissionOrderListRequest implements IWeChatRequest {
*/
public WeChatCommissionOrderListVO handle(Long startTime, Long endTime, String nextKey, Integer pageSize) {
WeChatCommissionOrderListBO params = WeChatCommissionOrderListBO.builder()
.create_time_range(WeChatTimeRangeBO.builder().start_time(startTime).end_time(endTime).build())
.update_time_range(WeChatTimeRangeBO.builder().start_time(startTime).end_time(endTime).build())
.next_key(nextKey)
.page_size(pageSize)
.build();
......
......@@ -16,9 +16,9 @@ public class WeChatCommissionOrderListBO implements Serializable {
private static final long serialVersionUID = 1996751915518651231L;
/**
* 创建时间范围
* 佣金单更新时间范围
*/
private WeChatTimeRangeBO create_time_range;
private WeChatTimeRangeBO update_time_range;
/**
* 是否还有剩余商品
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment