DefaultController.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. namespace addons\ShareRedpack\backend\controllers;
  3. use addons\ShareRedpack\common\models\ShareRedpack;
  4. use common\enums\StatusEnum;
  5. use yii\helpers\Json;
  6. use Yii;
  7. use common\controllers\AddonsController;
  8. /**
  9. * 默认控制器
  10. *
  11. * Class DefaultController
  12. * @package addons\ShareRedpack\backend\controllers
  13. */
  14. class DefaultController extends BaseController
  15. {
  16. public $enableCsrfValidation = false;
  17. /**
  18. * 首页
  19. *
  20. * @return string
  21. */
  22. public function actionIndex()
  23. {
  24. if (Yii::$app->request->isAjax) {
  25. if (Yii::$app->request->isPost) {
  26. $params = Yii::$app->request->Post();
  27. $res = Yii::$app->services->validate->validate($params, [
  28. [['name'], 'string'],
  29. [['page', 'limit', 'id'], 'integer'],
  30. [['cycle', 'page', 'limit'], 'safe'],
  31. ]);
  32. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  33. $where = [];
  34. $where[] = ['=', 'mall_id', $this->mall_id];
  35. $where[] = ['<>', 'status', StatusEnum::DELETE];
  36. // 关键字搜索
  37. !empty($params['name']) && $where[] = [
  38. 'or',
  39. ['like', 'name', $params['name']],
  40. ];
  41. !empty($params['id']) && $where[] = [
  42. 'or',
  43. ['=', 'id', $params['id']],
  44. ];
  45. $order = 'id desc';
  46. $select = ['id', 'status', 'name', 'key_word', 'scan_code_num', 'poster_content', 'created_at','share_url','look_num'];
  47. $params = ['select' => $select, 'where' => $where, 'order' => $order];
  48. $data = ShareRedpack::listPage($params, false, true);
  49. $this->success('获取成功', $data);
  50. }
  51. }
  52. return $this->render($this->action->id);
  53. }
  54. /**
  55. * 海报修改
  56. * @return mixed|string|null
  57. */
  58. public function actionEdit()
  59. {
  60. $request = Yii::$app->request;
  61. if ($request->isAjax) {
  62. if ($request->isPost) {
  63. $params = $request->Post();
  64. $res = Yii::$app->services->validate->validate($params, [
  65. [['name', 'poster_content','share_url'], 'required'],
  66. [['name', 'key_word','share_url'], 'string'],
  67. [['id'], 'integer'],
  68. [['id', 'key_word'], 'safe'],
  69. ]);
  70. // echo '<pre>';print_r($params);die;
  71. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  72. //share_url 限制背景图格式:只能png与jpeg,jpg格式
  73. $share_url_info = pathinfo($params['share_url']);
  74. if(!in_array($share_url_info['extension'],['png','jpeg', 'jpg'])){
  75. return $this->error('海报背景请选择png,jpeg格式');
  76. }
  77. // 保存数据
  78. $res = ShareRedpack::setData($this->mall_id, $params);
  79. if ($res === false) return $this->error(ShareRedpack::getStaticError());
  80. $this->success('保存成功');
  81. } else {
  82. $params = $request->Get();
  83. $res = Yii::$app->services->validate->validate($params, [
  84. [['id'], 'required'],
  85. [['id'], 'integer'],
  86. ]);
  87. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  88. $detail = ShareRedpack::getOne([['mall_id' => $this->mall_id], ['id' => $params['id']]], true);
  89. if (!empty($detail['poster_content'])) {
  90. $poster_content = Json::decode($detail['poster_content'], true);
  91. $detail['poster_content'] = $poster_content['share'];
  92. }
  93. $this->success('获取成功', $detail);
  94. }
  95. }
  96. return $this->render($this->action->id);
  97. }
  98. /**
  99. * 数据操作
  100. */
  101. public function actionOperate()
  102. {
  103. if (Yii::$app->request->isAjax) {
  104. if (Yii::$app->request->isPost) {
  105. $params = Yii::$app->request->Post();
  106. $res = Yii::$app->services->validate->validate($params, [
  107. [['id'], 'required'],
  108. [['type'], 'string'],
  109. [['id', 'status'], 'integer'],
  110. [['status'], 'safe'],
  111. ]);
  112. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  113. // 获取海报信息
  114. $detail = ShareRedpack::findOne(['id' => $params['id'], 'mall_id' => $this->mall_id]);
  115. empty($detail) && $this->error('海报查询出错');
  116. // 根据类型进行对应的更改状态或删除操作
  117. switch ($params['type']) {
  118. case 'change_status':
  119. //仅能启用3张海报
  120. if($params['status'] == 1){
  121. $count = ShareRedpack::find()->where(['mall_id'=> $this->mall_id,'status'=>StatusEnum::ENABLED])->count();
  122. if($count>=3){
  123. return $this->error('只能同时启用3张海报');
  124. break;
  125. }
  126. }
  127. $detail->status = $params['status'];
  128. break;
  129. case 'destroy':
  130. $detail->status = StatusEnum::DELETE;
  131. break;
  132. default :
  133. $this->error('类型有误');
  134. break;
  135. }
  136. $res = $detail->save(false);
  137. if($res === false) $this->error('修改失败');
  138. return $this->success('修改成功');
  139. }
  140. }
  141. }
  142. }