京东打印

This commit is contained in:
杨建炊 2024-12-28 11:13:17 +08:00
parent 2019a88fb9
commit 0cd78ff136
8 changed files with 90 additions and 9 deletions

View File

@ -10,6 +10,9 @@ class BusinessOrderFilter extends Filters
{
protected function ids($value)
{
if(is_string($value)){
$value = explode(",", $value);
}
return $this->builder->whereIn('id', $value);
}

View File

@ -16,6 +16,7 @@ use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Resources\BusinessOrderResource;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Maatwebsite\Excel\Facades\Excel;
class BusinessOrderController extends Controller
@ -28,12 +29,20 @@ class BusinessOrderController extends Controller
$builder = BusinessOrder::query()
->with([
'shop:id,name',
'items:id,business_order_id,goods_name,goods_number,external_sku_id'
'items:id,business_order_id,goods_name,goods_number,external_sku_id',
"waybill"
])
->whereIn('shop_id', $shopIds)
->filter();
$externalSkuIds = $request->get('external_sku_ids');
$externalSkuId = $request->get('external_sku_id');
if (!empty($externalSkuId)) {
$externalSkuIds = $externalSkuId;
}
if ($externalSkuIds) {
if (is_string($externalSkuIds)) {
$externalSkuIds = explode(",", $externalSkuIds);
}
$ids = BusinessOrderItem::query()->whereIn('external_sku_id', $externalSkuIds)->pluck('business_order_id');
$builder->whereIn('id', $ids);
}
@ -170,6 +179,7 @@ class BusinessOrderController extends Controller
public function print(Request $request)
{
$shopIds = Shop::query()
->where('plat_id', Shop::$PLAT_KTT)
->pluck('id');
@ -178,11 +188,15 @@ class BusinessOrderController extends Controller
->whereIn('shop_id', $shopIds)
->filter();
$externalSkuIds = $request->get('external_sku_ids');
if ($externalSkuIds) {
$ids = BusinessOrderItem::query()->whereIn('external_sku_id', $externalSkuIds)->pluck('business_order_id');
$builder->whereIn('id', $ids);
}
if ($ids = $request->input('ids')) {
if (is_string($ids)) {
$ids = explode(",", $ids);
}
$builder->whereIn('id', $ids);
}
$businessOrders = $builder->get();
@ -250,9 +264,9 @@ class BusinessOrderController extends Controller
$orderIds = explode(',', $orderIds);
BusinessOrder::query()
->whereIn('id', $orderIds)
->increment('print_status');
->update(['print_status' => 1]);
Waybill::query()
->where('order', $orderIds)
->where('order_id', $orderIds)
->update(['status' => Waybill::$STATUS_PRINT_SUCCESS]);
return response(['message' => 'success']);
}

View File

@ -0,0 +1,38 @@
<?php
namespace App\Http\Controllers\Business;
use App\Exports\BusinessOrderExport;
use App\Exports\OrderBlankExport;
use App\Http\Controllers\Controller;
use App\Models\BusinessOrder;
use App\Models\BusinessOrderItem;
use App\Models\GoodsSku;
use App\Models\Shop;
use App\Models\Waybill;
use App\Services\WayBill\JingDong\JingDongService;
use App\Services\WayBill\JingDong\WayBillService;
use App\Utils\DateTimeUtils;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Resources\BusinessOrderResource;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Maatwebsite\Excel\Facades\Excel;
class WaybillController extends Controller
{
public function queryTrace(Request $request)
{
$params = $request->validate([
'order_id' => 'required',
], [
'order_id.required' => '订单id',
]);
$waybill = Waybill::query()->where("order_id", $params['order_id'])->firstOrFail();
$jingDongService = new JingDongService();
return $jingDongService->queryTrace($waybill);
}
}

View File

@ -3,6 +3,7 @@
namespace App\Listeners;
use App\Events\CreateLogisticEvent;
use App\Models\BusinessOrder;
use App\Models\Shop;
use App\Services\Business\BusinessFactory;
use Illuminate\Contracts\Queue\ShouldQueue;
@ -27,13 +28,13 @@ class CreateLogisticListener implements ShouldQueue
/**
* Handle the event.
*
* @param CreateLogisticEvent $event
* @param CreateLogisticEvent $event
* @return void
*/
public function handle(CreateLogisticEvent $event)
{
$shop = Shop::query()->findOrFail($event->shopId);
$shop = Shop::query()->findOrFail($event->shopId);;
$client = BusinessFactory::init()->make($shop['plat_id'])->setShop($shop);
$client->createLogistic($event->orderSn, $event->waybillNo);
//$client->createLogistic($event->orderSn, $event->waybillNo);
}
}

View File

@ -23,6 +23,8 @@ class BusinessOrder extends Model
'print_status',
'ids',
'pno',
'order_sn',
'id',
];
protected $fillable = [
@ -72,4 +74,9 @@ class BusinessOrder extends Model
{
return $this->belongsTo(Shop::class, 'shop_id', 'id');
}
public function waybill()
{
return $this->belongsTo(Waybill::class, 'id', 'order_id');
}
}

View File

@ -86,7 +86,7 @@ class JingDongService
$response = json_decode($response->getBody(), true);
Log::info("京东返回请求response", [$response]);
if (!isset($response['code']) || ($response['code'] != 0 && $response['code'] != 1 && $response['code'] != 1000)) {
throw new \Exception($response['msg'] ?? "code异常");
throw new \Exception($response['message'] ?? "code异常");
}
return $response;
}
@ -226,5 +226,19 @@ class JingDongService
return $response['data'];
}
public function queryTrace(Waybill $pickup)
{
$path = "/freshmedicinedelivery/delivery/query/waybill/gis/v1";
$pickupData = $pickup->toArray();
$body = [
"waybillNo" => $pickupData['waybill_code'] ?? '',
"customerCode" => $this->customerCode,
];
$response = $this->request($body, $path);
return $response['data'];
}
}

View File

@ -44,7 +44,7 @@ class WayBillService
$waybill->waybill_code = $resp['waybillNo'];
$waybill->save();
//物流发货
event(new CreateLogisticEvent($order->shop_id, $waybill->order_sn, $waybill->waybill_code));
event(new CreateLogisticEvent($waybill->shop_id, $waybill->order_sn, $waybill->waybill_code));
}
}
//返回面单待打印数据
@ -239,6 +239,7 @@ class WayBillService
'note' => $order['business_note'] ? $order['business_note'] . ',' . $order['buyer_memo'] : $order['buyer_memo'],
'items' => []
];
$note = "";
foreach ($order['items'] as $item) {
$count = $item['goods_number'] - $item['already_cancel_number'];
$info['items'][] = [
@ -248,8 +249,10 @@ class WayBillService
'count' => $count,
'external_sku_id' => $item['external_sku_id'],
];
$note .= $item['goods_name'] . " " . $count . "件,";
}
$note .= "[备注:" . $info['note'] . "]";
$info['note'] = $note;
$this->orders[$order['shop_id']][] = $info;
}

View File

@ -72,6 +72,7 @@ Route::middleware(['auth:api', 'check.permissions'])->group(function () {
Route::get('shop/ship', [ShipController::class, 'index'])->name('shop_ship.index');
Route::get('print/orders', [BusinessOrderController::class, 'print'])->name('order.print');
Route::put('print/success', [BusinessOrderController::class, 'printSuccess'])->name('order.printSuccess');
Route::get('waybill/queryTrace', [\App\Http\Controllers\Business\WaybillController::class, 'queryTrace']);
// 发货信息
Route::get('shop/ship/senders', [ShipController::class, 'getSenders'])->name('shop_ship.senders.get');
Route::post('shop/ship/senders', [ShipController::class, 'saveSenders'])->name('shop_ship.senders.save');