From a8cbc26d2363155dea9a45843bad5e3bfd2442e1 Mon Sep 17 00:00:00 2001 From: LLL <15374889135@163.com> Date: Wed, 4 Jun 2025 19:02:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/apiController/ClassApi.php | 18 ++-- .../apiController/TeachingResearch.php | 7 +- niucloud/app/api/route/route.php | 2 + niucloud/app/model/class_grade/ClassGrade.php | 11 ++ .../class_personnel_rel/ClassPersonnelRel.php | 57 ++++++++++ .../service/api/apiService/jlClassService.php | 102 ++++++++++++++++++ 6 files changed, 188 insertions(+), 9 deletions(-) create mode 100644 niucloud/app/model/class_personnel_rel/ClassPersonnelRel.php create mode 100644 niucloud/app/service/api/apiService/jlClassService.php diff --git a/niucloud/app/api/controller/apiController/ClassApi.php b/niucloud/app/api/controller/apiController/ClassApi.php index 83f4ec5b..0b12e697 100644 --- a/niucloud/app/api/controller/apiController/ClassApi.php +++ b/niucloud/app/api/controller/apiController/ClassApi.php @@ -12,7 +12,7 @@ namespace app\api\controller\apiController; use app\Request; -use app\service\api\apiService\CourseService; +use app\service\api\apiService\jlClassService; use core\base\BaseApiService; @@ -21,22 +21,24 @@ use core\base\BaseApiService; * Class Personnel * @package app\api\controller\apiController */ -class ClassSpi extends BaseApiService +class ClassApi extends BaseApiService { //课程列表 public function jlClassList(Request $request){ $id = $this->member_id; - dd(111); - return success((new CourseService())->list($id,$data)); + $data = $this->request->params([ + ["name",''] + ]); + return success((new jlClassService())->list($id,$data)); } - //获取课程详情 - public function courseInfo(Request $request){ + //课程详情 + public function jlClassInfo(Request $request){ $data = $this->request->params([ - ["id",0] + ["class_id",0] ]); - return success('SUCCESS',(new CourseService())->info($data['id'])); + return success('获取成功',(new jlClassService())->info($data['class_id'])); } } diff --git a/niucloud/app/api/controller/apiController/TeachingResearch.php b/niucloud/app/api/controller/apiController/TeachingResearch.php index b202071b..71cd1a5f 100644 --- a/niucloud/app/api/controller/apiController/TeachingResearch.php +++ b/niucloud/app/api/controller/apiController/TeachingResearch.php @@ -115,10 +115,15 @@ class TeachingResearch extends BaseApiService if ($resLessonTeaching['answers_num'] >= $res['number_answers']) { return fail('已超过答题次数', []); } else { + if (count($userRes['data']['cameus_dept_arr']) > 0) { + $campus_id = $userRes['data']['cameus_dept_arr'][0]['campus_id']; + } else { + $campus_id = 0; + } foreach ($result as &$v){ $v['user_id'] = $userRes['data']['id']; $v['question_id'] = $v['ids']; - $v['campus_id'] = 0; + $v['campus_id'] = $campus_id; $v['answer'] = $v['value']; $resEq = $ExamQuestions->where('id',$v['ids'])->find(); if ($resEq['correct_answer'] == $v['value']){ diff --git a/niucloud/app/api/route/route.php b/niucloud/app/api/route/route.php index f26b3824..3b72577e 100644 --- a/niucloud/app/api/route/route.php +++ b/niucloud/app/api/route/route.php @@ -294,6 +294,8 @@ Route::group(function () { Route::get('course/delStudentCourse', 'apiController.course/delStudentCourse'); //班级列表 Route::get('class/jlClassList', 'apiController.classApi/jlClassList'); + //班级详情 + Route::get('class/jlClassInfo', 'apiController.classApi/jlClassInfo'); //课程列表 Route::get('course/courseList', 'apiController.course/courseList'); //获取课程详情 diff --git a/niucloud/app/model/class_grade/ClassGrade.php b/niucloud/app/model/class_grade/ClassGrade.php index acff649b..8e8ce49f 100644 --- a/niucloud/app/model/class_grade/ClassGrade.php +++ b/niucloud/app/model/class_grade/ClassGrade.php @@ -13,6 +13,7 @@ namespace app\model\class_grade; use app\model\campus\Campus; use app\model\personnel\Personnel; +use app\model\class_personnel_rel\ClassPersonnelRel; use core\base\BaseModel; use think\model\concern\SoftDelete; use think\model\relation\HasMany; @@ -229,6 +230,16 @@ class ClassGrade extends BaseModel return $this->hasOne(Personnel::class, 'id', 'head_coach')->joinType('left')->withField('name,id')->bind(['head_coach_name'=>'name']); } + public function personnelAll(){ + return $this->hasOne(Personnel::class, 'id', 'head_coach')->joinType('left')->withField('head_img,id')->bind(['head_coach_head_img'=>'head_img']); + } + public function personnelName(){ + return $this->hasOne(Personnel::class, 'id', 'head_coach')->joinType('left')->withField('name,id')->bind(['head_coach_name'=>'name']); + } + + public function classPersonnelRel(){ + return $this->hasMany(ClassPersonnelRel::class, 'class_id', 'id'); + } } diff --git a/niucloud/app/model/class_personnel_rel/ClassPersonnelRel.php b/niucloud/app/model/class_personnel_rel/ClassPersonnelRel.php new file mode 100644 index 00000000..7644993d --- /dev/null +++ b/niucloud/app/model/class_personnel_rel/ClassPersonnelRel.php @@ -0,0 +1,57 @@ +hasOne(Student::class, 'id', 'source_id'); + } + + public function studentCourses(){ + return $this->hasOne(StudentCourses::class, 'student_id', 'source_id')->joinType('left')->withField('end_date,student_id')->bind(['end_date'=>'end_date']); + } + + public function studentCoursesInfo(){ + return $this->hasOne(StudentCourses::class, 'student_id', 'source_id'); + } + + +} diff --git a/niucloud/app/service/api/apiService/jlClassService.php b/niucloud/app/service/api/apiService/jlClassService.php new file mode 100644 index 00000000..d3628355 --- /dev/null +++ b/niucloud/app/service/api/apiService/jlClassService.php @@ -0,0 +1,102 @@ +model = (new ClassGrade()); + } + + //列表 + public function list($id,$data) + { + $order = 'id desc'; + $where = []; + if ($data['name'] !== '') { + $where[] = ['name','like','%'.$data['name'].'%']; + } + $search_model = $this->model->where('head_coach', $id)->where($where)->order($order) + ->with(['classPersonnelRel' => function($query) { + $query->with(['student' => function($query) { + $query->with(['customerResources' => function($query) { + $query->with(['member' => function($query) { + $query->select(); + }]); + }]); + },'studentCourses']); + + },'personnelAll']); + $list = $this->pageQuery($search_model); + foreach ($list['data'] as &$v){ + if (count($v['classPersonnelRel']) > 0) { + $now = time(); + $count = 0; + foreach ($v['classPersonnelRel'] as $item) { + if (isset($item['end_date'])) { + $endTime = strtotime($item['end_date']); + if ($endTime > $now && $endTime <= $now + 7 * 86400) { + $count++; + } + } + } + $v['end_count'] = $count; + } else { + $v['end_count'] = 0; + } + } + return $list; + } + + + public function info($data) + { + $search_model = $this->model->where('id', $data) + ->with(['classPersonnelRel' => function($query) { + $query->with(['student' => function($query) { + $query->with(['customerResources' => function($query) { + $query->with(['member' => function($query) { + $query->select(); + }]); + }]); + },'studentCourses','studentCoursesInfo']); + },'personnelAll', 'personnelName']); + $list = $search_model->find(); + if (count($list['classPersonnelRel']) > 0) { + $now = time(); + $count = 0; + foreach ($list['classPersonnelRel'] as $item) { + if (isset($item['end_date'])) { + $endTime = strtotime($item['end_date']); + if ($endTime > $now && $endTime <= $now + 7 * 86400) { + $count++; + } + } + } + $v['end_count'] = $count; + } else { + $v['end_count'] = 0; + } + return $list; + } + +}