Kirin 3 jaren geleden
bovenliggende
commit
ad8ec25943

+ 3 - 0
app/admin/model/order/StoreOrder.php

@@ -133,6 +133,9 @@ class StoreOrder extends BaseModel
                     case 'offline':
                         $item['pay_type_name'] = '线下支付';
                         break;
+                    case 'pink_integral':
+                        $item['pay_type_name'] = '拼团积分支付';
+                        break;
                     default:
                         $item['pay_type_name'] = '其他支付';
                         break;

+ 11 - 0
app/api/controller/order/StoreOrderController.php

@@ -238,6 +238,17 @@ class StoreOrderController
                             return app('json')->status('pay_error', $errorinfo);
                     }
                     break;
+                case 'pink_integral':
+                    if (StoreOrder::pinkPay($orderId, $request->uid(), $formId))
+                        return app('json')->status('success', '拼团积分支付成功', $info);
+                    else {
+                        $errorinfo = StoreOrder::getErrorInfo();
+                        if (is_array($errorinfo))
+                            return app('json')->status($errorinfo['status'], $errorinfo['msg'], $info);
+                        else
+                            return app('json')->status('pay_error', $errorinfo);
+                    }
+                    break;
                 case 'offline':
                     return app('json')->status('success', '订单创建成功', $info);
                     break;

+ 28 - 3
app/models/store/StoreOrder.php

@@ -54,7 +54,7 @@ class StoreOrder extends BaseModel
 
     protected $insert = ['add_time'];
 
-    protected static $payType = ['weixin' => '微信支付', 'yue' => '余额支付', 'offline' => '线下支付'];
+    protected static $payType = ['weixin' => '微信支付', 'yue' => '余额支付', 'offline' => '线下支付', 'pink_integral' => '拼团积分支付'];
 
     protected static $deliveryType = ['send' => '商家配送', 'express' => '快递配送'];
 
@@ -192,10 +192,10 @@ class StoreOrder extends BaseModel
         if (!$res) return self::setErrorInfo('退款失败!');
         $resEdit = StoreOrder::edit($data, $id);
         if ($resEdit) {
-            StoreOrderStatus::setStatus($id, 'refund_price', '退款给用户' . $refund_price . '元');
+            \app\admin\model\order\StoreOrderStatus::setStatus($id, 'refund_price', '退款给用户' . $refund_price . '元');
             return true;
         } else {
-            StoreOrderStatus::setStatus($id, 'refund_price', '退款给用户' . $refund_price . '元失败');
+            \app\admin\model\order\StoreOrderStatus::setStatus($id, 'refund_price', '退款给用户' . $refund_price . '元失败');
             return self::setErrorInfo('修改失败!');
         }
     }
@@ -702,6 +702,30 @@ class StoreOrder extends BaseModel
         return $res;
     }
 
+    public static function pinkPay($order_id, $uid, $formId = '')
+    {
+        $orderInfo = self::where('uid', $uid)->where('order_id', $order_id)->where('is_del', 0)->find();
+        if (!$orderInfo) return self::setErrorInfo('订单不存在!');
+        if (!$orderInfo['combination_id']) return self::setErrorInfo('拼团积分只可支付拼团订单!');
+        if ($orderInfo['paid']) return self::setErrorInfo('该订单已支付!');
+        $userInfo = User::getUserInfo($uid);
+        if ($userInfo['pink_integral'] < $orderInfo['pay_price'])
+            return self::setErrorInfo(['status' => 'pay_deficiency', 'msg' => '拼团积分不足' . floatval($orderInfo['pay_price'])]);
+        self::beginTrans();
+        $res1 = false !== User::bcDec($uid, 'pink_integral', $orderInfo['pay_price'], 'uid');
+        $res2 = UserBill::expend('购买商品', $uid, 'pink_integral', 'pay_product', $orderInfo['pay_price'], $orderInfo['id'], $userInfo['pink_integral'], '拼团积分支付' . floatval($orderInfo['pay_price']) . '元购买商品');
+        $res3 = self::paySuccess($order_id, 'pink_integral', $formId);//余额支付成功
+        try {
+            PaymentRepositories::yuePayProduct($userInfo, $orderInfo);
+        } catch (\Exception $e) {
+            self::rollbackTrans();
+            return self::setErrorInfo($e->getMessage());
+        }
+        $res = $res1 && $res2 && $res3;
+        self::checkTrans($res);
+        return $res;
+    }
+
     /**
      * 微信支付 为 0元时
      * @param $order_id
@@ -741,6 +765,7 @@ class StoreOrder extends BaseModel
         if (!$order) return self::setErrorInfo('支付订单不存在!');
         if ($order['refund_status'] == 2) return self::setErrorInfo('订单已退款!');
         if ($order['refund_status'] == 1) return self::setErrorInfo('正在申请退款中!');
+        if ($order['combination']) return self::setErrorInfo('拼团订单不可退款!');
         if ($order['status'] == 1) return self::setErrorInfo('订单当前无法退款!');
         self::beginTrans();
         $res1 = false !== StoreOrderStatus::status($order['id'], 'apply_refund', '用户申请退款,原因:' . $refundReasonWap);

+ 2 - 4
app/models/store/StorePink.php

@@ -608,17 +608,15 @@ class StorePink extends BaseModel
 
     public static function pinkReturn($order_id)
     {
-        var_dump($order_id);
         $product = StoreOrder::get($order_id);
         if (!$product) return self::setErrorInfo('数据不存在');
         $cart_info = StoreOrderCartInfo::where('cart_id', 'in', $product['cart_id'])->select();
-        var_dump($cart_info);
         $return = 0;
         foreach ($cart_info as $v) {
-            $info = json_decode($v['cart_info']);
+            $info = $v['cart_info'];
             $return += $info['cart_num'] * ($info['productInfo']['attrInfo']['return']);
         }
-        var_dump($return);
+
         $res = true;
         if ($return > 0) {
             $balance = User::where('uid', $product['uid'])->value('brokerage_price');