diff --git a/niucloud/app/api/controller/apiController/PersonCourseSchedule.php b/niucloud/app/api/controller/apiController/PersonCourseSchedule.php index 73ee558d..9b434de2 100644 --- a/niucloud/app/api/controller/apiController/PersonCourseSchedule.php +++ b/niucloud/app/api/controller/apiController/PersonCourseSchedule.php @@ -90,4 +90,22 @@ class PersonCourseSchedule extends BaseApiService return success($res['data']); } + + //获取学生排课日历 + public function getCalendar(Request $request){ + $resources_id = $request->param('resources_id', '');//客户资源ID + $start_date = $request->param('start_date', '');//开始日期(Y-m-d) + $end_date = $request->param('end_date', '');//结束日期(Y-m-d) + + if (empty($resources_id) || empty($start_date) || empty($end_date)) { + return fail('缺少参数'); + } + $where = [ + 'resources_id'=>$resources_id, + 'start_date'=>$start_date, + 'end_date'=>$end_date + ]; + $res = (new PersonCourseScheduleService())->getCalendar($where); + return success($res); + } } diff --git a/niucloud/app/api/route/route.php b/niucloud/app/api/route/route.php index 7368d51d..aaaf5689 100644 --- a/niucloud/app/api/route/route.php +++ b/niucloud/app/api/route/route.php @@ -365,6 +365,8 @@ Route::group(function () { //学生端-学生课程安排-修改请假状态 Route::post('xy/personCourseSchedule/editStatus', 'apiController.PersonCourseSchedule/editStatus'); + //学生端-学生课程安排-获取排课日历 + Route::get('xy/personCourseSchedule/getCalendar', 'apiController.PersonCourseSchedule/getCalendar'); diff --git a/niucloud/app/service/api/apiService/PersonCourseScheduleService.php b/niucloud/app/service/api/apiService/PersonCourseScheduleService.php index b54f70f0..cd2e2a12 100644 --- a/niucloud/app/service/api/apiService/PersonCourseScheduleService.php +++ b/niucloud/app/service/api/apiService/PersonCourseScheduleService.php @@ -14,6 +14,7 @@ namespace app\service\api\apiService; use app\model\chat_friends\ChatFriends; use app\model\course_schedule\CourseSchedule; use app\model\person_course_schedule\PersonCourseSchedule; +use app\model\venue\Venue; use core\base\BaseApiService; use think\facade\Db; @@ -53,28 +54,37 @@ class PersonCourseScheduleService extends BaseApiService $model = $model->where('school_person_course_schedule.status', $where['status']); } + $venues_info = [];//场地信息 // 判断有没有场地ID if (!empty($where['venue_id'])) { $model = $model->hasWhere('courseScheduleHasOne', ['venue_id' => $where['venue_id']]); + $venues_info = Venue::where('id',$where['venue_id'])->find(); + if($venues_info){ + $venues_info = $venues_info->toArray(); + }else{ + $venues_info = []; + } } - $data = $model->order('course_date','desc') + $data = $model->order('course_date', 'desc') ->with([ //课程安排表 - 'courseScheduleHasOne'=>function($query){ + 'courseScheduleHasOne' => function ($query) { $query->with([ 'venue',//场地 'campus',//校区 'course',//课程 + 'coach',//教练 ]); }, ]) ->paginate([ 'list_rows' => $limit, 'page' => $page, - ])->toArray(); - + ]) + ->toArray(); + $data['venues_info'] = $venues_info;//场地信息详情 return $data; } @@ -180,4 +190,56 @@ class PersonCourseScheduleService extends BaseApiService return $res; } } + + //获取排课日期 + public function getCalendar(array $where) + { + $data = PersonCourseSchedule::where('resources_id', $where['resources_id']) + ->where('course_date', '>=', $where['start_date']) + ->where('course_date', '<=', $where['end_date']) + ->select() + ->toArray(); + + $result = []; + $currentDate = strtotime($where['start_date']); + $endDate = strtotime($where['end_date']); + + while ($currentDate <= $endDate) { + $dateStr = date('Y-m-d', $currentDate); + $today = date('d', $currentDate); + $weekDay = date('w', $currentDate); + $weekMap = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']; + $weekStr = $weekMap[$weekDay]; + + $result[] = [ + 'date' => $dateStr, + 'status' => '1', // 默认状态为正常 + 'is_sign' => '0', // 是否有课|1=有课,0=没课 + 'week' => $weekStr, + 'today' => $today + ]; + + $currentDate = strtotime('+1 day', $currentDate); + } + + foreach ($data as $v) { + foreach ($result as &$rv) { + if ($rv['date'] == $v['course_date']) { + //0待上课1已上课2请假 + if (in_array($v['status'], [0, 1])) { + $status = '1'; + } else { + $status = '2'; + } + $rv['status'] = $status;//状态1是正常 2请假 + $rv['is_sign'] = '1';//是否有课|1=有课,0=没课 + } + } + } + + + return $result; + + + } }