京东打印
This commit is contained in:
parent
2019a88fb9
commit
0cd78ff136
@ -10,6 +10,9 @@ class BusinessOrderFilter extends Filters
|
|||||||
{
|
{
|
||||||
protected function ids($value)
|
protected function ids($value)
|
||||||
{
|
{
|
||||||
|
if(is_string($value)){
|
||||||
|
$value = explode(",", $value);
|
||||||
|
}
|
||||||
return $this->builder->whereIn('id', $value);
|
return $this->builder->whereIn('id', $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -16,6 +16,7 @@ use Carbon\Carbon;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Resources\BusinessOrderResource;
|
use App\Http\Resources\BusinessOrderResource;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
use Maatwebsite\Excel\Facades\Excel;
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
|
||||||
class BusinessOrderController extends Controller
|
class BusinessOrderController extends Controller
|
||||||
@ -28,12 +29,20 @@ class BusinessOrderController extends Controller
|
|||||||
$builder = BusinessOrder::query()
|
$builder = BusinessOrder::query()
|
||||||
->with([
|
->with([
|
||||||
'shop:id,name',
|
'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)
|
->whereIn('shop_id', $shopIds)
|
||||||
->filter();
|
->filter();
|
||||||
$externalSkuIds = $request->get('external_sku_ids');
|
$externalSkuIds = $request->get('external_sku_ids');
|
||||||
|
$externalSkuId = $request->get('external_sku_id');
|
||||||
|
if (!empty($externalSkuId)) {
|
||||||
|
$externalSkuIds = $externalSkuId;
|
||||||
|
}
|
||||||
if ($externalSkuIds) {
|
if ($externalSkuIds) {
|
||||||
|
if (is_string($externalSkuIds)) {
|
||||||
|
$externalSkuIds = explode(",", $externalSkuIds);
|
||||||
|
}
|
||||||
$ids = BusinessOrderItem::query()->whereIn('external_sku_id', $externalSkuIds)->pluck('business_order_id');
|
$ids = BusinessOrderItem::query()->whereIn('external_sku_id', $externalSkuIds)->pluck('business_order_id');
|
||||||
$builder->whereIn('id', $ids);
|
$builder->whereIn('id', $ids);
|
||||||
}
|
}
|
||||||
@ -170,6 +179,7 @@ class BusinessOrderController extends Controller
|
|||||||
|
|
||||||
public function print(Request $request)
|
public function print(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$shopIds = Shop::query()
|
$shopIds = Shop::query()
|
||||||
->where('plat_id', Shop::$PLAT_KTT)
|
->where('plat_id', Shop::$PLAT_KTT)
|
||||||
->pluck('id');
|
->pluck('id');
|
||||||
@ -178,11 +188,15 @@ class BusinessOrderController extends Controller
|
|||||||
->whereIn('shop_id', $shopIds)
|
->whereIn('shop_id', $shopIds)
|
||||||
->filter();
|
->filter();
|
||||||
$externalSkuIds = $request->get('external_sku_ids');
|
$externalSkuIds = $request->get('external_sku_ids');
|
||||||
|
|
||||||
if ($externalSkuIds) {
|
if ($externalSkuIds) {
|
||||||
$ids = BusinessOrderItem::query()->whereIn('external_sku_id', $externalSkuIds)->pluck('business_order_id');
|
$ids = BusinessOrderItem::query()->whereIn('external_sku_id', $externalSkuIds)->pluck('business_order_id');
|
||||||
$builder->whereIn('id', $ids);
|
$builder->whereIn('id', $ids);
|
||||||
}
|
}
|
||||||
if ($ids = $request->input('ids')) {
|
if ($ids = $request->input('ids')) {
|
||||||
|
if (is_string($ids)) {
|
||||||
|
$ids = explode(",", $ids);
|
||||||
|
}
|
||||||
$builder->whereIn('id', $ids);
|
$builder->whereIn('id', $ids);
|
||||||
}
|
}
|
||||||
$businessOrders = $builder->get();
|
$businessOrders = $builder->get();
|
||||||
@ -250,9 +264,9 @@ class BusinessOrderController extends Controller
|
|||||||
$orderIds = explode(',', $orderIds);
|
$orderIds = explode(',', $orderIds);
|
||||||
BusinessOrder::query()
|
BusinessOrder::query()
|
||||||
->whereIn('id', $orderIds)
|
->whereIn('id', $orderIds)
|
||||||
->increment('print_status');
|
->update(['print_status' => 1]);
|
||||||
Waybill::query()
|
Waybill::query()
|
||||||
->where('order', $orderIds)
|
->where('order_id', $orderIds)
|
||||||
->update(['status' => Waybill::$STATUS_PRINT_SUCCESS]);
|
->update(['status' => Waybill::$STATUS_PRINT_SUCCESS]);
|
||||||
return response(['message' => 'success']);
|
return response(['message' => 'success']);
|
||||||
}
|
}
|
||||||
|
|||||||
38
app/Http/Controllers/Business/WaybillController.php
Normal file
38
app/Http/Controllers/Business/WaybillController.php
Normal 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -3,6 +3,7 @@
|
|||||||
namespace App\Listeners;
|
namespace App\Listeners;
|
||||||
|
|
||||||
use App\Events\CreateLogisticEvent;
|
use App\Events\CreateLogisticEvent;
|
||||||
|
use App\Models\BusinessOrder;
|
||||||
use App\Models\Shop;
|
use App\Models\Shop;
|
||||||
use App\Services\Business\BusinessFactory;
|
use App\Services\Business\BusinessFactory;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
@ -27,13 +28,13 @@ class CreateLogisticListener implements ShouldQueue
|
|||||||
/**
|
/**
|
||||||
* Handle the event.
|
* Handle the event.
|
||||||
*
|
*
|
||||||
* @param CreateLogisticEvent $event
|
* @param CreateLogisticEvent $event
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function handle(CreateLogisticEvent $event)
|
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 = BusinessFactory::init()->make($shop['plat_id'])->setShop($shop);
|
||||||
$client->createLogistic($event->orderSn, $event->waybillNo);
|
//$client->createLogistic($event->orderSn, $event->waybillNo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,6 +23,8 @@ class BusinessOrder extends Model
|
|||||||
'print_status',
|
'print_status',
|
||||||
'ids',
|
'ids',
|
||||||
'pno',
|
'pno',
|
||||||
|
'order_sn',
|
||||||
|
'id',
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
@ -72,4 +74,9 @@ class BusinessOrder extends Model
|
|||||||
{
|
{
|
||||||
return $this->belongsTo(Shop::class, 'shop_id', 'id');
|
return $this->belongsTo(Shop::class, 'shop_id', 'id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function waybill()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Waybill::class, 'id', 'order_id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -86,7 +86,7 @@ class JingDongService
|
|||||||
$response = json_decode($response->getBody(), true);
|
$response = json_decode($response->getBody(), true);
|
||||||
Log::info("京东返回请求response", [$response]);
|
Log::info("京东返回请求response", [$response]);
|
||||||
if (!isset($response['code']) || ($response['code'] != 0 && $response['code'] != 1 && $response['code'] != 1000)) {
|
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;
|
return $response;
|
||||||
}
|
}
|
||||||
@ -226,5 +226,19 @@ class JingDongService
|
|||||||
return $response['data'];
|
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'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -44,7 +44,7 @@ class WayBillService
|
|||||||
$waybill->waybill_code = $resp['waybillNo'];
|
$waybill->waybill_code = $resp['waybillNo'];
|
||||||
$waybill->save();
|
$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'],
|
'note' => $order['business_note'] ? $order['business_note'] . ',' . $order['buyer_memo'] : $order['buyer_memo'],
|
||||||
'items' => []
|
'items' => []
|
||||||
];
|
];
|
||||||
|
$note = "";
|
||||||
foreach ($order['items'] as $item) {
|
foreach ($order['items'] as $item) {
|
||||||
$count = $item['goods_number'] - $item['already_cancel_number'];
|
$count = $item['goods_number'] - $item['already_cancel_number'];
|
||||||
$info['items'][] = [
|
$info['items'][] = [
|
||||||
@ -248,8 +249,10 @@ class WayBillService
|
|||||||
'count' => $count,
|
'count' => $count,
|
||||||
'external_sku_id' => $item['external_sku_id'],
|
'external_sku_id' => $item['external_sku_id'],
|
||||||
];
|
];
|
||||||
|
$note .= $item['goods_name'] . " " . $count . "件,";
|
||||||
}
|
}
|
||||||
|
$note .= "[备注:" . $info['note'] . "]";
|
||||||
|
$info['note'] = $note;
|
||||||
$this->orders[$order['shop_id']][] = $info;
|
$this->orders[$order['shop_id']][] = $info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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('shop/ship', [ShipController::class, 'index'])->name('shop_ship.index');
|
||||||
Route::get('print/orders', [BusinessOrderController::class, 'print'])->name('order.print');
|
Route::get('print/orders', [BusinessOrderController::class, 'print'])->name('order.print');
|
||||||
Route::put('print/success', [BusinessOrderController::class, 'printSuccess'])->name('order.printSuccess');
|
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::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');
|
Route::post('shop/ship/senders', [ShipController::class, 'saveSenders'])->name('shop_ship.senders.save');
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user