Browse Source

套餐自动激活,与手动激活

lizhen_gitee 7 months ago
parent
commit
aa080a4774

+ 32 - 1
application/admin/controller/Packageorder.php

@@ -3,7 +3,7 @@
 namespace app\admin\controller;
 
 use app\common\controller\Backend;
-
+use think\Db;
 /**
  * 用户套餐订单
  *
@@ -23,6 +23,7 @@ class Packageorder extends Backend
         parent::_initialize();
         $this->model = new \app\admin\model\Packageorder;
         $this->view->assign("orderStatusList", $this->model->getOrderStatusList());
+        $this->view->assign("useStatusList", $this->model->getUseStatusList());
         $this->view->assign("isGiftList", $this->model->getIsGiftList());
         $this->view->assign("noticeStatusList", $this->model->getNoticeStatusList());
     }
@@ -72,4 +73,34 @@ class Packageorder extends Backend
         return $this->view->fetch();
     }
 
+    /**
+     * 激活
+     */
+    public function jihuo(){
+        $id = input('id',0);
+
+        $package_order = Db::name('package_order')->where('id',$id)->find();
+        if(empty($package_order)){
+            $this->error(__('请刷新重试'));
+        }
+
+        if($package_order['use_status'] == 1){
+            $this->error(__('请刷新重试'));
+        }
+
+        $time = time();
+
+        $update = [
+            'updatetime'   => $time,
+        ];
+        $update['use_status'] = 1;
+        $update['starttime']  = $time;
+        $update['endtime']    = $time + ($package_order['days'] * 86400);
+
+        $rs = Db::name('package_order')->where('id',$id)->update($update); //这里不用order_no,主订单和赠品各自激活
+
+        $this->success(__('已激活'));
+
+    }
+
 }

+ 8 - 2
application/admin/lang/en/packageorder.php

@@ -7,7 +7,7 @@ return [
     'Package_id'      => 'Package id',
     'Lesson_ids'      => 'Lesson ids',
     'Sessions'        => 'Sessions',
-    'Starttime'       => 'Start time',
+    'Starttime'       => 'Active time',
     'Days'            => 'Days',
     'Endtime'         => 'End time',
     'Price'           => 'Price',
@@ -15,6 +15,9 @@ return [
     'Order_status'    => 'Order status',
     'Order_status 0'  => 'unpaid',
     'Order_status 1'  => 'have paid',
+    'Use_status'      => 'activate status',
+    'Use_status 0'    => 'not active',
+    'Use_status 1'    => 'Active',
     'Paytime'         => 'Pay time',
     'Createtime'      => 'Create time',
     'Updatetime'      => 'Update time',
@@ -30,5 +33,8 @@ return [
     'User.firstname'  => 'firstname',
     'User.lastname'   => 'lastname',
     'Package.name'    => 'Package name',
-    'Package.name_en' => 'Package name(en)'
+    'Package.name_en' => 'Package name(en)',
+    '激活'             => 'Get activation',
+    '已激活'           => 'Activation successful',
+    '请刷新重试'           => 'Refresh and try again',
 ];

+ 4 - 1
application/admin/lang/zh-cn/packageorder.php

@@ -7,7 +7,7 @@ return [
     'Package_id'      => '套餐id',
     'Lesson_ids'      => '课程ids',
     'Sessions'        => '共计获得课程数量',
-    'Starttime'       => '开始时间',
+    'Starttime'       => '激活时间',
     'Days'            => '实际有效天数',
     'Endtime'         => '到期时间',
     'Price'           => '价格',
@@ -15,6 +15,9 @@ return [
     'Order_status'    => '状态',
     'Order_status 0'  => '待支付',
     'Order_status 1'  => '已支付',
+    'Use_status'      => '激活状态',
+    'Use_status 0'    => '未激活',
+    'Use_status 1'    => '已激活',
     'Paytime'         => '支付时间',
     'Createtime'      => '创建时间',
     'Updatetime'      => '更新时间',

+ 13 - 0
application/admin/model/Packageorder.php

@@ -28,6 +28,7 @@ class Packageorder extends Model
         'starttime_text',
         'endtime_text',
         'order_status_text',
+        'use_status_text',
         'paytime_text',
         'is_gift_text',
         'notice_status_text'
@@ -39,6 +40,10 @@ class Packageorder extends Model
     {
         return ['0' => __('Order_status 0'), '1' => __('Order_status 1')];
     }
+    public function getUseStatusList()
+    {
+        return ['0' => __('Use_status 0'), '1' => __('Use_status 1')];
+    }
 
     public function getIsGiftList()
     {
@@ -73,6 +78,14 @@ class Packageorder extends Model
     }
 
 
+    public function getUseStatusTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['use_status']) ? $data['use_status'] : '');
+        $list = $this->getUseStatusList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+
     public function getPaytimeTextAttr($value, $data)
     {
         $value = $value ? $value : (isset($data['paytime']) ? $data['paytime'] : '');

+ 39 - 24
application/admin/view/packageorder/edit.html

@@ -30,66 +30,81 @@
             <input id="c-sessions" disabled data-rule="required" class="form-control" name="row[sessions]" type="number" value="{$row.sessions|htmlentities}">
         </div>
     </div>
+
     <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Starttime')}:</label>
+        <label class="control-label col-xs-12 col-sm-2">{:__('Price')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-starttime" disabled data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[starttime]" type="text" value="{:$row.starttime?datetime($row.starttime):''}">
+            <input id="c-price" disabled data-rule="required" class="form-control" step="0.01" name="row[price]" type="number" value="{$row.price|htmlentities}">
         </div>
     </div>
     <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Days')}:</label>
+        <label class="control-label col-xs-12 col-sm-2">{:__('Remain')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-days" disabled data-rule="required" class="form-control" name="row[days]" type="number" value="{$row.days|htmlentities}">
+            <input id="c-remain" data-rule="required" class="form-control" name="row[remain]" step="0.5" type="number" value="{$row.remain|htmlentities}">
         </div>
     </div>
     <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Endtime')}:</label>
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_gift')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-endtime" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[endtime]" type="text" value="{:$row.endtime?datetime($row.endtime):''}">
+
+            <select  id="c-is_gift" disabled data-rule="required" class="form-control selectpicker" name="row[is_gift]">
+                {foreach name="isGiftList" item="vo"}
+                <option value="{$key}" {in name="key" value="$row.is_gift"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
         </div>
     </div>
     <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Price')}:</label>
+        <label class="control-label col-xs-12 col-sm-2">{:__('Order_status')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-price" disabled data-rule="required" class="form-control" step="0.01" name="row[price]" type="number" value="{$row.price|htmlentities}">
+            
+            <div class="radio">
+            {foreach name="orderStatusList" item="vo"}
+            <label for="row[order_status]-{$key}"><input disabled id="row[order_status]-{$key}" name="row[order_status]" type="radio" value="{$key}" {in name="key" value="$row.order_status"}checked{/in} /> {$vo}</label>
+            {/foreach}
+            </div>
+
         </div>
     </div>
     <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Remain')}:</label>
+        <label class="control-label col-xs-12 col-sm-2">{:__('Paytime')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-remain" data-rule="required" class="form-control" name="row[remain]" step="0.5" type="number" value="{$row.remain|htmlentities}">
+            <input id="c-paytime" disabled data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[paytime]" type="text" value="{:$row.paytime?datetime($row.paytime):''}">
         </div>
     </div>
     <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Order_status')}:</label>
+        <label class="control-label col-xs-12 col-sm-2">{:__('Use_status')}:</label>
         <div class="col-xs-12 col-sm-8">
-            
+
             <div class="radio">
-            {foreach name="orderStatusList" item="vo"}
-            <label for="row[order_status]-{$key}"><input disabled id="row[order_status]-{$key}" name="row[order_status]" type="radio" value="{$key}" {in name="key" value="$row.order_status"}checked{/in} /> {$vo}</label>
+            {foreach name="useStatusList" item="vo"}
+            <label for="row[use_status]-{$key}"><input disabled id="row[use_status]-{$key}" name="row[use_status]" type="radio" value="{$key}" {in name="key" value="$row.use_status"}checked{/in} /> {$vo}</label>
             {/foreach}
             </div>
 
         </div>
     </div>
     <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Paytime')}:</label>
+        <label class="control-label col-xs-12 col-sm-2">{:__('Starttime')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-paytime" disabled data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[paytime]" type="text" value="{:$row.paytime?datetime($row.paytime):''}">
+            <input id="c-starttime" disabled data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[starttime]" type="text" value="{:$row.starttime?datetime($row.starttime):''}">
         </div>
     </div>
     <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Is_gift')}:</label>
+        <label class="control-label col-xs-12 col-sm-2">{:__('Days')}:</label>
         <div class="col-xs-12 col-sm-8">
-                        
-            <select  id="c-is_gift" disabled data-rule="required" class="form-control selectpicker" name="row[is_gift]">
-                {foreach name="isGiftList" item="vo"}
-                    <option value="{$key}" {in name="key" value="$row.is_gift"}selected{/in}>{$vo}</option>
-                {/foreach}
-            </select>
-
+            <input id="c-days" disabled data-rule="required" class="form-control" name="row[days]" type="number" value="{$row.days|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Endtime')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-endtime" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[endtime]" type="text" value="{:$row.endtime?datetime($row.endtime):''}">
         </div>
     </div>
+
+
     <!--<div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Notice_status')}:</label>
         <div class="col-xs-12 col-sm-8">

+ 10 - 1
application/admin/view/packageorder/index.html

@@ -1,5 +1,14 @@
 <div class="panel panel-default panel-intro">
-    {:build_heading()}
+
+    <div class="panel-heading">
+        {:build_heading(null,FALSE)}
+        <ul class="nav nav-tabs" data-field="use_status">
+            <li class="{:$Think.get.status === null ? 'active' : ''}"><a href="#t-all" data-value="" data-toggle="tab">{:__('All')}</a></li>
+            {foreach name="useStatusList" item="vo"}
+            <li class="{:$Think.get.status === (string)$key ? 'active' : ''}"><a href="#t-{$key}" data-value="{$key}" data-toggle="tab">{$vo}</a></li>
+            {/foreach}
+        </ul>
+    </div>
 
     <div class="panel-body">
         <div id="myTabContent" class="tab-content">

+ 3 - 2
application/api/controller/Lesson.php

@@ -630,12 +630,13 @@ class Lesson extends Api
             'package_id'  => $package_id,
             'lesson_ids'   => $package_info['lesson_ids'],
             'sessions'    => $package_info['sessions'],
-            'starttime'   => time(),
+            'starttime'   => 0,
             'days'        => $package_info['days'],
-            'endtime'     => time() + ($package_info['days'] * 86400),
+            'endtime'     => 0,
             'price'       => $package_info['price'],
             'remain'      => $package_info['sessions'],
             'order_status'=> 0,
+            'use_status'  => 0,//默认不激活
             'paytime'     => 0,
             'createtime'  => time(),
             'updatetime'  => 0,

+ 6 - 1
application/api/controller/Notify.php

@@ -171,8 +171,13 @@ class Notify extends Controller
                 'order_status' => 1,
                 'paytime'      => $time,
                 'updatetime'   => $time,
-                'use_status'   => $package_order['remain'] >= 5 ? 0 : 1, //大配套不激活,小配套自动激活
             ];
+            //小配套自动激活
+            if($package_order['remain'] < 5){
+                $update['use_status'] = 1;
+                $update['starttime'] = $time;
+                $update['endtime'] = $time + ($package_order['days'] * 86400); //主配套与赠品的时间保持一样就可以
+            }
             $rs = Db::name('package_order')->where('order_no',$orderInfo['out_trade_no'])->update($update); //这里不用id,是因为另有赠品单,两个一起更新
             if($rs === false){
                 Db::rollback();

+ 24 - 1
public/assets/js/backend/packageorder.js

@@ -29,6 +29,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {checkbox: true},
                         {field: 'id', title: __('Id')},
                         {field: 'order_no', title: __('Order_no'), operate: 'LIKE'},
+                        {field: 'use_status', title: __('Use_status'), searchList: {"0":__('Use_status 0'),"1":__('Use_status 1')}, formatter: Table.api.formatter.status},
                         {field: 'user_id', title: __('User_id')},
                         {field: 'user.firstname', title: __('User.firstname'), operate: 'LIKE'},
                         {field: 'user.lastname', title: __('User.lastname'), operate: 'LIKE'},
@@ -52,7 +53,26 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
 
 
 
-                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
+                        {field: 'operate', title: __('Operate'), table: table,
+                            buttons:[
+                                {
+                                    name:'jihuo',
+                                    text:__('激活'),
+                                    title:__('激活'),
+                                    icon:'fa fa-exclamation-circle',
+                                    classname:'btn btn-xs btn-info btn-ajax',
+                                    url:'packageorder/jihuo/id/{ids}?dialog=1',
+                                    target:'_self',
+                                    hidden:function(row){
+                                        if(row.use_status == 0){
+                                            return false
+                                        }
+                                        return true;
+                                    },
+                                    refresh:{silent:true},
+                                },
+                            ],
+                            events: Table.api.events.operate, formatter: Table.api.formatter.operate}
                     ]
                 ]
             });
@@ -60,6 +80,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
             // 为表格绑定事件
             Table.api.bindevent(table);
         },
+        jihuo: function () {
+            Controller.api.bindevent();
+        },
         add: function () {
             Controller.api.bindevent();
         },