diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/orderCatch/DouDianOrderCatchServiceImpl.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/orderCatch/DouDianOrderCatchServiceImpl.java index 6213d99ded..e761d2b132 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/orderCatch/DouDianOrderCatchServiceImpl.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/orderCatch/DouDianOrderCatchServiceImpl.java @@ -306,6 +306,181 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService { // 110 doudian_trade_TradePending // 订单已支付待处理 TradeTradePendingParam tradeTradePendingParam = gson.fromJson(message.getData()+"", TradeTradePendingParam.class); + // 订单id + Long pId = tradeTradePendingParam.getPId(); + // 根据订单id查询订单详情 + OrderOrderDetailData orderDetail = orderDetail(String.valueOf(pId)); + ShopOrderDetail order = orderDetail.getShopOrderDetail(); + // 所有的订单数据 + List skuOrderList = order.getSkuOrderList(); + // 店铺信息 + Long shopId = order.getShopId(); + String shopName = order.getShopName(); + // 物流信息 + List logisticsInfo = order.getLogisticsInfo(); + /** + * 需判断订单是否存在 + * 1.不存在 --- 新增 + * 2.存在 --- 更新 + * 2.1 需更新的数据: 订单状态 退款状态 + */ + // 所有在售商品 + List onSaleProductDOS = onSaleProductMapper.selectList(new QueryWrapper().eq("deleted", 0).eq("onSale", true)); + // 所有在售商品sku + List skuList = onSaleProductDOS.stream().map(OnSaleProductDO::getSku).toList(); + // 买家备注 + String buyerWords = order.getBuyerWords(); + // 收件人电话 + // String postTel = order.getPostTel(); + String encryptPostTel = order.getEncryptPostTel(); + // 收件人姓名 + // String postReceiver = order.getPostReceiver(); + String encryptPostReceiver = order.getEncryptPostReceiver(); + // 收件人地址 + com.doudian.open.api.order_orderDetail.data.PostAddr postAddr = order.getPostAddr(); + // 省 + com.doudian.open.api.order_orderDetail.data.Province province = postAddr.getProvince(); + // 市 + com.doudian.open.api.order_orderDetail.data.City city = postAddr.getCity(); + // 区 + com.doudian.open.api.order_orderDetail.data.Town town = postAddr.getTown(); + // 街道/镇 + com.doudian.open.api.order_orderDetail.data.Street street = postAddr.getStreet(); + // String detail = postAddr.getDetail(); + String encryptDetail = postAddr.getEncryptDetail(); + //用户信息 + com.doudian.open.api.order_orderDetail.data.UserIdInfo userIdInfo = order.getUserIdInfo(); + // String idCardNo = userIdInfo.getIdCardNo(); + String encryptIdCardNo = userIdInfo.getEncryptIdCardNo(); + // String idCardName = userIdInfo.getIdCardName(); + String encryptIdCardName = userIdInfo.getEncryptIdCardName(); + List orderList = new ArrayList<>(); + List orderListAll = new ArrayList<>(); + for (com.doudian.open.api.order_orderDetail.data.SkuOrderListItem skuOrderListItem : skuOrderList) { + String orderId = skuOrderListItem.getOrderId(); + OrdersDO ordersDO = new OrdersDO(); + // 售后信息 + com.doudian.open.api.order_orderDetail.data.AfterSaleInfo afterSaleInfo = skuOrderListItem.getAfterSaleInfo(); + // 售后状态 0-售后初始化, 6-售后申请, 7-售后退货中, 27-拒绝售后申请, 12-售后成功, 28-售后失败, 11-售后已发货, 29-退货后拒绝退款, 13-售后换货商家发货, 14-售后换货用户收货, 51-取消成功, 53-逆向交易完成 + Long afterSaleStatus = afterSaleInfo.getAfterSaleStatus(); + // 1-待退款;3-退款成功; 4-退款失败;当买家发起售后后又主动取消售后,此时after_sale_status=28并且refund_status=1的状态不变,不会流转至4状态; + Long refundStatus = afterSaleInfo.getRefundStatus(); + // 商品sku 判断是否抓单 + String code = skuOrderListItem.getCode(); + if(skuList.contains(code)){ + for (OnSaleProductDO onSaleProductDO : onSaleProductDOS) { + if(onSaleProductDO.getSku().equals(code)){ + // 注入产品生产方式 记录初始产品+接口相关信息 + OnSaleProductPreOrderRespVO onSaleProductPreOrder = onSaleProductService.getOnSaleProductPreOrder(onSaleProductDO.getId()); + ordersDO.setAutoType(onSaleProductPreOrder.getParentProduct().getAutoType()); + ordersDO.setOnSaleProductId(onSaleProductPreOrder.getId()); + ordersDO.setProductId(onSaleProductPreOrder.getParentProduct().getId()); + ordersDO.setSuperiorProductConfigId(onSaleProductPreOrder.getSuperiorProductConfigRespVO().getId()); + ordersDO.setSuperiorApiId(onSaleProductPreOrder.getSuperiorApiRespVO().getId()); + } + } + // 在售商品 + ordersDO.setSupplierProductSku(code); + Long orderStatus = skuOrderListItem.getOrderStatus(); + // 1 待确认/待支付-订单创建完毕;105-已支付; 2-备货中; 101-部分发货; 3-已发货(全部发货);4- 已取消;5 已完成(已收货); + Long HaokaOrderStatus;// 号卡订单状态 + Long HaokaOrderRefundStatus;// 号卡订单退款状态 + // 解析订单状态 + if(orderStatus == 105L){ + HaokaOrderStatus = 100L; + ordersDO.setStatus(HaokaOrderStatus); + }else if(orderStatus == 101L || orderStatus == 3L){ + HaokaOrderStatus = 500L; + ordersDO.setStatus(HaokaOrderStatus); + }else { + // 更新订单退款状态 订单状态不变 + } + ordersDO.setStatusName(skuOrderListItem.getOrderStatusDesc()); + // 解析售后状态 + if(0L == afterSaleStatus){ + // 未进入售后 + HaokaOrderRefundStatus = 800L; + } else if(afterSaleStatus == 28L || refundStatus == 1L){ + // 未进入售后 + HaokaOrderRefundStatus = 800L; + } else if(refundStatus == 3L){ + // 进入售后 + HaokaOrderRefundStatus = 300L; + } else { + // 进入售后 + HaokaOrderRefundStatus = 200L; + } + ordersDO.setRefundStatus(String.valueOf(HaokaOrderRefundStatus)); + // 获取计划手机号 + for (com.doudian.open.api.order_orderDetail.data.LogisticsInfoItem logisticsInfoItem : logisticsInfo) { + for (com.doudian.open.api.order_orderDetail.data.ProductInfoItem productInfoItem : logisticsInfoItem.getProductInfo()) { + String skuOrderId = productInfoItem.getSkuOrderId(); + if(skuOrderId.equals(orderId)){ + String productName = productInfoItem.getProductName(); + ordersDO.setSupplierProductName(productName); + List skuSpecs = productInfoItem.getSkuSpecs(); + for (com.doudian.open.api.order_orderDetail.data.SkuSpecsItem skuSpec : skuSpecs) { + String name = skuSpec.getName(); + String planMobile = getPlanMobile(name); + if(planMobile != null){ + ordersDO.setPlanMobile(planMobile); + } + } + } + } + } + // 查询订单是否存在 不存在则新增,存在则更新 + List ordersDOS = ordersMapper.selectList(new QueryWrapper().eq("real_source_id", orderId).eq("deleted", 0)); + if(CollectionUtil.isNotEmpty(ordersDOS)){ + // 更新订单 + OrdersDO ordersDO1 = ordersDOS.get(0); + ordersDO1.setRefundStatus(String.valueOf(HaokaOrderRefundStatus)); + ordersMapper.updateById(ordersDO1); + }else { + // 新增订单 + ordersDO.setShopId(String.valueOf(shopId)); + ordersDO.setShopName(shopName); + ordersDO.setRoomId(skuOrderListItem.getRoomIdStr()); + // 真实订单 + ordersDO.setRealSourceId(orderId); + ordersDO.setSourceId(orderId); + // 买家备注 + ordersDO.setBuyerMemo(buyerWords); + //证件信息 + // ordersDO.setIdCardNum(idCardNo); + ordersDO.setEncryptIdCardNum(encryptIdCardNo); + // ordersDO.setIdCardName(idCardName); + ordersDO.setEncryptIdCardName(encryptIdCardName); + // 收件人信息 + // ordersDO.setAddressMobile(postTel); + ordersDO.setEncryptAddressMobile(encryptPostTel); + // ordersDO.setAddressName(postReceiver); + ordersDO.setEncryptAddressName(encryptPostReceiver); + // 收件人地址 省 + ordersDO.setAddressProvince(province.getName()); + ordersDO.setAddressProvinceCode(province.getId()); + // 市 + ordersDO.setAddressCity(city.getName()); + ordersDO.setAddressCityCode(city.getId()); + // 区 + ordersDO.setAddressDistrict(town.getName()); + ordersDO.setAddressDistrictCode(town.getId()); + // 街道/镇 + ordersDO.setTown(street.getName()); + // 详细地址 + // ordersDO.setAddress(detail); + ordersDO.setEncryptAddress(encryptDetail); + orderList.add(ordersDO); + } + + } + } + orderListAll.addAll(orderList); + ordersMapper.insertBatch(orderList); + // 执行解密,解密后更新数据库 + for (List ordersDOS : GroupListUtil.groupList(orderListAll, 50)) { + batchDecryptOrderAndUpdate(ordersDOS); + } } else { // 未接入的消息类型 }