Explorar o código

feat: EK-2086: Member Portal : Dashboard Article and Ad only show self country.

kevin hai 3 meses
pai
achega
42d4a11c1f
Modificáronse 1 ficheiros con 31 adicións e 2 borrados
  1. 31 2
      backendApi/modules/v1/controllers/AdController.php

+ 31 - 2
backendApi/modules/v1/controllers/AdController.php

@@ -133,9 +133,37 @@ class AdController extends BaseController
         }
         // 获取全部分类
         $allLocation = AdLocation::getAllLocation();
-        $allArticle = Article::findAllAsArray();
+        
+        // 管理员关联国家的文章
+        $admin = Admin::findOne(Yii::$app->user->id);
+        $roleId = $admin->ROLE_ID;
+        if ($roleId == \Yii::$app->params['superAdminRoleId']) {
+            $countries = Countries::find()->asArray()->all();
+        } else {
+            // 关联国家
+            $countries = Countries::find()
+                ->select('COU.ID, COU.CODE, COU.NAME')
+                ->from(['COU' => Countries::tableName()])
+                ->join('INNER JOIN', AdminCountry::tableName() . ' AS ADL', 'ADL.COUNTRY_ID = COU.ID')
+                ->where(['ADL.ADMIN_ID' => $admin->ID])
+                ->asArray()
+                ->all();
+        }
 
-        return static::notice(['allLocation'=>$allLocation, 'allArticle' => $allArticle]);
+        // 关联文章,关联国家表
+        $allArticle = Article::find()
+            ->from(['ART' => Article::tableName()])
+            ->leftJoin(['COU' => Countries::tableName()], 'COU.ID = ART.COUNTRY_ID')
+            ->select('ART.ID,ART.TITLE,ART.COUNTRY_ID,COU.NAME AS COUNTRY_NAME')
+            ->andFilterWhere(['ART.COUNTRY_ID' => array_column($countries, 'ID')])
+            ->asArray()
+            ->all();
+
+        return static::notice([
+            'allLocation'=>$allLocation, 
+            'allArticle' => $allArticle,
+            'countries' => $countries,
+        ]);
     }
 
     /**
@@ -184,6 +212,7 @@ class AdController extends BaseController
             'oneData' => $oneData, 
             'allLocation' => $allLocation, 
             'allArticle' => $allArticle,
+            'countries' => $countries,
         ]);
     }