6
0
Fork 0

order-rep

base
panliang 2022-09-08 14:10:21 +08:00
parent 2c93553f51
commit e3041d1401
5 changed files with 67 additions and 4 deletions

View File

@ -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 . '<span class="label bg-primary">管理员</span>';
} else if ($v instanceof \App\Models\User) {
} else if ($v instanceof User) {
return $v->phone . '<span class="label bg-info">员工</span>';
}
@ -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);
}
});

View File

@ -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');

View File

@ -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,

View File

@ -0,0 +1,26 @@
<?php
namespace App\Endpoint\Api\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class OrderPreResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'id' => $this->id,
'store_id' => $this->store_id,
'user_id' => $this->user_id,
'products' => $this->products,
'others' => $this->others,
'created_at' => $this->created_at->timestamp,
];
}
}

View File

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