From 38b484000017f88abd38414d399eb3a87cbf78bf Mon Sep 17 00:00:00 2001 From: weizong song Date: Fri, 14 Jul 2023 10:58:14 +0800 Subject: [PATCH] up --- .../Controllers/Worker/AuthController.php | 2 +- .../Controllers/Worker/OrdersController.php | 183 ++++++++++++++++++ routes/web.php | 7 +- 3 files changed, 188 insertions(+), 4 deletions(-) create mode 100644 app/Http/Controllers/Worker/OrdersController.php diff --git a/app/Http/Controllers/Worker/AuthController.php b/app/Http/Controllers/Worker/AuthController.php index 5c8c509..b40b4f3 100644 --- a/app/Http/Controllers/Worker/AuthController.php +++ b/app/Http/Controllers/Worker/AuthController.php @@ -65,7 +65,7 @@ class AuthController extends Controller } /** - * @OA\Post( + * @OA\Get( * path="/worker/me", * tags={"护工端用户相关"}, * summary="V2-获取登录者信息", diff --git a/app/Http/Controllers/Worker/OrdersController.php b/app/Http/Controllers/Worker/OrdersController.php new file mode 100644 index 0000000..67ece84 --- /dev/null +++ b/app/Http/Controllers/Worker/OrdersController.php @@ -0,0 +1,183 @@ +待处理,ongoing=>进行中,finished=>已完成]"), + * @OA\Response( + * response="200", + * description="获取订单列表" + * ) + * ) + */ + + public function list() + { + $worker = $this->guard()->user(); + $model = $this->_getOrderModel(); + + $ids = OrderItems::where("paramedic_id", $worker->id)->where("total", ">", 0)->pluck("order_id")->toArray(); + $model = $model->whereIn("id", $ids); + + if (request()->keyword) { + $keyword = request()->keyword; + $model = $model->where(function ($query) use ($keyword) { + $query + ->where("serial", "like", "%{$keyword}%") + ->orWhereHas("patient", function ($query) use ($keyword) { + $query->where("name", "like", "%{$keyword}%"); + })->orWhereHas("customer", function ($query) use ($keyword) { + $query->where("mobile", "like", "%{$keyword}%"); + })->orWhereHas("paramedic", function ($query) use ($keyword) { + $query->where("name", "like", "%{$keyword}%"); + }); + }); + } + + if (request()->start_date_from && request()->start_date_to) { + $model = $model->whereRaw(DB::raw("UNIX_TIMESTAMP(`from_date`) between " . strtotime(request()->start_date_from) . " and " . strtotime(request()->start_date_to))); + } + + switch (request()->status) { + case "pending": + $model = $model->whereIn("status", [Orders::STATUS_UNCONFIRMED, Orders::STATUS_UNASSIGNED]); + break; + case "ongoing": + case "finished": + $model = $model->where("status", constant(Orders::class . "::STATUS_" . strtoupper(request()->status))); + break; + default: + //do nothing + } + + $page_size = request()->page_size ?? 5; + $data = $model->orderBy("id", "desc")->paginate($page_size); + + return response()->json($data->toArray()); + } + + /** + * @OA\Get( + * path="/worker/get-order/{id}", + * tags={"护工端订单处理"}, + * summary="V2-获取订单详情", + * description="获取订单详情", + * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), + * @OA\Parameter(name="id", in="path", @OA\Schema(type="integer"), required=true, description="id"), + * @OA\Response( + * response="200", + * description="获取订单详情" + * ) + * ) + */ + + public function getOrder($id) + { + $worker = $this->guard()->user(); + $model = $this->_getOrderModel(); + $ids = OrderItems::where("order_id", $id)->where("paramedic_id", $worker->id)->where("total", ">", 0)->pluck("order_id")->toArray(); + if (!$ids) { + return response()->json([ + "errorcode" => "40004", + "errormsg" => "没找到订单" + ]); + } + + $order = $model->with([ + "orderItems" => function ($query) use ($worker) { + $query->where("paramedic_id", $worker->id)->where("total", ">", 0)->orderBy("service_date", "desc"); + } + ])->find($id); + + return response()->json($order->toArray()); + } + + public function _getOrderModel() + { + $model = $order = (new Orders()) + ->select( + "orders.id", + "orders.serial", + "orders.customer_id", + "orders.manager_id", + "orders.bed_id", + "orders.patient_id", + "orders.project_id", + "orders.product_id", + "orders.product_item_id", + "orders.product_paramedic_level_id", + "orders.from_date", + "orders.to_date", + "orders.status", + "orders.total", + "orders.paid_total", + "orders.contact", + "orders.mobile", + "orders.paramedic_id", + "orders.price", + "orders.factors", + "orders.patient_quantity", + "orders.created_at" + ) + ->with([ + "project" => function ($query) { + $query->select("id", "name"); + }, + "bed" => function ($query) { + $query->select("bed.id", "bed.name", "bed.building_id", "bed.area_id") + ->leftJoin("building", "building.id", "=", "bed.building_id") + ->leftJoin("area", "area.id", "=", "bed.area_id") + ->leftJoin("room", "room.id", "=", "bed.room_id") + ->addSelect("room.name as room_name", "area.name as area_name", "building.name as building_name"); + }, + "customer" => function ($query) { + $query->select("id", "name", "balance"); + }, + "patient" => function ($query) { + $query->select("id", "name", "sex", "age", "mobile"); + } + ]); + return $model; + } +} diff --git a/routes/web.php b/routes/web.php index 92ce0d6..9d8068f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -192,9 +192,10 @@ Route::group(["namespace" => "Worker", "prefix" => "worker"], function () { Route::post('logout', 'AuthController@logout'); Route::post('login-by-username', 'AuthController@loginByUsername'); - Route::group(['middleware' => ['authorize.jwt:manager']], function () { - Route::post('me', 'AuthController@me'); - + Route::group(['middleware' => ['authorize.jwt:worker']], function () { + Route::get('me', 'AuthController@me'); + Route::get('get-orders', 'OrdersController@list'); + Route::get('get-order/{id}', 'OrdersController@getOrder'); }); });