Browse Source

feat(api): 添加学生排课日历功能

- 新增 getCalendar 方法获取学生排课日历- 在 PersonCourseScheduleService 中实现 getCalendar 方法
- 在路由中添加相应接口
master
liutong 10 months ago
parent
commit
f77ad58b8c
  1. 18
      niucloud/app/api/controller/apiController/PersonCourseSchedule.php
  2. 2
      niucloud/app/api/route/route.php
  3. 70
      niucloud/app/service/api/apiService/PersonCourseScheduleService.php

18
niucloud/app/api/controller/apiController/PersonCourseSchedule.php

@ -90,4 +90,22 @@ class PersonCourseSchedule extends BaseApiService
return success($res['data']); 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);
}
} }

2
niucloud/app/api/route/route.php

@ -365,6 +365,8 @@ Route::group(function () {
//学生端-学生课程安排-修改请假状态 //学生端-学生课程安排-修改请假状态
Route::post('xy/personCourseSchedule/editStatus', 'apiController.PersonCourseSchedule/editStatus'); Route::post('xy/personCourseSchedule/editStatus', 'apiController.PersonCourseSchedule/editStatus');
//学生端-学生课程安排-获取排课日历
Route::get('xy/personCourseSchedule/getCalendar', 'apiController.PersonCourseSchedule/getCalendar');

70
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\chat_friends\ChatFriends;
use app\model\course_schedule\CourseSchedule; use app\model\course_schedule\CourseSchedule;
use app\model\person_course_schedule\PersonCourseSchedule; use app\model\person_course_schedule\PersonCourseSchedule;
use app\model\venue\Venue;
use core\base\BaseApiService; use core\base\BaseApiService;
use think\facade\Db; use think\facade\Db;
@ -53,28 +54,37 @@ class PersonCourseScheduleService extends BaseApiService
$model = $model->where('school_person_course_schedule.status', $where['status']); $model = $model->where('school_person_course_schedule.status', $where['status']);
} }
$venues_info = [];//场地信息
// 判断有没有场地ID // 判断有没有场地ID
if (!empty($where['venue_id'])) { if (!empty($where['venue_id'])) {
$model = $model->hasWhere('courseScheduleHasOne', ['venue_id' => $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([ ->with([
//课程安排表 //课程安排表
'courseScheduleHasOne'=>function($query){ 'courseScheduleHasOne' => function ($query) {
$query->with([ $query->with([
'venue',//场地 'venue',//场地
'campus',//校区 'campus',//校区
'course',//课程 'course',//课程
'coach',//教练
]); ]);
}, },
]) ])
->paginate([ ->paginate([
'list_rows' => $limit, 'list_rows' => $limit,
'page' => $page, 'page' => $page,
])->toArray(); ])
->toArray();
$data['venues_info'] = $venues_info;//场地信息详情
return $data; return $data;
} }
@ -180,4 +190,56 @@ class PersonCourseScheduleService extends BaseApiService
return $res; 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;
}
} }

Loading…
Cancel
Save