|
|
@@ -7,11 +7,13 @@
|
|
|
*/
|
|
|
namespace backendApi\modules\v1\controllers;
|
|
|
|
|
|
+
|
|
|
use backendApi\modules\v1\models\Admin;
|
|
|
use backendApi\modules\v1\models\AdminCountry;
|
|
|
+use backendApi\modules\v1\models\lists\ad\AdIndexList;
|
|
|
use common\helpers\Cache;
|
|
|
use common\helpers\Form;
|
|
|
-use common\helpers\Log;
|
|
|
+use common\helpers\LoggerTool;
|
|
|
use common\models\Ad;
|
|
|
use common\models\AdLocation;
|
|
|
use common\models\Article;
|
|
|
@@ -56,7 +58,11 @@ class AdController extends BaseController
|
|
|
*/
|
|
|
public function actionList()
|
|
|
{
|
|
|
- $lid = Yii::$app->request->get('lid');
|
|
|
+ // 获取位置ID
|
|
|
+ $lid = Yii::$app->request->get('lid', 0);
|
|
|
+ if (empty($lid)) {
|
|
|
+ throw new \yii\web\HttpException(400, Yii::t('ctx', 'paramError'));
|
|
|
+ }
|
|
|
|
|
|
// 如果admin不是超管,只允许查询自己关联的国家
|
|
|
$admin = Admin::findOne(Yii::$app->user->id);
|
|
|
@@ -75,29 +81,37 @@ class AdController extends BaseController
|
|
|
}
|
|
|
|
|
|
$filter = $this->filterCondition([
|
|
|
- 'TITLE' => 'TITLE',
|
|
|
- 'COUNTRY_ID' => 'COUNTRY_ID',
|
|
|
+ 'TITLE' => 'AD.TITLE',
|
|
|
+ 'COUNTRY_ID' => 'AD.COUNTRY_ID',
|
|
|
+ 'STATUS' => 'AD.STATUS',
|
|
|
]);
|
|
|
$condition = $filter['condition'];
|
|
|
$params = $filter['params'];
|
|
|
|
|
|
$condition .= ' AND AD.LID=:LID';
|
|
|
- $params[':LID']=$lid;
|
|
|
- $data = Ad::lists($condition, $params, [
|
|
|
- 'select' => 'AD.*,ADC.NAME AS COUNTRY_NAME, ADC.CODE AS COUNTRY_CODE',
|
|
|
- 'from' => Ad::tableName().' AS AD',
|
|
|
- 'join' => [
|
|
|
- ['INNER JOIN', Countries::tableName() . ' AS ADC', 'ADC.ID=AD.COUNTRY_ID'],
|
|
|
- ],
|
|
|
- 'orderBy' => 'AD.STATUS DESC,AD.SORT DESC,AD.CREATED_AT ASC',
|
|
|
- ]);
|
|
|
+ $params[':LID'] = $lid;
|
|
|
+
|
|
|
+ $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) . ')';
|
|
|
+ }
|
|
|
+
|
|
|
+ $obj = new AdIndexList();
|
|
|
+ // 直接获取完整的数据,包括columnsShow和filterTypes
|
|
|
+ $data = $obj->getList(['condition' => $condition, 'params' => $params]);
|
|
|
|
|
|
+ // 添加额外数据
|
|
|
$data['allLocation'] = AdLocation::getAllLocation();
|
|
|
$data['countries'] = $countries;
|
|
|
$data['allArticle'] = Article::find()
|
|
|
->from(['ART' => Article::tableName()])
|
|
|
->select('ART.ID,ART.TITLE')
|
|
|
- ->where(['ART.STATUS' => 1])
|
|
|
->andFilterWhere(['ART.COUNTRY_ID' => array_column($countries, 'ID')])
|
|
|
->asArray()
|
|
|
->all();
|
|
|
@@ -119,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,
|
|
|
+ ]);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -140,8 +182,38 @@ class AdController extends BaseController
|
|
|
$oneData = Ad::findOneAsArray(['ID'=>$id]);
|
|
|
// 获取全部分类
|
|
|
$allLocation = AdLocation::getAllLocation();
|
|
|
- $allArticle = Article::findAllAsArray();
|
|
|
- return static::notice(['oneData'=>$oneData, 'allLocation'=>$allLocation, 'allArticle' => $allArticle]);
|
|
|
+
|
|
|
+ // 管理员关联国家的文章
|
|
|
+ $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();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 关联文章,关联国家表
|
|
|
+ $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([
|
|
|
+ 'oneData' => $oneData,
|
|
|
+ 'allLocation' => $allLocation,
|
|
|
+ 'allArticle' => $allArticle,
|
|
|
+ 'countries' => $countries,
|
|
|
+ ]);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -244,4 +316,24 @@ class AdController extends BaseController
|
|
|
return static::notice($token);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public function actionCountry()
|
|
|
+ {
|
|
|
+ $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($countries);
|
|
|
+ }
|
|
|
}
|