|
|
@@ -90,9 +90,24 @@ class TrainingLogic extends BaseLogic
|
|
|
{
|
|
|
try {
|
|
|
if(!isset($params['training_task_id']) || empty($params['training_task_id'])) {
|
|
|
- throw new \Exception('缺少参数');
|
|
|
+ return [];
|
|
|
}
|
|
|
- $list = TrainingWorkerCourse::with(['trainingCourse'])->where('master_worker_id',$masterWorkerId)->where('training_task_id',$params['training_task_id'])->select()->toArray();
|
|
|
+
|
|
|
+ $trainingTask = TrainingTask::where('id',$params['training_task_id'])->findOrEmpty()->toArray();
|
|
|
+ if(empty($trainingTask)){
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+ $trainingWorkerCourse = $trainingWorkerCourseList = TrainingWorkerCourse::with(['trainingCourse'])
|
|
|
+ ->where('master_worker_id',$masterWorkerId)
|
|
|
+ ->where('training_task_id',$params['training_task_id'])
|
|
|
+ ->where('subclass',$trainingTask['subclass']);
|
|
|
+
|
|
|
+ // 为空则初始化课程记录列表
|
|
|
+ if(empty($trainingWorkerCourse->count())){
|
|
|
+ \app\adminapi\logic\training\TrainingWorkerTaskLogic::trainingCourseRecordInitial($masterWorkerId,$trainingTask);
|
|
|
+ }
|
|
|
+
|
|
|
+ $list = $trainingWorkerCourseList->select()->toArray();
|
|
|
foreach ($list as &$item) {
|
|
|
$item['course_name'] = $item['trainingCourse']['course_name']??'';
|
|
|
$item['course_picture'] = FileService::getFileUrl($item['trainingCourse']['course_picture']??'');
|
|
|
@@ -116,9 +131,9 @@ class TrainingLogic extends BaseLogic
|
|
|
try {
|
|
|
if(isset($params['free_course_id']) && $params['free_course_id'] > 0) $params['id'] = self::freeWorkerCourseId($masterWorkerId,$params['free_course_id']);
|
|
|
$info = TrainingWorkerCourse::with(['trainingCourse'])->where('master_worker_id',$masterWorkerId)->where('id',$params['id'])->findOrEmpty()->toArray();
|
|
|
- $info['course_name'] = $info['trainingCourse']['course_name'];
|
|
|
- $info['course_picture'] = FileService::getFileUrl($info['trainingCourse']['course_picture']);
|
|
|
- $info['course_url'] = FileService::getFileUrl($info['trainingCourse']['course_url']);
|
|
|
+ $info['course_name'] = $info['trainingCourse']['course_name']??'';
|
|
|
+ $info['course_picture'] = FileService::getFileUrl($info['trainingCourse']['course_picture']??'');
|
|
|
+ $info['course_url'] = FileService::getFileUrl($info['trainingCourse']['course_url']??'');
|
|
|
return $info;
|
|
|
} catch (\Exception $e) {
|
|
|
self::setError($e->getMessage());
|
|
|
@@ -183,7 +198,7 @@ class TrainingLogic extends BaseLogic
|
|
|
public static function getQuestionList(array $params)
|
|
|
{
|
|
|
try {
|
|
|
- $workerCourse = TrainingWorkerCourse::where('id',$params['worker_course_id'])->findOrEmpty();
|
|
|
+ $workerCourse = TrainingWorkerCourse::where('id',$params['worker_course_id'])->findOrEmpty()->toArray();
|
|
|
$study_status = 0;
|
|
|
if(isset($params['is_resit']) && $params['is_resit'] == 1 && $workerCourse['study_status'] == 4){
|
|
|
// 重置
|
|
|
@@ -196,45 +211,8 @@ class TrainingLogic extends BaseLogic
|
|
|
self::upWorkerCourse(['id'=>$params['worker_course_id'],'status'=> 4]);
|
|
|
}
|
|
|
|
|
|
- $trainingCourse = TrainingCourse::where('id',$workerCourse['training_course_id'])->findOrEmpty();
|
|
|
- // 配置是否随机出题? 0 1
|
|
|
- if($trainingCourse->randomly_question){
|
|
|
- $where = [];
|
|
|
- if($trainingCourse->subclass){
|
|
|
- $where[] = ['subclass','=',$trainingCourse->subclass];
|
|
|
- }else{
|
|
|
- $where[] = ['subclass','=',0];
|
|
|
- }
|
|
|
- // 随机出题 随机x个试题 x由该课程配置决定 比如10个试题
|
|
|
- $trainingQuestions = TrainingQuestions::where($where)->order(Db::raw('rand()'))->limit($trainingCourse->randomly_num)->select()->toArray();
|
|
|
- //每题多少分(按总分100分计算)
|
|
|
- $score = bcdiv(100, count($trainingQuestions), 2);
|
|
|
- $course_question = [];
|
|
|
- foreach ($trainingQuestions as $block_key => $trainingQuestion) {
|
|
|
- //[{"block_key":1,"select_value":1,"score":"20"},{"block_key":2,"select_value":2,"score":"10"},{"block_key":3,"select_value":3,"score":"70"}]
|
|
|
- $course_question[] = [
|
|
|
- 'block_key' => $block_key+1,
|
|
|
- 'select_value' => $trainingQuestion['id'],
|
|
|
- 'score' => $score
|
|
|
- ];
|
|
|
- }
|
|
|
- TrainingWorkerCourse::where('id',$workerCourse['id'])->update(['course_question_setting'=>json_encode($course_question)]);
|
|
|
-
|
|
|
- TrainingWorkerQuestion::where('worker_course_id',$workerCourse['id'])->delete();
|
|
|
-
|
|
|
- // 添加该工程师该课程的所有试题初始化记录
|
|
|
- $course_question_ids = array_column($course_question,'select_value');
|
|
|
- foreach ($course_question_ids as $question_id) {
|
|
|
- TrainingWorkerQuestion::create([
|
|
|
- 'master_worker_id' => $params['user_id'],
|
|
|
- 'subclass' => $trainingCourse->subclass,
|
|
|
- 'worker_course_id' => $workerCourse['id'],
|
|
|
- 'questions_id' => $question_id,
|
|
|
- 'worker_answer' => '',
|
|
|
- 'exam_score' => 0
|
|
|
- ]);
|
|
|
- }
|
|
|
- }
|
|
|
+ // 检查是否随机课程 即初始化试题
|
|
|
+ \app\adminapi\logic\training\TrainingWorkerTaskLogic::trainingQuestionRecordInitial($workerCourse);
|
|
|
|
|
|
$list = TrainingWorkerQuestion::with(['trainingQuestions'])->where('worker_course_id',$params['worker_course_id'])->select()->toArray();
|
|
|
foreach ($list as &$item) {
|
|
|
@@ -501,118 +479,23 @@ class TrainingLogic extends BaseLogic
|
|
|
throw new \Exception('该类目不存在');
|
|
|
}
|
|
|
$params['category_id'] = $trainingCategory->category_id;
|
|
|
- // 获取该类目 $trainingCategory->category_id 下随机课程|固定任务(固定课程) (随机数由配置决定)
|
|
|
- /*看配置 随机课程 0 固定任务 1 ( 那么就是每个分类对应一个任务即课程组)
|
|
|
- 随机---先补充需要添加任务 - 返回任务ID
|
|
|
- 固定---不需要添加任务 - 直接返回任务ID*/
|
|
|
- if($trainingCategory->training_task_id){ //存在
|
|
|
+ if($trainingCategory->training_task_id){
|
|
|
$trainingTask = TrainingTask::where('id',$trainingCategory->training_task_id)->findOrEmpty();
|
|
|
- }else{ //不存在
|
|
|
- // 获取该类目下任务ID
|
|
|
- $trainingTask = TrainingTask::where('subclass',$params['category_id'])->where('master_worker_id',0)->findOrEmpty();
|
|
|
- if($trainingTask->isEmpty()){
|
|
|
- // 获取该类目 随机课程
|
|
|
- //$fixed_course_ids = [1,2,3];
|
|
|
- $trainingCourse = TrainingCourse::where('subclass',$trainingTask->subclass)->order(Db::raw('rand()'))->limit(3)->select()->toArray();
|
|
|
- if(empty($trainingCourse)){
|
|
|
- throw new \Exception('该类目下不存在课程,请联系客服配置');
|
|
|
- }
|
|
|
- $fixed_course_ids = array_column($trainingCourse,'id');
|
|
|
- $trainingTask = TrainingTask::create([
|
|
|
- 'task_name' => '分类ID-'.$params['category_id'],
|
|
|
- 'training_course_id' => array_map('intval', $fixed_course_ids),
|
|
|
- 'subclass' => $params['category_id'],
|
|
|
- 'master_worker_id' => $params['user_id'],
|
|
|
- ]);
|
|
|
+ }else{
|
|
|
+ $trainingCourse = TrainingCourse::where('subclass',$params['category_id'])->order(Db::raw('rand()'))->limit(1)->select()->toArray();
|
|
|
+ if(empty($trainingCourse)){
|
|
|
+ return 0;
|
|
|
}
|
|
|
-
|
|
|
- /*$is_random_course = false; // 配置随机课程
|
|
|
- if($is_random_course){
|
|
|
- // 获取该类目配置 随机课程或类目下无任务则随机
|
|
|
- $fixed_course_ids = [1,2,3];
|
|
|
- $trainingTask = TrainingTask::create([
|
|
|
- 'task_name' => '分类ID-'.$params['category_id'],
|
|
|
- 'training_course_id' => array_map('intval', $fixed_course_ids),
|
|
|
- 'subclass' => $params['category_id'],
|
|
|
- 'master_worker_id' => $params['user_id'],
|
|
|
- ]);
|
|
|
- }else{
|
|
|
- // 获取该类目下任务ID
|
|
|
- $trainingTask = TrainingTask::where('subclass',$params['category_id'])->findOrEmpty();
|
|
|
- if($trainingTask->isEmpty()){
|
|
|
- throw new \Exception('该类目下不存在培训任务,请联系客服配置');
|
|
|
- }
|
|
|
- }*/
|
|
|
-
|
|
|
+ $fixed_course_ids = array_column($trainingCourse,'id');
|
|
|
+ $trainingTask = TrainingTask::create([
|
|
|
+ 'task_name' => '分类ID-'.$params['category_id'],
|
|
|
+ 'training_course_id' => array_map('intval', $fixed_course_ids),
|
|
|
+ 'subclass' => $params['category_id'],
|
|
|
+ 'master_worker_id' => $params['user_id'],
|
|
|
+ ]);
|
|
|
$trainingCategory->training_task_id = $trainingTask->id;
|
|
|
$trainingCategory->save();
|
|
|
-
|
|
|
- /*// 保证用户进来后该分类都是新课程记录 新试题记录 即原来的记录被删除
|
|
|
- TrainingWorkerCourse::where('master_worker_id',$params['user_id'])
|
|
|
- ->where('subclass',$params['category_id'])
|
|
|
- ->delete();
|
|
|
- TrainingWorkerQuestion::where('master_worker_id',$params['user_id'])
|
|
|
- ->where('subclass',$params['category_id'])
|
|
|
- ->delete();*/
|
|
|
-
|
|
|
- $training_course_ids = json_decode(TrainingTask::where('id',$trainingTask->id)->value('training_course_id')??'[]',true);
|
|
|
- // 添加该工程师的所有培训课程初始化记录
|
|
|
- foreach ($training_course_ids as $course_id) {
|
|
|
- $workerCourse = TrainingWorkerCourse::create([
|
|
|
- 'master_worker_id' => $params['user_id'],
|
|
|
- 'training_task_id' => $trainingTask->id,
|
|
|
- 'training_course_id' => $course_id,
|
|
|
- 'subclass' => $params['category_id'],
|
|
|
- 'play_time' => 0,
|
|
|
- 'exam_start_time' => 0,
|
|
|
- 'exam_end_time' => 0,
|
|
|
- 'study_status' => 0,
|
|
|
- 'exam_score' => 0,
|
|
|
- ]);
|
|
|
-
|
|
|
- $trainingCourse = TrainingCourse::where('id',$course_id)->findOrEmpty();
|
|
|
- // 配置是否随机出题? 0 1
|
|
|
- //$trainingCourse->randomly_question = true;
|
|
|
- if($trainingCourse->randomly_question){
|
|
|
- // 随机出题 随机x个试题 x由该课程配置决定 比如10个试题
|
|
|
- $trainingQuestions = TrainingQuestions::where('subclass',$trainingCourse->subclass)->order(Db::raw('rand()'))->limit($trainingCourse->randomly_num)->select()->toArray();
|
|
|
- if(empty($trainingQuestions)){
|
|
|
- throw new \Exception('该类目下不存在试题,请联系客服配置');
|
|
|
- }
|
|
|
- //每题多少分(按总分100分计算)
|
|
|
- $score = bcdiv(100, count($trainingQuestions), 2);
|
|
|
- $course_question = [];
|
|
|
- foreach ($trainingQuestions as $block_key => $trainingQuestion) {
|
|
|
- //[{"block_key":1,"select_value":1,"score":"20"},{"block_key":2,"select_value":2,"score":"10"},{"block_key":3,"select_value":3,"score":"70"}]
|
|
|
- $course_question[] = [
|
|
|
- 'block_key' => $block_key+1,
|
|
|
- 'select_value' => $trainingQuestion['id'],
|
|
|
- 'score' => $score
|
|
|
- ];
|
|
|
- }
|
|
|
- TrainingWorkerCourse::where('id',$workerCourse->id)->update(['course_question_setting'=>json_encode($course_question)]);
|
|
|
- }else{
|
|
|
- $course_question = $trainingCourse->course_question_setting;
|
|
|
- }
|
|
|
- if(empty($course_question)){
|
|
|
- throw new \Exception('该类目下不存在试题,请联系客服配置');
|
|
|
- }
|
|
|
- // 添加该工程师该课程的所有试题初始化记录
|
|
|
- $course_question_ids = array_column($course_question,'select_value');
|
|
|
- foreach ($course_question_ids as $question_id) {
|
|
|
- $workerQuestion = TrainingWorkerQuestion::create([
|
|
|
- 'master_worker_id' => $params['user_id'],
|
|
|
- 'subclass' => $params['category_id'],
|
|
|
- 'worker_course_id' => $workerCourse->id,
|
|
|
- 'questions_id' => $question_id,
|
|
|
- 'worker_answer' => '',
|
|
|
- 'exam_score' => 0
|
|
|
- ]);
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
-
|
|
|
- //return self::getCourseList($params['user_id'],['training_task_id'=>$trainingTask->id]);
|
|
|
return $trainingTask->id;
|
|
|
}catch(\Exception $e){
|
|
|
self::setError($e->getMessage());
|