From f5f6e45f43cea48108fbdbb11589c2a4feed05c7 Mon Sep 17 00:00:00 2001 From: Damonny <826010988@qq.com> Date: Sun, 23 Feb 2025 01:23:21 +0800 Subject: [PATCH] =?UTF-8?q?update:=E8=AE=A2=E5=8D=95=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DouDianOrderCatchServiceImpl.java | 548 +++++++----------- 1 file changed, 198 insertions(+), 350 deletions(-) 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 aa7b304c91..544b0ee681 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 @@ -1,22 +1,15 @@ package cn.iocoder.yudao.module.haoka.service.orderCatch; import cn.hutool.core.collection.CollectionUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.haoka.controller.admin.onsaleproduct.vo.OnSaleProductPreOrderRespVO; import cn.iocoder.yudao.module.haoka.controller.admin.orderCatch.po.Message; -import cn.iocoder.yudao.module.haoka.controller.admin.orderCatch.vo.OrderCatchRepVO; -import cn.iocoder.yudao.module.haoka.controller.admin.ordersynclog.vo.OrderSyncLogPageReqVO; -import cn.iocoder.yudao.module.haoka.controller.admin.ordersynclog.vo.OrderSyncLogSaveReqVO; import cn.iocoder.yudao.module.haoka.dal.dataobject.onsaleproduct.OnSaleProductDO; import cn.iocoder.yudao.module.haoka.dal.dataobject.orders.OrdersDO; -import cn.iocoder.yudao.module.haoka.dal.dataobject.ordersynclog.OrderSyncLogDO; import cn.iocoder.yudao.module.haoka.dal.mysql.onsaleproduct.OnSaleProductMapper; import cn.iocoder.yudao.module.haoka.dal.mysql.orders.OrdersMapper; import cn.iocoder.yudao.module.haoka.service.onsaleproduct.OnSaleProductService; import cn.iocoder.yudao.module.haoka.service.ordersynclog.OrderSyncLogService; -import cn.iocoder.yudao.module.haoka.service.ordersynclog.OrderSyncLogServiceImpl; import cn.iocoder.yudao.module.haoka.utils.GroupListUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.doudian.open.api.order_batchDecrypt.OrderBatchDecryptRequest; @@ -41,7 +34,6 @@ import com.doudian.open.core.AccessToken; import com.doudian.open.core.AccessTokenBuilder; import com.doudian.open.core.GlobalConfig; 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_RefundCreated.param.RefundRefundCreatedParam; import com.doudian.open.msg.refund_ReturnApplyAgreed.param.RefundReturnApplyAgreedParam; @@ -52,14 +44,8 @@ import com.doudian.open.utils.JsonUtil; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; - -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; @@ -112,186 +98,43 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService { // 200 doudian_refund_RefundCreated // 买家发起售后申请消息 RefundRefundCreatedParam refundRefundCreatedParam = gson.fromJson(message.getData()+"", RefundRefundCreatedParam.class); + Long pId = refundRefundCreatedParam.getPId(); +// 更新订单取消 + List ordersDOS = ordersMapper.selectList(new LambdaQueryWrapperX().eq(OrdersDO::getRealSourceId, pId).eq(OrdersDO::getDeleted, 0)); + if(CollectionUtil.isNotEmpty(ordersDOS)){ + OrdersDO ordersDO = ordersDOS.get(0); + ordersDO.setRefundStatus("200"); + ordersMapper.updateById(ordersDO); + } } else if("201".equals(tag)) { // 201 doudian_refund_RefundAgreed // 同意退款消息 RefundRefundAgreedParam refundRefundAgreedParam = gson.fromJson(message.getData()+"", RefundRefundAgreedParam.class); + Long pId = refundRefundAgreedParam.getPId(); + List ordersDOS = ordersMapper.selectList(new LambdaQueryWrapperX().eq(OrdersDO::getRealSourceId, pId).eq(OrdersDO::getDeleted, 0)); + if(CollectionUtil.isNotEmpty(ordersDOS)){ + OrdersDO ordersDO = ordersDOS.get(0); + ordersDO.setRefundStatus("300"); + ordersMapper.updateById(ordersDO); + } } else if("202".equals(tag)) { // 202 doudian_refund_ReturnApplyAgreed // 同意退货申请消息 RefundReturnApplyAgreedParam refundReturnApplyAgreedParam = gson.fromJson(message.getData()+"", RefundReturnApplyAgreedParam.class); + Long pId = refundReturnApplyAgreedParam.getPId(); + List ordersDOS = ordersMapper.selectList(new LambdaQueryWrapperX().eq(OrdersDO::getRealSourceId, pId).eq(OrdersDO::getDeleted, 0)); + if(CollectionUtil.isNotEmpty(ordersDOS)){ + OrdersDO ordersDO = ordersDOS.get(0); + ordersDO.setRefundStatus("300"); + ordersMapper.updateById(ordersDO); + } } else if("101".equals(tag)) { // 101 doudian_trade_TradePaid // 订单支付/确认消息 抓取订单 TradeTradePaidParam tradeTradePaidParam = gson.fromJson(message.getData()+"", TradeTradePaidParam.class); // 订单id - Long pId = tradeTradePaidParam.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)); - List onSaleProductDOS = onSaleProductMapper.selectList(new LambdaQueryWrapperX().eq(OnSaleProductDO::getDeleted, 0) - .eq(OnSaleProductDO::getOnSale, 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)); - // 获取计划手机号 - String productName = skuOrderListItem.getProductName(); - ordersDO.setSupplierProductName(productName); - for (com.doudian.open.api.order_orderDetail.data.SpecItem specItem : skuOrderListItem.getSpec()) { - String value = specItem.getValue(); - String planMobile = getPlanMobile(value); - 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); + for (Long sId : tradeTradePaidParam.getSIds()) { + orderToDataBase(sId); } } else if("106".equals(tag)) { // 106 doudian_trade_TradeCanceled @@ -310,173 +153,8 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService { // 订单已支付待处理 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)); - List onSaleProductDOS = onSaleProductMapper.selectList(new LambdaQueryWrapperX().eq(OnSaleProductDO::getDeleted, 0) - .eq(OnSaleProductDO::getOnSale, 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)); - // 获取计划手机号 - String productName = skuOrderListItem.getProductName(); - ordersDO.setSupplierProductName(productName); - for (com.doudian.open.api.order_orderDetail.data.SpecItem specItem : skuOrderListItem.getSpec()) { - String value = specItem.getValue(); - String planMobile = getPlanMobile(value); - 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); + for (Long sId : tradeTradePendingParam.getSIds()) { + orderToDataBase(sId); } } else { // 未接入的消息类型 @@ -489,6 +167,176 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService { } + private void orderToDataBase(Long pId) { + // 根据订单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)); + List onSaleProductDOS = onSaleProductMapper.selectList(new LambdaQueryWrapperX().eq(OnSaleProductDO::getDeleted, 0) + .eq(OnSaleProductDO::getOnSale, 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)); + // 获取计划手机号 + String productName = skuOrderListItem.getProductName(); + ordersDO.setSupplierProductName(productName); + for (com.doudian.open.api.order_orderDetail.data.SpecItem specItem : skuOrderListItem.getSpec()) { + String value = specItem.getValue(); + String planMobile = getPlanMobile(value); + 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); + ordersDO.setId(ordersDO1.getId()); + ordersMapper.updateById(ordersDO); + }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); + } + } + /** * 将订单数据插入到数据库 @@ -615,8 +463,8 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService { if(CollectionUtil.isNotEmpty(ordersDOS)){ // 更新订单 OrdersDO ordersDO1 = ordersDOS.get(0); - ordersDO1.setRefundStatus(String.valueOf(HaokaOrderRefundStatus)); - ordersMapper.updateById(ordersDO1); + ordersDO.setId(ordersDO1.getId()); + ordersMapper.updateById(ordersDO); }else { // 新增订单 ordersDO.setShopId(String.valueOf(shopId));