service = $service; } /** * [订单]订单初始化 * * 初始化订单 * * @authenticated * * @bodyParam coach_id int required 技师ID. Example: 6 * @bodyParam area_code string required 区划代码. Example: 370602 * @bodyParam project_id int required 项目ID. Example: 1 * @bodyParam latitude int 纬度. Example: 37.4219983 * @bodyParam longitude int 经度. Example: 122.1347344 * * @response { * "status": "success", * "data": {} * } */ public function initialize(Request $request) { $data = $request->only(['coach_id', 'area_code', 'project_id', 'latitude', 'longitude']); return $this->service->initialize(Auth::user()->id, $data); } /** * [订单]创建订单 * * 创建订单 * * @authenticated * * @bodyParam project_id int required 项目ID. Example: 1 * @bodyParam address_id int required 地址ID. Example: 1 * @bodyParam coach_id int required 技师ID. Example: 6 * @bodyParam use_balance boolean 使用余额. Example: false * @bodyParam service_time datetime required 服务时间. Example: 2024-01-01 10:00:00 * @bodyParam order_id int 订单ID. Example: null * @bodyParam payment_type number required 支付类型. Example: 1 (1:余额,2:微信,3:支付宝) * @bodyParam order_type int required 订单类型. Example: 1 * @bodyParam distance float 距离. Example: 10 * * @response { * "status": "success", * "data": {} * } */ public function create(Request $request) { $data = $request->only(['project_id', 'address_id', 'coach_id', 'use_balance', 'order_id', 'service_time', 'payment_type', 'order_type', 'distance']); return $this->service->createOrder(Auth::user()->id, $data); } /** * [订单]结束订单 * * 结束订单 * * @authenticated * * @bodyParam order_id int required 订单ID. Example: 1 * * @response { * "status": "success", * "data": {} * } */ public function finish(Request $request) { $userId = Auth::user()->id; $orderId = $request->input('order_id'); return $this->service->finishOrder($userId, $orderId); } /** * [订单]确认技师离开 * * 确认技师离开 * * @authenticated * * @bodyParam order_id int required 订单ID. Example: 123 * * @response { * "status": "success", * "data": {} * } */ public function confirmLeave(Request $request) { $userId = Auth::user()->id; $orderId = $request->input('order_id'); return $this->service->confirmLeave($userId, $orderId); } /** * [订单]取消订单 * * 取消订单 * * @authenticated * * @bodyParam order_id int required 订单ID. Example: 123 * @bodyParam reason string required 取消原因. Example: 123 * * @response { * "status": "success", * "data": {} * } */ public function cancel(Request $request) { $userId = Auth::user()->id; $orderId = $request->input('order_id'); $reason = $request->input('reason'); return $this->service->cancelOrder($userId, $orderId, $reason); } /** * [订单]获取订单列表 * * 获取订单列表 * * @authenticated * * @response { * "status": "success", * "data": [] * } */ public function list() { return $this->service->getOrderList(Auth::user()->id); } /** * [订单]获取订单详情 * * 获取订单详情 * * @authenticated * * @urlParam id required 订单ID. Example: 6 * * @response { * "status": "success", * "data": {} * } */ public function detail($id) { return $this->service->getOrderDetail(Auth::user()->id, $id); } /** * [订单]订单退款 * * 订单退款 * * @authenticated * * @urlParam id required 订单ID. Example: 1 * * @response { * "status": "success", * "data": {} * } */ public function refund($id) { return $this->service->refundOrder($id); } /** * [订单]获取代理商配置 * * 获取代理商配置 * * @authenticated * * @bodyParam agent_id int required 代理商ID. Example: 1 * * @response { * "min_distance": 0, * "min_fee": 0, * "per_km_fee": 0 * } */ public function getAgentConfig(Request $request) { $agentId = $request->input('agent_id'); return $this->service->getAgentConfig($agentId); } /** * [订单]获取技师配置 * * 获取技师配置 * * @authenticated * * @bodyParam coach_id int required 技师ID. Example: 1 * * @response { * "delivery_fee_type": "round_trip", * "charge_delivery_fee": true * } */ public function getCoachConfig(Request $request) { $coachId = $request->input('coach_id'); return $this->service->getCoachConfig($coachId); } /** * [订单]计算订单金额 * * 计算订单金额 * * @authenticated * * @bodyParam address_id int required 地址ID. Example: 1 * @bodyParam coach_id int required 技师ID. Example: 1 * @bodyParam project_id int required 项目ID. Example: 1 * @bodyParam agent_id int 代理商ID. Example: 1 * @bodyParam use_balance boolean 使用余额. Example: 0 * @bodyParam distance float 距离. Example: 0 * * @response { * "total_amount": 0, * "balance_amount": 0, * "pay_amount": 0, * "coupon_amount": 0, * "tip_amount": 0, * "project_amount": 0, * "delivery_fee": 0 * } */ public function calculateOrderAmount(Request $request) { $userId = Auth::user()->id; $addressId = $request->input('address_id'); $coachId = $request->input('coach_id'); $projectId = $request->input('project_id'); $agentId = $request->input('agent_id'); $useBalance = $request->input('use_balance', 0); $distance = $request->input('distance', 0); return $this->service->calculateOrderAmount($userId, $addressId, $coachId, $projectId, $agentId, $useBalance, $distance); } /** * [订单]加钟 * * 加钟 * * @authenticated * * @bodyParam project_id int required 项目ID. Example: 1 * @bodyParam use_balance boolean 使用余额. Example: false * @bodyParam order_id int 订单ID. Example: 15 * @bodyParam payment_type number 支付类型. Example: 1 (1:余额,2:微信,3:支付宝) * * @response { * "status": "success", * "data": {} * } */ public function addTime(Request $request) { $data = $request->only(['project_id', 'use_balance', 'order_id', 'payment_type']); $data['order_type'] = OrderType::OVERTIME->value; return $this->service->createOrder(Auth::user()->id, $data); } /** * [订单]指定技师 * * @authenticated * * @bodyParam coach_id int required 技师ID. Example: 1 * @bodyParam order_id int required 订单ID. Example: 1 * * @response { * "status": "success", * "data": {} * } */ public function assignCoach(Request $request) { $userId = Auth::user()->id; $coachId = $request->input('coach_id'); $orderId = $request->input('order_id'); return $this->service->assignCoach($userId, $orderId, $coachId); } /** * [订单]获取抢单列表 * * 获取抢单列表 * * @queryParam order_id int required 订单ID. Example: 7 * * @response { * "data": [ * { * "id": 1, * "coach_id": 1, * "nickname": "技师昵称", * "avatar": "头像地址", * "created_at": "2024-03-21 10:00:00" * } * ] * } */ public function getOrderGrabList(Request $request) { $orderId = $request->input('order_id'); return $this->service->getOrderGrabList($orderId); } /** * [订单]生成核销码 * * 生成订单核销码,用于技师扫码开始服务 * * @authenticated * * @urlParam id required 订单ID. Example: 1 * * @response { * "qr_code": "order_123_1679876543_abcdef123456", * "expired_at": "2024-03-27 10:30:00" * } */ public function generateCode($id) { return $this->service->generateVerificationCode(Auth::user()->id, $id); } }