linwu 9 mēneši atpakaļ
vecāks
revīzija
cf80684af4

+ 46 - 10
app/admin/controller/Soldier.php

@@ -244,20 +244,21 @@ class Soldier extends AdminBaseController
     {
     {
         $series_list = SoldierVideoSeriesModel::where('status', SoldierVideoSeriesModel::STATUS_SHOW)->order('priority desc')->select();
         $series_list = SoldierVideoSeriesModel::where('status', SoldierVideoSeriesModel::STATUS_SHOW)->order('priority desc')->select();
         return view('', [
         return view('', [
-            'status_list' => SoldierVideoModel::STATUS,
-            'series_list' => $series_list,
+            'status_list'  => SoldierVideoModel::STATUS,
+            'is_must_list' => SoldierVideoModel::IS_MUST,
+            'series_list'  => $series_list,
         ]);
         ]);
     }
     }
 
 
     public function listVideo()
     public function listVideo()
     {
     {
-        $map   = $this->dealEqualInput(['status','series_id'], $this->dealLikeInput(['title']));
+        $map   = $this->dealEqualInput(['status', 'series_id', 'is_must'], $this->dealLikeInput(['title']));
         $list  = SoldierVideoModel::with(['series'])
         $list  = SoldierVideoModel::with(['series'])
             ->where($map)
             ->where($map)
             ->order('priority desc,id desc')
             ->order('priority desc,id desc')
             ->limit(input('limit'))
             ->limit(input('limit'))
             ->page(input('page'))
             ->page(input('page'))
-            ->append(['status_text'])->select();
+            ->append(['status_text', 'is_must_text'])->select();
         $count = SoldierVideoModel::where($map)->count();
         $count = SoldierVideoModel::where($map)->count();
         if ($count == 0) {
         if ($count == 0) {
             ajax_return(1, '未查询到数据');
             ajax_return(1, '未查询到数据');
@@ -305,9 +306,10 @@ class Soldier extends AdminBaseController
         $series_list = SoldierVideoSeriesModel::where('status', SoldierVideoSeriesModel::STATUS_SHOW)->order('priority desc')->select();
         $series_list = SoldierVideoSeriesModel::where('status', SoldierVideoSeriesModel::STATUS_SHOW)->order('priority desc')->select();
         $info        = SoldierVideoModel::find($id);
         $info        = SoldierVideoModel::find($id);
         return view('', [
         return view('', [
-            'info'        => $info,
-            'status_list' => SoldierVideoModel::STATUS,
-            'series_list' => $series_list,
+            'info'         => $info,
+            'status_list'  => SoldierVideoModel::STATUS,
+            'is_must_list' => SoldierVideoModel::IS_MUST,
+            'series_list'  => $series_list,
         ]);
         ]);
     }
     }
 
 
@@ -351,7 +353,7 @@ class Soldier extends AdminBaseController
             ajax_return(1, '请选择视频');
             ajax_return(1, '请选择视频');
         }
         }
 
 
-        $list = SoldierVideoWatchModel::with(['user'])
+        $list  = SoldierVideoWatchModel::with(['user'])
             ->where('video_id', $id)
             ->where('video_id', $id)
             ->limit(input('limit'))
             ->limit(input('limit'))
             ->page(input('page'))
             ->page(input('page'))
@@ -373,7 +375,7 @@ class Soldier extends AdminBaseController
         }
         }
 
 
         $video = SoldierVideoModel::find($id);
         $video = SoldierVideoModel::find($id);
-        $list = SoldierVideoWatchModel::with(['user'])->where('video_id', $id)->append(['status_text'])->select();
+        $list  = SoldierVideoWatchModel::with(['user'])->where('video_id', $id)->append(['status_text'])->select();
         foreach ($list as $v) {
         foreach ($list as $v) {
             $v['user_name'] = $v['user']['name'];
             $v['user_name'] = $v['user']['name'];
         }
         }
@@ -384,6 +386,40 @@ class Soldier extends AdminBaseController
             ['create_time', '首次学习时间'],
             ['create_time', '首次学习时间'],
             ['update_time', '最后学习时间'],
             ['update_time', '最后学习时间'],
         ];
         ];
-        export_exl($video['title']."的观看记录", $xlsCell, $list);
+        export_exl($video['title'] . "的观看记录", $xlsCell, $list);
+    }
+
+    public function exportUserVideoWatch()
+    {
+        $id = input('id/d', 0);
+        if (empty($id)) {
+            ajax_return(1, '请选择视频');
+        }
+
+        $user       = SoldierModel::find($id);
+        $video_list = SoldierVideoModel::with('series')->where('status', SoldierVideoModel::STATUS_SHOW)->append(['is_must_text'])->order('priority desc,id desc')->select();
+        $watch_list = SoldierVideoWatchModel::where('user_id', $id)->column('*', 'video_id');
+        foreach ($video_list as $v) {
+            $v['series_name'] = $v['series']['title'];
+            if (empty($watch_list[$v['id']])) {
+                $v['watch_status_text'] = SoldierVideoWatchModel::STATUS[SoldierVideoWatchModel::STATUS_NO_STARTED];
+                $v['fist_time']         = $v['last_time'] = '';
+            } else {
+                $v['watch_status_text'] = SoldierVideoWatchModel::STATUS[$watch_list[$v['id']]['status']];
+                $v['fist_time']         = date('Y-m-d H:i:s', $watch_list[$v['id']]['create_time']);
+                $v['last_time']         = date('Y-m-d H:i:s', $watch_list[$v['id']]['update_time']);
+            }
+        }
+
+        $xlsCell = [
+            ['series_name', '系列'],
+            ['title', '标题'],
+            ['is_must_text', '是否必修'],
+            ['watch_status_text', '观看状态'],
+            ['fist_time', '首次学习时间'],
+            ['last_time', '最后学习时间'],
+        ];
+        export_exl($user['name'] . "的观看记录", $xlsCell, $video_list);
     }
     }
+
 }
 }

+ 4 - 0
app/admin/view/soldier/user.html

@@ -38,6 +38,7 @@
             <table id="{$lay_table}" lay-filter="{$lay_table}"></table>
             <table id="{$lay_table}" lay-filter="{$lay_table}"></table>
             <script type="text/html" id="setTpl">
             <script type="text/html" id="setTpl">
                 <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
                 <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="watch"><i class="layui-icon layui-icon-engine"></i>导出观看记录</a>
                 <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
                 <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
             </script>
             </script>
         </div>
         </div>
@@ -128,6 +129,9 @@
                     area: ['550px', '550px']
                     area: ['550px', '550px']
                 });
                 });
                 layer.full(index);
                 layer.full(index);
+            } else if (obj.event === 'watch') {
+                const url = "{:url('soldier/exportUserVideoWatch')}";
+                window.open(url + '?id=' + data.id);
             }
             }
         });
         });
 
 

+ 12 - 0
app/admin/view/soldier/video.html

@@ -39,6 +39,17 @@
                         </select>
                         </select>
                     </div>
                     </div>
                 </div>
                 </div>
+                <div class="layui-inline">
+                    <label class="layui-form-label">是否必修</label>
+                    <div class="layui-input-block">
+                        <select name="is_must">
+                            <option value="">全部状态</option>
+                            {volist name="is_must_list" id="v"}
+                            <option value="{$key}">{$v}</option>
+                            {/volist}
+                        </select>
+                    </div>
+                </div>
                 <div class="layui-inline">
                 <div class="layui-inline">
                     <button class="layui-btn" lay-submit lay-filter="{$lay_btn}">
                     <button class="layui-btn" lay-submit lay-filter="{$lay_btn}">
                         <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                         <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
@@ -84,6 +95,7 @@
                 [
                 [
                     {field: 'series', title: '系列', width: 200, templet: '#seriesTpl'},
                     {field: 'series', title: '系列', width: 200, templet: '#seriesTpl'},
                     {field: 'title', title: '标题'},
                     {field: 'title', title: '标题'},
+                    {field: 'is_must_text', title: '是否必修', width: 120, align: 'center'},
                     {field: 'main_image', title: '主图' ,width: 160, templet: '#userTpl'},
                     {field: 'main_image', title: '主图' ,width: 160, templet: '#userTpl'},
                     {field: 'priority', title: '排序', width: 80, align: 'center', edit: 'text'},
                     {field: 'priority', title: '排序', width: 80, align: 'center', edit: 'text'},
                     {field: 'status_text', title: '状态', width: 80, align: 'center'},
                     {field: 'status_text', title: '状态', width: 80, align: 'center'},

+ 8 - 0
app/admin/view/soldier/video_form.html

@@ -23,6 +23,14 @@
                                        autocomplete="off" class="layui-input">
                                        autocomplete="off" class="layui-input">
                             </div>
                             </div>
                         </div>
                         </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label"><span style="color:#f90c05;">*</span>是否必修</label>
+                            <div class="layui-input-block">
+                                {volist name="is_must_list" id="v"}
+                                <input type="radio" name="is_must" value="{$key}" title="{$v}" {eq name=":array_get($info,'is_must',2)" value="$key" }checked{/eq}>
+                                {/volist}
+                            </div>
+                        </div>
                         <div class="layui-form-item">
                         <div class="layui-form-item">
                             <label class="layui-form-label"><span style="color:#f90c05;">*</span>主图</label>
                             <label class="layui-form-label"><span style="color:#f90c05;">*</span>主图</label>
                             <div class="layui-input-block">
                             <div class="layui-input-block">

+ 9 - 1
app/common/model/SoldierVideoModel.php

@@ -9,16 +9,24 @@ class SoldierVideoModel extends BaseModel
     protected $name = 'soldier_video';
     protected $name = 'soldier_video';
 
 
     // 常量
     // 常量
-    const STATUS = [1 => '显示', 2 => '隐藏'];
+    const STATUS  = [1 => '显示', 2 => '隐藏'];
+    const IS_MUST = [1 => '必修', 2 => '选修'];
 
 
     const STATUS_SHOW = 1;
     const STATUS_SHOW = 1;
     const STATUS_HIDE = 2;
     const STATUS_HIDE = 2;
+    const IS_MUST_YES = 1;
+    const IS_MUST_NO  = 2;
 
 
     public function getStatusTextAttr($value, $data)
     public function getStatusTextAttr($value, $data)
     {
     {
         return self::STATUS[$data['status']];
         return self::STATUS[$data['status']];
     }
     }
 
 
+    public function getIsMustTextAttr($value, $data)
+    {
+        return self::IS_MUST[$data['is_must']];
+    }
+
     public function series()
     public function series()
     {
     {
         return $this->hasOne(SoldierVideoSeriesModel::class, 'id', 'series_id');
         return $this->hasOne(SoldierVideoSeriesModel::class, 'id', 'series_id');