|
|
@@ -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 [];
|
|
|
}
|
|
|
|
|
|
|