Bladeren bron

fix add inviter in ugc_srv

stanley-king 7 jaren geleden
bovenliggende
commit
44dfaa4420

+ 4 - 3
data/logic/queue.logic.php

@@ -606,11 +606,12 @@ class queueLogic
 
     public function onAsyncRegister($param)
     {
-        $member_id = $param['member_id'];
-        if($member_id < 0) {
+        $user = $param['user'];
+        $inviter = $param['inviter'];
+        if($user < 0) {
             return callback(false,"onRegisterFromBonus 错误的member_id");
         }
-        account_helper::onAsyncRegister($member_id);
+        account_helper::onAsyncRegister($user,$inviter);
         return callback(true);
     }
 

+ 6 - 3
helper/account_helper.php

@@ -492,12 +492,15 @@ class account_helper
             relation_helper::onSubscribe($member_id,$relay_id);
             relation_helper::onInvite($relay_id,$member_id);
         }
-        QueueClient::push('onAsyncRegister',['member_id' => $member_id]);
+        $publisher = new message\publisher();
+        $publisher->add_inviter($member_id,$relay_id);
+
+        QueueClient::push('onAsyncRegister',['user' => $member_id,'inviter' => $relay_id]);
     }
 
-    public static function onAsyncRegister($member_id)
+    public static function onAsyncRegister($user,$inviter)
     {
-        $iPusher = new async_push\register($member_id);
+        $iPusher = new async_push\register($user,$inviter);
         $iPusher->run();
     }
     public static function onAsyncEvaluate($member_id)

+ 25 - 5
helper/async_push/register.php

@@ -20,17 +20,36 @@ class register implements IPusher
 {
     private $cur_user;
     private $cur_info;
+    private $last_inviter;
 
-    public function __construct($member_id)
+    public function __construct($user,$inviter)
     {
-        $this->cur_user = $member_id;
-        $this->cur_info = new member_info($member_id);
+        $this->cur_user = $user;
+        $this->cur_info = new member_info($user);
+        $this->last_inviter = $inviter;
     }
 
+    private function inviters()
+    {
+        if($this->last_inviter <= 0){
+            return [];
+        }
+        else
+        {
+            $inviters = [];
+            $parent_inviters = search\relation_client::instance()->fetch_inviters(['user_id' => $this->last_inviter]);
+
+            $inviters[] = $this->last_inviter;
+            foreach ($parent_inviters as $inviter) {
+                $inviters[] = $inviter;
+            }
+            return $inviters;
+        }
+    }
     public function run()
     {
-        $inviters = search\relation_client::instance()->fetch_inviters(['user_id' => $this->cur_user]);
-        $this->notify_inviter($inviters);
+        $inviters = $this->inviters();
+        return $this->notify_inviter($inviters);
     }
 
     private function notify_inviter($inviters)
@@ -48,6 +67,7 @@ class register implements IPusher
             $ex_invitee = $inviter;
             $level += 1;
         }
+        return true;
     }
     private function ex_user($invitees,$user)
     {

+ 5 - 1
helper/message/msgutil.php

@@ -136,7 +136,11 @@ function handler_redis($redis, $chan, $msg)
         }
         elseif($chan == 'fellow') {
             UgcHandler::onFellow($msg);
-        } else {
+        }
+        elseif ($chan == 'inviter') {
+            UgcHandler::onInviter($msg);
+        }
+        else {
             Log::record("message: {$chan} -- {$msg}",Log::DEBUG);
         }
     }

+ 12 - 0
helper/message/publisher.php

@@ -147,6 +147,18 @@ class publisher
     }
 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public function add_inviter($user,$inviter)
+    {
+        if($this->mConnected)
+        {
+            $user = intval($user);
+            $inviter = intval($inviter);
+
+            $this->mRedis->publish('inviter',serialize(array('type'=>'add','params' => ['user_id' => $user,'inviter_id' => $inviter])));
+        }
+    }
+
     public function add_fellow($user,$fellows)
     {
         if($this->mConnected)

BIN
mac_ugcman


+ 12 - 1
test/TestFriends.php

@@ -98,7 +98,17 @@ class TestFriends extends PHPUnit_Framework_TestCase
 
     public function testAddInviter()
     {
-        $result = search\relation_client::instance()->add_inviter(['user_id' => 36486,'inviter_id' => 39623]);
+//        search\relation_client::instance()->add_inviter(['user_id' => 39638,'inviter_id' => 39623]);
+//        $result = search\relation_client::instance()->fetch_inviters(['user_id' => 39633]);
+        $publisher = new message\publisher();
+        $publisher->add_inviter(100,39623);
+        $publisher->add_inviter(39634,39623);
+        $publisher->add_inviter(39635,39623);
+        $publisher->add_inviter(39636,39623);
+        $publisher->add_inviter(39637,39623);
+        $publisher->add_inviter(39639,39623);
+        $result = search\relation_client::instance()->fetch_invitees(['user_id' => 39623]);
+
     }
 
     public function testFetchInviters()
@@ -117,4 +127,5 @@ class TestFriends extends PHPUnit_Framework_TestCase
             echo "\n";
         }
     }
+
 }

+ 24 - 4
ugc_srv.php

@@ -18,7 +18,7 @@ require_once(BASE_ROOT_PATH . '/helper/ugc_helper.php');
 require_once(BASE_ROOT_PATH . '/helper/search/tcp_client.php');
 
 function all_channels() {
-    return array('special','fellow');
+    return array('special','fellow','inviter');
 }
 
 $gMessageStates = null;
@@ -51,12 +51,14 @@ class UgcHandler
     static public function onFellow($msg)
     {
         if(empty($msg)) return false;
-        $params = unserialize($msg);
-        if($params == false || !is_array($params)) {
+
+        $content = unserialize($msg);
+        if($content == false || !is_array($content)) {
             return false;
         }
+        $type   = $content['type'];
+        $params = $content['params'];
 
-        $type = $params['type'];
         if($type == 'add') {
             search\relation_client::instance()->add_follow(['user_id' => $params['user_id'],'friends' => $params['friends']]);
         }
@@ -68,6 +70,24 @@ class UgcHandler
         }
         return true;
     }
+    static public function onInviter($msg)
+    {
+        if(empty($msg)) return false;
+
+        $content = unserialize($msg);
+        if($content == false || !is_array($content)) {
+            return false;
+        }
+        $type   = $content['type'];
+        $params = $content['params'];
+
+        if($type == 'add') {
+            search\relation_client::instance()->add_inviter(['user_id' => $params['user_id'],'inviter_id' => $params['inviter_id']]);
+        }
+        else {
+        }
+        return true;
+    }
 }
 
 function work_proc()