Sfoglia il codice sorgente

feat: EK-2806: 会员端Promo和banner图增加分国家设置.

kevin 4 mesi fa
parent
commit
2d28e111d4
1 ha cambiato i file con 35 aggiunte e 2 eliminazioni
  1. 35 2
      backendApi/modules/v1/controllers/ArticleController.php

+ 35 - 2
backendApi/modules/v1/controllers/ArticleController.php

@@ -7,6 +7,8 @@
  */
  */
 namespace backendApi\modules\v1\controllers;
 namespace backendApi\modules\v1\controllers;
 
 
+use backendApi\modules\v1\models\Admin;
+use backendApi\modules\v1\models\AdminCountry;
 use common\helpers\Cache;
 use common\helpers\Cache;
 use common\helpers\Form;
 use common\helpers\Form;
 use common\models\Article;
 use common\models\Article;
@@ -86,6 +88,22 @@ class ArticleController extends BaseController
      */
      */
     public function actionIndex()
     public function actionIndex()
     {
     {
+        // 如果admin不是超管,只允许查询自己关联的国家
+        $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();
+        }
+
         $filter = $this->filterCondition([
         $filter = $this->filterCondition([
             'TITLE' => 'TITLE',
             'TITLE' => 'TITLE',
             'COUNTRY_ID' => 'COUNTRY_ID',
             'COUNTRY_ID' => 'COUNTRY_ID',
@@ -93,9 +111,24 @@ class ArticleController extends BaseController
         $condition = $filter['condition'];
         $condition = $filter['condition'];
         $params = $filter['params'];
         $params = $filter['params'];
 
 
+        $countryIds = array_column($countries, 'ID');
+        if (!empty($countryIds)) {
+            $placeholders = [];
+            foreach ($countryIds as $key => $id) {
+                $paramName = ':countryId_' . $key;
+                $placeholders[] = $paramName;
+                $params[$paramName] = $id;
+            }
+            $condition .= ' AND AD.COUNTRY_ID IN (' . implode(',', $placeholders) . ')';
+        }
+
         $data = Article::lists($condition, $params, [
         $data = Article::lists($condition, $params, [
-            'select' => 'ID,TITLE,CID,COUNTRY_ID,STATUS,SORT,CREATED_AT',
-            'orderBy' => 'SORT ASC,CREATED_AT DESC',
+            'select' => 'ART.ID,ART.TITLE,ART.CID,ART.COUNTRY_ID,ART.STATUS,ART.SORT,ART.CREATED_AT,,ADC.NAME AS COUNTRY_NAME, ADC.CODE AS COUNTRY_CODE',
+            'from' => Article::tableName().' AS ART',
+            'join' => [
+                ['INNER JOIN', Countries::tableName() . ' AS ADC', 'ADC.ID=ART..COUNTRY_ID'],
+            ],
+            'orderBy' => 'ART.SORT ASC,ART.CREATED_AT DESC',
         ]);
         ]);
 
 
         // 全部分类
         // 全部分类