Browse Source

后台下单配套修改

lizhen_gitee 7 months ago
parent
commit
c10fa8558b

+ 88 - 45
application/admin/controller/Packageorder.php

@@ -149,58 +149,101 @@ class Packageorder extends Backend
             $this->assign('package_id',$package_id);
             return $this->view->fetch();
         }
-        $params = $this->request->post('row/a');
-        if (empty($params)) {
-            $this->error(__('Parameter %s can not be empty', ''));
+
+        //
+        $package_id = input('package_id');
+        $user_id    = input('user_id');
+        $package_info = Db::name('lesson_package')->where('id',$package_id)->find();
+
+        //初次购买,主订单增加赠送小时数
+        if($package_info['sessions_first'] > 0){
+            $check_first = Db::name('package_order')->where('user_id',$user_id)->where('package_id',$package_id)->where('order_status',1)->where('is_gift',0)->find();
+            if(empty($check_first)){
+                $package_info['sessions'] = $package_info['sessions'] + $package_info['sessions_first'];
+            }
         }
-        $params = $this->preExcludeFields($params);
 
-        if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
-            $params[$this->dataLimitField] = $this->auth->id;
+        //套餐订单
+        $data = [
+            'order_no'    => createUniqueNo('P',$params['user_id']),
+            'user_id'     => $user_id,
+            'type'        => $package_info['type'],
+            'package_id'  => $package_id,
+            'lesson_ids'  => $package_info['lesson_ids'],
+            'sessions'    => $package_info['sessions'],
+            'starttime'   => 0,
+            'days'        => $package_info['days'],
+            'endtime'     => 0,
+            'price'       => $package_info['price'],
+            'remain'      => $package_info['sessions'],
+            'order_status'=> 1, //默认支付了
+            'use_status'  => 0,//默认不激活
+            'paytime'     => time(),
+            'pay_type'    => 2, //线下支付
+            'createtime'  => time(),
+            'updatetime'  => time(),
+            'is_gift'     => 0,
+            'remark'      => input('remark',''),
+        ];
+
+        //如果有赠品,赠品订单
+        $gift = [];
+        if(!empty($package_info['gift_lesson_id']) && !empty($package_info['gift_sessions'])){
+            $gift = $data;
+
+            //订单号不换了
+            $gift['type']       = $package_info['gift_type'];
+            $gift['lesson_ids'] = $package_info['gift_lesson_id'];
+            $gift['sessions']  = $package_info['gift_sessions'];
+            $gift['remain']    = $package_info['gift_sessions'];
+            $gift['is_gift']   = 1;
         }
-        $result = false;
-        Db::startTrans();
-        try {
-            //是否采用模型验证
-            if ($this->modelValidate) {
-                $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
-                $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;
-                $this->model->validateFailException()->validate($validate);
-            }
 
-            //
-            $package_id = $params['package_id'];
-            $package_info = Db::name('lesson_package')->where('id',$package_id)->find();
-            //套餐订单
-            $data = [
-                'order_no'    => createUniqueNo('P',$params['user_id']),
-                'lesson_ids'  => $package_info['lesson_ids'],
-                'sessions'    => $package_info['sessions'],
-                'starttime'   => 0,
-                'days'        => $package_info['days'],
-                'endtime'     => 0,
-                'price'       => $package_info['price'],
-                'remain'      => $package_info['sessions'],
-                'order_status'=> 1,
-                'use_status'  => 0,//默认不激活
-                'paytime'     => time(),
-                'pay_type'    => 2, //线下支付
-                'is_gift'     => 0,
-            ];
-            $params = array_merge($params,$data);
-            //
-
-
-            $result = $this->model->allowField(true)->save($params);
-            Db::commit();
-        } catch (ValidateException|PDOException|Exception $e) {
+        //入库
+        Db::startTrans();
+        $order_id = Db::name('package_order')->insertGetId($data);
+        if(!$order_id){
             Db::rollback();
-            $this->error($e->getMessage());
+            $this->error('下单失败');
+        }
+
+        //礼物
+        if(!empty($gift)){
+            $gift_order_id = Db::name('package_order')->insertGetId($gift);
+            if(!$gift_order_id){
+                Db::rollback();
+                $this->error('下单失败');
+            }
         }
-        if ($result === false) {
-            $this->error(__('No rows were inserted'));
+
+
+
+        //大于等于5小时的
+        if($data['remain'] >= 5){
+
+            //赠送积分
+            $wallet_rs = model('wallet')->lockChangeAccountRemain($user_id,'score',$data['price'],2,'线上购买配套','package_order',$order_id);
+            if($wallet_rs['status'] === false){
+                Db::rollback();
+                return false;
+            }
+
+            //新会员变成旧会员
+            $oldstatus = Db::name('user')->where('id',$user_id)->value('oldstatus');
+            if($oldstatus == 0){
+                $user_rs = Db::name('user')->where('id',$user_id)->update(['oldstatus'=>1]);
+                if($user_rs === false){
+                    Db::rollback();
+                    return false;
+                }
+            }
+
         }
-        $this->success();
+
+        Db::commit();
+
+
+        $this->success('下单成功');
     }
 
     public function selectpagenew()

+ 6 - 0
application/admin/lang/en/lessonpackage.php

@@ -5,6 +5,9 @@ return [
     'Image'           => 'Image',
     'Name'            => 'Name',
     'Name_en'         => 'Name(en)',
+    'Type'            => 'Package Type',
+    'Type 1'          => 'Normal',
+    'Type 2'          => 'Private',
     'Lesson_ids'      => 'Choose Lesson',
     'Sessions'        => 'Lesson Hours',
     'Sessions_first'  => 'Lesson Hours,first buy gift',
@@ -14,6 +17,9 @@ return [
     'Price'           => 'Price',
     'Activeremark'    => 'Event notes',
     'Activeremark_en' => 'Event notes(en)',
+    'Gift_type'       => 'Gift Package Type',
+    'Gift_type 1'     => 'Normal',
+    'Gift_type 2'     => 'Private',
     'Gift_lesson_id'  => 'Choose Gift lesson',
     'Gift_sessions'   => 'Gift hours',
     'Is_show'         => 'User booking?',

+ 3 - 0
application/admin/lang/en/packageorder.php

@@ -7,6 +7,9 @@ return [
     'Package_id'      => 'Package id',
     'Lesson_ids'      => 'Lesson ids',
     'Sessions'        => 'Sessions',
+    'Type'                => 'Package Type',
+    'Type 1'              => 'Normal',
+    'Type 2'              => 'Private',
     'Starttime'       => 'Active time',
     'Days'            => 'Days',
     'Endtime'         => 'End time',

+ 3 - 0
application/admin/lang/zh-cn/packageorder.php

@@ -7,6 +7,9 @@ return [
     'Package_id'          => '配套id',
     'Lesson_ids'          => '课程ids',
     'Sessions'            => '共计获得课程数量',
+    'Type'                => '配套类型',
+    'Type 1'              => '普通课',
+    'Type 2'              => '私教课',
     'Starttime'           => '激活时间',
     'Days'                => '实际有效天数',
     'Endtime'             => '到期时间',

+ 4 - 92
application/admin/view/packageorder/add.html

@@ -1,111 +1,23 @@
 <form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
 
-    <!--<div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Order_no')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input id="c-order_no" data-rule="required" class="form-control" name="row[order_no]" type="text" value="">
-        </div>
-    </div>-->
+
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('select user')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-user_id" data-rule="required" data-source="user/user/selectpagenew" data-field="nickname"  class="form-control selectpage" name="row[user_id]" type="text" value="">
+            <input id="c-user_id" data-rule="required" data-source="user/user/selectpagenew" data-field="nickname"  class="form-control selectpage" name="user_id" type="text" value="">
         </div>
     </div>
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('select package')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-package_id" data-rule="required" data-source="lessonpackage/index" class="form-control selectpage" name="row[package_id]" type="text" value="{$package_id}">
-        </div>
-    </div>
-    <!--<div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Lesson_ids')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input id="c-lesson_ids" data-rule="required" data-source="lesson/index" data-multiple="true" class="form-control selectpage" name="row[lesson_ids]" type="text" value="">
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Sessions')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input id="c-sessions" data-rule="required" class="form-control" name="row[sessions]" type="number" value="0">
-        </div>
-    </div>-->
-    <!--<div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Starttime')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input id="c-starttime" 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="{:date('Y-m-d H:i:s')}">
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Days')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input id="c-days" data-rule="required" class="form-control" name="row[days]" type="number" value="0">
-        </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="{:date('Y-m-d H:i:s')}">
+            <input id="c-package_id" data-rule="required" data-source="lessonpackage/index" class="form-control selectpage" name="package_id" type="text" value="{$package_id}">
         </div>
     </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Price')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input id="c-price" data-rule="required" class="form-control" step="0.01" name="row[price]" type="number" value="0.00">
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Remain')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input id="c-remain" data-rule="required" class="form-control" name="row[remain]" type="number" value="0">
-        </div>
-    </div>-->
-    <!--<div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Order_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 id="row[order_status]-{$key}" name="row[order_status]" type="radio" value="{$key}" {in name="key" value="0"}checked{/in} /> {$vo}</label> 
-            {/foreach}
-            </div>
 
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Paytime')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input id="c-paytime" 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="{:date('Y-m-d H:i:s')}">
-        </div>
-    </div>-->
-    <!--<div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Is_gift')}:</label>
-        <div class="col-xs-12 col-sm-8">
-                        
-            <select  id="c-is_gift" data-rule="required" class="form-control selectpicker" name="row[is_gift]">
-                {foreach name="isGiftList" item="vo"}
-                    <option value="{$key}" {in name="key" value="0"}selected{/in}>{$vo}</option>
-                {/foreach}
-            </select>
-
-        </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">
-            
-            <div class="radio">
-            {foreach name="noticeStatusList" item="vo"}
-            <label for="row[notice_status]-{$key}"><input id="row[notice_status]-{$key}" name="row[notice_status]" type="radio" value="{$key}" {in name="key" value="0"}checked{/in} /> {$vo}</label> 
-            {/foreach}
-            </div>
-
-        </div>
-    </div>-->
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Remark')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-remark" class="form-control" name="row[remark]" type="text" value="">
+            <input id="c-remark" class="form-control" name="remark" type="text" value="">
         </div>
     </div>
     <div class="form-group layer-footer">

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

@@ -858,8 +858,9 @@ class Lesson extends Api
         $data = [
             'order_no'    => createUniqueNo('P',$this->auth->id),
             'user_id'     => $this->auth->id,
+            'type'        => $package_info['type'],
             'package_id'  => $package_id,
-            'lesson_ids'   => $package_info['lesson_ids'],
+            'lesson_ids'  => $package_info['lesson_ids'],
             'sessions'    => $package_info['sessions'],
             'starttime'   => 0,
             'days'        => $package_info['days'],
@@ -881,6 +882,7 @@ class Lesson extends Api
             $gift = $data;
 
             //订单号不换了
+            $gift['type']       = $package_info['gift_type'];
             $gift['lesson_ids'] = $package_info['gift_lesson_id'];
             $gift['sessions']  = $package_info['gift_sessions'];
             $gift['remain']    = $package_info['gift_sessions'];

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

@@ -38,6 +38,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'package.name_en', title: __('Package.name_en'), operate: 'LIKE'},
 //                        {field: 'lesson_ids', title: __('Lesson_ids'), operate: false},
                         {field: 'sessions', title: __('Sessions')},
+                        {field: 'type', title: __('Type'), searchList: {"1":__('Type 1'),"2":__('Type 2')}, formatter: Table.api.formatter.normal},
                         {field: 'remain', title: __('Remain'), operate:false},
                         {field: 'starttime', title: __('Starttime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
                         {field: 'days', title: __('Days')},