afa 8 miesięcy temu
rodzic
commit
062d0423da

+ 3 - 3
application/api/controller/Airdrop.php

@@ -31,7 +31,7 @@ class Airdrop extends Api
         $endTime = isset($info->create_time)? bcadd($info->create_time, 86400): 0;
 
         $rows    = $userWelfare::getIsWelfare();
-        $this->success('', ['is_super'=>$this->auth->is_super, 'end_time'=>$endTime, 'chabao'=>$rows->frozen]);
+        $this->success('', ['is_super'=>$this->auth->address_level, 'end_time'=>$endTime, 'chabao'=>$rows->frozen]);
     }
 
 
@@ -65,7 +65,7 @@ class Airdrop extends Api
     {
         $row = $userWelfare::getIsWelfare();
         if(empty($row->is_super)) $this->error(__('暂未开启'));
-        if(!empty($this->auth->is_super)) $this->error(__('您已领取'));
+        if(!empty($this->auth->address_level)) $this->error(__('您已领取'));
 
         //判断距离领取新人福利是否超过一天
         $info = $productOrder::getUserWelfare($this->auth->id, $productOrder::Newbie);
@@ -79,7 +79,7 @@ class Airdrop extends Api
             $result = WelfareLoginc::setUserWelfareLos($this->auth->id, $row->super_product_id, $row->super_num, time(), $this->lan, $productOrder::Super);
 
             //添加超级福利标识/上级
-            $userModel::updateUserSuper($this->auth->id, $this->auth->parent_id);
+            $userModel::updateUserLevel($this->auth->id, $this->auth->parent_id);
 
             //添加茶数量
             if($result['price'] > config('min_rwa_price')) $userModel::updateForRwaNum($this->auth->id, $this->auth->parent_id, $row->super_num, '+');

+ 3 - 4
application/api/controller/User.php

@@ -54,7 +54,7 @@ class User extends Api
             'balance'         => $ledgerWalletModel::getWalletChaBao($this->auth->id), // 余额
             'rwa_num'         => $user['rwa_num'], // 总茶权
             'parent_id'       => $user['parent_id'], // 上级ID
-            'is_super'        => $user['is_super'], // 新人福利标识
+            'is_super'        => $user['address_level'], // 新人福利标识
             'direct_super'    => ['one'=>3, 'two'=>10,'direct_super'=>$user['direct_super']], // 推广新人福等级标识
             'direct_gold'     => $userModel::getDirectGoldNum($user['id']), // 推广黄金地址标识数量
             'avatar'          => !empty($user['avatar'])? $user['avatar']:$this->request->domain().'/assets/img/logo.png', // 头像
@@ -147,11 +147,10 @@ class User extends Api
     {
         // 总推荐数
         $list['total'] = $userModel::where('parent_id', $this->auth->id)->count();
-        //直推黄金数量
-        $list['direct_gold'] = $userModel::getDirectGoldAddress($this->auth->id);
+    
         // 直推列表 
         $list['data'] = $userModel::where('parent_id', $this->auth->id)
-                    ->field("address,create_time,nickname,is_super,direct_super,REPLACE(phone, SUBSTRING(phone, 4, 4), '****') as phone")
+                    ->field("address,address_level,create_time,nickname,direct_super,REPLACE(phone, SUBSTRING(phone, 4, 4), '****') as phone")
                     ->order('id desc')
                     ->paginate($this->pageSize);
         $this->success('', $list);

+ 3 - 3
application/common/logic/AirdropLogic.php

@@ -112,7 +112,7 @@ class AirdropLogic
         }
 
         $user_info = UserModel::where('id', $info['user_id'])->find();
-        if($user_info->is_super == 0){
+        if($user_info->address_level == 0){
             (new UserAirdrop)->updateDate($info['id'], UserAirdrop::STOP, '会员未领超级福利');
             return false;
         }
@@ -123,8 +123,8 @@ class AirdropLogic
         $parents_info = UserPathModel::where('p.user_id', $info['user_id'])
             ->alias('p')
             ->join('user u', 'u.id = p.parent_id', 'left')
-            ->field('u.id, u.is_super, u.direct_super,u.parent_id, p.distance')
-            ->where('u.is_super', 1)
+            ->field('u.id, u.address_level, u.direct_super,u.parent_id, p.distance')
+            ->where('u.address_level', '>',0)
             ->order('p.distance asc')
             ->select();
         if(empty($parents_info)){

+ 32 - 12
application/common/model/UserModel.php

@@ -30,6 +30,12 @@ class UserModel extends Model
     const NORMAL         = 1;
     const STOP           = 2;
 
+    const level          = [1=>3, 2=> 10, 3=>3];  //直推人数
+    const levelOne       = 1; 
+    const levelTwo       = 2;
+    const levelThre      = 3;
+    const levelFour      = 4;
+
     protected $name = 'user';
 
 
@@ -93,14 +99,36 @@ class UserModel extends Model
 
     /**
      * 添加用户上级标识
+     * 领取超级福利后就会变成青铜地址
+     * 直推3个领取了超级福利的变成白银地址
+     * 直推10个领取了超级福利的变成黄金地址
+     * 有3个是黄金地址的 就变成翡翠地址
      * @param int $uid
      * @param string $parentId
      * @return void
      */
-    public static function updateUserSuper(int $uid, int $parentId)
+    public static function updateUserLevel(int $uid, int $parentId)
     {
-        self::where('id', $uid)->update(['is_super'=>self::NORMAL]);
-        return self::where('id', $parentId)->setInc('direct_super', self::NORMAL);
+        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);
     }
 
      /**
@@ -113,15 +141,7 @@ class UserModel extends Model
         return self::where('parent_id', $uid)->where('direct_super', '>=' , 10)->count();
     }
 
-    /**
-     * 获取直推用户黄金标识地址  direct_super >= 10
-     * @param int $uid
-     * @return void
-     */
-    public static function getDirectGoldAddress(int $uid)
-    {
-        return self::where('parent_id', $uid)->where('direct_super', '>=' , 10)->column('address');
-    }
+
 
     //社区向上发放奖励津贴
     public static function setCommunityRewards($uid, $pv, $token)