WIN-2308041133\Administrator 7 месяцев назад
Родитель
Сommit
d427c6feba
1 измененных файлов с 34 добавлено и 1 удалено
  1. 34 1
      app/models/user/User.php

+ 34 - 1
app/models/user/User.php

@@ -598,6 +598,39 @@ class User extends BaseModel
 //        return self::where('uid', $uid)->update(['spread_uid' => $spreadUid, 'spread_time' => time()]);
     }
 
+    /**
+     * 检查数字是否包含4
+     * @param $number
+     * @return bool
+     */
+    protected static function hasDigitFour($number)
+    {
+        return strpos((string)$number, '4') !== false;
+    }
+
+    /**
+     * 生成不包含数字4的下一个uid
+     * @param int|null $startUid
+     * @return int
+     */
+    protected static function getNextUidWithoutFour($startUid = null)
+    {
+        if ($startUid === null) {
+            $startUid = WechatUser::max('uid') ?: 0;
+        }
+
+        $uid = $startUid + 1;
+
+        while (self::hasDigitFour($uid)) {
+            $uid++;
+            if ($uid - $startUid > 1000) {
+                return $startUid + 1;
+            }
+        }
+
+        return $uid;
+    }
+
     /**
      * 判断上下级关系是否存在
      * @param $uid
@@ -650,8 +683,8 @@ class User extends BaseModel
         $data['country'] = '';
         $data['is_promoter'] = $storeBrokerageStatu != 1 ? 1 : 0;
         self::beginTrans();
+        $data['uid'] = self::getNextUidWithoutFour();
         $res2 = WechatUser::create($data);
-        $data['uid'] = $res2->uid;
         $res1 = self::create($data);
         $res = $res1 && $res2 && UserSpread::setSpread($data['uid'], $spread);
         self::checkTrans($res);