Ver código fonte

核销修改,订单大模块

lizhen_gitee 1 ano atrás
pai
commit
7a488fc88a

+ 7 - 2
application/api/controller/company/Coupon.php

@@ -213,8 +213,13 @@ class Coupon extends Apic
             $this->error('不存在的订单');
         }
 
-        //数量减一
-        $rs = Db::name('order')->where($map)->update(['status'=>3,'hexiaotime'=>time(),'finishtime'=>time()]);
+        if($check['package_endtime'] < time()){
+            Db::rollback();
+            $this->error('该套餐已到期');
+        }
+
+
+        $rs = Db::name('order')->where($map)->update(['hexiao_time'=>time()]);
         if($rs === false){
             Db::rollback();
             $this->error('核销失败');

+ 113 - 98
application/api/controller/company/Order.php

@@ -16,159 +16,174 @@ class Order extends Apic
     protected $noNeedRight = '*';
 
 
+    private function status_text($status){
+        $arr = [
+            1 => '待支付',
+            2 => '待处理',
+            3 => '已完成',
+            4 => '已取消',
+        ];
+
+        return isset($arr[$status]) ? $arr[$status] : '';
+    }
     //
     public function lists(){
         $keyword = input('keyword','');
-        $status  = input('status','all');
+        $starttime = input('starttime',0);
+        $endtime = input('endtime',0);
+        $servicetype_id = intval(input('servicetype_id',0));
+        $status  = intval(input('status',0));
 
         $where = [
-            'company_id' => $this->auth->id,
+            'company_id' => $this->auth->company_id,
         ];
-        if($status !== 'all'){
-            $where['status'] = $status;
-        }
-        if($status == 20){ //待还车
-            $where['status'] = 20;
-            $where['endtime'] = ['gt',time()];
+        if($starttime || $endtime){
+            $where['createtime'] = ['between',$starttime,$endtime];
         }
-        if($status == 200){ //逾期
-            $where['status'] = 20;
-            $where['endtime'] = ['elt',time()];
+        if($servicetype_id){
+            $where['servicetype_id'] = $servicetype_id;
         }
-        if($status == 30){
-            $where['status'] = ['IN',[-1,-2,30]];
+        if($status){
+            $where['status'] = $status;  //状态:1=待支付,2=待处理,3=已核销(完成),4=已取消
         }
+
         if(!empty($keyword))
         {
-            $where['user_truename|user_mobile|orderno'] = ['LIKE','%'.$keyword.'%'];
+            $where['user_car_number|user_mobile'] = ['LIKE','%'.$keyword.'%'];
         }
-        $list = Db::name('order')->where($where)->order('id desc')->autopage()->select();
-
-        $list = list_domain_image($list,['car_image','idcard_images','driver_images','get_yibiao_images','get_carvideo','back_yibiao_images','back_carvideo']);
+        $list = Db::name('order')->alias('order')
+            ->join('servicetype','order.servicetype_id = servicetype.id','LEFT')
+            ->field('order.id,orderno,ordertype,user_name,user_car_number,createtime,servicetype_id,server_info,status,finish_time,cancel_reason,servicetype.title as servicetype_title,servicetype.baoyang_switch')->where($where)->order('order.id desc')->autopage()->select();
 
         foreach($list as $key => &$val){
-            $val['status_text'] = $this->status_text($val['status'],$val['endtime']);
-
-            if($val['status'] == 20 && time() >= $val['endtime']){
-                $val['status'] = 200; //強制改掉
-            }
-
-            //追加取消
-            $val['cancel_info'] = (object)[];
-            if($val['status'] == -1 || $val['status'] == -2){
-                //取消订单追加取消原因
-                $val['cancel_info'] = Db::name('order_cancel')->where('order_id',$val['id'])->find();
-            }
-
-            //追加评价
-            $val['comment_info'] = (object)[];
-            if($val['status'] == 30){
-                //完成订单追加评价
-                $comment_info = Db::name('order_comment')->where('order_id',$val['id'])->find();
-                if($comment_info){
-                    $val['comment_info'] = $comment_info;
-                }
-            }
+            $val['status_text'] = $this->status_text($val['status']);
         }
         $this->success(1,$list);
     }
 
 
-
     //详情
     public function info(){
         $id = input('id',0);
-        $info = Db::name('order')->where('id',$id)->find();
-        $info = info_domain_image($info,['car_image','idcard_images','driver_images','get_yibiao_images','get_carvideo','back_yibiao_images','back_carvideo']);
+        $info = Db::name('order')->alias('order')
+            ->join('servicetype','order.servicetype_id = servicetype.id','LEFT')
+            ->field('order.*,servicetype.title as servicetype_title,servicetype.baoyang_switch')
+            ->where('order.id',$id)->find();
+        $info = info_domain_image($info,['server_images']);
+        $info['status_text'] = $this->status_text($info['status']);
 
-        $info['status_text'] = $this->status_text($info['status'],$info['endtime']);
-        if($info['status'] == 20 && time() >= $info['endtime']){
-            $info['status'] = 200; //強制改掉
-        }
-
-        //完成订单追加评价
-        $comment_info = Db::name('order_comment')->alias('c')
-            ->field('c.*,user.avatar,user.mobile')
-            ->join('user','c.user_id = user.id','LEFT')
-            ->where('c.order_id',$id)->find();
-        $comment_info = info_domain_image($comment_info,['avatar']);
-        if(!empty($comment_info)){
-            $comment_info['mobile'] = str_replace(substr($comment_info['mobile'],3,5),'****',$comment_info['mobile']);
-        }
-        $info['comment_info'] = $comment_info;
-
-        //取消订单追加取消原因
-        $info['cancel_info'] = Db::name('order_cancel')->where('order_id',$id)->find();
+        $info['appen_list'] = Db::name('order_appen')->where('order_id',$id)->select();
 
         $this->success(1,$info);
     }
-    //取消理由
-    public function cancel_config(){
-        $list = Db::name('company_cancel_config')->order('id asc')->select();
-        $this->success(1,$list);
-    }
+
     //取消
     public function cancel(){
         $id = input('id',0);
         $reason = input('reason','');
 
-        Db::startTrans();
-        $info = Db::name('order')->where('id',$id)->where('company_id',$this->auth->id)->lock(true)->find();
-        if($info['status'] == -2){
-            Db::rollback();
-            $this->error('当前订单已经申请取消,已付款订单审核后可退款');
+        $info = Db::name('order')->where('id',$id)->where('company_id',$this->auth->company_id)->find();
+        if($info['status'] == 4){
+            $this->error('当前订单已经取消');
         }
-        if($info['status'] != 0 && $info['status'] != 10){
-            Db::rollback();
+        if($info['status'] != 0 && $info['status'] != 2){
             $this->error('当前订单状态不能取消');
         }
+        if($info['ordertype'] == 3){
+            $this->error('套餐订单不能取消');
+        }
+
+        //取消
+        $rs = Db::name('order')->where('id',$id)->update(['status'=>4,'cancel_time'=>time(),'finish_time'=>time(),'cancel_reason'=>$reason]);
 
-        //未付款取消
-        if($info['status'] == 0){
-            $rs = Db::name('order')->where('id',$id)->update(['status'=>-1]);
+        if($rs === false){
+            $this->error('取消失败');
         }
 
-        //已付款取消
-        if($info['status'] == 10){
-            $rs = Db::name('order')->where('id',$id)->update(['status'=>-2]);
-            //扣除车行收益
-            //从计划任务里走
+        $this->success('取消成功');
+
+    }
+
+    //完成
+    public function finish(){
+        $id = input('id',0);
+
+        $info = Db::name('order')->where('id',$id)->where('company_id',$this->auth->company_id)->find();
+        if($info['status'] == 2){
+            $this->error('当前订单不能完成');
         }
 
+        //完成
+        $rs = Db::name('order')->where('id',$id)->update(['status'=>3,'finish_time'=>time()]);
+
         if($rs === false){
+            $this->error('操作失败');
+        }
+
+        $baoyang_switch = Db::name('servicetype')->where('id',$info['servicetype_id'])->value('baoyang_switch');
+
+        $this->success('操作成功',$baoyang_switch);
+    }
+
+    //追加列表
+    public function appen_lists(){
+        $id = input('id',0);
+
+        $info = Db::name('order')->field('id,orderno,pay_fee,package_price,appen_fee')->where('id',$id)->where('company_id',$this->auth->company_id)->find();
+        if(!$info){
+            $this->error('不存在的订单');
+        }
+
+        $info['appen_list'] = Db::name('order_appen')->where('order_id',$id)->select();
+
+        $this->success(1,$info);
+    }
+
+    //追加新费用
+    public function appen_newone(){
+        $id = input('id',0);
+
+        Db::startTrans();
+        $info = Db::name('order')->field('id,orderno,pay_fee,package_price,appen_fee')->where('id',$id)->where('company_id',$this->auth->company_id)->lock(true)->find();
+        if(!$info){
+            $this->error('不存在的订单');
+        }
+
+        //加入新的一条
+        $name = input('name','');
+        $price = intval(input('price',0));
+
+        if($price <= 0){
             Db::rollback();
-            $this->error('申请取消失败');
+            $this->error('请填写正确的金额');
         }
 
         $data = [
-            'user_id'  => $info['user_id'],
-            'company_id'  => $info['company_id'],
-            'order_id' => $info['id'],
-            'reason'   => '商家取消:'.$reason,
-            'refund_price' => 0,
-            'type' => $info['status'],               //分类:0=未付款,10=已付款
+            'order_id'   => $id,
+            'name'       => $name,
+            'price'      => $price,
             'createtime' => time(),
-            'status' => $info['status'] == 0 ? 2 : 0, //状态:0=未处理,1=已处理,2=无需处理
-            'from' => 2,  //取消方:1=用户取消,2=商户取消
         ];
 
-        $rs_cancle = Db::name('order_cancel')->insertGetId($data);
-        if(!$rs_cancle){
+        $log_id = Db::name('order_appen')->insertGetId($data);
+        if(!$log_id){
             Db::rollback();
-            $this->error('申请取消失败');
+            $this->error('操作失败');
         }
 
-        //解除汽车占用
-        $rs_car = Db::name('car')->where('id',$info['car_id'])->update(['status'=>1]);
-        if(!$rs_car){
+        //计算追加总额做冗余
+        $sum_price = Db::name('order_appen')->where('order_id',$id)->sum('price');
+        $rs = Db::name('order')->where('id',$id)->update(['appen_fee'=>$sum_price]);
+        if($rs === false){
             Db::rollback();
-            $this->error('申请取消失败');
+            $this->error('操作失败');
         }
 
+        //结束
         Db::commit();
-        $this->success('取消成功');
-
+        $this->success();
     }
 
 
+
 }