罗永浩 5 ay önce
ebeveyn
işleme
38fc381cc2

+ 4 - 1
addons/admin/src/views/video/component/CoursesForm.vue

@@ -23,7 +23,10 @@
 
                 <!-- 费用 -->
                 <el-form-item label="费用" prop="fee">
-                    <el-input-number v-model="formData.fee" :min="0" />
+                    <el-radio-group v-model="formData.fee">
+                        <el-radio :label="0">免费</el-radio>
+                        <el-radio :label="1">收费</el-radio>
+                    </el-radio-group>
                 </el-form-item>
 
                 <!-- 封面图 -->

+ 18 - 3
addons/admin/src/views/video/courses.vue

@@ -25,6 +25,15 @@
                         </el-form-item>
                     </el-col>
                     <el-col :md="6" :sm="12">
+                        <el-form-item label="费用类型:">
+                            <el-select v-model="tableCourses.where.fee" placeholder="请选择费用类型" clearable
+                                class="ele-fluid">
+                                <el-option label="免费" :value="0" />
+                                <el-option label="收费" :value="1" />
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :md="6" :sm="12">
                         <div class="ele-form-actions">
                             <el-button type="primary" @click="$refs.tableCourses.reload()" icon="el-icon-search"
                                 class="ele-btn-icon">查询</el-button>
@@ -53,7 +62,13 @@
                             <span>{{ row.video_name }}</span> <!-- 显示视频课名称 -->
                         </template>
                     </el-tableCourses-column>
-                    <el-tableCourses-column prop="fee" label="费用" width="100" />
+                    <el-tableCourses-column label="费用" width="100">
+                        <template slot-scope="{ row }">
+                            <el-tag :type="row.fee === 0 ? 'success' : 'warning'">
+                                {{ row.fee === 0 ? '免费' : '收费' }}
+                            </el-tag>
+                        </template>
+                    </el-tableCourses-column>
                     <el-tableCourses-column prop="poster" label="封面" width="120">
                         <template slot-scope="{ row }">
                             <el-image :src="row.poster" style="width:60px;height:40px;" fit="cover" />
@@ -99,7 +114,7 @@ export default {
         return {
             tableCourses: {
                 url: "/videosCourses/index",  // 更新后的接口路径
-                where: { video_id: null, video_name: null, status: null, keyword: null }
+                where: { video_id: null, video_name: null, status: null, fee: null, keyword: null }
             },
             chooseCourses: [],
             formDialogVisibleCourses: false,
@@ -116,7 +131,7 @@ export default {
             this.formDialogVisibleCourses = true;
         },
         resetSearchCourses() {
-            this.tableCourses.where = {};
+            this.tableCourses.where = { video_id: null, video_name: null, status: null, fee: null, keyword: null };
             this.$refs.tableCourses.reload();
         },
         editStatusCourses(row) {

+ 7 - 3
addons/admin/src/views/vip/vip.vue

@@ -62,6 +62,7 @@
                         </template>
                     </el-table-column>
                     <el-table-column prop="price" label="VIP价格" width="120" />
+                    <el-table-column prop="original_price" label="原价" width="120" />
                     <el-table-column prop="day" label="VIP时长/天" width="120" />
                     <el-table-column label="状态" width="80">
                         <template slot-scope="{ row }">
@@ -90,6 +91,9 @@
                 <el-form-item label="VIP价格" prop="price">
                     <el-input-number v-model="formData.price" :min="0" />
                 </el-form-item>
+                <el-form-item label="原价" prop="original_price">
+                    <el-input-number v-model="formData.original_price" :min="0" />
+                </el-form-item>
                 <el-form-item label="备注" prop="remark">
                     <el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" />
                 </el-form-item>
@@ -150,7 +154,7 @@ export default {
                 where: { keyword: "", type: null, status: null },
             },
             choose: [],
-            formData: { id: null, name: "", type: 1, price: 0, day: 0, status: 1 },
+            formData: { id: null, name: "", type: 1, price: 0, original_price: 0, day: 0, status: 1 },
             isEdit: false,
             formVisible: false,
             formRules: {
@@ -186,10 +190,10 @@ export default {
         openForm(row) {
             if (row) {
                 this.isEdit = true;
-                this.formData = { id: row.id, name: row.name, price: row.price, remark: row.remark || "" };
+                this.formData = { id: row.id, name: row.name, price: row.price, original_price: row.original_price || 0, remark: row.remark || "" };
             } else {
                 this.isEdit = false;
-                this.formData = { id: null, name: "", price: 0, remark: "" };
+                this.formData = { id: null, name: "", price: 0, original_price: 0, remark: "" };
             }
             this.formVisible = true;
         },

+ 0 - 1
app/Models/VideoCoursesModel.php

@@ -21,5 +21,4 @@ class VideoCoursesModel extends BaseModel
 {
     // 设置数据表
     protected $table = 'videos_courses';
-
 }

+ 7 - 0
app/Services/Common/VideosCoursesService.php

@@ -1,4 +1,5 @@
 <?php
+
 namespace App\Services\Common;
 
 use App\Models\VideoCoursesModel;
@@ -53,6 +54,12 @@ class VideosCoursesService extends BaseService
             $where['a.status'] = $status;
         }
 
+        // Fee filtering
+        $fee = isset($params['fee']) ? (int) $params['fee'] : -1;
+        if ($fee >= 0) {
+            $where['a.fee'] = $fee;
+        }
+
         // Query with JOIN for video details, using course name to filter videos
         $query = $this->model->from('videos_courses as a')
             ->leftJoin('videos as v', 'a.video_id', '=', 'v.id')  // Join with lev_videos table

+ 2 - 15
app/Services/Common/VipService.php

@@ -1,4 +1,5 @@
 <?php
+
 namespace App\Services\Common;
 
 use App\Models\VipModel;
@@ -144,6 +145,7 @@ class VipService extends BaseService
             'name' => $data['name'] ?? '',
             'type' => $data['type'] ?? 1,
             'price' => $data['price'] ?? 0,
+            'original_price' => $data['original_price'] ?? 0,
             'day' => $data['day'] ?? 0,
             'status' => $data['status'] ?? 1,
             'remark' => $data['remark'] ?? '',
@@ -153,18 +155,6 @@ class VipService extends BaseService
     }
 
     /**
-     * 删除VIP套餐
-     * @return array
-     */
-    public function delete()
-    {
-        // 删除VIP套餐(假设7天前的套餐已经不再有效)
-        $this->model->where('mark', 0)->where('update_time', '<=', time() - 7 * 86400)->delete();
-        return parent::delete();
-    }
-
-
-    /**
      * 用户选项
      * @return array
      */
@@ -187,7 +177,6 @@ class VipService extends BaseService
             ->get();
 
         return $datas ? $datas->toArray() : [];
-
     }
 
     // 批量设置VIP接口
@@ -238,7 +227,6 @@ class VipService extends BaseService
             }
 
             return ['code' => 0, 'msg' => '批量设置VIP成功'];
-
         } catch (\Exception $e) {
             return ['code' => 1, 'msg' => '批量设置VIP失败:' . $e->getMessage()];
         }
@@ -255,5 +243,4 @@ class VipService extends BaseService
         $this->model->where('mark', 0)->where('update_time', '<=', time() - 7 * 86400)->delete();
         return parent::delete();
     }
-
 }

Dosya farkı çok büyük olduğundan ihmal edildi
+ 5372 - 646
sql/nn2025081602.sql