Просмотр исходного кода

Merge branch 'feature/1035-hidden-network' into new-version

theo 3 лет назад
Родитель
Сommit
648c04b585

+ 7 - 3
common/models/UserNetwork.php

@@ -256,7 +256,7 @@ class UserNetwork extends \common\components\ActiveRecord
      * @throws \yii\base\Exception
      * @throws \yii\db\Exception
      */
-    public static function getChildrenWithDeepAndLayer($userId, $deep, $loopedDeep = 1, $periodNum=null){
+    public static function getChildrenWithDeepAndLayer($userId, $deep, $loopedDeep = 1, $periodNum=null, $hiddenUser=[]){
         $allData = self::getChildrenFromPeriod($userId, $periodNum);
         if($allData){
             $decLevelConfig = Cache::getDecLevelConfig();
@@ -273,10 +273,14 @@ class UserNetwork extends \common\components\ActiveRecord
 //                    'MOBILE' => $baseInfo['MOBILE'],
                     'PERIOD_AT' => $baseInfo['PERIOD_AT'],
                 ]);
+                if(in_array($data['USER_ID'], $hiddenUser)){
+                    unset($allData[$key]);
+                    continue;
+                }
                 // 获取字节点数量
                 $childNum = self::firstFloorChildNumFromPeriod($data['USER_ID'], $periodNum);
                 if($childNum > 0 && $loopedDeep < $deep){
-                    $child = self::getChildrenWithDeepAndLayer($data['USER_ID'], $deep, $loopedDeep + 1, $periodNum);
+                    $child = self::getChildrenWithDeepAndLayer($data['USER_ID'], $deep, $loopedDeep + 1, $periodNum, $hiddenUser);
                     $leaf = false;
                     $icon = 'el-icon-user-solid';
                 }
@@ -297,7 +301,7 @@ class UserNetwork extends \common\components\ActiveRecord
                 $allData[$key]['displayNone'] = 'display-none';
             }
         }
-        return $allData;
+        return array_values($allData);
     }
 
     /**

+ 57 - 0
common/models/UserNetworkHidden.php

@@ -0,0 +1,57 @@
+<?php
+
+namespace common\models;
+
+use common\components\ActiveRecord;
+
+/**
+ * This is the model class for table "{{%USER_NETWORK}}".
+ *
+ * @property string $USER_ID 会员ID
+ * @property string $HIDDEN_USER_ID 隐藏会员ID
+ */
+class UserNetworkHidden extends \common\components\ActiveRecord
+{
+    /**
+     * @inheritdoc
+     */
+    public static function tableName()
+    {
+        return '{{%USER_NETWORK_HIDDEN}}';
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function rules()
+    {
+        return [
+        ];
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function attributeLabels()
+    {
+        return [
+            'USER_ID' => '会员ID',
+            'HIDDEN_USER_ID' => '隐藏会员ID',
+        ];
+    }
+
+    /**
+     * 获取隐藏会员列表
+     * @param $userId
+     * @return array
+     */
+    public static function fetchHiddenUser($userId)
+    {
+        $hiddenUsers = static::find()->select(['HIDDEN_USER_ID'])->where('USER_ID=:USER_ID', ['USER_ID'=>$userId])->asArray()->all();
+        $hiddenUser = [];
+        foreach($hiddenUsers as $hu){
+            $hiddenUser[] = $hu['HIDDEN_USER_ID'];
+        }
+        return $hiddenUser;
+    }
+}

+ 5 - 2
frontendApi/modules/v1/controllers/AtlasController.php

@@ -12,6 +12,7 @@ use common\helpers\Cache;
 use common\helpers\user\Info;
 use common\models\Period;
 use common\models\UserNetwork;
+use common\models\UserNetworkHidden;
 use Yii;
 use common\models\User;
 
@@ -81,10 +82,12 @@ class AtlasController extends BaseController {
         $userId = Yii::$app->request->get('id', \Yii::$app->user->id);
         $periodNum = Yii::$app->request->get('periodNum', null);
         $deep = Yii::$app->request->get('deep', 5);
+        $myUserId = \Yii::$app->user->id;
+        $hiddenUser = UserNetworkHidden::fetchHiddenUser($myUserId);
         if ($deep > 20) {
             return static::notice('最多查看会员的前20层子会员', 400);
         }
-        $allData = UserNetwork::getChildrenWithDeepAndLayer($userId, $deep, 1, $periodNum);
+        $allData = UserNetwork::getChildrenWithDeepAndLayer($userId, $deep, 1, $periodNum, $hiddenUser);
         return static::notice(['allData' => $allData, 'periodNum' => $periodNum]);
     }
 
@@ -147,4 +150,4 @@ class AtlasController extends BaseController {
         ]);
     }
 
-}
+}

+ 4 - 0
sql/upgrade/1035.sql

@@ -0,0 +1,4 @@
+CREATE TABLE `AR_USER_NETWORK_HIDDEN`  (
+  `USER_ID` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `HIDDEN_USER_ID` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;