PersonalController.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: wniu
  5. * Date: 2022/5/31
  6. * Time: 10:07 下午
  7. */
  8. namespace addons\Pk\backend\controllers;
  9. use addons\Pk\common\enums\PkEnum;
  10. use addons\Pk\common\listeners\OrderPaidListener;
  11. use addons\Pk\common\listeners\OrderFinishListener;
  12. use addons\Pk\common\listeners\UserRegisterListener;
  13. use addons\Pk\common\logic\notify\Notify;
  14. use addons\Pk\common\models\PkActivity;
  15. use addons\Pk\common\models\PkActivityStatistic;
  16. use addons\Pk\common\models\PkDateStatistic;
  17. use addons\Pk\common\models\PkInviteLog;
  18. use addons\Pk\common\models\PkOrder;
  19. use addons\Pk\common\models\PkPerformanceLog;
  20. use addons\Pk\common\models\PkPersonalMember;
  21. use addons\Pk\common\models\PkStatistic;
  22. use common\enums\StatusEnum;
  23. use common\models\user\User;
  24. class PersonalController extends BaseController
  25. {
  26. public $enableCsrfValidation = false;
  27. /**
  28. * 首页
  29. *
  30. * @return string
  31. */
  32. public function actionIndex()
  33. {
  34. $request = \Yii::$app->request;
  35. if ($request->isAjax) {
  36. $params = \Yii::$app->request->get();
  37. $params['mall_id'] = $this->mall_id;
  38. if (isset($params['name']) && $params['name'] != '') {
  39. $where[] = ['like', 'name', $params['name']];
  40. }
  41. if (isset($params['begin_time']) && $params['begin_time'] != '') {
  42. $where[] = ['>=', 'begin_time', $params['begin_time']];
  43. }
  44. if (isset($params['end_time']) && $params['end_time'] != '') {
  45. $where[] = ['<', 'end_time', $params['end_time']];
  46. }
  47. if (isset($params['activity_type']) && $params['activity_type'] != '') {
  48. $where[] = ['activity_type' => $params['activity_type']];
  49. }
  50. if (isset($params['performance_type']) && $params['performance_type'] != '') {
  51. $where[] = ['performance_type' => $params['performance_type']];
  52. }
  53. if (isset($params['status']) && $params['status'] != '') {
  54. $where[] = ['activity_status' => (int) $params['status']];
  55. }
  56. $where[] = ['status' => StatusEnum::ENABLED];
  57. $p_lists = array(
  58. 'where' => $where,
  59. 'order' => "id desc",
  60. 'limit' => $params['limit'],
  61. 'page' => $params['page'],
  62. );
  63. $data = PkActivity::listPage($p_lists, false, true);
  64. if (!empty($data['list'])) {
  65. foreach ($data['list'] as &$item) {
  66. $item['prize'] = json_decode($item['prize'], true);
  67. $item['people_amount'] = $item['member_num'];
  68. if ($item['activity_type'] == PkEnum::ACTIVITY_TYPE_PERSON) {
  69. $item['performance'] = 1;
  70. } else {
  71. $item['performance'] = 0;
  72. }
  73. $new_time = date("Y-m-d H:i:s",time());
  74. if ($item['activity_status'] == 3) {
  75. $item['open_status'] = 3;
  76. } else if ($new_time < $item['begin_time']) {
  77. $item['open_status'] = 0;
  78. } else if ($new_time > $item['begin_time'] && $new_time < $item['end_time']) {
  79. $item['open_status'] = 1;
  80. } else {
  81. $item['open_status'] = 2;
  82. }
  83. if (in_array($item['activity_status'], [0, 1]) && $item['activity_status'] != $item['open_status']) {
  84. // 更新状态
  85. PkActivity::updateAll(['activity_status' => $item['open_status']], ['id' => $item['id']]);
  86. }
  87. }
  88. }
  89. return $this->success("成功", $data);
  90. }
  91. return $this->render('index', []);
  92. }
  93. /**
  94. * 人员列表拉新列表
  95. *
  96. * @return string
  97. */
  98. public function actionUserLog()
  99. {
  100. $retuest = \Yii::$app->request;
  101. if ($retuest->isAjax) {
  102. if ($retuest->isGet) {
  103. $get = \Yii::$app->request->get();
  104. // 检查提交的参数
  105. $res = \Yii::$app->services->validate->validate($get,[
  106. [['nickname','begin_time','end_time','activity_type','user_id','activity_id','limit'], 'safe'],
  107. ]);
  108. if($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  109. if (!empty($get['nickname'])) {
  110. $user_ids = User::find()->select("id")->where(['mall_id' => $this->mall_id])->andWhere(['like', 'nickname', $get['nickname'] . '%', false])->asArray()->column();
  111. if (empty($user_ids)) $this->success('查无此用户');
  112. }
  113. if($get['begin_time']) $log_where[] = ['between', 'created_at', strtotime($get['begin_time']),strtotime($get['end_time'])];
  114. $log_where[] = ['=','share_user_id',$get['user_id']];
  115. $log_where[] = ['=','mall_id',$this->mall_id];
  116. $log_where[] = ['=','activity_id',$get['activity_id']];
  117. $with = 'user';
  118. if($get['activity_type'] == PkEnum::NEW_ACTIVE){//拉新
  119. if($user_ids) $log_where[] = ['in', 'invitee_id', $user_ids];
  120. //获取列表
  121. $list = PkInviteLog::listPage(array('where' => $log_where,'with'=>$with),false,true);
  122. }else{
  123. if($user_ids) $log_where[] = ['in', 'buyer_id', $user_ids];
  124. $list = PkPerformanceLog::listPage(array('where' => $log_where,'with'=>$with),false,true);
  125. }
  126. $activity = PkActivity::getOne([['id'=> $get['activity_id']]],true);
  127. $list['activity'] = $activity;
  128. $list['activity_type'] = $get['activity_type'];
  129. $this->success('获取成功', $list);
  130. }
  131. } else {
  132. return $this->render($this->action->id);
  133. }
  134. }
  135. /**
  136. * 首页
  137. *
  138. * @return string
  139. */
  140. public function actionList()
  141. {
  142. $retuest = \Yii::$app->request;
  143. if ($retuest->isAjax) {
  144. if ($retuest->isGet) {
  145. $get = \Yii::$app->request->get();
  146. // 检查提交的参数
  147. $res = \Yii::$app->services->validate->validate($get,[
  148. [['nickname','begin_time','end_time','activity_type','activity_id','limit'], 'safe'],
  149. ]);
  150. if($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  151. $where = [];
  152. if (!empty($get['nickname'])) {
  153. $user_ids = User::find()->select("id")->where(['mall_id' => $this->mall_id])->andWhere(['like', 'nickname', $get['nickname'] . '%', false])->asArray()->column();
  154. if (empty($user_ids)) $this->success('查无此用户');
  155. $where[] = ['in', 'user_id', $user_ids];
  156. }
  157. if($get['activity_id']) $where[] = ['=', 'activity_id', $get['activity_id']];
  158. if($get['begin_time']) $where[] = ['between', 'created_at', strtotime($get['begin_time']),strtotime($get['end_time'])];
  159. $with = ['user', 'activity'];
  160. $where[] = ['=', 'mall_id', $this->mall_id];
  161. $where[] = ['>=', 'status', StatusEnum::DISABLED];
  162. if($get['activity_type'] == 1){
  163. $order = 'new_user_num desc';
  164. }else{
  165. $order = 'order_money_num desc';
  166. }
  167. $params = array('where' => $where,'with' => $with,'order'=>$order, 'limit' => $get['limit']);
  168. $list = PkActivityStatistic::listPage($params, false, true);
  169. $list['activity_type'] = $get['activity_type'];
  170. $this->success('获取成功', $list);
  171. }
  172. } else {
  173. return $this->render($this->action->id);
  174. }
  175. }
  176. public function actionPatch()
  177. {
  178. $params = \Yii::$app->request->post();
  179. $params['mall_id'] = $this->mall_id;
  180. // $this->checkRequireKey($params, ['id']);
  181. // $params = $this->filterPost($params, ['mall_id', 'is_enable', 'id']);
  182. $res = PkActivity::setData($params);
  183. if ($res == false) return $this->error(PkActivity::getStaticError());
  184. return $this->success('操作成功', []);
  185. }
  186. public function actionDestroy()
  187. {
  188. $params = \Yii::$app->request->get();
  189. $model = PkActivity::getOne([['id' => $params['id']]]);
  190. $new_time = date("Y-m-d H:i:s",time());
  191. if ($model->activity_status == StatusEnum::ENABLED && $new_time > $model->begin_time && $new_time < $model->end_time) {
  192. return $this->error("只有未开始和已取消的状态下,才可编辑");
  193. }
  194. if ($model == false) return $this->error(PkActivity::getStaticError());
  195. $model->status = StatusEnum::DELETE;
  196. $state = $model->save();
  197. $num = -1;
  198. $params['activity_num'] = $num;
  199. $params['date'] = date('Ymd');
  200. $params['mall_id'] = $this->mall_id;
  201. PkDateStatistic::setData($params);
  202. PkStatistic::setData($params);
  203. if ($state == false) return $this->error(PkActivity::getStaticError());
  204. return $this->success('操作成功', []);
  205. }
  206. public function actionPersonalAdd()
  207. {
  208. $request = \Yii::$app->request;
  209. if ($request->isAjax) {
  210. $params = \Yii::$app->request->get();
  211. $params['mall_id'] = $this->mall_id;
  212. $model = PkActivity::getOne([['id' => $params['id']]]);
  213. if (!$model) {
  214. return $this->error("活动数据不存在");
  215. }
  216. $model->prize = json_decode($model->prize, true);
  217. return $this->success("成功", $model);
  218. }
  219. return $this->render('person-add');
  220. }
  221. //测试拉新活动
  222. public function actionTest()
  223. {
  224. $params = \Yii::$app->request->post();
  225. $status = $params['status'];
  226. if($status == 1){
  227. $user['user_id'] = $params['name'];
  228. UserRegisterListener::async_handle($user);
  229. }
  230. if($status == 2){
  231. $order['id'] = $params['name'];
  232. OrderPaidListener::async_handle($order);
  233. }
  234. if($status == 3){
  235. $order['id'] = $params['name'];
  236. OrderFinishListener::async_handle($order);
  237. }
  238. }
  239. }