DefaultController.php 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660
  1. <?php
  2. namespace addons\MembersCard\backend\controllers;
  3. use Yii;
  4. use common\controllers\AddonsController;
  5. use addons\MembersCard\common\enums\MembersCardEnum;
  6. use common\models\user\UserLevel;
  7. use addons\MembersCard\common\models\MembersCard;
  8. use addons\MembersCard\common\models\MembersCardGive;
  9. use addons\MembersCard\common\models\MembersCardUsedLog;
  10. use addons\MembersCard\common\models\CommissionLog;
  11. use common\enums\StatusEnum;
  12. use common\models\user\User;
  13. use common\models\order\Order;
  14. use addons\Store\common\models\Store;
  15. use addons\Store\common\models\StoreCashierOrder;
  16. use common\models\order\OrderDetail;
  17. /**
  18. * 默认控制器
  19. *
  20. * Class DefaultController
  21. * @package addons\MembersCard\backend\controllers
  22. */
  23. class DefaultController extends BaseController
  24. {
  25. public $enableCsrfValidation = false;
  26. /**
  27. * 首页
  28. *
  29. * @return string
  30. */
  31. public function actionIndex()
  32. {
  33. if (\Yii::$app->request->isAjax) {
  34. if (\Yii::$app->request->isGet) {
  35. $get = \Yii::$app->request->get();
  36. $get['mall_id'] = $this->mall_id;
  37. $params = [];
  38. if(!empty($get['keyword'])){
  39. $params['where'][] = ['like','name',$get['keyword']];
  40. }
  41. $params['where'][] = ['=', 'mall_id', $this->mall_id];
  42. $params['where'][] = ['in', 'status', [StatusEnum::ENABLED]];
  43. $params['limit'] = 10;
  44. $params['order'] = 'created_at desc';
  45. try{
  46. $pageData = MembersCard::listPage($params, false);
  47. }catch(\Exception $e){
  48. return $this->fail('获取数据失败');
  49. }
  50. if ($pageData === false) return $this->error(MembersCard::getStaticError());
  51. return $this->success('操作成功', $pageData);
  52. }
  53. }
  54. return $this->render('index');
  55. }
  56. /**
  57. * 亲友卡编辑
  58. *
  59. * @return string
  60. */
  61. public function actionEdit()
  62. {
  63. if (\Yii::$app->request->isAjax) {
  64. if (\Yii::$app->request->isGet) {
  65. // 反显商品信息
  66. $get = Yii::$app->request->get();
  67. $res = Yii::$app->services->validate->validate($get, [[['id'], 'integer']]);
  68. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  69. $detail = [];
  70. if($get['id']){
  71. $membersCard = MembersCard::find()->where(['id'=>$get['id']])->asArray()->one();
  72. if($membersCard){
  73. $membersCard['member_limit'] = json_decode($membersCard['member_limit'],true) ?? [];
  74. }
  75. $detail = $membersCard;
  76. }
  77. $levels = UserLevel::getUserLevel([['mall_id' => $this->mall_id],['status'=>StatusEnum::ENABLED]], [], true, 'id,level,name');
  78. return $this->success('操作成功',compact('detail', 'levels'));
  79. } else {
  80. // 编辑商品
  81. $form = \Yii::$app->request->post('form');
  82. $id = \Yii::$app->request->post('id');
  83. $form['mall_id'] = $this->mall['id'];
  84. if($id){
  85. $form['id'] = $id;
  86. }
  87. $form['member_limit'] = $form['member_limit'] ? json_encode($form['member_limit']) : '';
  88. $res = MembersCard::setData($form);
  89. if ($res === false) return $this->error(MembersCard::getStaticError());
  90. return $this->success('操作成功');
  91. }
  92. }
  93. return $this->render($this->action->id);
  94. }
  95. public function actionList()
  96. {
  97. if (\Yii::$app->request->isAjax) {
  98. if (\Yii::$app->request->isGet) {
  99. $get = \Yii::$app->request->get();
  100. $get['mall_id'] = $this->mall_id;
  101. $params = [];
  102. if (!empty($get['keyword'])) {
  103. $card_list = MembersCard::lists(['where' => [['mall_id' => $this->mall_id], [
  104. 'or',
  105. ['like', 'name', $get['keyword']]
  106. ]], 'select' => 'id']);
  107. $card_ids = array_column($card_list, 'id');
  108. $params['where'][] = ['in', 'card_id', $card_ids];
  109. }
  110. if (!empty($get['keyword2'])) {
  111. $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [
  112. 'or',
  113. ['=', 'id', $get['keyword2']],
  114. ['like', 'username', $get['keyword2']],
  115. ['like', 'nickname', $get['keyword2']],
  116. ['like', 'mobile', $get['keyword2']]
  117. ]], 'select' => 'id']);
  118. $user_ids = array_column($user_list, 'id');
  119. $params['where'][] = ['in', 'user_id', $user_ids];
  120. }
  121. if(!empty($get['type'])){
  122. if($get['type'] == 1){
  123. $params['where'][] = ['=', 'parent_card_id', 0];
  124. }elseif($get['type'] == 2){
  125. $params['where'][] = ['!=', 'parent_card_id', 0];
  126. }
  127. }
  128. if (!empty($get['start'])) $params['where'][] = ['>=', 'created_at', strtotime($get['start'] . ' 00:00:00')];
  129. if (!empty($get['end'])) $params['where'][] = ['<', 'created_at', strtotime($get['end'] . ' 00:00:00')];
  130. $params['where'][] = ['=', 'mall_id', $this->mall_id];
  131. $params['where'][] = ['in', 'status', [StatusEnum::ENABLED]];
  132. $params['limit'] = 10;
  133. $params['order'] = 'created_at desc';
  134. try{
  135. $pageData = MembersCardGive::listPage($params, false);
  136. }catch(\Exception $e){
  137. return $this->fail('获取数据失败');
  138. }
  139. if ($pageData === false) return $this->error(MembersCard::getStaticError());
  140. if (!empty($pageData['list'])) {
  141. $user_id_arr = array_column($pageData['list'], 'user_id');
  142. $user_list = User::lists(['where' => [['id' => $user_id_arr]], 'select' => 'id,nickname,avatar_url,mobile,parent_id']);
  143. $user_arr = [];
  144. foreach ($user_list as $item) {
  145. $user_arr[$item['id']] = $item;
  146. }
  147. $card_ids = array_column($pageData['list'], 'card_id');
  148. $card_list = MembersCard::lists(['where' => [['id' => $card_ids]], 'select' => 'id,name,background_url','index'=>'id']);
  149. foreach ($pageData['list'] as &$v) {
  150. $v['nickname'] = $v['avatar_url'] = $v['parent_id'] = $v['parent_name'] = $v['mobile'] = '';
  151. if (isset($user_arr[$v['user_id']])) {
  152. $v['mobile'] = $user_arr[$v['user_id']]['mobile'];
  153. $v['nickname'] = $user_arr[$v['user_id']]['nickname'];
  154. $v['avatar_url'] = $user_arr[$v['user_id']]['avatar_url'];
  155. }
  156. $v['background_url'] = $v['name'] = '';
  157. if(isset($card_list[$v['card_id']])){
  158. $v['name'] = $card_list[$v['card_id']]['name'];
  159. $v['background_url'] = $card_list[$v['card_id']]['background_url'];
  160. }
  161. }
  162. }
  163. return $this->success('操作成功', $pageData);
  164. }
  165. }
  166. return $this->render('list',[
  167. ]);
  168. }
  169. public function actionIncomeList()
  170. {
  171. if (\Yii::$app->request->isAjax) {
  172. if (\Yii::$app->request->isGet) {
  173. $get = \Yii::$app->request->get();
  174. $get['mall_id'] = $this->mall_id;
  175. $params = [];
  176. if (!empty($get['keyword'])) {
  177. $order_list = Order::lists(['where' => [['mall_id' => $this->mall_id], [
  178. 'or',
  179. ['=', 'order_no', $get['keyword']]
  180. ]], 'select' => 'id']);
  181. $order_ids = array_column($order_list, 'id');
  182. $params['where'][] = ['in', 'order_id', $order_ids];
  183. }
  184. if (!empty($get['keyword2'])) {
  185. $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [
  186. 'or',
  187. ['=', 'id', $get['keyword2']],
  188. ['like', 'username', $get['keyword2']],
  189. ['like', 'nickname', $get['keyword2']],
  190. ['like', 'mobile', $get['keyword2']]
  191. ]], 'select' => 'id']);
  192. $user_ids = array_column($user_list, 'id');
  193. $params['where'][] = ['in', 'user_id', $user_ids];
  194. }
  195. if (!empty($get['keyword3'])) {
  196. $store_list = Store::lists(['where' => [['mall_id' => $this->mall_id], [
  197. 'or',
  198. ['like', 'store_name', $get['keyword3']]
  199. ]], 'select' => 'id']);
  200. $store_ids = array_column($store_list, 'id');
  201. $params['where'][] = ['in', 'store_id', $store_ids];
  202. }
  203. if(!empty($get['type'])){
  204. if($get['type'] == 1){
  205. $params['where'][] = ['=', 'is_frozen', 0];
  206. }elseif($get['type'] == 2){
  207. $params['where'][] = ['=', 'is_frozen', 1];
  208. }
  209. }
  210. if (!empty($get['start'])) $params['where'][] = ['>=', 'created_at', strtotime($get['start'] . ' 00:00:00')];
  211. if (!empty($get['end'])) $params['where'][] = ['<', 'created_at', strtotime($get['end'] . ' 00:00:00')];
  212. $params['where'][] = ['=', 'mall_id', $this->mall_id];
  213. $params['where'][] = ['in', 'status', [StatusEnum::ENABLED]];
  214. $params['limit'] = 10;
  215. $params['order'] = 'created_at desc';
  216. try{
  217. $pageData = CommissionLog::listPage($params, false);
  218. }catch(\Exception $e){
  219. return $this->fail('获取数据失败');
  220. }
  221. if ($pageData === false) return $this->error(MembersCard::getStaticError());
  222. if (!empty($pageData['list'])) {
  223. $user_id_arr = array_column($pageData['list'], 'user_id');
  224. $user_id_arrs = array_column($pageData['list'], 'reward_user_id');
  225. $user_id_arr = array_merge($user_id_arr,$user_id_arrs);
  226. $user_list = User::lists(['where' => [['id' => $user_id_arr]], 'select' => 'id,nickname,avatar_url,mobile,parent_id']);
  227. $user_arr = [];
  228. foreach ($user_list as $item) {
  229. $user_arr[$item['id']] = $item;
  230. }
  231. foreach ($pageData['list'] as &$v) {
  232. $v['nickname'] = $v['avatar_url'] = $v['nickname'] = '';
  233. $v['reward_nickname'] = $v['reward_avatar_url'] = $v['reward_nickname'] = '';
  234. if (isset($user_arr[$v['user_id']])) {
  235. $v['mobile'] = $user_arr[$v['user_id']]['mobile'];
  236. $v['nickname'] = $user_arr[$v['user_id']]['nickname'];
  237. $v['avatar_url'] = $user_arr[$v['user_id']]['avatar_url'];
  238. }
  239. if (isset($user_arr[$v['reward_user_id']])) {
  240. $v['reward_mobile'] = $user_arr[$v['reward_user_id']]['mobile'];
  241. $v['reward_nickname'] = $user_arr[$v['reward_user_id']]['nickname'];
  242. $v['reward_avatar_url'] = $user_arr[$v['reward_user_id']]['avatar_url'];
  243. }
  244. if($v['store_id']){
  245. $store = Store::findOne(['id'=>$v['store_id']]);
  246. $v['store_name'] = $store['store_name'];
  247. }
  248. if(!$v['is_cashier']){
  249. $order = Order::findOne(['id'=>$v['order_id']]);
  250. $order_detail = OrderDetail::findOne(['id'=>$v['order_detail_id']]);
  251. $v['order_money'] = $order_detail['price'];
  252. }else{
  253. $order = StoreCashierOrder::findOne(['id'=>$v['order_id']]);
  254. $v['order_money'] = $order['money'];
  255. }
  256. $v['order_no'] = $order['order_no'];
  257. if($v['is_frozen']){
  258. $v['desc'] = '未结算';
  259. }else{
  260. $v['desc'] = '已结算';
  261. }
  262. }
  263. }
  264. return $this->success('操作成功', $pageData);
  265. }
  266. }
  267. return $this->render('income-list',[
  268. ]);
  269. }
  270. /**
  271. * 基础配置
  272. *
  273. * @return string
  274. */
  275. public function actionSetting()
  276. {
  277. $retuest = Yii::$app->request;
  278. if ($retuest->isAjax) {
  279. if ($retuest->isPost) {
  280. $params = Yii::$app->request->post();
  281. $res = Yii::$app->services->validate->validate($params,[
  282. [['is_enable','settlement_method','is_remind','remind_days'], 'integer'],
  283. [['description'], 'string'],
  284. ]);
  285. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  286. // 保存配置
  287. $config = Yii::$app->services->setting->addons->set($this->mall_id, MembersCardEnum::ADDONS_NAME, ['basic' => $params]);
  288. $this->success('保存成功', $config);
  289. } else {
  290. // 获取配置
  291. $config = Yii::$app->services->setting->addons->get($this->mall_id, MembersCardEnum::ADDONS_NAME, 'basic');
  292. $this->success('获取成功', $config);
  293. }
  294. }
  295. return $this->render($this->action->id);
  296. }
  297. /*
  298. *更改状态
  299. */
  300. public function actionUpdateStatus()
  301. {
  302. $params = Yii::$app->request->post();
  303. if (!in_array($params['is_enable'], [StatusEnum::ENABLED, StatusEnum::DISABLED])) {
  304. return $this->error('参数不对');
  305. }
  306. $params['mall_id'] = $this->mall_id;
  307. $res = MembersCard::setData($params);
  308. if ($res === false) return $this->error(MembersCard::getStaticError());
  309. return $this->success('操作成功');
  310. }
  311. /**
  312. * 删除卡片
  313. * @Author bing
  314. * @DateTime 2021-08-20 14:49:55
  315. * @copyright: Copyright (c) 2020 广东七件事集团
  316. * @return void
  317. */
  318. public function actionLabel()
  319. {
  320. if (Yii::$app->request->isAjax) {
  321. if (Yii::$app->request->isPost) {
  322. $form = Yii::$app->request->post();
  323. $rules = [[['id'], 'required'], [['id'], 'integer']];
  324. $type = $form['type'];
  325. switch ($form['type']) {
  326. case 'sort':
  327. $rules[] = [['sort'], 'required'];
  328. break;
  329. case 'destroy':
  330. $form['status'] = StatusEnum::DELETE;
  331. $rules[] = [['status'], 'required'];
  332. break;
  333. }
  334. $res = Yii::$app->services->validate->validate($form, $rules);
  335. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  336. $form['mall_id'] = $this->mall['id'];
  337. $res = MembersCard::setData($form);
  338. if ($res === false) return $this->error(MembersCard::getStaticError());
  339. if($type == 'destroy'){
  340. MembersCardGive::updateAll(['status' => StatusEnum::DELETE],['status' => StatusEnum::ENABLED,'card_id' => $res['id']]);
  341. }
  342. return $this->success('操作成功',$form);
  343. }
  344. }
  345. return $this->render($this->action->id);
  346. }
  347. /**
  348. * 删除卡片
  349. * @Author bing
  350. * @DateTime 2021-08-20 14:49:55
  351. * @copyright: Copyright (c) 2020 广东七件事集团
  352. * @return void
  353. */
  354. public function actionListLabel()
  355. {
  356. if (Yii::$app->request->isAjax) {
  357. if (Yii::$app->request->isPost) {
  358. $form = Yii::$app->request->post();
  359. $rules = [[['id'], 'required'], [['id'], 'integer']];
  360. $type = $form['type'];
  361. switch ($form['type']) {
  362. case 'sort':
  363. $rules[] = [['child_num'], 'required'];
  364. $members_card_give_num = MembersCardGive::find()->where(['mall_id'=>$this->mall_id,'status'=>StatusEnum::ENABLED,'parent_card_id'=>$form['id']])->count();
  365. if($members_card_give_num > $form['child_num']){
  366. return $this->error('已赠送子卡数量大于要设置的子卡数量');
  367. }
  368. break;
  369. case 'destroy':
  370. $form['status'] = StatusEnum::DELETE;
  371. $rules[] = [['status'], 'required'];
  372. break;
  373. }
  374. $res = Yii::$app->services->validate->validate($form, $rules);
  375. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  376. $form['mall_id'] = $this->mall['id'];
  377. $res = MembersCardGive::setData($form);
  378. if ($res === false) return $this->error(MembersCardGive::getStaticError());
  379. if($type == 'destroy'){
  380. MembersCardGive::updateAll(['status' => StatusEnum::DELETE],['status' => StatusEnum::ENABLED,'parent_card_id' => $res['id']]);
  381. }
  382. return $this->success('操作成功',$form);
  383. }
  384. }
  385. return $this->render($this->action->id);
  386. }
  387. public function actionChildList()
  388. {
  389. if (\Yii::$app->request->isAjax) {
  390. if (\Yii::$app->request->isGet) {
  391. $get = \Yii::$app->request->get();
  392. $get['mall_id'] = $this->mall_id;
  393. $params = [];
  394. if(!empty($get['id'])){
  395. $params['where'][] = ['in', 'parent_card_id', $get['id']];
  396. }
  397. if (!empty($get['keyword'])) {
  398. $card_list = MembersCard::lists(['where' => [['mall_id' => $this->mall_id], [
  399. 'or',
  400. ['like', 'name', $get['keyword']]
  401. ]], 'select' => 'id']);
  402. $card_ids = array_column($card_list, 'id');
  403. $params['where'][] = ['in', 'card_id', $card_ids];
  404. }
  405. if (!empty($get['keyword2'])) {
  406. $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [
  407. 'or',
  408. ['=', 'id', $get['keyword2']],
  409. ['like', 'username', $get['keyword2']],
  410. ['like', 'nickname', $get['keyword2']],
  411. ['like', 'mobile', $get['keyword2']]
  412. ]], 'select' => 'id']);
  413. $user_ids = array_column($user_list, 'id');
  414. $params['where'][] = ['in', 'user_id', $user_ids];
  415. }
  416. // if(!empty($get['type'])){
  417. // if($get['type'] == 1){
  418. // $params['where'][] = ['=', 'parent_card_id', 0];
  419. // }elseif($get['type'] == 2){
  420. // $params['where'][] = ['!=', 'parent_card_id', 0];
  421. // }
  422. // }
  423. if (!empty($get['start'])) $params['where'][] = ['>=', 'created_at', strtotime($get['start'] . ' 00:00:00')];
  424. if (!empty($get['end'])) $params['where'][] = ['<', 'created_at', strtotime($get['end'] . ' 00:00:00')];
  425. $params['where'][] = ['=', 'mall_id', $this->mall_id];
  426. $params['where'][] = ['in', 'status', [StatusEnum::ENABLED]];
  427. $params['limit'] = 10;
  428. $params['order'] = 'created_at desc';
  429. try{
  430. $pageData = MembersCardGive::listPage($params, false);
  431. }catch(\Exception $e){
  432. return $this->fail('获取数据失败');
  433. }
  434. if ($pageData === false) return $this->error(MembersCard::getStaticError());
  435. if (!empty($pageData['list'])) {
  436. $user_id_arr = array_column($pageData['list'], 'user_id');
  437. $user_list = User::lists(['where' => [['id' => $user_id_arr]], 'select' => 'id,nickname,avatar_url,mobile,parent_id']);
  438. $user_arr = [];
  439. foreach ($user_list as $item) {
  440. $user_arr[$item['id']] = $item;
  441. }
  442. $card_ids = array_column($pageData['list'], 'card_id');
  443. $card_list = MembersCard::lists(['where' => [['id' => $card_ids]], 'select' => 'id,name,background_url','index'=>'id']);
  444. foreach ($pageData['list'] as &$v) {
  445. $v['nickname'] = $v['avatar_url'] = $v['parent_id'] = $v['parent_name'] = $v['mobile'] = '';
  446. if (isset($user_arr[$v['user_id']])) {
  447. $v['mobile'] = $user_arr[$v['user_id']]['mobile'];
  448. $v['nickname'] = $user_arr[$v['user_id']]['nickname'];
  449. $v['avatar_url'] = $user_arr[$v['user_id']]['avatar_url'];
  450. }
  451. $v['background_url'] = $v['name'] = '';
  452. if(isset($card_list[$v['card_id']])){
  453. $v['name'] = $card_list[$v['card_id']]['name'];
  454. $v['background_url'] = $card_list[$v['card_id']]['background_url'];
  455. }
  456. }
  457. }
  458. return $this->success('操作成功', $pageData);
  459. }
  460. }
  461. return $this->render('child-list',[
  462. ]);
  463. }
  464. /**
  465. * 删除卡片
  466. * @Author bing
  467. * @DateTime 2021-08-20 14:49:55
  468. * @copyright: Copyright (c) 2020 广东七件事集团
  469. * @return void
  470. */
  471. public function actionChildLabel()
  472. {
  473. if (Yii::$app->request->isAjax) {
  474. if (Yii::$app->request->isPost) {
  475. $form = Yii::$app->request->post();
  476. $rules = [[['id'], 'required'], [['id'], 'integer']];
  477. switch ($form['type']) {
  478. case 'sort':
  479. $rules[] = [['sort'], 'required'];
  480. break;
  481. case 'destroy':
  482. $form['is_recycle'] = 1;
  483. $form['recycle_at'] = time();
  484. $form['status'] = StatusEnum::DISABLED;
  485. $rules[] = [['is_recycle','recycle_at','status'], 'required'];
  486. break;
  487. }
  488. $res = Yii::$app->services->validate->validate($form, $rules);
  489. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  490. $form['mall_id'] = $this->mall['id'];
  491. $res = MembersCardGive::setData($form);
  492. if ($res === false) return $this->error(MembersCardGive::getStaticError());
  493. return $this->success('操作成功',$form);
  494. }
  495. }
  496. return $this->render($this->action->id);
  497. }
  498. public function actionUsedList()
  499. {
  500. if (\Yii::$app->request->isAjax) {
  501. if (\Yii::$app->request->isGet) {
  502. $get = \Yii::$app->request->get();
  503. $get['mall_id'] = $this->mall_id;
  504. $params = [];
  505. if(!empty($get['id'])){
  506. $params['where'][] = ['=', 'card_give_id', $get['id']];
  507. }
  508. if (!empty($get['keyword'])) {
  509. $store_list = Store::lists(['where' => [['mall_id' => $this->mall_id], [
  510. 'or',
  511. ['like', 'store_name', $get['keyword']]
  512. ]], 'select' => 'id']);
  513. $store_ids = array_column($store_list, 'id');
  514. $params['where'][] = ['in', 'store_id', $store_ids];
  515. }
  516. if (!empty($get['keyword1'])) {
  517. $order_detail_list = OrderDetail::lists(['where' => [['mall_id' => $this->mall_id], [
  518. 'or',
  519. ['like', 'goods_name', $get['keyword1']],
  520. ]], 'select' => 'id']);
  521. $order_detail_ids = array_column($order_detail_list, 'id');
  522. $params['where'][] = ['in', 'order_detail_id', $order_detail_ids];
  523. }
  524. $params['where'][] = ['=', 'mall_id', $this->mall_id];
  525. $params['where'][] = ['in', 'status', [StatusEnum::ENABLED]];
  526. $params['limit'] = 10;
  527. $params['order'] = 'created_at desc';
  528. try{
  529. $pageData = MembersCardUsedLog::listPage($params, false);
  530. }catch(\Exception $e){
  531. return $this->fail('获取数据失败');
  532. }
  533. if ($pageData === false) return $this->error(MembersCard::getStaticError());
  534. if (!empty($pageData['list'])) {
  535. foreach ($pageData['list'] as &$v) {
  536. if($v['store_id']){
  537. $store = Store::findOne(['id'=>$v['store_id']]);
  538. $v['store_name'] = $store['store_name'];
  539. }
  540. if(!$v['is_cashier']){
  541. $order = Order::findOne(['id'=>$v['order_id']]);
  542. $order_detail = OrderDetail::findOne(['id'=>$v['order_detail_id']]);
  543. $v['order_money'] = $order_detail['price'];
  544. $v['goods_name'] = $order_detail['goods_name'];
  545. }else{
  546. $order = StoreCashierOrder::findOne(['id'=>$v['order_id']]);
  547. $v['order_money'] = $order['money'];
  548. $v['goods_name'] = '扫码付款';
  549. }
  550. $v['order_no'] = $order['order_no'];
  551. }
  552. }
  553. return $this->success('操作成功', $pageData);
  554. }
  555. }
  556. return $this->render('used-list',[
  557. ]);
  558. }
  559. //不用验证权限
  560. public function actionSearchUser()
  561. {
  562. if (\Yii::$app->request->isAjax) {
  563. $keyword = \Yii::$app->request->get('keyword', '');
  564. $list['list'] = User::searchUser(['keyword' => $keyword, 'mall_id' => $this->mall_id]);
  565. return $this->success('操作成功', $list);
  566. }
  567. return $this->error();
  568. }
  569. public function actionSearchCard()
  570. {
  571. if (\Yii::$app->request->isAjax) {
  572. $keyword = \Yii::$app->request->get('keyword', '');
  573. $list['list'] = MembersCard::search(['keyword' => $keyword, 'mall_id' => $this->mall_id]);
  574. return $this->success('操作成功', $list);
  575. }
  576. return $this->error();
  577. }
  578. public function actionCardEdit()
  579. {
  580. if (\Yii::$app->request->isAjax) {
  581. $params = \Yii::$app->request->post();
  582. if(!$params['user_id'] || !$params['card_give_id'] || !$params['expired_days']){
  583. return $this->error('参数错误');
  584. }
  585. $card = MembersCard::findOne(['id'=>$params['card_give_id']]);
  586. if(!$card){
  587. return $this->error('亲友卡不存在');
  588. }
  589. $give = MembersCardGive::findOne(['status'=>StatusEnum::ENABLED,'user_id'=>$params['user_id'],'card_id'=>$params['card_give_id']]);
  590. if($give){
  591. return $this->error('该用户已拥有该亲友卡');
  592. }
  593. $card_no = MembersCardGive::find()
  594. ->where(['mall_id'=>$this->mall_id])
  595. ->andWhere(['>','card_no',0])
  596. ->andWhere(['=','parent_card_id',0])
  597. ->orderBy('created_at desc')
  598. ->one();
  599. if($card_no){
  600. $no = $card_no['card_no'] + 1;
  601. }else{
  602. $no = 40001;
  603. }
  604. $where = [];
  605. $where['mall_id'] = $this->mall_id;
  606. $where['user_id'] = $params['user_id'];
  607. $where['discount'] = $card['discount'];
  608. $where['child_discount'] = $card['child_discount'];
  609. $where['child_num'] = $card['child_num'];
  610. $where['child_expired_days'] = $card['child_expired_days'];
  611. $where['card_id'] = $card['id'];
  612. $where['card_no'] = $no;
  613. $where['expired_at'] = strtotime("+".$params['expired_days']." day");
  614. $res = MembersCardGive::setData($where);
  615. if(!$res){
  616. return $this->error('亲友卡新增失败');
  617. }
  618. return $this->success('请求成功');
  619. }
  620. return $this->error();
  621. }
  622. }