From cc24e05e1afe2e741e81d6ff5b3979813fe3adba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E5=BB=BA=E7=82=8A?= <924182103@qq.com> Date: Wed, 4 Dec 2024 13:49:28 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=89=A3=E5=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Commands/KttOrderSyncStatus.php | 6 ++---- app/Services/Business/MiaoXuan/MiaoXuan.php | 9 +++++++-- app/Services/GoodSku/GoodSkuService.php | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/Console/Commands/KttOrderSyncStatus.php b/app/Console/Commands/KttOrderSyncStatus.php index e3f326b..0c89e11 100644 --- a/app/Console/Commands/KttOrderSyncStatus.php +++ b/app/Console/Commands/KttOrderSyncStatus.php @@ -44,19 +44,17 @@ class KttOrderSyncStatus extends Command public function handle() { $startTime = Carbon::now()->subDays(15)->getPreciseTimestamp(3); - $shops = Shop::query()->where('plat_id', Shop::$PLAT_KTT)->where('status', Shop::$STATUS_AUTHORIZED)->get(); BusinessOrder::query()->where('confirm_at', '>=', $startTime) ->where('shipping_status',BusinessOrderShippingStatus::UNSHIP) ->where('cancel_status',0) - ->chunk(200, function ($orders) use ($shops) { + ->chunk(200, function ($orders){ foreach ($orders as $order) { - $shop = $shops->where('id',$order['shop_id'])->first(); + $shop = Shop::query()->find($order['shop_id']); if(!empty($shop)){ BusinessFactory::init()->make($shop->plat_id)->setShop($shop)->queryStatusAndSync($order); usleep(10); } } }); - } } diff --git a/app/Services/Business/MiaoXuan/MiaoXuan.php b/app/Services/Business/MiaoXuan/MiaoXuan.php index a900d0f..d2392f9 100644 --- a/app/Services/Business/MiaoXuan/MiaoXuan.php +++ b/app/Services/Business/MiaoXuan/MiaoXuan.php @@ -33,11 +33,16 @@ class MiaoXuan extends BusinessClient { } - public function downloadAfterSaleOrdersAndSave($beginTime, $endTime, $page = 1){ + public function downloadAfterSaleOrdersAndSave($beginTime, $endTime, $page = 1) + { } - public function queryStatusAndSync($order){ + public function queryStatusAndSync($order) + { + $appendParams = ["order_sn" => $order->order_sn, "type" => "erpQuery"]; + $url = 'http://shop.chutang66.com/miaoxuan/queryStatus'; + $res = $this->formDataPostRequest($url, $appendParams); } diff --git a/app/Services/GoodSku/GoodSkuService.php b/app/Services/GoodSku/GoodSkuService.php index a37dd1a..8efb84c 100644 --- a/app/Services/GoodSku/GoodSkuService.php +++ b/app/Services/GoodSku/GoodSkuService.php @@ -121,7 +121,7 @@ class GoodSkuService ->select("external_sku_id", DB::raw("SUM(goods_number) - SUM(already_cancel_number) as number")) ->whereIn("external_sku_id", $externalSkuIds) ->where("b.shipping_status", "=", BusinessOrderShippingStatus::UNSHIP) - ->where("business_order_items.created_at", ">=", $startTime)->where("b.cancel_status", "=", 0) + ->where("business_order_items.created_at", ">=", $startTime)->where("business_order_items.cancel_status", "=", 0) ->groupBy('external_sku_id')->get()->toArray(); Log::info("盘点未发货数据",[$unshippedDataCollect]); From 5b73d0641eff80534ad187d460a579a5ead6e691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E5=BB=BA=E7=82=8A?= <924182103@qq.com> Date: Thu, 5 Dec 2024 18:47:51 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=89=A3=E5=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/Business/MiaoXuan/MiaoXuan.php | 41 ++++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/app/Services/Business/MiaoXuan/MiaoXuan.php b/app/Services/Business/MiaoXuan/MiaoXuan.php index d2392f9..3b3cf57 100644 --- a/app/Services/Business/MiaoXuan/MiaoXuan.php +++ b/app/Services/Business/MiaoXuan/MiaoXuan.php @@ -3,6 +3,8 @@ namespace App\Services\Business\MiaoXuan; use App\Models\BusinessGoodsSku; +use App\Models\BusinessOrderItem; +use App\Models\GoodsSku; use App\Services\Business\BusinessClient; class MiaoXuan extends BusinessClient @@ -41,9 +43,44 @@ class MiaoXuan extends BusinessClient public function queryStatusAndSync($order) { $appendParams = ["order_sn" => $order->order_sn, "type" => "erpQuery"]; - $url = 'http://shop.chutang66.com/miaoxuan/queryStatus'; - $res = $this->formDataPostRequest($url, $appendParams); + $url = 'http://shop.dev.chutang66.com/miaoxuan/queryOrder'; + $queryOrder = $this->formDataPostRequest($url, $appendParams); + $needUpdate = false; + if ($order->shipping_status != $queryOrder['shipping_status']) { + $order->shipping_status = $queryOrder['shipping_status']; + $needUpdate = true; + } + if ($order->cancel_status != $queryOrder['cancel_status']) { + $order->cancel_status = $queryOrder['cancel_status']; + $needUpdate = true; + } + if ($order->after_sales_status!= $queryOrder['cancel_status']) { + //售后状态更新 + $order->after_sales_status = $queryOrder['after_sales_status']; + $needUpdate = true; + } + if ($needUpdate) { + $goodsSkuNum = 0; + foreach ($queryOrder['sub_order_list'] as $item) { + $orderItem = BusinessOrderItem::firstOrNew(['shop_id' => $order->shop_id, 'business_order_id' => $order->id, 'goods_id' => $item['goods_id'], 'sku_id' => $item['sku_id']], $item); + if ($item['external_sku_id']) { + $goodsSku = GoodsSku::query() + ->with('combinationGoods') + ->where('external_sku_id', $item['external_sku_id']) + ->first('external_sku_id'); + $combinationNum = $goodsSku ? ($goodsSku->combinationGoods->count() ?: 1) : 1; + $goodsSkuNum += $combinationNum; + } else { + $goodsSkuNum++; + } + if (!empty($orderItem->id)) { + $orderItem->update($item); + } + } + $order->goods_sku_num = $goodsSkuNum; + $order->save(); + } } public function batchIncrQuantity($businessGoodsSkus, $num, $incremental) From d1b2d06c6b16084c572e41d15df1b86989aea9d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E5=BB=BA=E7=82=8A?= <924182103@qq.com> Date: Thu, 5 Dec 2024 19:03:56 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=89=A3=E5=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Commands/KttOrderSyncStatus.php | 31 ++++++++++++------- .../Business/KuaiTuanTuan/KuaiTuanTuan.php | 5 +++ app/Services/GoodSku/GoodSkuService.php | 1 + 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/app/Console/Commands/KttOrderSyncStatus.php b/app/Console/Commands/KttOrderSyncStatus.php index 0c89e11..6912c03 100644 --- a/app/Console/Commands/KttOrderSyncStatus.php +++ b/app/Console/Commands/KttOrderSyncStatus.php @@ -16,7 +16,7 @@ class KttOrderSyncStatus extends Command * * @var string */ - protected $signature = 'ktt:order_sync_status'; + protected $signature = 'ktt:order_sync_status {ids?}'; /** * The console command description. @@ -43,18 +43,25 @@ class KttOrderSyncStatus extends Command */ public function handle() { + $ids = $this->argument('ids'); + if (!empty($ids)) { + $ids = explode(",", $ids); + } $startTime = Carbon::now()->subDays(15)->getPreciseTimestamp(3); - BusinessOrder::query()->where('confirm_at', '>=', $startTime) - ->where('shipping_status',BusinessOrderShippingStatus::UNSHIP) - ->where('cancel_status',0) - ->chunk(200, function ($orders){ - foreach ($orders as $order) { - $shop = Shop::query()->find($order['shop_id']); - if(!empty($shop)){ - BusinessFactory::init()->make($shop->plat_id)->setShop($shop)->queryStatusAndSync($order); - usleep(10); + BusinessOrder::query()->when($ids, function ($query) use ($ids) { + $query->whereIn('id',$ids); + }) + ->where('confirm_at', '>=', $startTime) + ->where('shipping_status', BusinessOrderShippingStatus::UNSHIP) + ->where('cancel_status', 0) + ->chunk(200, function ($orders) { + foreach ($orders as $order) { + $shop = Shop::query()->find($order['shop_id']); + if (!empty($shop)) { + BusinessFactory::init()->make($shop->plat_id)->setShop($shop)->queryStatusAndSync($order); + usleep(10); + } } - } - }); + }); } } diff --git a/app/Services/Business/KuaiTuanTuan/KuaiTuanTuan.php b/app/Services/Business/KuaiTuanTuan/KuaiTuanTuan.php index a8be2d4..14b5099 100644 --- a/app/Services/Business/KuaiTuanTuan/KuaiTuanTuan.php +++ b/app/Services/Business/KuaiTuanTuan/KuaiTuanTuan.php @@ -196,6 +196,11 @@ class KuaiTuanTuan extends BusinessClient $order->cancel_status = $queryOrder['cancel_status']; $needUpdate = true; } + if ($order->after_sales_status!= $queryOrder['cancel_status']) { + //售后状态更新 + $order->after_sales_status = $queryOrder['after_sales_status']; + $needUpdate = true; + } if ($needUpdate) { $goodsSkuNum = 0; foreach ($queryOrder['sub_order_list'] as $item) { diff --git a/app/Services/GoodSku/GoodSkuService.php b/app/Services/GoodSku/GoodSkuService.php index 8efb84c..d06096b 100644 --- a/app/Services/GoodSku/GoodSkuService.php +++ b/app/Services/GoodSku/GoodSkuService.php @@ -121,6 +121,7 @@ class GoodSkuService ->select("external_sku_id", DB::raw("SUM(goods_number) - SUM(already_cancel_number) as number")) ->whereIn("external_sku_id", $externalSkuIds) ->where("b.shipping_status", "=", BusinessOrderShippingStatus::UNSHIP) + ->where("b.after_sales_status", "!=", 2) ->where("business_order_items.created_at", ">=", $startTime)->where("business_order_items.cancel_status", "=", 0) ->groupBy('external_sku_id')->get()->toArray();