wesmiler 1 maand geleden
bovenliggende
commit
ce54023be3
1 gewijzigde bestanden met toevoegingen van 24 en 33 verwijderingen
  1. 24 33
      app/Services/Api/OrderService.php

+ 24 - 33
app/Services/Api/OrderService.php

@@ -231,6 +231,7 @@ class OrderService extends BaseService
 
         // 商品数据
         $orderNo = get_order_num('JK');
+        $revenueOrderNo = get_order_num('RE');
         $result = GoodsService::make()->getOrderGoods($ids, $goods, $userId, $orderNo,$discountPoint);
         if (empty($result)) {
             RedisService::clear($cacheLockKey);
@@ -283,10 +284,6 @@ class OrderService extends BaseService
         $bonusRate = $bonusRate > 0 && $bonusRate <= 100 ? $bonusRate : $storeBonusRate;
         $bonus = moneyFormat($orderTotal * $bonusRate / 100, 2);
 
-        if (env('PAY_DEBUG')) {
-            $orderTotal = 0.1;
-        }
-
         // 检查是否关联为会议订单,先签到的会议先关联
         $record = MeetingRecordsModel::with(['meeting'])->where(['user_id'=>$userId,'mark'=>1])
             ->where('expired_at','>=', date('Y-m-d H:i:s'))
@@ -298,8 +295,17 @@ class OrderService extends BaseService
         $meetingBonusRate = $meetingBonusRate>0 && $meetingBonusRate<100? $meetingBonusRate : 0;
         $meetingBonus = moneyFormat($orderTotal * $meetingBonusRate / 100, 2);
 
+
         // 是否开启分账功能
+        $payTotal = moneyFormat($orderTotal + $deliveryFee, 2); // 含运费支付金额
         $revenueOpen = ConfigService::make()->getConfigByCode('order_revenue_open', 0);
+        $revenueRate = ConfigService::make()->getConfigByCode('order_revenue_rate', 30);
+        $revenueRate = $revenueRate>0 && $revenueRate<100? $revenueRate: 30;
+        $revenueAmount = moneyFormat($payTotal * $revenueRate/100,2);
+        if (env('PAY_DEBUG')) {
+            $revenueAmount = 0.01;
+            $payTotal = 0.01;
+        }
 
         // 订单数据
         $order = [
@@ -309,7 +315,7 @@ class OrderService extends BaseService
             'meeting_id' => $recordMeetingId, // 关联会议
             'total' => $goodsTotal, // 商品总价
             'num' => $orderCount,
-            'pay_total' => $orderTotal, // 折扣后商品总价
+            'pay_total' => $orderTotal, // 折扣后商品总价(不含运费)
             'discount_point' => $discountPoint,
             'discount_total' => $discountTotal, // 折扣金额
             'delivery_fee' => $deliveryFee, // 运费
@@ -320,6 +326,8 @@ class OrderService extends BaseService
             'bonus' => $bonus,
             'bonus_rate' => $bonusRate,
             'is_revenue' => $revenueOpen==1?1: 2,
+            'revenue_no' => $revenueOrderNo,
+            'revenue_amount' => $revenueAmount,
             'meeting_bonus_rate' => $meetingBonusRate,
             'meeting_bonus' => $meetingBonus,
             'create_time' => time(),
@@ -351,7 +359,7 @@ class OrderService extends BaseService
             'type' => 1,
             'order_no' => $orderNo,
             'is_revenue' => $order['is_revenue'],
-            'pay_money' => moneyFormat($orderTotal + $deliveryFee, 2),
+            'pay_money' => $payTotal,
             'body' => '订单付款',
             'openid' => $openid
         ];
@@ -978,7 +986,6 @@ class OrderService extends BaseService
 
         // 是否设置分账账户
         $revenueOpenid = ConfigService::make()->getConfigByCode('order_revenue_openid', '');
-        $revenueRate = ConfigService::make()->getConfigByCode('order_revenue_rate', 0);
         if(empty($revenueOpenid)){
             $this->error = '订单分账账户未配置';
             return false;
@@ -992,54 +999,38 @@ class OrderService extends BaseService
 
         // 订单信息
         $info = $this->model->where(['id' => $id, 'mark' => 1])
-            ->select(['id', 'order_no','user_id','transaction_id', 'pay_total', 'status'])
+            ->select(['id', 'order_no','revenue_no','user_id','transaction_id', 'pay_total','revenue_amount', 'status'])
             ->first();
-        $orderNo = isset($info['order_no']) ? $info['order_no'] : '';
-        $payTotal = isset($info['pay_total']) ? $info['pay_total'] : 0;
+        $revenueOrderNo = isset($info['revenue_no']) ? $info['revenue_no'] : '';
+        $revenueAmount = isset($info['revenue_amount']) ? $info['revenue_amount'] : 0;
         $status = isset($info['status']) ? $info['status'] : 0;
-        if($payTotal<=0){
-            $this->error = '订单支付金额参数错误';
-            return false;
-        }
-
         if($status != 4){
             $this->error = '订单状态错误,未完成收货的订单无法分账';
             return false;
         }
 
-        $revenueAmount = moneyFormat($payTotal * $revenueRate/100,2);
-        $revenueAmount = $revenueAmount<=0.01?0.01:$revenueAmount;
         if($revenueAmount<=0){
             $this->error = '订单分账金额不足';
             return false;
         }
-
-        $outOrderNo = str_replace('RE','JK', $orderNo);
         $order = [
             'transaction_id'=> $info['transaction_id'],
-            'out_order_no'=> $outOrderNo,
+            'out_order_no'=> $revenueOrderNo,
             'body'=> '订单分账',
             'amount'=> $revenueAmount,
             'unsplit'=> true, // 只分一次
         ];
-        if(!$this->model->where(['id'=>$id])->update(['revenue_no'=>$outOrderNo,'revenue_amount'=>$revenueAmount,'update_time'=>time()])){
-            $this->error = '订单分账数据更新失败';
-            return false;
-        }
-
         $result = PaymentService::make()->profitsharing($revenueOpenid, $order);
-        $code = isset($result->code)? $result->code : 0;
         $state = isset($result->state)? $result->state : 0;
         $message = isset($result->message)? $result->message : '分账失败';
+        $orderId = isset($result->order_id)? $result->order_id : '';
         if($state == 'FINISHED'){
-
+            $this->model->where(['id'=>$id])->update(['revenue_status'=>1,'revenue_order_id'=>$orderId,'update_time'=>time()]);
+            $this->error = '分账处理成功';
+            return true;
         }else{
-
+            $this->error = $message;
+            return false;
         }
-//        $code = isset($re)
-        dump($code);
-        dump($state);
-        dump($message);
-        dump($result);
     }
 }