hrjy 2 years ago
parent
commit
4cca574430

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

@@ -133,6 +133,9 @@ class StoreOrder extends BaseModel
                     case 'offline':
                         $item['pay_type_name'] = '线下支付';
                         break;
+                    case 'brokerage':
+                        $item['pay_type_name'] = '佣金支付';
+                        break;
                     default:
                         $item['pay_type_name'] = '其他支付';
                         break;

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

@@ -238,6 +238,17 @@ class StoreOrderController
                             return app('json')->status('pay_error', $errorinfo);
                     }
                     break;
+                case 'brokerage':
+                    if (StoreOrder::brokerage($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;
@@ -338,6 +349,14 @@ class StoreOrderController
                     return app('json')->fail(is_array($error) && isset($error['msg']) ? $error['msg'] : $error);
                 }
                 break;
+            case 'brokerage':
+                if (StoreOrder::brokerage($order['order_id'], $request->uid()))
+                    return app('json')->status('success', '佣金支付成功');
+                else {
+                    $error = StoreOrder::getErrorInfo();
+                    return app('json')->fail(is_array($error) && isset($error['msg']) ? $error['msg'] : $error);
+                }
+                break;
             case 'offline':
                 StoreOrder::createOrderTemplate($order);
                 if (StoreOrder::setOrderTypePayOffline($order['order_id']))

+ 2 - 0
app/api/controller/user/UserController.php

@@ -639,10 +639,12 @@ class UserController
         if ($user['identity'] == 2) return app('json')->fail('已是区域代理');
         if ($user['identity'] == 1 and $data['type'] == 1)  return app('json')->fail('已是vip代理');
         if ($data['type'] == 1) $data['address'] = [];
+        $res1 = User::where('uid', $request->uid())->update(['identity' => $data['type'], 'proxy_area' => $data['address'], 'proxy_time' => time()]);
         $res = UserApply::create([
             'uid' => $request->uid(),
             'type' => $data['type'],
             'address' => $data['address'],
+            'status' => 1,
         ]);
         if ($res) return app('json')->success('提交申请成功');
         return app('json')->success('提交申请失败');

+ 36 - 0
app/models/store/StoreOrder.php

@@ -682,6 +682,42 @@ class StoreOrder extends BaseModel
         return $res;
     }
 
+    /**
+     * 佣金支付
+     * @param $order_id
+     * @param $uid
+     * @param string $formId
+     * @return bool
+     * @throws \think\Exception
+     * @throws DataNotFoundException
+     * @throws ModelNotFoundException
+     * @throws \think\exception\DbException
+     */
+    public static function brokerage($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['paid']) return self::setErrorInfo('该订单已支付!');
+//        if($orderInfo['pay_type'] != 'yue') return self::setErrorInfo('该订单不能使用余额支付!');
+        $userInfo = User::getUserInfo($uid);
+        if ($userInfo['now_money'] < $orderInfo['brokerage_price'])
+            return self::setErrorInfo(['status' => 'pay_deficiency', 'msg' => '佣金不足' . floatval($orderInfo['pay_price'])]);
+        self::beginTrans();
+
+        $res1 = false !== User::bcDec($uid, 'brokerage_price', $orderInfo['pay_price'], 'uid');
+        $res2 = UserBill::expend('购买商品', $uid, 'now_money', 'brokerage_price', $orderInfo['pay_price'], $orderInfo['id'], $userInfo['now_money'], '佣金支付' . floatval($orderInfo['pay_price']) . '元购买商品');
+        $res3 = self::paySuccess($order_id, 'brokerage', $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