From e3041d14015b5d822913bc91f5d342a2ec7e815c Mon Sep 17 00:00:00 2001
From: panliang <1163816051@qq.com>
Date: Thu, 8 Sep 2022 14:10:21 +0800
Subject: [PATCH] order-rep
---
.../Controllers/Store/StockController.php | 34 +++++++++++++++++--
.../Controllers/Order/OrderPreController.php | 8 +++++
.../Controllers/Order/UnlineController.php | 2 +-
.../Api/Http/Resources/OrderPreResource.php | 26 ++++++++++++++
app/Endpoint/Api/routes.php | 1 +
5 files changed, 67 insertions(+), 4 deletions(-)
create mode 100644 app/Endpoint/Api/Http/Resources/OrderPreResource.php
diff --git a/app/Admin/Controllers/Store/StockController.php b/app/Admin/Controllers/Store/StockController.php
index 2cf1e826..bcf5c182 100644
--- a/app/Admin/Controllers/Store/StockController.php
+++ b/app/Admin/Controllers/Store/StockController.php
@@ -2,9 +2,13 @@
namespace App\Admin\Controllers\Store;
+use App\Models\Admin\Administrator;
use App\Models\Store\{Store, StockLog, ProductSku};
+use App\Models\User;
+use Carbon\Carbon;
use Dcat\Admin\{Form, Grid, Admin, Show};
use Dcat\Admin\Http\Controllers\AdminController;
+use Illuminate\Database\Eloquent\Relations\Relation;
class StockController extends AdminController
{
@@ -30,9 +34,9 @@ class StockController extends AdminController
});
$grid->column('balance');
$grid->column('operator', '操作人')->display(function ($v) {
- if ($v instanceof \App\Models\Admin\Administrator) {
+ if ($v instanceof Administrator) {
return $v->name . '管理员';
- } else if ($v instanceof \App\Models\User) {
+ } else if ($v instanceof User) {
return $v->phone . '员工';
}
@@ -49,7 +53,31 @@ class StockController extends AdminController
$grid->filter(function (Grid\Filter $filter) {
$filter->panel();
$filter->equal('store_id')->select(Store::pluck('title', 'id'))->width(3);
+ $filter->like('productSku.name', '商品')->width(3);
$filter->equal('tag_id', '类目')->select(StockLog::tags()->pluck('name', 'id'))->width(3);
+ $filter->where('operator', function ($q) {
+ $input = $this->input;
+ $condition = '%'.$input.'%';
+ $q->whereHasMorph('operator', [Administrator::class, User::class], function ($q1, $type) use ($condition) {
+ $column = $type === Administrator::class ? 'name' : 'phone';
+
+ $q1->where($column, 'like', $condition);
+ });
+ })->placeholder('管理员姓名/员工手机号')->width(3);
+ $filter->whereBetween('created_at', function ($q) {
+ $start = data_get($this->input, 'start');
+ $start = $start ? Carbon::createFromFormat('Y-m-d', $start) : null;
+ $end = data_get($this->input, 'end');
+ $end = $end ? Carbon::createFromFormat('Y-m-d', $end) : null;
+ if ($start) {
+ if ($end) {
+ $q->whereBetween('created_at', [$start, $end]);
+ }
+ $q->where('created_at', '>=', $start);
+ } elseif ($end) {
+ $q->where('created_at', '<=', $end);
+ }
+ }, '操作时间')->date()->width(3);
});
return $grid;
}
@@ -91,7 +119,7 @@ class StockController extends AdminController
// 操作人
$administrator = Admin::user();
- $form->input('operator_type', get_class($administrator));
+ $form->input('operator_type', $administrator->getMorphClass());
$form->input('operator_id', $administrator->id);
}
});
diff --git a/app/Endpoint/Api/Http/Controllers/Order/OrderPreController.php b/app/Endpoint/Api/Http/Controllers/Order/OrderPreController.php
index af336664..a2f227bb 100644
--- a/app/Endpoint/Api/Http/Controllers/Order/OrderPreController.php
+++ b/app/Endpoint/Api/Http/Controllers/Order/OrderPreController.php
@@ -3,6 +3,7 @@
namespace App\Endpoint\Api\Http\Controllers\Order;
use App\Endpoint\Api\Http\Controllers\Controller;
+use App\Endpoint\Api\Http\Resources\OrderPreResource;
use Illuminate\Http\Request;
use App\Models\{Order, OrderPre, ProductSku};
use App\Models\Store\Store;
@@ -99,6 +100,13 @@ class OrderPreController extends Controller
throw new BizException('生成失败, 请稍后再试');
}
+ public function show($id)
+ {
+ $info = OrderPre::findOrFail($id);
+
+ return OrderPreResource::make($info);
+ }
+
public function storeOrder(Request $request)
{
$id = $request->input('id');
diff --git a/app/Endpoint/Api/Http/Controllers/Order/UnlineController.php b/app/Endpoint/Api/Http/Controllers/Order/UnlineController.php
index a61c3ad2..7dbc7ac1 100644
--- a/app/Endpoint/Api/Http/Controllers/Order/UnlineController.php
+++ b/app/Endpoint/Api/Http/Controllers/Order/UnlineController.php
@@ -89,7 +89,7 @@ class UnlineController extends Controller
'amount' => $product->pivot->amount - $amount
]);
$store->stockLogs()->create([
- 'operator_type' => get_class($user),
+ 'operator_type' => $user->getMorphClass(),
'operator_id' => $user->id,
'source_type' => Order::class,
'source_id' => $order->id,
diff --git a/app/Endpoint/Api/Http/Resources/OrderPreResource.php b/app/Endpoint/Api/Http/Resources/OrderPreResource.php
new file mode 100644
index 00000000..c8f6b529
--- /dev/null
+++ b/app/Endpoint/Api/Http/Resources/OrderPreResource.php
@@ -0,0 +1,26 @@
+ $this->id,
+ 'store_id' => $this->store_id,
+ 'user_id' => $this->user_id,
+ 'products' => $this->products,
+ 'others' => $this->others,
+ 'created_at' => $this->created_at->timestamp,
+ ];
+ }
+}
diff --git a/app/Endpoint/Api/routes.php b/app/Endpoint/Api/routes.php
index 96fb0bfe..160e830f 100644
--- a/app/Endpoint/Api/routes.php
+++ b/app/Endpoint/Api/routes.php
@@ -232,6 +232,7 @@ Route::group([
// 门店下单
Route::group(['middleware' => ['auth:api', \App\Endpoint\Api\Http\Middleware\CheckUserStatus::class]], function () {
+ Route::get('order-pre/{id}', [App\Endpoint\Api\Http\Controllers\Order\OrderPreController::class, 'show']);
Route::post('order-pre', [App\Endpoint\Api\Http\Controllers\Order\OrderPreController::class, 'store']);
Route::post('order-pre/order', [App\Endpoint\Api\Http\Controllers\Order\OrderPreController::class, 'storeOrder']);
});