| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- <?php
- /**
- * Created by PhpStorm.
- * User: leo
- * Date: 2018/2/24
- * Time: 下午12:48
- */
- namespace backendApi\modules\v1\controllers;
- use backendApi\modules\v1\models\Admin;
- use backendApi\modules\v1\models\AdminCountry;
- use common\helpers\Cache;
- use common\helpers\Form;
- use common\helpers\Log;
- use common\models\Ad;
- use common\models\AdLocation;
- use common\models\Article;
- use common\models\Countries;
- use common\models\forms\AdForm;
- use common\models\forms\UploadForm;
- use Yii;
- use yii\web\UploadedFile;
- class AdController extends BaseController
- {
- public $modelClass = Ad::class;
- public function actions() {
- return parent::actions(); // TODO: Change the autogenerated stub
- }
- /**
- * 广告位列表
- * @return mixed
- * @throws \yii\web\HttpException
- */
- public function actionLocation(){
- $condition = '';
- $params = [];
- $data = AdLocation::lists($condition, $params, [
- 'select' => '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);
- }
- }
- }
|