Browse Source

维保订单接口

lizhen_gitee 8 months ago
parent
commit
9220a60e72
1 changed files with 145 additions and 23 deletions
  1. 145 23
      application/api/controller/Maintain.php

+ 145 - 23
application/api/controller/Maintain.php

@@ -58,7 +58,7 @@ class Maintain extends Api
             'user_id' => $this->auth->id,
             'status'  => $status,
         ];
-        $list = Db::name('maintain')->field('id,orderno,createtime,info,filedata,status')
+        $list = Db::name('maintain')->field('id,orderno,createtime,info,filedata,status,eva_time')
             ->where($map)->order('id desc')
             ->autopage()->select();
         if(!empty($list)){
@@ -84,28 +84,25 @@ class Maintain extends Api
         $info = Db::name('maintain')
             ->where($map)
             ->find();
-        $info['status_text'] = $this->status_data($info['status']);
-
-        $this->success(1, $info);
-    }
 
-    //报价单里列表
-    public function baojia_info(){
-        $order_id = input('order_id',0);
-        $lists = Db::name('maintain_baojia')
-            ->field('id,name,price,number,price_total')
-            ->where('order_id',$order_id)->order('id asc')->select();
+        $info['status_text'] = $this->status_data($info['status']);
 
-        $baojia_sum = Db::name('maintain')
-            ->where('id',$order_id)
-            ->value('baojia_sum');
+        $header_mobile = Db::name('user_company')->where('user_id',$this->auth->id)->value('header_mobile');//负责人的电话
+        $info['header_mobile'] = $header_mobile;
 
-        $rs = [
-            'list' => $lists,
-            'baojia_sum' => $baojia_sum
+        //追加维修师傅
+        $worker = [
+            'avatar' => 'http://weibao.com/assets/img/avatar.png',
+            'truename' => '李师傅',
+            'mobile' => '17666666666',
         ];
+        $info['worker_info'] = $worker;
 
-        $this->success(1,$rs);
+        //追加进度
+        $jindu = Db::name('maintain_jindu')->field('id,title,createtime')->where('order_id',$id)->order('id desc')->select();
+        $info['jindu'] = $jindu;
+
+        $this->success(1, $info);
     }
 
     //取消上报
@@ -120,6 +117,9 @@ class Maintain extends Api
         $info = Db::name('maintain')
             ->where($map)
             ->find();
+        if(empty($info)){
+            $this->error('不存在的订单');
+        }
 
         if($info['status'] != 0){
             $this->error('现在已经不能取消了');
@@ -138,15 +138,137 @@ class Maintain extends Api
         $this->success('取消成功');
     }
 
+    //报价详情
+    public function baojia_info(){
+        $order_id = input('order_id',0);
+        //找出最新报价日志
+        $baojia_log = Db::name('maintain_baojia')->where('order_id',$order_id)->where('status',30)->order('id desc')->find();
+
+        $baojia_log['status_text'] = $this->status_data($baojia_log['status']);
+
+        $this->success(1,$baojia_log);
+    }
+
+    //报价审核
+    public function baojia_audit(){
+        $id = input('order_id',0);
+        $status = input('status',2);
+        $reason = input('reason','','trim');
+
+        //必填
+        if($status == 2 && empty($reason)){
+            $this->error('请输入拒绝原因');
+        }
+
+        //检查订单
+        $map = [
+            'user_id' => $this->auth->id,
+            'id'      => $id,
+        ];
+        $info = Db::name('maintain')->where($map)->find();
+        if(empty($info)){
+            $this->error('不存在的订单');
+        }
+        if($info['status'] != 30){
+            $this->success('订单错误,请刷新重试');
+        }
+        //找出最新报价日志
+        $baojia_log = Db::name('maintain_baojia')->where('order_id',$id)->where('status',30)->order('id desc')->find();
+
+        //更新订单
+        //更新报价记录
+        if($status == 2){
+            $update = [
+                'status' => 14,  // '报价用户审核驳回',  //等待重新报价
+                'updatetime' => time(),
+            ];
+            $update_baojia = [
+                'status' => 14,  // '报价用户审核驳回',  //等待重新报价
+                'updatetime' => time(),
+                'baojia_useraudit_reason' => $reason,
+            ];
+
+            $remark = '报价已拒绝,即将重新报价';
+        }else{
+            $update = [
+                'status' => 40,
+                'updatetime' => time(),
+            ];
+            $update_baojia = [
+                'status' => 40,
+                'updatetime' => time(),
+            ];
+
+            $remark = '报价已通过,即将委派师傅';
+        }
+
+        Db::startTrans();
+        $rs1 = Db::name('maintain')->where('id',$id)->update($update);
+        if($rs1 === false){
+            Db::rollback();
+            $this->error('审核失败');
+        }
+
+        $rs2 = Db::name('maintain_baojia')->where('id',$baojia_log['id'])->update($update_baojia);
+        if($rs2 === false){
+            Db::rollback();
+            $this->error('审核失败');
+        }
+
+        Db::commit();
+        $this->success($remark);
+    }
+
+    //评价
+    public function evaluate(){
+        $id = input('order_id',0);
+        $eva_info  = input('eva_info','');
+        $eva_score = input('eva_score',5);
+
+        //检查订单
+        $map = [
+            'user_id' => $this->auth->id,
+            'id'      => $id,
+        ];
+        $info = Db::name('maintain')->where($map)->find();
+        if(empty($info)){
+            $this->error('不存在的订单');
+        }
+        if($info['status'] != 60){
+            $this->success('订单未完成,请刷新重试');
+        }
+        if($info['eva_time'] != 0){
+            $this->success('订单已评价,无需重复评价');
+        }
+
+        //更新
+        $update = [
+            'eva_info'  => $eva_info,
+            'eva_score' => $eva_score,
+            'eva_time'  => time(),
+        ];
+        $rs1 = Db::name('maintain')->where('id',$id)->update($update);
+
+        //维保公司的平均分修改
+
+        $this->success('评价完成');
+    }
+
     //状态枚举
     private function status_data($status){
+        //状态:0=待审核,2=已取消,4=审核未通过,10=待报价,20=报价待审,30=报价用户待审,40=待处理,41=选师傅,60=已完成
         $data = [
             0  => '待审核',
-            3  => '已取消',
-            10 => '待报价',
-            20 => '报价审核',
-            30 => '待维修',
-            40 => '已完成',
+            2  => '已取消',
+            4  => '审核未通过',
+            10 => '待报价',        //等待初次报价
+            12 => '报价审核驳回',   //等待再次报价
+            14 => '报价用户审核驳回',//等待再次报价
+            20 => '报价待审',      //通过就去30,驳回就到12
+            30 => '报价用户待审',   //通过就去40,驳回就到14
+            40 => '待处理',        //报价都审核过了,可派师傅了
+            50 => '已选师傅',
+            60 => '已完成',
         ];
         return $data[$status];
     }