待处理,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; } }