ActiveController.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <?php
  2. namespace backend\controllers;
  3. use common\services\xhCommonService;
  4. use Yii;
  5. use common\components\util;
  6. use common\services\xhActiveTicketClassService;
  7. use common\services\xhActiveService;
  8. use common\models\xhActive;
  9. use common\models\xhActiveOrder;
  10. use common\components\qrCodeUtil;
  11. use common\components\page;
  12. use common\services\xhWxOpenService;
  13. use common\services\xhAdminToMerchantService;
  14. use common\services\xhTMessageService;
  15. use common\services\xhActiveOrderService;
  16. use common\components\chuanglanSMS;
  17. class ActiveController extends BackendController
  18. {
  19. public function actionList()
  20. {
  21. $get = Yii::$app->request->get();
  22. $query = xhActive::find();
  23. $query->where(['merchantId' =>$this->merchantId]);
  24. $countQuery = clone $query;
  25. $count = $countQuery->count();
  26. $page = isset($get['page']) ? $get['page'] : 1;
  27. $pageSize = 20;
  28. $offset = ($page - 1) * $pageSize;
  29. $models = $query->offset($offset)->orderBy('id desc')->limit($pageSize)->asArray()->all();
  30. $page = new page($count,$page,$pageSize);
  31. $paging = $page->fpage();
  32. $now = time();
  33. return $this->render('list', ['models' => $models,'paging' => $paging,'now'=>$now]);
  34. }
  35. public function actionJoin()
  36. {
  37. $get = Yii::$app->request->get();
  38. $id = isset($get['id']) ? $get['id'] : 0;
  39. $active = xhActiveService::getById($id);
  40. if($active['merchantId'] != $this->merchantId){
  41. util::stop('非法访问');
  42. }
  43. $query = xhActiveOrder::find();
  44. $query->where(['activeId' =>$id]);
  45. $countQuery = clone $query;
  46. $count = $countQuery->count();
  47. $page = isset($get['page']) ? $get['page'] : 1;
  48. $pageSize = 1000;
  49. $offset = ($page - 1) * $pageSize;
  50. $models = $query->offset($offset)->orderBy('id desc')->limit($pageSize)->asArray()->all();
  51. $page = new page($count,$page,$pageSize);
  52. $paging = $page->fpage();
  53. return $this->render('join',['models' => $models,'paging' => $paging,'active'=>$active]);
  54. }
  55. public function actionPrint()
  56. {
  57. $get = Yii::$app->request->get();
  58. $id = isset($get['id']) ? $get['id'] : 0;
  59. $active = xhActiveService::getById($id);
  60. if($active['merchantId'] != $this->merchantId){
  61. util::stop('非法访问');
  62. }
  63. $query = xhActiveOrder::find();
  64. $query->where(['activeId' =>$id]);
  65. if($active['needCheck'] == 1){
  66. $query->andWhere(['passStatus'=>1]);
  67. }
  68. $countQuery = clone $query;
  69. $count = $countQuery->count();
  70. $page = isset($get['page']) ? $get['page'] : 1;
  71. $pageSize = 1000;
  72. $offset = ($page - 1) * $pageSize;
  73. $list = $query->offset($offset)->orderBy('id desc')->limit($pageSize)->asArray()->all();
  74. $page = new page($count,$page,$pageSize);
  75. $paging = $page->fpage();
  76. return $this->renderPartial('print',['list' => $list,'active' => $active]);
  77. }
  78. public function actionAdd()
  79. {
  80. return $this->render('add');
  81. }
  82. public function actionSaveAdd()
  83. {
  84. $post = Yii::$app->request->post();
  85. $now = time();
  86. $date = date("Y-m-d H:i:s",$now);
  87. $post['allowNum'] = isset($post['allowNum']) && !empty($post['allowNum']) ? $post['allowNum'] : 0;
  88. $startTime = isset($post['startTime']) && !empty($post['startTime']) ? strtotime($post['startTime']) : $now + 600;
  89. $endTime = isset($post['endTime']) && !empty($post['endTime']) ? strtotime($post['endTime']) : $now + 86400;
  90. $post['startTime'] = $startTime;
  91. $post['endTime'] = $endTime;
  92. $post['adminId'] = $this->adminId;
  93. $post['createTime'] = $date;
  94. $post['addTime'] = $now;
  95. $post['merchantId'] = $this->merchantId;
  96. $post['deadline'] = isset($post['deadline']) && !empty($post['deadline']) ? strtotime($post['deadline']) : $startTime;
  97. $price = isset($post['price']) && !empty($post['price']) ? $post['price'] : 0;
  98. unset($post['price']);
  99. unset($post['_csrf']);
  100. unset($post['fee']);
  101. if($now > $post['startTime']){
  102. util::failInfo('开始时间小于当前时间');
  103. }
  104. if($post['startTime'] > $post['endTime']){
  105. util::failInfo('结束时间小于开始时间');
  106. }
  107. if($now > $post['deadline']){
  108. util::failInfo('报名截止时间小于当前时间');
  109. }
  110. $active = xhActiveService::add($post);
  111. $id = $active['id'];
  112. $ticketData = [
  113. 'price' =>$price,
  114. 'merchantId' => $this->merchantId,
  115. 'activeId' =>$id,
  116. 'name' =>'门票',
  117. 'createTime' =>date("Y-m-d H:i:s")
  118. ];
  119. $ticket = xhActiveTicketClassService::add($ticketData);
  120. $ticketId = $ticket['id'];
  121. $actData = ['classIdList' =>$ticketId];
  122. xhActiveService::updateById($id, $actData);
  123. util::successInfo();
  124. }
  125. public function actionEdit(){
  126. $id = Yii::$app->request->get('id');
  127. $active = xhActiveService::getById($id);
  128. $this->merchantCheck($active);//检测merchantId数据权限
  129. //票价
  130. $activeTickClass = xhActiveTicketClassService::getById($active['classIdList']);
  131. //dump($activeTickClass);
  132. $active['price'] = $activeTickClass['price'];
  133. $active['activeTickClassId'] = $activeTickClass['id'];
  134. return $this->render('edit', ['active'=>$active]);
  135. }
  136. public function actionUpdate(){
  137. $post = Yii::$app->request->post();
  138. $id = $post['id'];
  139. $active = xhActiveService::getById($id);
  140. $this->merchantCheck($active);//检测merchantId数据权限
  141. //活动更新
  142. $startTime = isset($post['startTime']) && !empty($post['startTime']) ? strtotime($post['startTime']) : $now + 600;
  143. $endTime = isset($post['endTime']) && !empty($post['endTime']) ? strtotime($post['endTime']) : $now + 86400;
  144. $post['startTime'] = $startTime;
  145. $post['endTime'] = $endTime;
  146. $post['deadline'] = isset($post['deadline']) && !empty($post['deadline']) ? strtotime($post['deadline']) : $startTime;
  147. xhActiveService::updateById($id, $post);
  148. //活动票价更新
  149. xhActiveTicketClassService::updateById($post['activeTickClassId'], ['price'=>$post['price']]);
  150. util::successInfo('活动更新成功!');
  151. }
  152. public function actionPassCheck(){
  153. $post = Yii::$app->request->post();
  154. $id = $post['id'];
  155. $action = $post['action'];
  156. $activeOrder = xhActiveOrderService::getById($id);
  157. if(empty($activeOrder)){
  158. $this->error();
  159. }
  160. if($action == 'pass' && $activeOrder['passStatus'] == 1){
  161. util::failInfo('已是通过状态', 'error');
  162. }
  163. if($action == 'failPass' && $activeOrder['passStatus'] == -1){
  164. util::failInfo('已是不通过状态', 'error');
  165. }
  166. //更改状态
  167. $passStatus = 0;
  168. if($action == 'pass'){
  169. $passStatus = 1;
  170. }else if($action == 'failPass'){
  171. $passStatus = -1;
  172. }else{
  173. echo '未知道动作状态';
  174. die;
  175. }
  176. $data = ['passStatus' => $passStatus];
  177. $re = xhActiveOrderService::updateById($id, $data);
  178. /*dump($data);
  179. dump($re);die;*/
  180. $activity = xhActiveService::getById($activeOrder['activeId']);
  181. $mobile = $activeOrder['bookMobile'];
  182. if($action == 'pass'){
  183. //发送短信
  184. xhCommonService::sendMobileMsg($mobile, '恭喜您,您报名的课程【'.$activity['title'].'】审核通过了,欢迎您的参加!',$this->merchant);
  185. util::successInfo('更新成功', 'success');
  186. }
  187. if($action == 'failPass'){
  188. xhCommonService::sendMobileMsg($mobile, '温馨提示:您报名的课程【'.$activity['title'].'】已经满员了哦,敬请期待下次课程!',$this->merchant);
  189. util::successInfo('更新成功', 'success');
  190. }
  191. }
  192. /**
  193. * 结束报名
  194. */
  195. public function actionFinish()
  196. {
  197. $get = Yii::$app->request->get();
  198. $id = isset($get['id']) ? $get['id'] : 0;
  199. $active = xhActiveService::getById($id);
  200. if($active['merchantId'] != $this->merchantId){
  201. util::failInfo('非法访问');
  202. }
  203. $now = time();
  204. xhActiveService::updateById($id, ['deadline'=>$now]);
  205. util::successInfo();
  206. }
  207. /**
  208. * 生成活动链接的二维码地址
  209. */
  210. public function actionShowActQrcode()
  211. {
  212. $get = Yii::$app->request->get();
  213. $id = isset($get['id']) ? $get['id'] : 0;
  214. $url = $this->frontUrl.'/pay/active?id='.$id.'&account='.$this->merchant['id'];
  215. $logo = Yii::getAlias("@app").'/../images'.$this->merchant['logo'];//取商家的logo
  216. $imgUrl = qrCodeUtil::generate($url,'backend_active_url_'.$this->merchantId.'_'.$id,$logo);
  217. $act = xhActiveService::getById($id);
  218. if($act['merchantId'] != $this->merchantId){
  219. util::stop('非法访问');
  220. }
  221. xhActiveService::updateById($id, ['urlQrCode' => $imgUrl]);
  222. util::successInfo('操作成功','A0001',['url' =>$imgUrl]);
  223. }
  224. public function actionSendActiveUrl()
  225. {
  226. $get = Yii::$app->request->get();
  227. $id = isset($get['activeId']) ? $get['activeId'] : 0;
  228. $active = xhActiveService::getById($id);
  229. $name = $active['title'];
  230. $url = Yii::$app->params['frontUrl']."/pay/active?id={$id}&account=".$this->merchant['id'];
  231. $admin = xhAdminToMerchantService::getAdminByMerchantId($this->merchantId);
  232. $openMerchant = xhWxOpenService::getMerchant();
  233. xhTMessageService::sendUrl($url,$name, $openMerchant, $admin);
  234. util::successInfo('已发送');
  235. }
  236. }