3, 2=> 10, 3=>3]; //直推人数 const levelOne = 1; const levelTwo = 2; const levelThre = 3; const levelFour = 4; protected $name = 'user'; public function getById($userID) { return $this->where('id', $userID)->find(); } public function getByAddress($address) { return $this->where("address", $address)->find(); } public static function getByParentId(int $uid): int { return self::where('id', $uid)->value("parent_id"); } public function getAllAddress() { $all_list = $this->field('id,address')->select(); $arr = []; foreach ($all_list as $item){ $arr[$item['address']] = $item['id']; } return $arr; } //获取用户RWA public static function getUserRwaNum(int $uid): int { return self::where('id', $uid)->value("rwa_num"); } /** * RWA更新数据 * @param int $uid * @param string $power * @return void */ public static function updateForRwaNum(int $uid, int $pid, string $score, string $action) { if($action == '+'){ //更新自己Rwa self::where('id', $uid)->setInc('rwa_num', $score); //更新直推Rwa return self::where('id', $pid)->setInc('direct_rwa', $score); }else{ //更新自己Rwa self::where('id', $uid)->setDec('rwa_num', $score); //更新直推Rwa return self::where('id', $pid)->setDec('direct_rwa', $score); } } /** * 添加用户上级标识 * 领取超级福利后就会变成青铜地址 * 直推3个领取了超级福利的变成白银地址 * 直推10个领取了超级福利的变成黄金地址 * 有3个是黄金地址的 就变成翡翠地址 * @param int $uid * @param string $parentId * @return void */ public static function updateUserLevel(int $uid, int $parentId) { if (empty($parentId)) { $parent = self::where('id', $parentId)->find(); //更新等级 if (empty($parent->address_level)) { $parent->address_level = self::levelOne; }else{ if ($parent->address_level < self::levelFour) { $parentCount = self::where('parent_id', $parentId)->where('address_level', '>=', self::levelOne)->count(); if($parentCount > self::level[1]) $parent->address_level = self::levelTwo; if($parentCount > self::level[2]) $parent->address_level = self::levelThre; } if($parent->address_level == self::levelThre){ $parentCount = self::where('parent_id', $parentId)->where('address_level', '>=', self::levelThre)->count(); if($parentCount > self::level[3]) $parent->address_level = self::levelFour; } } $parent->direct_super += self::NORMAL; //更新直推领取人数 $parent->save(); } return self::where('id', $uid)->setInc('address_level', self::NORMAL); } /** * 获取直推用户黄金标识人数 direct_super >= 10 * @param int $uid * @return void */ public static function getDirectGoldNum(int $uid) { return self::where('parent_id', $uid)->where('direct_super', '>=' , 10)->count(); } //社区向上发放奖励津贴 public static function setCommunityRewards($uid, $pv, $token) { $paths = UserPathModel::where('user_id', $uid)->where('distance', '<', 11)->order('distance', 'asc')->column('distance,parent_id'); if (!empty($paths)) { $model = new LedgerWalletModel(); foreach ($paths as $kk=>$item) { if($kk== 1){ $model->changeWalletAccount($item, $token, $pv, $model::Community, $uid); }else{ //间接推荐有效会员大于层级 if(self::where('parent_id', $item)->where('rwa_num','>', 0)->count() >= $kk){ $model->changeWalletAccount($item, $token, $pv, $model::Community, $uid); } } } } } }