Kirin %!s(int64=3) %!d(string=hai) anos
pai
achega
726446f8b5

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

@@ -2,6 +2,7 @@
 
 namespace app\api\controller\order;
 
+use app\models\user\UserSpread;
 use app\admin\model\system\{
     SystemAttachment, ShippingTemplates
 };
@@ -166,6 +167,10 @@ class StoreOrderController
             'addressId', 'couponId', 'payType', ['useIntegral', 0], 'mark', ['combinationId', 0], ['pinkId', 0], ['seckill_id', 0], ['formId', ''], ['bargainId', ''], ['from', 'weixin'],
             ['shipping_type', 1], ['real_name', ''], ['phone', ''], ['store_id', 0]
         ], $request, true);
+        $userinfo = User::getUserinfo($uid);
+        $spread_info = UserSpread::checkValidSpread($uid);
+        if (!$userinfo && !$spread_info) return app('json')->fail('请扫码绑定有效推荐关系再进行下单操作!');
+
         $payType = strtolower($payType);
         if ($bargainId) {
             $bargainUserTableId = StoreBargainUser::getBargainUserTableId($bargainId, $uid);//TODO 获取用户参与砍价表编号

+ 30 - 0
app/models/user/UserSpread.php

@@ -16,6 +16,7 @@ use think\db\exception\ModelNotFoundException;
 use think\facade\Cache;
 use crmeb\traits\ModelTrait;
 use crmeb\basic\BaseModel;
+use think\Model;
 
 /**
  * TODO 用户消费新增金额明细 model
@@ -149,4 +150,33 @@ class UserSpread extends BaseModel
         $log['lock'] = 1;
         return $log->save() && User::where('uid', $uid)->update(['spread_uid' => $log['spread_uid'], 'spread_time' => $log['spread_time']]) && User::setUserSpreadCount($log['spread_uid']);
     }
+
+
+    public static function checkValidSpread($uid)
+    {
+        $bind_type = sys_config('bind_type', 1);
+        if ($bind_type != 2) {
+            return true;
+        }
+        if (self::where('uid', $uid)->where('lock', 1)->find()) {
+            return true;
+        }
+        $log = self::where('uid', $uid)->order('spread_time', 'desc')->find();
+        if (!$log) {
+            return false;
+        }
+        $sp = $log['spread_uid'];
+        $userlist = User::column('uid,spread_uid', 'uid');
+        while ($sp) {
+            if ($sp == $uid) {
+                $log['spread_uid'] = 0;
+                break;
+            }
+            $sp = $userlist[$sp]['spread_uid'];
+        }
+        if (!$log['spread_uid']) {
+            return false;
+        }
+        return true;
+    }
 }