Преглед на файлове

培训中心 - API接口

liugc преди 1 година
родител
ревизия
3b4cc69a2a

+ 4 - 1
app/common/model/training/TrainingWorkerCourse.php

@@ -28,7 +28,10 @@ class TrainingWorkerCourse extends BaseModel
 {
     
     protected $name = 'training_worker_course';
-    
 
+    public function trainingCourse()
+    {
+        return $this->hasOne(TrainingCourse::class, 'id', 'training_course_id');
+    }
     
 }

+ 37 - 0
app/common/model/training/TrainingWorkerQuestion.php

@@ -0,0 +1,37 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\common\model\training;
+
+
+use app\common\model\BaseModel;
+
+
+
+/**
+ * TrainingWorkerQuestion模型
+ * Class TrainingWorkerQuestion
+ * @package app\common\model
+ */
+class TrainingWorkerQuestion extends BaseModel
+{
+    
+    protected $name = 'training_worker_question';
+
+    public function trainingQuestions()
+    {
+        return $this->hasOne(TrainingQuestions::class, 'id', 'questions_id');
+    }
+    
+}

+ 15 - 36
app/workerapi/controller/TrainingController.php

@@ -32,62 +32,41 @@ class TrainingController extends BaseApiController
     }
 
     /**
-     * 团队成员列表展示和分配
+     * 获取培训任务里课程列表
      * @return \think\response\Json
      */
-    public function getMemberList()
+    public function getCourseList()
     {
-        return $this->dataLists(new MasterWorkerLists());
+        $params  = request()->get();
+        return $this->data(TrainingLogic::getCourseList($this->userId,$params));
     }
 
     /**
-     * 添加团队成员
+     * 修改学习视频记录状态
      * @return \think\response\Json
      */
-    public function addTeamMember()
+    public function upWorkerVideoCourse()
     {
-        $params = (new MasterWokerTeamValidate())->post()->goCheck('add');
-        /*$res = LoginLogic::confirmMobile($params);
-        if(!$res){
-            return $this->fail(LoginLogic::getError());
-        }*/
-        $result = MasterWorkerTeamLogic::addTeamMember($params,$this->userId);
+        $params  = request()->post();
+        $result = TrainingLogic::upWorkerCourse($params,$this->userId);
         if($result === false){
-            return $this->fail(MasterWorkerTeamLogic::getError());
+            return $this->fail(TrainingLogic::getError());
         }
         return $this->success('', [], 1, 1);
     }
 
+
     /**
-     * 分配工单给团队成员
-     * @return \think\response\Json
-     */
-    public function allocation()
-    {
-        $params = (new MasterWokerTeamValidate())->post()->goCheck('allocation');
-        $result = MasterWorkerTeamLogic::allocation($params,$this->userInfo);
-        if($result === false){
-            return $this->fail(MasterWorkerTeamLogic::getError());
-        }
-        return $this->success('', [], 1, 1);
-    }
-    /**
-     * 团队工单状态统计
+     * 获取考试列表(即开始考试)
      * @return \think\response\Json
      */
-    public function getTeamWorkCount()
+    public function getQuestionList()
     {
-        $result = MasterWorkerTeamLogic::MemberWorkStatistics($this->userInfo);
+        $params  = request()->get();
+        $result = TrainingLogic::getQuestionList($params,$this->userId);
         return $this->data($result);
     }
 
-    /**
-     * 团队工单查询
-     * @return \think\response\Json
-     */
-    public function getTeamWorkLists()
-    {
-        return $this->dataLists(new TeamServiceWorkLists());
-    }
+
 
 }

+ 90 - 80
app/workerapi/logic/TrainingLogic.php

@@ -13,6 +13,8 @@ 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;
@@ -28,22 +30,12 @@ class TrainingLogic extends  BaseLogic
     public static function getDetail(int $masterWorkerId)
     {
         try {
-
-            //shop_goods_id  INT ( 10 ) DEFAULT 0  NOT NULL COMMENT '商品id(套餐)',
-	        //shop_orders_id int(10) NOT NULL DEFAULT '0' COMMENT '购买单号id',
-            // 检查是否已经购买套餐
-            $sns = ShopOrders::where('worker_id',$masterWorkerId)->where('pay_status',1)->where('refund_status',0)->column('sn');
-
-
-
+            TrainingWorkerTaskLogic::upTaskOrder($masterWorkerId);
 
             $task_info = ['id'=>0];
             $task = TrainingWorkerTask::where('master_worker_id',$masterWorkerId)->findOrEmpty();
             if (!$task->isEmpty()) {
                 $task_info = $task->toArray();
-
-                ShopOrderGoods::whereIn('sn',$sns)->where('shop_goods_id',$task_info['shop_goods_id'])->find();
-
                 // 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;
@@ -59,24 +51,66 @@ class TrainingLogic extends  BaseLogic
         }
     }
 
-    public static function addTeamMember(array $params,int $masterWorkerId)
+
+    /*
+     * 获取课程列表
+     */
+    public static function getCourseList(int $masterWorkerId,$params = [])
     {
         try {
-            $team = MasterWorkerTeam::where('master_worker_id',$masterWorkerId)->findOrEmpty();
-            if ($team->isEmpty()) {
-                throw new \Exception('团队不存在');
+            $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']);
             }
-            $masterWorker =  \app\common\model\master_worker\MasterWorker::where('mobile',$params['mobile'])->findOrEmpty();
-            if (!$masterWorker->isEmpty()) {
-                throw new \Exception('该手机号已占用');
+            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;
             }
-            // 新增工程师
-            $mwId = MasterWorkerRegisterLogic::createMasterWorker([
-                'mobile' => $params['mobile'],
-                'lon' => isset($params['lon'])?$params['lon']:0,
-                'lat' => isset($params['lat'])?$params['lat']:0,
-            ]);
-            MasterWorker::where('id',$mwId)->update(['team_id'=>$team->id,'team_role'=>2]);
+            $logCourse->save();
             return true;
         } catch (\Exception $e) {
             self::setError($e->getMessage());
@@ -84,15 +118,25 @@ class TrainingLogic extends  BaseLogic
         }
     }
 
-
-    public static function getMemberList(int $masterWorkerId)
+    /**
+     * 获取考试列表(即开始考试)
+     * @return array
+     */
+    public static function getQuestionList(array $params,int $masterWorkerId)
     {
         try {
-            $team = MasterWorkerTeam::where('master_worker_id',$masterWorkerId)->findOrEmpty();
-            if ($team->isEmpty()) {
-                throw new \Exception('团队不存在');
+            // 开始考试
+            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 MasterWorker::where('team_id',$team['id'])->where('team_role',2)->field(['id','nickname','avatar','mobile','real_name','team_role'])->select()->toArray();
+            return $list;
         } catch (\Exception $e) {
             self::setError($e->getMessage());
             return [];
@@ -101,42 +145,23 @@ class TrainingLogic extends  BaseLogic
 
 
     /**
-     * 分配给团队成员
+     * 提交考试
      * @param int $teamId
      * @param int $masterWorkerId
      * @return array
      */
-    public static function allocation($params,$userInfo){
+    public static function submitExam($params,$masterWorkerId){
         Db::startTrans();
         try {
-            $work = ServiceWork::findOrEmpty($params['work_id']);
-            if($work->isEmpty()){
-                throw new Exception('工单不存在');
-            }
-            if($work->work_status != 1 ){
-                throw new \Exception('工单已被领取,不可分配');
-            }
-            if($work->master_worker_id == $params['master_worker_id']){
-                throw new \Exception('分配的工程师相同');
-            }
-            $worker = MasterWorker::where(['id'=>$params['master_worker_id'],'team_id' =>$userInfo['team_id'],'team_role' =>2,'is_disable' =>0])->findOrEmpty();
-            if($worker->isEmpty()){
-                throw new \Exception('成员工程师不存在或被禁用');
-            }
-            if($worker->master_worker_id){
-                MasterWorker::setWorktotal('dec',$worker->master_worker_id);
-            }
-            $work->master_worker_id = $params['master_worker_id'];
-            $work->work_status = 1;
-            $work->dispatch_time = time();
-            MasterWorker::setWorktotal('inc',$params['master_worker_id']);
-            $work->save();
-            $work_log = [
-                'work_id'=>$work->id,
-                'master_worker_id'=>$work->master_worker_id,
-                'opera_log'=>'团队负责人['.$userInfo['user_id'].']'.$userInfo['real_name'].'于'.date('Y-m-d H:i:s',time()).'分配了工程师成员'.'编号['.$worker->worker_number.']'.$worker->real_name
-            ];
-            ServiceWorkerAllocateWorkerLogic::add($work_log);
+            // 结束考试
+            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){
@@ -147,29 +172,14 @@ class TrainingLogic extends  BaseLogic
     }
 
     /**
-     * 团队成员工单统计
+     * 考试结果统计
      * @param int $teamId
      * @param int $masterWorkerId
      * @return array
      */
-    public static function MemberWorkStatistics($userInfo){
-        $lists = ServiceWork::whereIn('master_worker_id',
-                    MasterWorker::where('team_id', $userInfo['team_id'])->where('team_role', 2)->column('id')
-                )->group('work_status')
-                ->field('work_status, COUNT(id) as count_num')
-                ->order('work_status asc')
-                ->select()->toArray();
-        $lists = array_column($lists,'count_num','work_status');
-        $work_status_txt = array_slice(ServiceWork::WORK_STATUS_TXT, 1, 8,true);
-        $res = [];
-        foreach ($work_status_txt as $work_status => $name) {
-            $res[] = [
-                'work_status' => $work_status,
-                'work_status_text' => $name,
-                'count_num' => $lists[$work_status]??0,
-            ];
-        }
-        return $res;
+    public static function examStatistics($params,$masterWorkerId){
+        // 计算考试结果: 总题数 正确率 总用时 总得分(每题得分累计) 是否合格
+        return [];
     }
 
 

+ 50 - 0
app/workerapi/logic/TrainingWorkerTaskLogic.php

@@ -0,0 +1,50 @@
+<?php
+namespace app\workerapi\logic;
+
+use app\common\logic\BaseLogic;
+use app\common\model\shops\ShopOrderGoods;
+use app\common\model\shops\ShopOrders;
+use app\common\model\training\TrainingWorkerTask;
+use think\facade\Db;
+
+
+/**
+ * TrainingWorkerTaskLogic逻辑
+ * Class TrainingWorkerTaskLogic
+ * @package app\workerapi\logic\works
+ */
+class TrainingWorkerTaskLogic extends BaseLogic
+{
+
+
+
+
+    /**
+     * @notes 验证是否购买
+     * @param array $params
+     * @return bool
+     * @author whitef
+     * @date 2024/07/10 15:06
+     */
+    public static function upTaskOrder($masterWorkerId): bool
+    {
+        $task = TrainingWorkerTask::where('master_worker_id',$masterWorkerId)->findOrEmpty();
+        if (!$task->isEmpty() && $task->shop_orders_id == 0) {
+            //shop_goods_id  INT ( 10 ) DEFAULT 0  NOT NULL COMMENT '商品id(套餐)',
+            //shop_orders_id int(10) NOT NULL DEFAULT '0' COMMENT '购买单号id',
+            // 检查是否已经购买套餐
+            $sn_orders = ShopOrders::where('worker_id',$masterWorkerId)->where('pay_status',1)->where('refund_status',0)->column('id','sn');
+            if (!empty($sn_orders)) {
+                $shopOrderGoods = ShopOrderGoods::whereIn('sn',array_keys($sn_orders))->where('shop_goods_id',$task->shop_goods_id)->findOrEmpty();
+                if (!$shopOrderGoods->isEmpty()) {
+                    $task->shop_orders_id = $sn_orders[$shopOrderGoods->sn];
+                    $task->save();
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+
+}