| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- <?php
- namespace app\workerapi\logic;
- use app\adminapi\logic\master_worker_register\MasterWorkerRegisterLogic;
- use app\common\enum\worker\WorkerAccountLogEnum;
- use app\common\enum\YesNoEnum;
- use app\common\logic\BaseLogic;
- use app\common\model\bank_account\BankAccount;
- use app\common\model\master_worker\MasterWorker;
- use app\common\model\master_worker\MasterWorkerAccountLog;
- use app\common\model\master_worker\MasterWorkerAgree;
- use app\common\model\master_worker\MasterWorkerInfo;
- use app\common\model\master_worker\MasterWorkerTeam;
- use app\common\model\shops\ShopOrderGoods;
- use app\common\model\shops\ShopOrders;
- use app\common\model\training\TrainingCourse;
- use app\common\model\training\TrainingWorkerCourse;
- use app\common\model\training\TrainingWorkerQuestion;
- use app\common\model\training\TrainingWorkerTask;
- use app\common\model\works\ServiceWork;
- use app\common\service\FileService;
- use app\workerapi\lists\MasterWorkerLists;
- use app\workerapi\lists\ServiceWorkLists;
- use think\Exception;
- use think\facade\Config;
- use think\facade\Db;
- class TrainingLogic extends BaseLogic
- {
- public static function getDetail(int $masterWorkerId)
- {
- try {
- TrainingWorkerTaskLogic::upTaskOrder($masterWorkerId);
- $task_info = ['id'=>0];
- $task = TrainingWorkerTask::where('master_worker_id',$masterWorkerId)->findOrEmpty();
- if (!$task->isEmpty()) {
- $task_info = $task->toArray();
- // 0 不展示按钮 1 去学习 2 已学完
- $task_info['learning_status'] = $task_info['shop_orders_id']>0?($task_info['training_status'] <2?1:2):0;
- $task_info['bank_status'] = BankAccount::where('worker_id',$masterWorkerId)->where('audit_state',1)->value('id')?1:0;
- $masterWorker = MasterWorker::where('id',$masterWorkerId)->find();
- $task_info['category_status'] = empty($masterWorker['category_ids'])?0:1;
- $task_info['service_status'] = (empty($masterWorker['lon']) || empty($masterWorker['lat']))?0:1;
- }
- $task_info['free_videos'] = TrainingCourse::where('course_lock',1)->select()->toArray();
- return $task_info;
- } catch (\Exception $e) {
- self::setError($e->getMessage());
- return [];
- }
- }
- /*
- * 获取课程列表
- */
- public static function getCourseList(int $masterWorkerId,$params = [])
- {
- try {
- $list = TrainingWorkerCourse::with(['trainingCourse'])->where('master_worker_id',$masterWorkerId)->where('training_task_id',$params['training_task_id'])->select()->toArray();
- foreach ($list as &$item) {
- $item['course_name'] = $item['trainingCourse']['course_name'];
- $item['course_picture'] = FileService::getFileUrl($item['trainingCourse']['course_picture']);
- $item['course_url'] = FileService::getFileUrl($item['trainingCourse']['course_url']);
- }
- return $list;
- } catch (\Exception $e) {
- self::setError($e->getMessage());
- return [];
- }
- }
- /**
- * 修改学习记录状态 播放开始 播放暂停 播放结束 考试开始 考试结束
- * @param array $params
- * @param int $masterWorkerId
- * @return bool
- */
- public static function upWorkerCourse(array $params,int $masterWorkerId)
- {
- try {
- $logCourse = TrainingWorkerCourse::where('id',$params['id'])->findOrEmpty();
- if ($logCourse->isEmpty()) {
- throw new \Exception('课程不存在');
- }
- // 播放开始 播放暂停 播放结束
- switch ($params['status']) {
- case 1:
- $logCourse->play_time = 1;
- $logCourse->study_status = 1;
- break;
- case 2:
- $logCourse->play_time = $params['play_time']??10;
- break;
- case 3:
- $logCourse->study_status = 2;
- break;
- case 4:
- $logCourse->exam_start_time = time();
- $logCourse->study_status = 3;
- break;
- case 5:
- $logCourse->exam_end_time = time();
- $logCourse->study_status = 4;
- break;
- case 6:
- $logCourse->exam_end_time = time();
- $logCourse->study_status = 5;
- break;
- }
- $logCourse->save();
- return true;
- } catch (\Exception $e) {
- self::setError($e->getMessage());
- return false;
- }
- }
- /**
- * 获取考试列表(即开始考试)
- * @return array
- */
- public static function getQuestionList(array $params,int $masterWorkerId)
- {
- try {
- // 开始考试
- self::upWorkerCourse(['id'=>$params['worker_course_id'],'status'=> 4], $masterWorkerId);
- $list = TrainingWorkerQuestion::with(['trainingQuestions'])->where('worker_course_id',$params['worker_course_id'])->select()->toArray();
- foreach ($list as &$item) {
- $item['title'] = $item['trainingQuestions']['title'];
- $item['question_type'] = $item['trainingQuestions']['question_type'];
- $item['question_selects'] = $item['trainingQuestions']['question_selects'];
- $item['question_answer'] = $item['trainingQuestions']['question_answer'];
- $item['question_analysis'] = $item['trainingQuestions']['question_analysis'];
- }
- return $list;
- } catch (\Exception $e) {
- self::setError($e->getMessage());
- return [];
- }
- }
- /**
- * 提交考试
- * @param int $teamId
- * @param int $masterWorkerId
- * @return array
- */
- public static function submitExam($params,$masterWorkerId){
- Db::startTrans();
- try {
- // 结束考试
- self::upWorkerCourse(['id'=>$params['worker_course_id'],'status'=> 5], $masterWorkerId);
- /*id
- question_answer VARCHAR ( 255 ) NOT NULL COMMENT '试题答案',
- worker_answer VARCHAR ( 255 ) NOT NULL COMMENT '师傅填写答案', -- 小写 - 排序 - 对比答案 不为空则已作答
- exam_score FLOAT ( 10, 2 ) DEFAULT ' 0' NOT NULL COMMENT '实际得分',*/
- // 对比答案小写排序
- Db::commit();
- return true;
- }catch(\Exception $e){
- Db::rollback();
- self::setError($e->getMessage());
- return false;
- }
- }
- /**
- * 考试结果统计
- * @param int $teamId
- * @param int $masterWorkerId
- * @return array
- */
- public static function examStatistics($params,$masterWorkerId){
- // 计算考试结果: 总题数 正确率 总用时 总得分(每题得分累计) 是否合格
- return [];
- }
- }
|