DefaultController.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. <?php
  2. namespace addons\IssueCoupons\backend\controllers;
  3. use addons\Coupon\common\models\AddonsCoupon;
  4. use addons\ElectronCoupon\common\models\ElectronCoupon;
  5. use addons\IssueCoupons\common\enums\IssueCouponsEnum;
  6. use addons\IssueCoupons\common\logic\Send;
  7. use addons\IssueCoupons\common\models\IssueCouponsRule;
  8. use common\enums\AddonsEnum;
  9. use common\enums\RabbitMqEnum;
  10. use common\enums\StatusEnum;
  11. use common\models\mall\MallAddons;
  12. use common\models\user\User;
  13. use common\models\user\UserLabel;
  14. use common\models\user\UserLevel;
  15. use Yii;
  16. use common\controllers\AddonsController;
  17. use yii\db\Exception;
  18. /**
  19. * 默认控制器
  20. *
  21. * Class DefaultController
  22. * @package addons\IssueCoupons\backend\controllers
  23. */
  24. class DefaultController extends BaseController
  25. {
  26. public $enableCsrfValidation = false;
  27. /**
  28. * 获取配置
  29. * @Author: ltm
  30. * @DateTime: 2022/06/28 0015 10:43
  31. * @Copyright: copyright (c) 2021 广东七件事集团
  32. * @return array|string|\yii\web\Response
  33. */
  34. public function actionIndex()
  35. {
  36. $retuest = Yii::$app->request;
  37. if ($retuest->isAjax) {
  38. if ($retuest->isPost) {
  39. $params = Yii::$app->request->post();
  40. // 检查提交的参数
  41. $res = Yii::$app->services->validate->validate($params,[
  42. [['name'], 'string'],
  43. [['create_time'],'safe']
  44. ]);
  45. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  46. $where = [];
  47. $time = time();
  48. !empty($params['name']) && $where[] = ['like', 'name', $params['name']];
  49. if($params['create_time']) $where[] = ['between', 'created_at', strtotime($params['create_time'][0]),strtotime($params['create_time'][1])];
  50. $where[] = ['=', 'mall_id', $this->mall_id];
  51. $where[] = ['>=', 'status', StatusEnum::DISABLED];
  52. $order = 'id desc';
  53. $params = array('where' => $where, 'order'=>$order, 'limit' => $params['limit']);
  54. $list = IssueCouponsRule::listPage($params, false, true);
  55. if($list['list']){
  56. foreach ($list['list'] as $k => $v){
  57. if($v['coupon']){
  58. $coupon = json_decode($v['coupon'],true);
  59. if($coupon){
  60. $coupon_array = array_sum(array_column($coupon,'num'));
  61. $list['list'][$k]['coupon_num'] = $coupon_array;
  62. }
  63. }
  64. if($v['e_coupon']){
  65. $e_coupon = json_decode($v['e_coupon'],true);
  66. if($e_coupon){
  67. $e_coupon_array = array_sum(array_column($e_coupon,'num'));
  68. $list['list'][$k]['e_coupon_num'] = $e_coupon_array;
  69. }
  70. }
  71. }
  72. }
  73. $list['now_time'] = time();
  74. $this->success('获取成功', $list);
  75. }
  76. } else {
  77. return $this->render($this->action->id);
  78. }
  79. }
  80. /**
  81. * 获取配置
  82. * @Author: ltm
  83. * @DateTime: 2022/06/28 0015 10:43
  84. * @Copyright: copyright (c) 2021 广东七件事集团
  85. * @return array|string|\yii\web\Response
  86. */
  87. public function actionEdit()
  88. {
  89. try {
  90. $request = Yii::$app->request;
  91. if ($request->isAjax) {
  92. // 提交等级内容
  93. if ($request->isPost) {
  94. $params = Yii::$app->request->post();
  95. $res = Yii::$app->services->validate->validate($params, [
  96. [['timing_time','name','grant_object','redpack','redpack_remark','score','score_remark','balance'], 'safe'],
  97. [['balance_remark','grant_object_content','coupon','e_coupon','id'], 'safe'],
  98. ]);
  99. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  100. if(!$params['grant_object_content']) $params['grant_object_content'] = 1;
  101. $params['mall_id'] = $this->mall_id;
  102. $params['timing_time'] = strtotime($params['timing_time']);
  103. $params = IssueCouponsRule::exceptNullVal($params);
  104. if(isset($params['status']) && !in_array($params['status'],[StatusEnum::DISABLED,StatusEnum::ENABLED,StatusEnum::DELETE])) throw new Exception("参数错误");;
  105. //var_dump($params);die;
  106. $params['coupon'] = json_encode($params['coupon']);
  107. $params['e_coupon'] = json_encode($params['e_coupon']);
  108. if($params['grant_object_content']) $params['grant_object_content'] = json_encode($params['grant_object_content']);
  109. $res = IssueCouponsRule::setData($params);
  110. if ($res === false) throw new Exception(IssueCouponsRule::getStaticError());
  111. return $this->success('操作成功');
  112. }else{
  113. $params = Yii::$app->request->get();
  114. $res = Yii::$app->services->validate->validate($params, [
  115. [['id'], 'integer'],
  116. ]);
  117. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  118. $where[] = ['=', 'mall_id', $this->mall_id];
  119. $where[] = ['>=', 'status', StatusEnum::DISABLED];
  120. $where[] = ['=', 'id', $params['id']];
  121. $data['detail'] = IssueCouponsRule::getOne($where,true);
  122. $timing_time = $data['detail']['timing_time'];
  123. $data['detail']['timing_time'] = date('Y-m-d H:i:s',$timing_time);
  124. $data['detail']['coupon'] = json_decode($data['detail']['coupon']);
  125. if(is_array($data['detail']['coupon'])){
  126. $coupon_ids = array_column($data['detail']['coupon'],'id');
  127. $coupon_ids_data = array_column($data['detail']['coupon'],'num','id');
  128. if($coupon_ids){
  129. $coupon_where[] = ['in','id',$coupon_ids];
  130. $coupon_data = AddonsCoupon::lists(['where'=> $coupon_where,'limit'=>'2000'],true);
  131. if($coupon_data){
  132. foreach ($coupon_data as $k=>$v){
  133. $coupon_data[$k]['num'] = $coupon_ids_data[$v['id']];
  134. $coupon_data[$k]['relevant_id'] = $v['id'];
  135. $coupon_data[$k]['discount_method'] = $v['type']==1? $v['discount'].'折' : '优惠'.$v['sub_price'].'元';
  136. }
  137. }
  138. $data['coupon_select_list'] = $coupon_data;
  139. }
  140. }
  141. $data['detail']['e_coupon'] = json_decode($data['detail']['e_coupon']);
  142. if(is_array($data['detail']['e_coupon'])){
  143. $e_coupon_ids = array_column($data['detail']['e_coupon'],'id');
  144. $e_coupon_ids_data = array_column($data['detail']['e_coupon'],'num','id');
  145. if($e_coupon_ids){
  146. $e_coupon_where[] = ['in','id',$e_coupon_ids];
  147. $e_coupon_data = ElectronCoupon::lists(['where'=> $e_coupon_where,'limit'=>'2000'],true);
  148. //var_dump($where);
  149. if($e_coupon_data){
  150. foreach ($e_coupon_data as $k=>$v){
  151. $e_coupon_data[$k]['num'] = $e_coupon_ids_data[$v['id']];
  152. $e_coupon_data[$k]['coupon_id'] = $v['id'];
  153. }
  154. }
  155. $data['e_coupon_select_list'] = $e_coupon_data;
  156. }
  157. }
  158. $data['detail']['grant_object_content'] = json_decode($data['detail']['grant_object_content']);
  159. //var_dump($data['detail']['goods_ids']);
  160. $data['picker_date'] = date('Y-m-d', $timing_time);
  161. $data['picker_time'] = date('H:i', $timing_time);
  162. $this->success('获取成功', $data);
  163. }
  164. }
  165. } catch (\Exception $e) {
  166. return $this->error($e->getMessage(), []);
  167. }
  168. $has_coupon = MallAddons::isInstall($this->mall_id,AddonsEnum::ADDONS_NAME_COUPON);
  169. $has_e_coupon = MallAddons::isInstall($this->mall_id,IssueCouponsEnum::ADDONSELETRONCOUPON);
  170. $has_redpack = MallAddons::isInstall($this->mall_id,IssueCouponsEnum::ADDONSREDPACK);
  171. return $this->render($this->action->id,['has_coupon' => $has_coupon,
  172. 'has_e_coupon' => $has_e_coupon,
  173. 'has_redpack' => $has_redpack]);
  174. }
  175. /**
  176. * 获取配置
  177. * @Author: ltm
  178. * @DateTime: 2022/06/28 0015 10:43
  179. * @Copyright: copyright (c) 2021 广东七件事集团
  180. * @return array|string|\yii\web\Response
  181. */
  182. public function actionGetObject()
  183. {
  184. $request = Yii::$app->request;
  185. if ($request->isGet) {
  186. $params = Yii::$app->request->get();
  187. $res = Yii::$app->services->validate->validate($params, [
  188. [['type','user_ids'], 'integer'],
  189. ]);
  190. $list = [];
  191. switch ($params['type']){
  192. case 2:
  193. $list = UserLevel::getUserLevelArr($this->mall_id);
  194. $data = [];
  195. if($list){
  196. foreach ($list as $k => $v){
  197. $array['id'] = $k;
  198. $array['name'] = $v;
  199. $data[] = $array;
  200. }
  201. }
  202. break;
  203. case 3:
  204. $where[] = ['=', 'status', StatusEnum::ENABLED];
  205. $where[] = ['=', 'mall_id', $this->mall_id];
  206. $params['where'] = $where;
  207. $list = UserLabel::lists($params,true);
  208. if($list){
  209. foreach ($list as $k => $v){
  210. $array['id'] = $v['id'];
  211. $array['name'] = $v['name'];
  212. $data[] = $array;
  213. }
  214. }
  215. break;
  216. case 4:
  217. if($params['user_ids']){
  218. //$user_ids = array_column($params['user_ids'],'id');
  219. if(is_array($params['user_ids'])){
  220. $user_where[] = ['in','id',$params['user_ids']];
  221. $user_data = User::lists(['where'=>$user_where,'select'=>'id,nickname,username,mobile,avatar_url','limit'=>'2000'],true);
  222. if($user_data){
  223. foreach ($user_data as $k=>$v){
  224. $array = [];
  225. $array['id'] = $v['id'];
  226. $array['name'] = $v['nickname']?$v['nickname']:$v['username'];
  227. $data[] = $array;
  228. }
  229. }
  230. }
  231. }
  232. break;
  233. }
  234. $this->success('获取成功', $data);
  235. }
  236. }
  237. /**
  238. * 获取商品独立设置的优惠券设置
  239. * @Author: ltm
  240. * @DateTime: 2022/7/4 15:53
  241. * @Copyright: copyright (c) 2021 xuan-e
  242. * @return mixed|void
  243. */
  244. public function actionSelectUser()
  245. {
  246. if (Yii::$app->request->isAjax && Yii::$app->request->isPost) {
  247. $params = Yii::$app->request->post();
  248. $params['where'][] = ['mall_id' => $this->mall_id];
  249. $params['where'][] = ['status' => [StatusEnum::ENABLED]];
  250. if (!empty($params['keyword'])) $params['where'][] = ['like', 'nickname', $params['keyword']];
  251. if (!empty($params['mobile'])) $params['where'][] = ['=', 'mobile', $params['mobile']];
  252. if (!empty($params['user_id'])) $params['where'][] = ['=', 'id', $params['user_id']];
  253. $params['order'] = 'id desc';
  254. $params['select'] = 'id,nickname,username,mobile,avatar_url';
  255. $list = User::listPage($params);
  256. return $this->success('操作成功', $list);
  257. }
  258. }
  259. /**
  260. * 获取配置
  261. * @Author: ltm
  262. * @DateTime: 2022/06/28 0015 10:43
  263. * @Copyright: copyright (c) 2021 广东七件事集团
  264. * @return array|string|\yii\web\Response
  265. */
  266. public function actionHandle()
  267. {
  268. $request = Yii::$app->request;
  269. if ($request->isAjax && $request->isPost) {
  270. $params = Yii::$app->request->post();
  271. // 检查提交的参数
  272. $res = Yii::$app->services->validate->validate($params,[
  273. [['item_id','id','status'], 'integer']
  274. ]);
  275. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  276. $params['mall_id'] = $this->mall_id;
  277. // 修改数据
  278. $res = IssueCouponsRule::setData($params);
  279. if($res == false) return $this->error("修改失败" . IssueCouponsRule::getStaticError());
  280. return $this->success("修改成功");
  281. }
  282. }
  283. /**
  284. * 进行手动执行发放
  285. * @Author: ltm
  286. * @DateTime: 2022/06/28 0015 10:43
  287. * @Copyright: copyright (c) 2021 广东七件事集团
  288. * @return array|string|\yii\web\Response
  289. */
  290. public function actionSend()
  291. {
  292. $request = Yii::$app->request;
  293. if ($request->isAjax && $request->isPost) {
  294. $params = Yii::$app->request->post();
  295. // 检查提交的参数
  296. $res = Yii::$app->services->validate->validate($params,[
  297. [['id','status'], 'integer']
  298. ]);
  299. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  300. $params['mall_id'] = $this->mall_id;
  301. // 修改数据
  302. // $send_res =new Send();
  303. // $res = $send_res->handsend($params);
  304. $data['id'] = $params['id'];
  305. $data['mall_id'] = $params['mall_id'];
  306. Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_TASK, RabbitMqEnum::TASK_QUEUE, $data, Send::class, 'handsend');
  307. if($res == false) return $this->error("修改失败" . IssueCouponsRule::getStaticError());
  308. return $this->success("操作成功");
  309. }
  310. }
  311. public function actionTest(){
  312. // $send_res =new Send();
  313. // $res = $send_res->execute();
  314. Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_TASK, RabbitMqEnum::TASK_QUEUE, [], Send::class, 'execute');
  315. }
  316. }