Browse Source

后台售课预约取消,一半

lizhen_gitee 1 year ago
parent
commit
17ba497985

+ 89 - 0
application/admin/controller/Lessonorder.php

@@ -71,4 +71,93 @@ class Lessonorder extends Backend
         return $this->view->fetch();
     }
 
+    /**
+     * 取消
+     */
+    public function cancel(){
+        $id = input('id');
+        $info = Db::name('lesson_order')->where('id',$id)->where('status',0)->find();
+        if(!$info){
+            $this->error('请刷新重试');
+        }
+
+        if($this->request->isPost()){
+            $remark        = input('remark','');
+            $cancel_reason = input('cancel_reason','');
+            $cancel_time   = strtotime(input('cancel_time',''));
+
+            Db::startTrans();
+            $update = [
+                'status' => 30,
+                'remark' => $remark,
+                'cancel_reason' => $cancel_reason,
+                'cancel_time' => $cancel_time
+            ];
+
+            $rs1 = Db::name('lesson_slot')->where('id',$id)->where('status',0)->update($update);
+            if($rs1 === false){
+                Db::rollback();
+                $this->error('取消失败,请刷新重试');
+            }
+
+            //找到所有的已报名订单
+            $lesson_order_list = Db::name('lesson_order')->where('slot_id',$id)->where('order_status',10)->lock(true)->select();
+            if(!empty($lesson_order_list)){
+                foreach($lesson_order_list as $lesson_order){
+                    //套餐给加回去
+                    if($lesson_order['paytype'] == 1){
+                        $package_order = Db::name('package_order')->where('id',$lesson_order['package_order_id'])->lock(true)->find();
+                        $update = [
+                            'remain' => $package_order['remain'] + $lesson_order['usernumber'],
+                            'updatetime' => time(),
+                        ];
+                        $rs_remain = Db::name('package_order')->where('id',$lesson_order['package_order_id'])->update($update);
+                        if($rs_remain === false){
+                            Db::rollback();
+                            $this->error('取消失败');
+                        }
+                    }
+                    //现金支付不给退,线下处理
+
+                    //取消预约单
+                    $update = [
+                        'order_status' => 30,
+                        'cancel_time' => $cancel_time,
+                        'cancel_reason' => $cancel_reason,
+                    ];
+                    if($lesson_order['paytype'] == 1){
+                        $update['order_status'] = 40;
+                    }
+
+                    $rs = Db::name('lesson_order')->where('id',$lesson_order['id'])->update($update);
+                    if($rs === false){
+                        Db::rollback();
+                        $this->error('取消失败');
+                    }
+
+                    //给用户发通知
+                    $user_info = Db::name('user')->where('id',$lesson_order['user_id'])->find();
+                    if($user_info['notice_email'] == 1 && !empty($user_info['email'])){
+                        $obj = new Email();
+                        $result = $obj
+                            ->to($user_info['email'])
+                            ->subject('Elin Dance Studio 订单取消!')
+                            ->message('Hi,'.$user_info['firstname']. ' ' .$user_info['lastname'].',您预约的'.date('Y-m-d H:i:s',$info['starttime']).'的课程已被取消,原因:'.$cancel_reason.'!')
+                            ->send();
+                    }
+
+                }
+            }
+
+            Db::commit();
+            $this->success('取消完成');
+
+        }
+
+        $this->view->assign('row',$info);
+        return $this->view->fetch();
+    }
+
+
+
 }

+ 1 - 0
application/admin/controller/Lessonslot.php

@@ -88,6 +88,7 @@ class Lessonslot extends Backend
 
             Db::startTrans();
             $update = [
+                'status' => 30,
                 'remark' => $remark,
                 'cancel_reason' => $cancel_reason,
                 'cancel_time' => $cancel_time

+ 118 - 0
application/admin/view/lessonorder/cancel.html

@@ -0,0 +1,118 @@
+<form id="edit-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" disabled  class="form-control"  type="text" value="{$row.order_no|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-user_id" disabled  class="form-control"  type="text" value="{$row.user_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Slot_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-slot_id" disabled  class="form-control"  type="text" value="{$row.slot_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Lesson_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-lesson_id" disabled  data-source="lesson/index" class="form-control selectpage"  type="text" value="{$row.lesson_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Order_amount')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-order_amount" disabled  class="form-control" step="0.01"  type="number" value="{$row.order_amount|htmlentities}">
+        </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="$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">{:__('Paytype')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-paytype" disabled  class="form-control selectpicker" name="row[paytype]">
+                {foreach name="paytypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.paytype"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </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" disabled  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">{:__('Finishtime')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-finishtime"  class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[finishtime]" type="text" value="{:$row.finishtime?datetime($row.finishtime):''}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Usernumber')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-usernumber"  disabled class="form-control" name="row[usernumber]" type="number" value="{$row.usernumber|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Usernumber_sign')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-usernumber_sign"  class="form-control" name="row[usernumber_sign]" type="number" value="{$row.usernumber_sign|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Userremark')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-userremark"  class="form-control" name="row[userremark]" type="text" value="{$row.userremark|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Package_order_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-package_order_id" disabled  class="form-control" name="row[package_order_id]" type="text" value="{$row.package_order_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Package_remark')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-package_remark" disabled class="form-control" name="row[package_remark]" type="text" value="{$row.package_remark|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Cancel_reason')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-cancel_reason" class="form-control" name="row[cancel_reason]" type="text" value="{$row.cancel_reason|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Cancel_time')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-cancel_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[cancel_time]" type="text" value="{:$row.cancel_time?datetime($row.cancel_time):''}">
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 1 - 1
application/admin/view/lessonorder/edit.html

@@ -87,7 +87,7 @@
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Package_order_id')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-package_order_id" disabled data-rule="required" data-source="packageorder/index" class="form-control selectpage" name="row[package_order_id]" type="text" value="{$row.package_order_id|htmlentities}">
+            <input id="c-package_order_id" disabled  class="form-control" name="row[package_order_id]" type="text" value="{$row.package_order_id|htmlentities}">
         </div>
     </div>
     <div class="form-group">

+ 20 - 2
public/assets/js/backend/lessonorder.js

@@ -7,7 +7,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                 extend: {
                     index_url: 'lessonorder/index' + location.search,
                     add_url: 'lessonorder/add',
-                    edit_url: 'lessonorder/edit',
+//                    edit_url: 'lessonorder/edit',
 //                    del_url: 'lessonorder/del',
                     multi_url: 'lessonorder/multi',
                     import_url: 'lessonorder/import',
@@ -56,7 +56,22 @@ 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:'cancel',
+                                    text:'取消',
+                                    title:'取消',
+                                    icon:'fa fa-exclamation-circle',
+                                    classname:'btn btn-xs btn-info btn-dialog',
+                                    url:'lessonorder/cancel/id/{ids}?dialog=1',
+                                    target:'_self',
+                                    hidden:function(row){
+                                        return row.status==10 ? false : true;
+                                    }
+                                }
+                            ],
+                            events: Table.api.events.operate, formatter: Table.api.formatter.operate}
                     ]
                 ]
             });
@@ -70,6 +85,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
         edit: function () {
             Controller.api.bindevent();
         },
+        cancel: function () {
+            Controller.api.bindevent();
+        },
         api: {
             bindevent: function () {
                 Form.api.bindevent($("form[role=form]"));