|
@@ -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
|
}
|