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']); });