AdController.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: leo
  5. * Date: 2018/2/24
  6. * Time: 下午12:48
  7. */
  8. namespace backendApi\modules\v1\controllers;
  9. use backendApi\modules\v1\models\Admin;
  10. use common\helpers\Cache;
  11. use common\helpers\Form;
  12. use common\helpers\Log;
  13. use common\models\Ad;
  14. use common\models\AdLocation;
  15. use common\models\Article;
  16. use common\models\forms\AdForm;
  17. use common\models\forms\UploadForm;
  18. use Yii;
  19. use yii\web\UploadedFile;
  20. class AdController extends BaseController
  21. {
  22. public $modelClass = Ad::class;
  23. public function actions() {
  24. return parent::actions(); // TODO: Change the autogenerated stub
  25. }
  26. /**
  27. * 广告位列表
  28. * @return mixed
  29. * @throws \yii\web\HttpException
  30. */
  31. public function actionLocation(){
  32. $condition = '';
  33. $params = [];
  34. $data = AdLocation::lists($condition, $params, [
  35. 'select' => 'ADL.*,ADMC.ADMIN_NAME CREATE_ADMIN_NAME,ADMU.ADMIN_NAME UPDATE_ADMIN_NAME',
  36. 'from' => AdLocation::tableName().' AS ADL',
  37. 'join' => [
  38. ['LEFT JOIN', Admin::tableName() . ' AS ADMC', 'ADMC.ID=ADL.CREATE_ADMIN'],
  39. ['LEFT JOIN', Admin::tableName() . ' AS ADMU', 'ADMU.ID=ADL.UPDATE_ADMIN'],
  40. ],
  41. 'orderBy' => 'ADL.CREATED_AT ASC',
  42. ]);
  43. return static::notice($data);
  44. }
  45. /**
  46. * 列表
  47. * @return mixed
  48. * @throws \yii\web\HttpException
  49. */
  50. public function actionList(){
  51. $lid = Yii::$app->request->get('lid');
  52. $condition = ' AND AD.LID=:LID';
  53. $params[':LID']=$lid;
  54. $data = Ad::lists($condition, $params, [
  55. 'select' => 'AD.*,ADMC.ADMIN_NAME CREATE_ADMIN_NAME,ADMU.ADMIN_NAME UPDATE_ADMIN_NAME',
  56. 'from' => Ad::tableName().' AS AD',
  57. 'join' => [
  58. ['LEFT JOIN', Admin::tableName() . ' AS ADMC', 'ADMC.ID=AD.CREATE_ADMIN'],
  59. ['LEFT JOIN', Admin::tableName() . ' AS ADMU', 'ADMU.ID=AD.UPDATE_ADMIN'],
  60. ],
  61. 'orderBy' => 'AD.SORT DESC,AD.CREATED_AT ASC',
  62. ]);
  63. $data['allLocation'] = AdLocation::getAllLocation();
  64. $data['allArticle'] = Article::find()->select('ID,TITLE')->asArray()->all();
  65. return static::notice($data);
  66. }
  67. /**
  68. * 添加
  69. * @return mixed
  70. * @throws \yii\web\HttpException
  71. */
  72. public function actionAdd(){
  73. if(Yii::$app->request->isPost) {
  74. return parent::edit(AdForm::class, Yii::t('ctx', 'AdAddedSuccessfully'), null, null, null, function($formModel, $result){
  75. // 添加操作日志
  76. // Log::adminHandle('添加广告:'.$result->TITLE);
  77. });
  78. }
  79. // 获取全部分类
  80. $allLocation = AdLocation::getAllLocation();
  81. $allArticle = Article::findAllAsArray();
  82. return static::notice(['allLocation'=>$allLocation, 'allArticle' => $allArticle]);
  83. }
  84. /**
  85. * 编辑
  86. * @return mixed
  87. * @throws \yii\web\HttpException
  88. */
  89. public function actionEdit(){
  90. $id = Yii::$app->request->get('id');
  91. if(Yii::$app->request->isPost) {
  92. return parent::edit(AdForm::class, Yii::t('ctx', 'EditAdSuccessfully'), null, null, null, function($formModel, $result){
  93. // 添加操作日志
  94. // Log::adminHandle('编辑广告:'.$result->TITLE);
  95. });
  96. }
  97. $oneData = Ad::findOneAsArray(['ID'=>$id]);
  98. // 获取全部分类
  99. $allLocation = AdLocation::getAllLocation();
  100. $allArticle = Article::findAllAsArray();
  101. return static::notice(['oneData'=>$oneData, 'allLocation'=>$allLocation, 'allArticle' => $allArticle]);
  102. }
  103. /**
  104. * 删除
  105. * @return mixed
  106. * @throws \yii\db\Exception
  107. * @throws \yii\web\HttpException
  108. */
  109. public function actionAdDelete(){
  110. $adForm = new AdForm();
  111. $result = static::delete(Ad::class, function ($selected) use ($adForm) {
  112. $adForm->beforeDelete($selected);
  113. }, function ($selected) use ($adForm) {
  114. $adForm->delete($selected);
  115. }, true);
  116. return $result;
  117. }
  118. /**
  119. * 隐藏
  120. * @return mixed
  121. * @throws \yii\db\Exception
  122. * @throws \yii\web\HttpException
  123. */
  124. public function actionAdHide(){
  125. $adForm = new AdForm();
  126. $result = static::hide(Ad::class, 'hide', function ($selected) use ($adForm) {
  127. }, function ($selected) use ($adForm) {
  128. }, true);
  129. return $result;
  130. }
  131. /**
  132. * 取消隐藏
  133. * @return mixed
  134. * @throws \yii\db\Exception
  135. * @throws \yii\web\HttpException
  136. */
  137. public function actionAdUnHide(){
  138. $adForm = new AdForm();
  139. $result = static::hide(Ad::class, 'un-hide', function ($selected) use ($adForm) {
  140. }, function ($selected) use ($adForm) {
  141. }, true);
  142. return $result;
  143. }
  144. /**
  145. * 排序
  146. * @return mixed
  147. * @throws \yii\web\HttpException
  148. */
  149. public function actionSort(){
  150. if(Yii::$app->request->get('id')){
  151. $formModel = new AdForm();
  152. $formModel->scenario = 'sort';
  153. if($formModel->load(Yii::$app->request->get(), '') && $formModel->sortTo()){
  154. return static::notice(Yii::t('ctx', 'successfully'));
  155. } else {
  156. return static::notice(Yii::t('ctx', 'failed'), 400);
  157. }
  158. }
  159. }
  160. /**
  161. * 状态
  162. * @return mixed
  163. * @throws \yii\web\HttpException
  164. */
  165. public function actionStatus(){
  166. if(Yii::$app->request->get('id')){
  167. $formModel = new AdForm();
  168. $formModel->scenario = 'status';
  169. if($formModel->load(Yii::$app->request->get(), '') && $formModel->statusTo()){
  170. return static::notice(Yii::t('ctx', 'successfully'));
  171. } else {
  172. return static::notice(Yii::t('ctx', 'failed'), 400);
  173. }
  174. }
  175. }
  176. /**
  177. * 上传图片
  178. * @return mixed
  179. * @throws \yii\base\Exception
  180. * @throws \yii\db\Exception
  181. * @throws \yii\web\HttpException
  182. */
  183. public function actionUpload(){
  184. if(\Yii::$app->request->isPost){
  185. $formModel = new UploadForm();
  186. $formModel->scenario = 'ad';
  187. $formModel->file = UploadedFile::getInstanceByName('file');
  188. $formModel->token = \Yii::$app->request->request('uploadToken');;
  189. if($formModel->file && $uploader = $formModel->upload()){
  190. return static::notice($uploader->URL);
  191. } else {
  192. return static::notice(Form::formatErrorsForApi($formModel->getErrors()), 400);
  193. }
  194. } else {
  195. $token = Cache::setUploadToken();
  196. return static::notice($token);
  197. }
  198. }
  199. }