liugc пре 1 година
родитељ
комит
1e261fb9bf

+ 108 - 0
app/adminapi/controller/training/TrainingBlockConfigController.php

@@ -0,0 +1,108 @@
+<?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\adminapi\controller\training;
+
+
+use app\adminapi\controller\BaseAdminController;
+use app\adminapi\lists\training\TrainingBlockConfigLists;
+use app\adminapi\logic\training\TrainingBlockConfigLogic;
+use app\adminapi\validate\training\TrainingBlockConfigValidate;
+
+
+/**
+ * TrainingBlockConfig控制器
+ * Class TrainingBlockConfigController
+ * @package app\adminapi\controller
+ */
+class TrainingBlockConfigController extends BaseAdminController
+{
+
+
+    /**
+     * @notes 获取列表
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/03/06 18:08
+     */
+    public function lists()
+    {
+        return $this->dataLists(new TrainingBlockConfigLists());
+    }
+
+
+    /**
+     * @notes 添加
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/03/06 18:08
+     */
+    public function add()
+    {
+        $params = (new TrainingBlockConfigValidate())->post()->goCheck('add');
+        $result = TrainingBlockConfigLogic::add($params);
+        if (true === $result) {
+            return $this->success('添加成功', [], 1, 1);
+        }
+        return $this->fail(TrainingBlockConfigLogic::getError());
+    }
+
+
+    /**
+     * @notes 编辑
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/03/06 18:08
+     */
+    public function edit()
+    {
+        $params = (new TrainingBlockConfigValidate())->post()->goCheck('edit');
+        $result = TrainingBlockConfigLogic::edit($params);
+        if (true === $result) {
+            return $this->success('编辑成功', [], 1, 1);
+        }
+        return $this->fail(TrainingBlockConfigLogic::getError());
+    }
+
+
+    /**
+     * @notes 删除
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/03/06 18:08
+     */
+    public function delete()
+    {
+        $params = (new TrainingBlockConfigValidate())->post()->goCheck('delete');
+        TrainingBlockConfigLogic::delete($params);
+        return $this->success('删除成功', [], 1, 1);
+    }
+
+
+    /**
+     * @notes 获取详情
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/03/06 18:08
+     */
+    public function detail()
+    {
+        $params = (new TrainingBlockConfigValidate())->goCheck('detail');
+        $result = TrainingBlockConfigLogic::detail($params);
+        return $this->data($result);
+    }
+
+
+}

+ 77 - 0
app/adminapi/lists/training/TrainingBlockConfigLists.php

@@ -0,0 +1,77 @@
+<?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\adminapi\lists\training;
+
+
+use app\adminapi\lists\BaseAdminDataLists;
+use app\common\model\training\TrainingBlockConfig;
+use app\common\lists\ListsSearchInterface;
+
+
+/**
+ * TrainingBlockConfig列表
+ * Class TrainingBlockConfigLists
+ * @package app\adminapi\lists
+ */
+class TrainingBlockConfigLists extends BaseAdminDataLists implements ListsSearchInterface
+{
+
+
+    /**
+     * @notes 设置搜索条件
+     * @return \string[][]
+     * @author likeadmin
+     * @date 2025/03/06 18:08
+     */
+    public function setSearch(): array
+    {
+        return [
+            '=' => ['identity_source', 'block_number', 'block_name', 'block_setting'],
+        ];
+    }
+
+
+    /**
+     * @notes 获取列表
+     * @return array
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @author likeadmin
+     * @date 2025/03/06 18:08
+     */
+    public function lists(): array
+    {
+        return TrainingBlockConfig::where($this->searchWhere)
+            ->field(['id', 'identity_source', 'block_number', 'block_name', 'block_setting'])
+            ->limit($this->limitOffset, $this->limitLength)
+            ->order(['id' => 'desc'])
+            ->select()
+            ->toArray();
+    }
+
+
+    /**
+     * @notes 获取数量
+     * @return int
+     * @author likeadmin
+     * @date 2025/03/06 18:08
+     */
+    public function count(): int
+    {
+        return TrainingBlockConfig::where($this->searchWhere)->count();
+    }
+
+}

+ 2 - 1
app/adminapi/lists/training/TrainingCourseLists.php

@@ -38,8 +38,9 @@ class TrainingCourseLists extends BaseAdminDataLists implements ListsSearchInter
      */
     public function setSearch(): array
     {
+        if(isset($this->params['subclass']) && !empty($this->params['subclass'])) $this->params['subclass'] = end($this->params['subclass']);
         return [
-            '=' => ['course_picture', 'course_url', 'course_lock', 'course_length', 'course_question_setting', 'course_question_score'],
+            '=' => ['subclass','course_picture', 'course_url', 'course_lock', 'course_length', 'course_question_setting', 'course_question_score'],
             '%like%' => ['course_name'],
         ];
     }

+ 2 - 1
app/adminapi/lists/training/TrainingQuestionsLists.php

@@ -38,8 +38,9 @@ class TrainingQuestionsLists extends BaseAdminDataLists implements ListsSearchIn
      */
     public function setSearch(): array
     {
+        if(isset($this->params['subclass']) && !empty($this->params['subclass'])) $this->params['subclass'] = end($this->params['subclass']);
         return [
-            '=' => ['training_course_id', 'question_type', 'question_selects', 'question_answer', 'question_analysis'],
+            '=' => ['subclass','training_course_id', 'question_type', 'question_selects', 'question_answer', 'question_analysis'],
             '%like%' => ['title'],
         ];
     }

+ 2 - 1
app/adminapi/lists/training/TrainingTaskLists.php

@@ -38,8 +38,9 @@ class TrainingTaskLists extends BaseAdminDataLists implements ListsSearchInterfa
      */
     public function setSearch(): array
     {
+        if(isset($this->params['subclass']) && !empty($this->params['subclass'])) $this->params['subclass'] = end($this->params['subclass']);
         return [
-            '=' => ['training_course_id'],
+            '=' => ['subclass','training_course_id'],
             '%like%' => ['task_name'],
         ];
     }

+ 2 - 1
app/adminapi/lists/training/TrainingWorkerCourseLists.php

@@ -37,8 +37,9 @@ class TrainingWorkerCourseLists extends BaseAdminDataLists implements ListsSearc
      */
     public function setSearch(): array
     {
+        if(isset($this->params['subclass']) && !empty($this->params['subclass'])) $this->params['subclass'] = end($this->params['subclass']);
         return [
-            '=' => ['master_worker_id', 'training_task_id', 'training_course_id', 'play_time', 'exam_start_time', 'exam_end_time', 'study_status', 'exam_score'],
+            '=' => ['subclass','master_worker_id', 'training_task_id', 'training_course_id', 'play_time', 'exam_start_time', 'exam_end_time', 'study_status', 'exam_score'],
 
         ];
     }

+ 17 - 6
app/adminapi/logic/training/TrainingBlockConfigLogic.php

@@ -42,9 +42,7 @@ class TrainingBlockConfigLogic extends BaseLogic
         try {
             TrainingBlockConfig::create([
                 'identity_source' => $params['identity_source'],
-                'block_number' => $params['block_number'],
-                'block_name' => $params['block_name'],
-                'block_setting' => $params['block_setting']
+                'block_setting' => self::configureReservedField($params['block_setting']??[]),
             ]);
 
             Db::commit();
@@ -70,9 +68,7 @@ class TrainingBlockConfigLogic extends BaseLogic
         try {
             TrainingBlockConfig::where('id', $params['id'])->update([
                 'identity_source' => $params['identity_source'],
-                'block_number' => $params['block_number'],
-                'block_name' => $params['block_name'],
-                'block_setting' => $params['block_setting']
+                'block_setting' => json_encode(self::configureReservedField($params['block_setting']??[])),
             ]);
 
             Db::commit();
@@ -110,6 +106,21 @@ class TrainingBlockConfigLogic extends BaseLogic
         return TrainingBlockConfig::findOrEmpty($params['id'])->toArray();
     }
 
+
+    public static function configureReservedField($data): array
+    {
+        foreach ($data as $key => &$item) {
+            $data[$key]['block_key'] = $key+1;
+            if($item['is_must']){
+                $item['is_must'] = \true;
+            }else{
+                $item['is_must'] = \false;
+            }
+        }
+        return $data??[];
+    }
+
+
     public static function getBlockConfig($identity_source,$type = 'all')
     {
         $block_setting = TrainingBlockConfig::where('identity_source',$identity_source)->value('block_setting');

+ 100 - 0
app/adminapi/validate/training/TrainingBlockConfigValidate.php

@@ -0,0 +1,100 @@
+<?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\adminapi\validate\training;
+
+
+use app\common\validate\BaseValidate;
+
+
+/**
+ * TrainingBlockConfig验证器
+ * Class TrainingBlockConfigValidate
+ * @package app\adminapi\validate
+ */
+class TrainingBlockConfigValidate extends BaseValidate
+{
+
+     /**
+      * 设置校验规则
+      * @var string[]
+      */
+    protected $rule = [
+        'id' => 'require',
+        'identity_source' => 'require',
+        'block_number' => 'require',
+        'block_setting' => 'require',
+    ];
+
+
+    /**
+     * 参数描述
+     * @var string[]
+     */
+    protected $field = [
+        'id' => 'id',
+        'identity_source' => '身份来源0普通工程师 1见习工程师 2团队负责人工程师',
+        'block_number' => '板块编号',
+        'block_setting' => '板块项内容设置json',
+    ];
+
+
+    /**
+     * @notes 添加场景
+     * @return TrainingBlockConfigValidate
+     * @author likeadmin
+     * @date 2025/03/06 18:08
+     */
+    public function sceneAdd()
+    {
+        return $this->only(['identity_source','block_number','block_setting']);
+    }
+
+
+    /**
+     * @notes 编辑场景
+     * @return TrainingBlockConfigValidate
+     * @author likeadmin
+     * @date 2025/03/06 18:08
+     */
+    public function sceneEdit()
+    {
+        return $this->only(['id','identity_source','block_number','block_setting']);
+    }
+
+
+    /**
+     * @notes 删除场景
+     * @return TrainingBlockConfigValidate
+     * @author likeadmin
+     * @date 2025/03/06 18:08
+     */
+    public function sceneDelete()
+    {
+        return $this->only(['id']);
+    }
+
+
+    /**
+     * @notes 详情场景
+     * @return TrainingBlockConfigValidate
+     * @author likeadmin
+     * @date 2025/03/06 18:08
+     */
+    public function sceneDetail()
+    {
+        return $this->only(['id']);
+    }
+
+}

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

@@ -28,7 +28,10 @@ class TrainingBlockConfig extends BaseModel
 {
     
     protected $name = 'training_block_config';
-    
+
+    protected $type = [
+        'block_setting' => 'array'
+    ];
 
     
 }

+ 2 - 0
app/workerapi/logic/TrainingLogic.php

@@ -65,6 +65,8 @@ class TrainingLogic extends  BaseLogic
                 $task_info['crime_agree_status'] = MasterWorkerAgree::where(['agree_type'=>'crime_content','worker_id'=>$masterWorker['id']])->value('audit_state')??0;
                 $task_info['crime_agree_info'] = MasterWorkerAgreeLogic::getAgreeByType('crime',$masterWorker['id']);
 
+                // 该工程师所有必须任务是否完成
+                $task_info['task_required'] = MasterWorkerLogic::taskRequired($masterWorker['id'],$masterWorker['identity_source'])?1:0;
             }
             //$task_info['free_videos'] = TrainingCourse::where('course_lock',1)->select()->toArray();
             return $task_info;