'ADL.*,ADMC.ADMIN_NAME CREATE_ADMIN_NAME,ADMU.ADMIN_NAME UPDATE_ADMIN_NAME', 'from' => AdLocation::tableName().' AS ADL', 'join' => [ ['LEFT JOIN', Admin::tableName() . ' AS ADMC', 'ADMC.ID=ADL.CREATE_ADMIN'], ['LEFT JOIN', Admin::tableName() . ' AS ADMU', 'ADMU.ID=ADL.UPDATE_ADMIN'], ], 'orderBy' => 'ADL.CREATED_AT ASC', ]); return static::notice($data); } /** * 列表 * @return mixed * @throws \yii\web\HttpException */ public function actionList() { $lid = Yii::$app->request->get('lid'); // 如果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([ 'TITLE' => 'TITLE', 'COUNTRY_ID' => 'COUNTRY_ID', ]); $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', ]); $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(); return static::notice($data); } /** * 添加 * @return mixed * @throws \yii\web\HttpException */ public function actionAdd(){ if(Yii::$app->request->isPost) { return parent::edit(AdForm::class, Yii::t('ctx', 'AdAddedSuccessfully'), null, null, null, function($formModel, $result){ // 添加操作日志 // Log::adminHandle('添加广告:'.$result->TITLE); }); } // 获取全部分类 $allLocation = AdLocation::getAllLocation(); $allArticle = Article::findAllAsArray(); return static::notice(['allLocation'=>$allLocation, 'allArticle' => $allArticle]); } /** * 编辑 * @return mixed * @throws \yii\web\HttpException */ public function actionEdit(){ $id = Yii::$app->request->get('id'); if(Yii::$app->request->isPost) { return parent::edit(AdForm::class, Yii::t('ctx', 'EditAdSuccessfully'), null, null, null, function($formModel, $result){ // 添加操作日志 // Log::adminHandle('编辑广告:'.$result->TITLE); }); } $oneData = Ad::findOneAsArray(['ID'=>$id]); // 获取全部分类 $allLocation = AdLocation::getAllLocation(); $allArticle = Article::findAllAsArray(); return static::notice(['oneData'=>$oneData, 'allLocation'=>$allLocation, 'allArticle' => $allArticle]); } /** * 删除 * @return mixed * @throws \yii\db\Exception * @throws \yii\web\HttpException */ public function actionAdDelete(){ $adForm = new AdForm(); $result = static::delete(Ad::class, function ($selected) use ($adForm) { $adForm->beforeDelete($selected); }, function ($selected) use ($adForm) { $adForm->delete($selected); }, true); return $result; } /** * 隐藏 * @return mixed * @throws \yii\db\Exception * @throws \yii\web\HttpException */ public function actionAdHide(){ $adForm = new AdForm(); $result = static::hide(Ad::class, 'hide', function ($selected) use ($adForm) { }, function ($selected) use ($adForm) { }, true); return $result; } /** * 取消隐藏 * @return mixed * @throws \yii\db\Exception * @throws \yii\web\HttpException */ public function actionAdUnHide(){ $adForm = new AdForm(); $result = static::hide(Ad::class, 'un-hide', function ($selected) use ($adForm) { }, function ($selected) use ($adForm) { }, true); return $result; } /** * 排序 * @return mixed * @throws \yii\web\HttpException */ public function actionSort(){ if(Yii::$app->request->get('id')){ $formModel = new AdForm(); $formModel->scenario = 'sort'; if($formModel->load(Yii::$app->request->get(), '') && $formModel->sortTo()){ return static::notice(Yii::t('ctx', 'successfully')); } else { return static::notice(Yii::t('ctx', 'failed'), 400); } } } /** * 状态 * @return mixed * @throws \yii\web\HttpException */ public function actionStatus(){ if(Yii::$app->request->get('id')){ $formModel = new AdForm(); $formModel->scenario = 'status'; if($formModel->load(Yii::$app->request->get(), '') && $formModel->statusTo()){ return static::notice(Yii::t('ctx', 'successfully')); } else { return static::notice(Yii::t('ctx', 'failed'), 400); } } } /** * 上传图片 * @return mixed * @throws \yii\base\Exception * @throws \yii\db\Exception * @throws \yii\web\HttpException */ public function actionUpload(){ if(\Yii::$app->request->isPost){ $formModel = new UploadForm(); $formModel->scenario = 'ad'; $formModel->file = UploadedFile::getInstanceByName('file'); $formModel->token = \Yii::$app->request->request('uploadToken');; if($formModel->file && $uploader = $formModel->upload()){ return static::notice($uploader->URL); } else { return static::notice(Form::formatErrorsForApi($formModel->getErrors()), 400); } } else { $token = Cache::setUploadToken(); return static::notice($token); } } }