Browse Source

订单审核接口

sunhao 5 years ago
parent
commit
1bd9341526
2 changed files with 144 additions and 0 deletions
  1. 143 0
      app/Http/Controllers/Api/OrderController.php
  2. 1 0
      app/Http/routes.php

+ 143 - 0
app/Http/Controllers/Api/OrderController.php

@@ -511,4 +511,147 @@ class OrderController extends Controller {
511 511
 
512 512
         return self::returnValue(['msg' => '更新成功']);         
513 513
     }
514
+
515
+    /**
516
+     * 订单审核
517
+     */
518
+    public function setverify(Request $request){
519
+        $id = (int)$request->input('id');
520
+        $order = Order::find($id);
521
+        $old_status = $order->status;
522
+        $order->status = (int)$request->input('status');
523
+        if($order->status == 0){
524
+            $refuse_reason = trim($request->input('refuse_reason'));
525
+            if(!empty($refuse_reason)){
526
+                $order->refuse_reason = $refuse_reason;
527
+            }
528
+        }
529
+        if($order->status == 2 || $order->status == 0){
530
+            $order->verify_time = date('Y-m-d H:i:s'); //审核时间
531
+        }
532
+
533
+        //获取可变更状态
534
+        $enableStatus = $this->getEnableStatus($old_status);
535
+        if( !empty($enableStatus) ){
536
+            $statusArr = array_column($enableStatus, 'status');
537
+            if( !in_array($order->status, $statusArr) ){
538
+                return self::returnValue(['msg'=>'异常操作'], 2001);
539
+            }
540
+        }else{
541
+            return self::returnValue(['msg'=>'异常操作'], 2001);
542
+        }
543
+
544
+        DB::beginTransaction();
545
+        try{
546
+            $res = $order ->save(); 
547
+            if($res){
548
+                #记录操作日志
549
+                $status_arr = array(
550
+                    0 => '已录入',
551
+                    1 => '待审核',
552
+                    2 => '已审核',
553
+                    3 => '已发货',
554
+                    4 => '已退款'
555
+                );
556
+                $self_id = (int)$request->input('admin_id');
557
+                $self_name = Admin::where('id', $self_id)->pluck('realname');
558
+                $context = "订单状态变更:【".$status_arr[$old_status]."】变更为【". $status_arr[$order->status]."】({$old_status}->{$order->status})";
559
+                $type = 1; //状态变更
560
+                $tables = 'order';
561
+                $data_id = $id;
562
+                Oplog::addLog($self_id, $self_name, $context, $type, $tables, $data_id);
563
+
564
+                $today_date = date('Y-m-d');
565
+                #如果审核通过,c仓, 并且到预发货时间,同步卖家云
566
+                if($order->status == 2 && $order->warehouse == 3 && $order->delivery_date <= $today_date){
567
+                    $syncMj = $this->syncOrderToMj($id);
568
+                    if( $syncMj == false ){
569
+                        throw new Exception("订单同步到卖家云失败");
570
+                    }
571
+                }
572
+            }
573
+
574
+            DB::commit();
575
+        }catch (Exception $e){
576
+            Log::errorLog($request,['error'=>$e->getMessage()],"order/setverify",0,['id'=>$id]);
577
+            DB::rollback();
578
+            return self::returnValue(['msg'=>$e->getMessage()], 2001);
579
+        } 
580
+
581
+        return self::returnValue(['msg'=>'操作成功']);
582
+    }
583
+
584
+    /**
585
+     * 订单状态机制,获取可变更状态
586
+     * @param status:0已录入 1提交审核 2已审核 3已发货 4已退款
587
+     */
588
+    public function getEnableStatus($status){
589
+        $status_arr = [
590
+            0 => ['status'=>0, 'name'=>'已录入'],
591
+            1 => ['status'=>1, 'name'=>'提交审核'],
592
+            2 => ['status'=>2, 'name'=>'审核通过'],
593
+            3 => ['status'=>3, 'name'=>'设为发货'],
594
+            4 => ['status'=>4, 'name'=>'设为退款']
595
+        ];
596
+        $status = (int)$status;
597
+        $result = array();
598
+        switch ($status) {
599
+            case '0':
600
+                $result[] = $status_arr[1];
601
+                break;
602
+            case '1':
603
+                $result[] = $status_arr[2];
604
+                $result[] = $status_arr[0];
605
+                break;
606
+            case '2':
607
+                $result[] = $status_arr[1];
608
+                $result[] = $status_arr[3];
609
+                break;
610
+            default:               
611
+                break;
612
+        }
613
+        return $result;
614
+    }
615
+
616
+     /**
617
+     * 订单同步到卖家云
618
+     */
619
+    public function syncOrderToMj($id, $order = []){
620
+        if( empty($order) ){ 
621
+            $order = Order::select('eshopCode','outerCode','status','customerName','shippingType','expressCompanyCode','expressCompanyName','receiverName','receiverMobile','receiverPhone','receiverState','receiverCity','receiverDistrict','receiverStreet','receiverAddress','buyerPostageFee','discountFee','adjustFee','serviceFee','paymentMethod','paymentType','paymentAccount','paymentTime','receivedAmount','buyerMemo','sellerMemo','createTime','modifyTime')->where('id', $id)->first();
622
+
623
+            $order = json_decode(json_encode($order), true);
624
+            $skus = DB::table('order_goods_skus')->where('is_del', 0)->where('order_id', $id)->get();
625
+            $skus = json_decode(json_encode($skus), true);
626
+            foreach($skus as $k=>$v){
627
+                $sku_info = GoodsSkus::where('id', $v['sku_id'])->first();
628
+                $goods_info = Goods::where('id', $v['goods_id'])->first();
629
+                $params = array();
630
+                $params['outerCode'] = $order['outerCode']+$k+1; //外部平台中子订单编码
631
+                $params['outerParentCode'] = $order['outerCode']; //外部平台中订单编码
632
+                $params['goodsCode'] = $sku_info->goodsCode;// 
633
+                $params['skuCode'] = $v['sku_id']; 
634
+                #商品名称
635
+                $params['goodsName'] = $goods_info->name;
636
+                $params['propertiesName'] = $sku_info->is_weigh==1 ? $sku_info->propsName.'【按半斤称重】' : $sku_info->propsName;
637
+                //$params['goodsName'] = '海钓黄翅鱼';//$goods->code; 
638
+                $params['price'] = $sku_info->is_weigh==1 ? round($v['price']/2,2) : $v['price'];
639
+                $params['quantity'] = (int)($sku_info->is_weigh==1 ? $v['num']*2 : $v['num']);
640
+                $params['discountFee'] = 0;
641
+                $params['adjustFee'] = 0;
642
+                $params['refundStatus'] = '正常';
643
+                $order['skuList'][] = $params;
644
+            }
645
+        }
646
+        //卖家云添加订单 ->改为审核通过再同步卖家云
647
+        $mj_add = Order::mjOrderAdd($order);
648
+        //同步卖家云订单数据到本系统
649
+        if( isset($mj_add['order']['code']) ){
650
+            $mjorder = array();
651
+            $mjorder['orderCode'] = $mj_add['order']['code'];
652
+            Order::where('id', $id)->update($mjorder);
653
+        }
654
+
655
+        return $mj_add;
656
+    }
514 657
 }

+ 1 - 0
app/Http/routes.php

@@ -313,5 +313,6 @@ Route::group(['prefix' => 'api'], function() {
313 313
     Route::post('/order/orderupdate', 'Api\OrderController@orderupdate');
314 314
     Route::get('/order/getAddress', 'Api\OrderController@getAddress');
315 315
     Route::get('/order/getBalance', 'Api\OrderController@getBalance');
316
+    Route::post('/order/setverify', 'Api\OrderController@setverify');
316 317
 
317 318
 });