update:订单执行日志打印

This commit is contained in:
Damonny 2025-02-21 14:30:38 +08:00
parent 6ef2974124
commit c8559a5451
1 changed files with 203 additions and 193 deletions

View File

@ -40,6 +40,7 @@ import com.doudian.open.core.AccessToken;
import com.doudian.open.core.AccessTokenBuilder; import com.doudian.open.core.AccessTokenBuilder;
import com.doudian.open.core.GlobalConfig; import com.doudian.open.core.GlobalConfig;
import com.doudian.open.gson.Gson; import com.doudian.open.gson.Gson;
import com.doudian.open.gson.JsonSyntaxException;
import com.doudian.open.msg.refund_RefundAgreed.param.RefundRefundAgreedParam; import com.doudian.open.msg.refund_RefundAgreed.param.RefundRefundAgreedParam;
import com.doudian.open.msg.refund_RefundCreated.param.RefundRefundCreatedParam; import com.doudian.open.msg.refund_RefundCreated.param.RefundRefundCreatedParam;
import com.doudian.open.msg.refund_ReturnApplyAgreed.param.RefundReturnApplyAgreedParam; import com.doudian.open.msg.refund_ReturnApplyAgreed.param.RefundReturnApplyAgreedParam;
@ -47,6 +48,7 @@ import com.doudian.open.msg.trade_TradeCanceled.param.TradeTradeCanceledParam;
import com.doudian.open.msg.trade_TradePaid.param.TradeTradePaidParam; import com.doudian.open.msg.trade_TradePaid.param.TradeTradePaidParam;
import com.doudian.open.msg.trade_TradePending.param.TradeTradePendingParam; import com.doudian.open.msg.trade_TradePending.param.TradeTradePendingParam;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -63,6 +65,7 @@ import java.util.regex.Pattern;
@Service @Service
@Validated @Validated
@Slf4j
public class DouDianOrderCatchServiceImpl implements OrderCatchService { public class DouDianOrderCatchServiceImpl implements OrderCatchService {
@ -94,208 +97,215 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
@Override @Override
public void catchOrders(List<Message> catchRepVO) { public void catchOrders(List<Message> catchRepVO) {
// 插入日志 // 插入日志
Gson gson = new Gson(); log.info("抖音消息推送订单,抓取/更新 订单");
for (Message message : catchRepVO) { log.error("抖音订单推送:{}", catchRepVO);
String tag = message.getTag(); try {
String msgId = message.getMsgId(); Gson gson = new Gson();
Object data = message.getData(); for (Message message : catchRepVO) {
// 插入日志 String tag = message.getTag();
if("doudian_refund_RefundCreated".equals(tag)){ String msgId = message.getMsgId();
// 买家发起售后申请消息 Object data = message.getData();
RefundRefundCreatedParam refundRefundCreatedParam = gson.fromJson(message.getData()+"", RefundRefundCreatedParam.class); // 插入日志
} else if("doudian_refund_RefundAgreed".equals(tag)) { if("doudian_refund_RefundCreated".equals(tag)){
// 同意退款消息 // 买家发起售后申请消息
RefundRefundAgreedParam refundRefundAgreedParam = gson.fromJson(message.getData()+"", RefundRefundAgreedParam.class); RefundRefundCreatedParam refundRefundCreatedParam = gson.fromJson(message.getData()+"", RefundRefundCreatedParam.class);
} else if("doudian_refund_ReturnApplyAgreed".equals(tag)) { } else if("doudian_refund_RefundAgreed".equals(tag)) {
// 同意退货申请消息 // 同意退款消息
RefundReturnApplyAgreedParam refundReturnApplyAgreedParam = gson.fromJson(message.getData()+"", RefundReturnApplyAgreedParam.class); RefundRefundAgreedParam refundRefundAgreedParam = gson.fromJson(message.getData()+"", RefundRefundAgreedParam.class);
} else if("doudian_trade_TradePaid".equals(tag)) { } else if("doudian_refund_ReturnApplyAgreed".equals(tag)) {
// 订单支付/确认消息 抓取订单 // 同意退货申请消息
TradeTradePaidParam tradeTradePaidParam = gson.fromJson(message.getData()+"", TradeTradePaidParam.class); RefundReturnApplyAgreedParam refundReturnApplyAgreedParam = gson.fromJson(message.getData()+"", RefundReturnApplyAgreedParam.class);
// 订单id } else if("doudian_trade_TradePaid".equals(tag)) {
Long pId = tradeTradePaidParam.getPId(); // 订单支付/确认消息 抓取订单
// 根据订单id查询订单详情 TradeTradePaidParam tradeTradePaidParam = gson.fromJson(message.getData()+"", TradeTradePaidParam.class);
OrderOrderDetailData orderDetail = orderDetail(String.valueOf(pId)); // 订单id
ShopOrderDetail order = orderDetail.getShopOrderDetail(); Long pId = tradeTradePaidParam.getPId();
// 所有的订单数据 // 根据订单id查询订单详情
List<com.doudian.open.api.order_orderDetail.data.SkuOrderListItem> skuOrderList = order.getSkuOrderList(); OrderOrderDetailData orderDetail = orderDetail(String.valueOf(pId));
// 店铺信息 ShopOrderDetail order = orderDetail.getShopOrderDetail();
Long shopId = order.getShopId(); // 所有的订单数据
String shopName = order.getShopName(); List<com.doudian.open.api.order_orderDetail.data.SkuOrderListItem> skuOrderList = order.getSkuOrderList();
// 物流信息 // 店铺信息
List<com.doudian.open.api.order_orderDetail.data.LogisticsInfoItem> logisticsInfo = order.getLogisticsInfo(); Long shopId = order.getShopId();
/** String shopName = order.getShopName();
* 需判断订单是否存在 // 物流信息
* 1.不存在 --- 新增 List<com.doudian.open.api.order_orderDetail.data.LogisticsInfoItem> logisticsInfo = order.getLogisticsInfo();
* 2.存在 --- 更新 /**
* 2.1 需更新的数据 订单状态 退款状态 * 需判断订单是否存在
*/ * 1.不存在 --- 新增
// 所有在售商品 * 2.存在 --- 更新
List<OnSaleProductDO> onSaleProductDOS = onSaleProductMapper.selectList(new QueryWrapper<OnSaleProductDO>().eq("deleted", 0).eq("onSale", true)); * 2.1 需更新的数据 订单状态 退款状态
// 所有在售商品sku */
List<String> skuList = onSaleProductDOS.stream().map(OnSaleProductDO::getSku).toList(); // 所有在售商品
// 买家备注 List<OnSaleProductDO> onSaleProductDOS = onSaleProductMapper.selectList(new QueryWrapper<OnSaleProductDO>().eq("deleted", 0).eq("onSale", true));
String buyerWords = order.getBuyerWords(); // 所有在售商品sku
// 收件人电话 List<String> skuList = onSaleProductDOS.stream().map(OnSaleProductDO::getSku).toList();
// String postTel = order.getPostTel(); // 买家备注
String encryptPostTel = order.getEncryptPostTel(); String buyerWords = order.getBuyerWords();
// 收件人姓名 // 收件人电话
// String postReceiver = order.getPostReceiver(); // String postTel = order.getPostTel();
String encryptPostReceiver = order.getEncryptPostReceiver(); String encryptPostTel = order.getEncryptPostTel();
// 收件人地址 // 收件人姓名
com.doudian.open.api.order_orderDetail.data.PostAddr postAddr = order.getPostAddr(); // String postReceiver = order.getPostReceiver();
// String encryptPostReceiver = order.getEncryptPostReceiver();
com.doudian.open.api.order_orderDetail.data.Province province = postAddr.getProvince(); // 收件人地址
// com.doudian.open.api.order_orderDetail.data.PostAddr postAddr = order.getPostAddr();
com.doudian.open.api.order_orderDetail.data.City city = postAddr.getCity(); //
// com.doudian.open.api.order_orderDetail.data.Province province = postAddr.getProvince();
com.doudian.open.api.order_orderDetail.data.Town town = postAddr.getTown(); //
// 街道/ com.doudian.open.api.order_orderDetail.data.City city = postAddr.getCity();
com.doudian.open.api.order_orderDetail.data.Street street = postAddr.getStreet(); //
// String detail = postAddr.getDetail(); com.doudian.open.api.order_orderDetail.data.Town town = postAddr.getTown();
String encryptDetail = postAddr.getEncryptDetail(); // 街道/
//用户信息 com.doudian.open.api.order_orderDetail.data.Street street = postAddr.getStreet();
com.doudian.open.api.order_orderDetail.data.UserIdInfo userIdInfo = order.getUserIdInfo(); // String detail = postAddr.getDetail();
// String idCardNo = userIdInfo.getIdCardNo(); String encryptDetail = postAddr.getEncryptDetail();
String encryptIdCardNo = userIdInfo.getEncryptIdCardNo(); //用户信息
// String idCardName = userIdInfo.getIdCardName(); com.doudian.open.api.order_orderDetail.data.UserIdInfo userIdInfo = order.getUserIdInfo();
String encryptIdCardName = userIdInfo.getEncryptIdCardName(); // String idCardNo = userIdInfo.getIdCardNo();
List<OrdersDO> orderList = new ArrayList<>(); String encryptIdCardNo = userIdInfo.getEncryptIdCardNo();
List<OrdersDO> orderListAll = new ArrayList<>(); // String idCardName = userIdInfo.getIdCardName();
for (com.doudian.open.api.order_orderDetail.data.SkuOrderListItem skuOrderListItem : skuOrderList) { String encryptIdCardName = userIdInfo.getEncryptIdCardName();
String orderId = skuOrderListItem.getOrderId(); List<OrdersDO> orderList = new ArrayList<>();
OrdersDO ordersDO = new OrdersDO(); List<OrdersDO> orderListAll = new ArrayList<>();
// 售后信息 for (com.doudian.open.api.order_orderDetail.data.SkuOrderListItem skuOrderListItem : skuOrderList) {
com.doudian.open.api.order_orderDetail.data.AfterSaleInfo afterSaleInfo = skuOrderListItem.getAfterSaleInfo(); String orderId = skuOrderListItem.getOrderId();
// 售后状态 0-售后初始化 6-售后申请 7-售后退货中 27-拒绝售后申请 12-售后成功 28-售后失败 11-售后已发货 29-退货后拒绝退款 13-售后换货商家发货 14-售后换货用户收货 51-取消成功 53-逆向交易完成 OrdersDO ordersDO = new OrdersDO();
Long afterSaleStatus = afterSaleInfo.getAfterSaleStatus(); // 售后信息
// 1-待退款3-退款成功 4-退款失败当买家发起售后后又主动取消售后此时after_sale_status=28并且refund_status=1的状态不变不会流转至4状态 com.doudian.open.api.order_orderDetail.data.AfterSaleInfo afterSaleInfo = skuOrderListItem.getAfterSaleInfo();
Long refundStatus = afterSaleInfo.getRefundStatus(); // 售后状态 0-售后初始化 6-售后申请 7-售后退货中 27-拒绝售后申请 12-售后成功 28-售后失败 11-售后已发货 29-退货后拒绝退款 13-售后换货商家发货 14-售后换货用户收货 51-取消成功 53-逆向交易完成
// 商品sku 判断是否抓单 Long afterSaleStatus = afterSaleInfo.getAfterSaleStatus();
String code = skuOrderListItem.getCode(); // 1-待退款3-退款成功 4-退款失败当买家发起售后后又主动取消售后此时after_sale_status=28并且refund_status=1的状态不变不会流转至4状态
if(skuList.contains(code)){ Long refundStatus = afterSaleInfo.getRefundStatus();
for (OnSaleProductDO onSaleProductDO : onSaleProductDOS) { // 商品sku 判断是否抓单
if(onSaleProductDO.getSku().equals(code)){ String code = skuOrderListItem.getCode();
// 注入产品生产方式 记录初始产品+接口相关信息 if(skuList.contains(code)){
OnSaleProductPreOrderRespVO onSaleProductPreOrder = onSaleProductService.getOnSaleProductPreOrder(onSaleProductDO.getId()); for (OnSaleProductDO onSaleProductDO : onSaleProductDOS) {
ordersDO.setAutoType(onSaleProductPreOrder.getParentProduct().getAutoType()); if(onSaleProductDO.getSku().equals(code)){
ordersDO.setOnSaleProductId(onSaleProductPreOrder.getId()); // 注入产品生产方式 记录初始产品+接口相关信息
ordersDO.setProductId(onSaleProductPreOrder.getParentProduct().getId()); OnSaleProductPreOrderRespVO onSaleProductPreOrder = onSaleProductService.getOnSaleProductPreOrder(onSaleProductDO.getId());
ordersDO.setSuperiorProductConfigId(onSaleProductPreOrder.getSuperiorProductConfigRespVO().getId()); ordersDO.setAutoType(onSaleProductPreOrder.getParentProduct().getAutoType());
ordersDO.setSuperiorApiId(onSaleProductPreOrder.getSuperiorApiRespVO().getId()); ordersDO.setOnSaleProductId(onSaleProductPreOrder.getId());
ordersDO.setProductId(onSaleProductPreOrder.getParentProduct().getId());
ordersDO.setSuperiorProductConfigId(onSaleProductPreOrder.getSuperiorProductConfigRespVO().getId());
ordersDO.setSuperiorApiId(onSaleProductPreOrder.getSuperiorApiRespVO().getId());
}
} }
} // 在售商品
// 在售商品 ordersDO.setSupplierProductSku(code);
ordersDO.setSupplierProductSku(code); Long orderStatus = skuOrderListItem.getOrderStatus();
Long orderStatus = skuOrderListItem.getOrderStatus(); // 1 待确认/待支付-订单创建完毕;105-已支付; 2-备货中 101-部分发货; 3-已发货全部发货;4- 已取消;5 已完成已收货;
// 1 待确认/待支付-订单创建完毕;105-已支付; 2-备货中 101-部分发货; 3-已发货全部发货;4- 已取消;5 已完成已收货; Long HaokaOrderStatus;// 号卡订单状态
Long HaokaOrderStatus;// 号卡订单状态 Long HaokaOrderRefundStatus;// 号卡订单退款状态
Long HaokaOrderRefundStatus;// 号卡订单退款状态 // 解析订单状态
// 解析订单状态 if(orderStatus == 105L){
if(orderStatus == 105L){ HaokaOrderStatus = 100L;
HaokaOrderStatus = 100L; ordersDO.setStatus(HaokaOrderStatus);
ordersDO.setStatus(HaokaOrderStatus); }else if(orderStatus == 101L || orderStatus == 3L){
}else if(orderStatus == 101L || orderStatus == 3L){ HaokaOrderStatus = 500L;
HaokaOrderStatus = 500L; ordersDO.setStatus(HaokaOrderStatus);
ordersDO.setStatus(HaokaOrderStatus); }else {
}else { // 更新订单退款状态 订单状态不变
// 更新订单退款状态 订单状态不变 }
} ordersDO.setStatusName(skuOrderListItem.getOrderStatusDesc());
ordersDO.setStatusName(skuOrderListItem.getOrderStatusDesc()); // 解析售后状态
// 解析售后状态 if(0L == afterSaleStatus){
if(0L == afterSaleStatus){ // 未进入售后
// 未进入售后 HaokaOrderRefundStatus = 800L;
HaokaOrderRefundStatus = 800L; } else if(afterSaleStatus == 28L || refundStatus == 1L){
} else if(afterSaleStatus == 28L || refundStatus == 1L){ // 未进入售后
// 未进入售后 HaokaOrderRefundStatus = 800L;
HaokaOrderRefundStatus = 800L; } else if(refundStatus == 3L){
} else if(refundStatus == 3L){ // 进入售后
// 进入售后 HaokaOrderRefundStatus = 300L;
HaokaOrderRefundStatus = 300L; } else {
} else { // 进入售后
// 进入售后 HaokaOrderRefundStatus = 200L;
HaokaOrderRefundStatus = 200L; }
} ordersDO.setRefundStatus(String.valueOf(HaokaOrderRefundStatus));
ordersDO.setRefundStatus(String.valueOf(HaokaOrderRefundStatus)); // 获取计划手机号
// 获取计划手机号 for (com.doudian.open.api.order_orderDetail.data.LogisticsInfoItem logisticsInfoItem : logisticsInfo) {
for (com.doudian.open.api.order_orderDetail.data.LogisticsInfoItem logisticsInfoItem : logisticsInfo) { for (com.doudian.open.api.order_orderDetail.data.ProductInfoItem productInfoItem : logisticsInfoItem.getProductInfo()) {
for (com.doudian.open.api.order_orderDetail.data.ProductInfoItem productInfoItem : logisticsInfoItem.getProductInfo()) { String skuOrderId = productInfoItem.getSkuOrderId();
String skuOrderId = productInfoItem.getSkuOrderId(); if(skuOrderId.equals(orderId)){
if(skuOrderId.equals(orderId)){ String productName = productInfoItem.getProductName();
String productName = productInfoItem.getProductName(); ordersDO.setSupplierProductName(productName);
ordersDO.setSupplierProductName(productName); List<com.doudian.open.api.order_orderDetail.data.SkuSpecsItem> skuSpecs = productInfoItem.getSkuSpecs();
List<com.doudian.open.api.order_orderDetail.data.SkuSpecsItem> skuSpecs = productInfoItem.getSkuSpecs(); for (com.doudian.open.api.order_orderDetail.data.SkuSpecsItem skuSpec : skuSpecs) {
for (com.doudian.open.api.order_orderDetail.data.SkuSpecsItem skuSpec : skuSpecs) { String name = skuSpec.getName();
String name = skuSpec.getName(); String planMobile = getPlanMobile(name);
String planMobile = getPlanMobile(name); if(planMobile != null){
if(planMobile != null){ ordersDO.setPlanMobile(planMobile);
ordersDO.setPlanMobile(planMobile); }
} }
} }
} }
} }
} // 查询订单是否存在 不存在则新增存在则更新
// 查询订单是否存在 不存在则新增存在则更新 List<OrdersDO> ordersDOS = ordersMapper.selectList(new QueryWrapper<OrdersDO>().eq("real_source_id", orderId).eq("deleted", 0));
List<OrdersDO> ordersDOS = ordersMapper.selectList(new QueryWrapper<OrdersDO>().eq("real_source_id", orderId).eq("deleted", 0)); if(CollectionUtil.isNotEmpty(ordersDOS)){
if(CollectionUtil.isNotEmpty(ordersDOS)){ // 更新订单
// 更新订单 OrdersDO ordersDO1 = ordersDOS.get(0);
OrdersDO ordersDO1 = ordersDOS.get(0); ordersDO1.setRefundStatus(String.valueOf(HaokaOrderRefundStatus));
ordersDO1.setRefundStatus(String.valueOf(HaokaOrderRefundStatus)); ordersMapper.updateById(ordersDO1);
ordersMapper.updateById(ordersDO1); }else {
}else { // 新增订单
// 新增订单 ordersDO.setShopId(String.valueOf(shopId));
ordersDO.setShopId(String.valueOf(shopId)); ordersDO.setShopName(shopName);
ordersDO.setShopName(shopName); ordersDO.setRoomId(skuOrderListItem.getRoomIdStr());
ordersDO.setRoomId(skuOrderListItem.getRoomIdStr()); // 真实订单
// 真实订单 ordersDO.setRealSourceId(orderId);
ordersDO.setRealSourceId(orderId); ordersDO.setSourceId(orderId);
ordersDO.setSourceId(orderId); // 买家备注
// 买家备注 ordersDO.setBuyerMemo(buyerWords);
ordersDO.setBuyerMemo(buyerWords); //证件信息
//证件信息 // ordersDO.setIdCardNum(idCardNo);
// ordersDO.setIdCardNum(idCardNo); ordersDO.setEncryptIdCardNum(encryptIdCardNo);
ordersDO.setEncryptIdCardNum(encryptIdCardNo); // ordersDO.setIdCardName(idCardName);
// ordersDO.setIdCardName(idCardName); ordersDO.setEncryptIdCardName(encryptIdCardName);
ordersDO.setEncryptIdCardName(encryptIdCardName); // 收件人信息
// 收件人信息 // ordersDO.setAddressMobile(postTel);
// ordersDO.setAddressMobile(postTel); ordersDO.setEncryptAddressMobile(encryptPostTel);
ordersDO.setEncryptAddressMobile(encryptPostTel); // ordersDO.setAddressName(postReceiver);
// ordersDO.setAddressName(postReceiver); ordersDO.setEncryptAddressName(encryptPostReceiver);
ordersDO.setEncryptAddressName(encryptPostReceiver); // 收件人地址
// 收件人地址 ordersDO.setAddressProvince(province.getName());
ordersDO.setAddressProvince(province.getName()); ordersDO.setAddressProvinceCode(province.getId());
ordersDO.setAddressProvinceCode(province.getId()); //
// ordersDO.setAddressCity(city.getName());
ordersDO.setAddressCity(city.getName()); ordersDO.setAddressCityCode(city.getId());
ordersDO.setAddressCityCode(city.getId()); //
// ordersDO.setAddressDistrict(town.getName());
ordersDO.setAddressDistrict(town.getName()); ordersDO.setAddressDistrictCode(town.getId());
ordersDO.setAddressDistrictCode(town.getId()); // 街道/
// 街道/ ordersDO.setTown(street.getName());
ordersDO.setTown(street.getName()); // 详细地址
// 详细地址 // ordersDO.setAddress(detail);
// ordersDO.setAddress(detail); ordersDO.setEncryptAddress(encryptDetail);
ordersDO.setEncryptAddress(encryptDetail); orderList.add(ordersDO);
orderList.add(ordersDO); }
}
}
} }
orderListAll.addAll(orderList);
ordersMapper.insertBatch(orderList);
// 执行解密解密后更新数据库
for (List<OrdersDO> ordersDOS : GroupListUtil.groupList(orderListAll, 50)) {
batchDecryptOrderAndUpdate(ordersDOS);
}
} else if("doudian_trade_TradeCanceled".equals(tag)) {
// 订单取消消息
TradeTradeCanceledParam tradeTradeCanceledParam = gson.fromJson(message.getData()+"", TradeTradeCanceledParam.class);
} else if("doudian_trade_TradePending".equals(tag)) {
// 订单已支付待处理
TradeTradePendingParam tradeTradePendingParam = gson.fromJson(message.getData()+"", TradeTradePendingParam.class);
} else {
// 未接入的消息类型
} }
orderListAll.addAll(orderList);
ordersMapper.insertBatch(orderList);
// 执行解密解密后更新数据库
for (List<OrdersDO> ordersDOS : GroupListUtil.groupList(orderListAll, 50)) {
batchDecryptOrderAndUpdate(ordersDOS);
}
} else if("doudian_trade_TradeCanceled".equals(tag)) {
// 订单取消消息
TradeTradeCanceledParam tradeTradeCanceledParam = gson.fromJson(message.getData()+"", TradeTradeCanceledParam.class);
} else if("doudian_trade_TradePending".equals(tag)) {
// 订单已支付待处理
TradeTradePendingParam tradeTradePendingParam = gson.fromJson(message.getData()+"", TradeTradePendingParam.class);
} else {
// 未接入的消息类型
} }
} catch (Exception e) {
log.error(e.getMessage(),e);
log.error("订单解析执行报错,错误原因:{}",e);
} }
} }