request->params([ ['date', ''], ['start_date', ''], ['end_date', ''], ['coach_id', ''], ['venue_id', ''], ['course_type', ''], ['page', 1], ['limit', 20] ]); $data['student_id'] = $student_id; $this->validate($data, [ 'student_id' => 'require|integer|gt:0', 'date' => 'date', 'start_date' => 'date', 'end_date' => 'date', 'page' => 'integer|egt:1', 'limit' => 'integer|between:1,50' ]); try { $service = new CourseBookingService(); $result = $service->getAvailableCourses($data); return success($result, '获取可预约课程成功'); } catch (\Exception $e) { return fail($e->getMessage()); } } /** * 创建课程预约 * @return Response */ public function createBooking() { $data = $this->request->params([ ['student_id', 0], ['schedule_id', 0], ['course_date', ''], ['time_slot', ''], ['remark', ''] ]); $this->validate($data, [ 'student_id' => 'require|integer|gt:0', 'schedule_id' => 'require|integer|gt:0', 'course_date' => 'require|date', 'time_slot' => 'require|length:1,50' ]); try { $service = new CourseBookingService(); $result = $service->createBooking($data); return success($result, '预约成功'); } catch (\Exception $e) { return fail($e->getMessage()); } } /** * 获取我的预约列表 * @param int $student_id * @return Response */ public function getMyBookingList($student_id) { $data = $this->request->params([ ['status', ''], ['start_date', ''], ['end_date', ''], ['page', 1], ['limit', 20] ]); $data['student_id'] = $student_id; $this->validate($data, [ 'student_id' => 'require|integer|gt:0', 'start_date' => 'date', 'end_date' => 'date', 'page' => 'integer|egt:1', 'limit' => 'integer|between:1,50' ]); try { $service = new CourseBookingService(); $result = $service->getMyBookingList($data); return success($result, '获取预约列表成功'); } catch (\Exception $e) { return fail($e->getMessage()); } } /** * 取消课程预约 * @return Response */ public function cancelBooking() { $data = $this->request->params([ ['booking_id', 0], ['cancel_reason', ''] ]); $this->validate($data, [ 'booking_id' => 'require|integer|gt:0', 'cancel_reason' => 'length:0,255' ]); try { $service = new CourseBookingService(); $result = $service->cancelBooking($data); return success($result, '取消预约成功'); } catch (\Exception $e) { return fail($e->getMessage()); } } /** * 检查预约冲突 * @return Response */ public function checkBookingConflict() { $data = $this->request->params([ ['student_id', 0], ['course_date', ''], ['time_slot', ''] ]); $this->validate($data, [ 'student_id' => 'require|integer|gt:0', 'course_date' => 'require|date', 'time_slot' => 'require|length:1,50' ]); try { $service = new CourseBookingService(); $result = $service->checkBookingConflict($data); return success($result, '检查完成'); } catch (\Exception $e) { return fail($e->getMessage()); } } }