Order/UnlineController
parent
22b80d067f
commit
5528a867f3
|
|
@ -14,6 +14,13 @@ class OrderFilter extends ModelFilter
|
|||
});
|
||||
}
|
||||
|
||||
public function phone($phone)
|
||||
{
|
||||
return $this->whereHas('user', function ($query) use ($phone) {
|
||||
return $query->where('phone', 'like', "%${phone}%");
|
||||
});
|
||||
}
|
||||
|
||||
public function status($status)
|
||||
{
|
||||
switch ($status) {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ use App\Enums\PayWay;
|
|||
use App\Events\OrderPaid;
|
||||
use App\Exceptions\BizException;
|
||||
use App\Helpers\Paginator as PaginatorHelper;
|
||||
use App\Models\KuaidiLog;
|
||||
use App\Models\{Order, KuaidiLog, OrderPre};
|
||||
use App\Services\OrderService;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Http\Request;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,90 @@
|
|||
<?php
|
||||
|
||||
namespace App\Endpoint\Api\Http\Controllers\Order;
|
||||
|
||||
use App\Endpoint\Api\Http\Controllers\Controller;
|
||||
use App\Helpers\Paginator;
|
||||
use App\Models\{Order, OrderPre};
|
||||
use App\Endpoint\Api\Http\Resources\{OrderResource, OrderResourceCollection};
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Throwable;
|
||||
use App\Exceptions\BizException;
|
||||
|
||||
class UnlineController extends Controller
|
||||
{
|
||||
/**
|
||||
* 线下订单列表
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$perPage = Paginator::resolvePerPage('per_page', 20, 50);
|
||||
|
||||
$orders = Order::with('products')->filter($request->all())->where('source_type', OrderPre::class)->latest('id')->simplePaginate($perPage);
|
||||
|
||||
return OrderResourceCollection::make($orders);
|
||||
}
|
||||
|
||||
/**
|
||||
* 线下订单详细
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
$order = Order::where('source_type', OrderPre::class)->findOrFail($id);
|
||||
$order->load('products');
|
||||
|
||||
return OrderResource::make($order);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发货
|
||||
*/
|
||||
public function package($id, Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'products' => 'required|array',
|
||||
'products.*.id' => 'required',
|
||||
'products.*.amount' => 'required',
|
||||
], [
|
||||
'products.required' => '发货商品必填',
|
||||
]);
|
||||
$order = Order::where('source_type', OrderPre::class)->findOrFail($id);
|
||||
|
||||
// 订单来源为 帮客户下单 order_pres
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$order_products = $order->products;
|
||||
// 根据 order_pres 发货数量, 自动发货
|
||||
$service_package = new \App\Admin\Services\OrderPackageService();
|
||||
// order_product_id: 订单商品ID, quantity: 发货数量
|
||||
$package_params = [];
|
||||
foreach($request->input('products') as $item) {
|
||||
$order_product = $order_products->firstWhere('id', $item['id']);
|
||||
if ($order_product) {
|
||||
array_push($package_params, [
|
||||
'order_product_id' => $order_product->id,
|
||||
'quantity' => $item['amount'],
|
||||
]);
|
||||
}
|
||||
}
|
||||
// 发货
|
||||
if (count($package_params) === 0) {
|
||||
throw new BizException('提货商品不存在');
|
||||
}
|
||||
$service_package->createPackage($order, [
|
||||
'shipping_company' => '自提',
|
||||
'shipping_number' => '0',
|
||||
'packages' => $package_params
|
||||
]);
|
||||
DB::commit();
|
||||
return response()->noContent();
|
||||
} catch (Throwable $th) {
|
||||
DB::rollBack();
|
||||
report($th);
|
||||
throw new BizException($th->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -24,6 +24,7 @@ class OrderProductResource extends JsonResource
|
|||
'vip_price' => $this->vip_price_format,
|
||||
'total_amount' => $this->total_amount,
|
||||
'quantity' => $this->quantity,
|
||||
'remain_quantity' => $this->remain_quantity,
|
||||
'can_after_sale' => $this->can_after_sale,
|
||||
'has_after_sale' => $this->has_after_sale, //显示【查看售后】按钮判断
|
||||
'is_gift' => $this->isGift(),
|
||||
|
|
|
|||
|
|
@ -188,6 +188,9 @@ Route::group([
|
|||
//OSS上传凭证
|
||||
Route::post('oss-sts', [AliOssController::class, 'sts']);
|
||||
|
||||
// 线下订单
|
||||
Route::post('order/underline/{id}/package', [\App\Endpoint\Api\Http\Controllers\Order\UnlineController::class, 'package']);
|
||||
Route::apiResource('order/underline', \App\Endpoint\Api\Http\Controllers\Order\UnlineController::class)->only(['index', 'show']);
|
||||
// 订单
|
||||
Route::get('order/statistics', StatisticsController::class);
|
||||
Route::post('order/verify-order', OrderVerifyController::class);
|
||||
|
|
|
|||
|
|
@ -64,7 +64,6 @@ class OrderPackage
|
|||
} catch (Throwable $th) {
|
||||
DB::rollBack();
|
||||
report($th);
|
||||
logger('出错了');
|
||||
logger($th->getMessage());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue