DefaultController.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514
  1. <?php
  2. namespace addons\Store\backend\controllers;
  3. use addons\Store\common\enums\StoreEnum;
  4. use addons\Store\common\logic\store\StoreCensus;
  5. use addons\Store\common\models\Store;
  6. use addons\Store\common\models\StoreCommission;
  7. use addons\Store\common\models\StoreGoodsRanking;
  8. use addons\Store\common\models\StoreWithdrawLog;
  9. use common\enums\RedisKeyEnum;
  10. use common\enums\StatusEnum;
  11. use common\helpers\ArrayHelper;
  12. use common\helpers\DateHelper;
  13. use common\models\common\CommissionLog;
  14. use common\models\common\Region;
  15. /**
  16. * 默认控制器
  17. *
  18. * Class DefaultController
  19. * @package addons\Store\backend\controllers
  20. */
  21. class DefaultController extends BaseController
  22. {
  23. /**
  24. * 首页
  25. *
  26. * @return string
  27. */
  28. public function actionIndexOld()
  29. {
  30. if (!\Yii::$app->request->isAjax) {
  31. return $this->render('index');
  32. }
  33. if (\Yii::$app->request->isGet) {
  34. $cache = \Yii::$app->cache;
  35. $cache_key = RedisKeyEnum::BACKEND_CENSUS_KEY . 'mall_id:' . $this->mall_id;
  36. $data = $cache->get($cache_key);
  37. if (!empty($data)) {
  38. return $this->success('success', $data);
  39. }
  40. /* 顶部统计 ---- start ---- */
  41. $time_nodes = DateHelper::yesterDay();
  42. $query_com = StoreCommission::find()
  43. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED]);
  44. // 实际支付金额(实收金额)、待结算佣金、已结算佣金、支付人数、支付订单数量
  45. $real_pay_amounts = $not_settle_amounts = $settle_amounts = $pay_people_numbers = $pay_order_numbers = 0;
  46. $yesterday_real_pay_amounts = $yesterday_not_settle_amounts = $yesterday_settle_amounts = $yesterday_pay_people_numbers = $yesterday_pay_order_numbers = 0;
  47. $user_ids = $yesterday_user_ids = [];
  48. $page = 1;
  49. $limit = 200;
  50. do {
  51. $offset = ($page - 1) * $limit;
  52. $page++;
  53. $commissions = $query_com->limit($limit)->offset($offset)->all();
  54. if (!empty($commissions)) {
  55. foreach ($commissions as $commission) {
  56. $real_pay_amounts += $commission->pay_money;
  57. if ($commission->is_settlement == 1) {
  58. $settle_amounts += $commission->amount_received;
  59. } else {
  60. $not_settle_amounts += $commission->amount_received;
  61. }
  62. $pay_order_numbers += 1;
  63. $user_ids[] = $commission->user_id;
  64. if ($commission->created_at >= $time_nodes['start'] && $commission->created_at <= $time_nodes['end']) {
  65. $yesterday_real_pay_amounts += $commission->pay_money;
  66. if ($commission->is_settlement == 1) {
  67. $yesterday_settle_amounts += $commission->amount_received;
  68. } else {
  69. $yesterday_not_settle_amounts += $commission->amount_received;
  70. }
  71. $yesterday_pay_order_numbers += 1;
  72. $yesterday_user_ids[] = $commission->user_id;
  73. }
  74. }
  75. }
  76. } while ($commissions);
  77. $pay_people_numbers = count(array_flip(array_flip($user_ids)));
  78. $real_pay_amounts = round($real_pay_amounts, 2);
  79. $not_settle_amounts = round($not_settle_amounts, 2);
  80. $settle_amounts = round($settle_amounts, 2);
  81. $yesterday_pay_people_numbers = count(array_flip(array_flip($yesterday_user_ids)));
  82. $yesterday_real_pay_amounts = round($yesterday_real_pay_amounts, 2);
  83. $yesterday_not_settle_amounts = round($yesterday_not_settle_amounts, 2);
  84. $yesterday_settle_amounts = round($yesterday_settle_amounts, 2);
  85. // 待审核提现、待贷款提现
  86. $waiting_audit_withdraw_amounts = $waiting_pay_withdraw_amounts = 0;
  87. $yesterday_waiting_audit_withdraw_amounts = $yesterday_waiting_pay_withdraw_amounts = 0;
  88. $query_withdraw = StoreWithdrawLog::find()
  89. ->select('withdraw_status,actual_num')
  90. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'withdraw_status' => [0, 1]]);
  91. $page = 1;
  92. $limit = 200;
  93. do {
  94. $offset = ($page - 1) * $limit;
  95. $page++;
  96. $withdraws = $query_withdraw->limit($limit)->offset($offset)->all();
  97. if (!empty($withdraws)) {
  98. foreach ($withdraws as $withdraw) {
  99. if ($withdraw->withdraw_status == 0) {
  100. $waiting_audit_withdraw_amounts += $withdraw->actual_num;
  101. } else {
  102. $waiting_pay_withdraw_amounts += $withdraw->actual_num;
  103. }
  104. if ($commission->created_at >= $time_nodes['start'] && $commission->created_at <= $time_nodes['end']) {
  105. if ($withdraw->withdraw_status == 0) {
  106. $yesterday_waiting_audit_withdraw_amounts += $withdraw->actual_num;
  107. } else {
  108. $yesterday_waiting_pay_withdraw_amounts += $withdraw->actual_num;
  109. }
  110. }
  111. }
  112. }
  113. } while ($withdraws);
  114. $waiting_audit_withdraw_amounts = round($waiting_audit_withdraw_amounts, 2);
  115. $waiting_pay_withdraw_amounts = round($waiting_pay_withdraw_amounts, 2);
  116. $yesterday_waiting_audit_withdraw_amounts = round($yesterday_waiting_audit_withdraw_amounts, 2);
  117. $yesterday_waiting_pay_withdraw_amounts = round($yesterday_waiting_pay_withdraw_amounts, 2);
  118. // 待审核门店数量
  119. $waiting_audit_store_numbers = $yesterday_waiting_audit_store_numbers = 0;
  120. $page = 1;
  121. $limit = 200;
  122. do {
  123. $offset = ($page - 1) * $limit;
  124. $page++;
  125. $stores = Store::find()->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])->limit($limit)->offset($offset)->all();
  126. if (!empty($stores)) {
  127. foreach ($stores as $store) {
  128. if (StoreEnum::CHECK_WAITING == $store->check_status) {
  129. $waiting_audit_store_numbers += 1;
  130. if ($store->created_at >= $time_nodes['start'] && $store->created_at <= $time_nodes['end']) {
  131. $yesterday_waiting_audit_store_numbers += 1;
  132. }
  133. }
  134. }
  135. }
  136. } while ($stores);
  137. /* 顶部统计 ---- end ---- */
  138. /* 门店销售排名 ---- start ---- */
  139. $store_good_ranking_list = StoreGoodsRanking::find()
  140. ->select('store_id,sum(sales_money) as sales_money')
  141. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])
  142. ->orderBy('sales_money desc')
  143. ->groupBy('store_id')
  144. ->limit(10)
  145. ->asArray()
  146. ->all();
  147. if (empty($store_good_ranking_list)) {
  148. $store_good_ranking_list = [
  149. 1 => ['store_id' => 1, 'sales_money' => 1234],
  150. 2 => ['store_id' => 2, 'sales_money' => 222],
  151. 3 => ['store_id' => 3, 'sales_money' => 2342],
  152. ];
  153. }
  154. if (!empty($store_good_ranking_list)) {
  155. $store_ids = array_column($store_good_ranking_list, 'store_id');
  156. $stores = Store::find()
  157. ->select('id,store_name,logo_img')
  158. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $store_ids])
  159. ->asArray()
  160. ->indexBy('id')
  161. ->all();
  162. foreach ($store_good_ranking_list as &$list) {
  163. $store = $stores[$list['store_id']] ?? [];
  164. $list['store_name'] = $store['store_name'] ?? '';
  165. $list['logo_img'] = $store['logo_img'] ?? '';
  166. }
  167. }
  168. /* 门店销售排名 ---- end ---- */
  169. /* 省级地区销售排名 ---- start ---- */
  170. $store_datas = [];
  171. $regions = Region::find()->select('id,name')->where(['level' => 1])->asArray()->indexBy('id')->all();
  172. $page = 1;
  173. $limit = 200;
  174. do {
  175. $offset = ($page - 1) * $limit;
  176. $page++;
  177. $stores = Store::find()
  178. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])
  179. ->andWhere(['check_status' => 1])
  180. ->limit($limit)
  181. ->offset($offset)
  182. ->all();
  183. if (!empty($stores)) {
  184. foreach ($stores as $store) {
  185. $store_datas[$store->province_id]['region_name'] = $regions[$store->province_id]['name'] ?? '';
  186. if (!isset($store_datas[$store->province_id]['store_numbers'])) {
  187. $store_datas[$store->province_id]['store_numbers'] = 0;
  188. }
  189. $store_datas[$store->province_id]['store_numbers'] += 1;
  190. if (!isset($store_datas[$store->province_id]['sale_amounts'])) {
  191. $store_datas[$store->province_id]['sale_amounts'] = 0;
  192. }
  193. // $store_datas[$store->province_id]['sale_amounts'] += $store->total_order_money;
  194. $store_datas[$store->province_id]['sale_amounts'] = bcadd($store_datas[$store->province_id]['sale_amounts'], $store->total_order_money, 2);
  195. }
  196. }
  197. } while ($stores);
  198. $store_datas = ArrayHelper::arraySort($store_datas, 'sale_amounts', 'desc');
  199. $store_datas = array_values($store_datas);
  200. // $store_datas = ArrayHelper::multisort(array_values($store_datas), 'sale_amounts', 'asc');
  201. // 门店总数
  202. $all_store_numbers = array_sum(array_column($store_datas, 'store_numbers'));
  203. $all_sale_amounts = round(array_sum(array_column($store_datas, 'sale_amounts')), 2);
  204. /* 省级地区销售排名 ---- end ---- */
  205. $data = [
  206. 'currTime' => date('Y-m-d H:i:s'),
  207. 'statistics' => [
  208. 'pay_people_numbers' => $pay_people_numbers,
  209. 'real_pay_amounts' => $real_pay_amounts,
  210. 'not_settle_amounts' => $not_settle_amounts,
  211. 'settle_amounts' => $settle_amounts,
  212. 'pay_order_numbers' => $pay_order_numbers,
  213. 'yesterday_pay_order_numbers' => $yesterday_pay_order_numbers,
  214. 'waiting_audit_withdraw_amounts' => $waiting_audit_withdraw_amounts,
  215. 'waiting_pay_withdraw_amounts' => $waiting_pay_withdraw_amounts,
  216. 'waiting_audit_store_numbers' => $waiting_audit_store_numbers,
  217. 'yesterday_pay_people_numbers' => $yesterday_pay_people_numbers,
  218. 'yesterday_real_pay_amounts' => $yesterday_real_pay_amounts,
  219. 'yesterday_not_settle_amounts' => $yesterday_not_settle_amounts,
  220. 'yesterday_settle_amounts' => $yesterday_settle_amounts,
  221. 'yesterday_waiting_audit_withdraw_amounts' => $yesterday_waiting_audit_withdraw_amounts,
  222. 'yesterday_waiting_pay_withdraw_amounts' => $yesterday_waiting_pay_withdraw_amounts,
  223. 'yesterday_waiting_audit_store_numbers' => $yesterday_waiting_audit_store_numbers,
  224. ],
  225. 'store_good_ranking_list' => $store_good_ranking_list,
  226. 'region_ranking_list' => $store_datas,
  227. 'map' => [
  228. $all_store_numbers, $all_sale_amounts
  229. ],
  230. 'total_store_numbers' => $all_store_numbers,
  231. 'total_sale_amounts' => $all_sale_amounts,
  232. ];
  233. // 统计结果缓存半个小时
  234. $cache->set($data, $cache_key, 1800);
  235. return $this->success('success', $data);
  236. }
  237. }
  238. public function actionIndex()
  239. {
  240. if (!\Yii::$app->request->isAjax) {
  241. return $this->render('index');
  242. }
  243. if (\Yii::$app->request->isGet) {
  244. $time_nodes = DateHelper::yesterDay();
  245. $result = $this->getYesterdayData($time_nodes);
  246. list($waiting_audit_withdraw_amounts, $waiting_pay_withdraw_amounts) = $this->getWithdrawData();
  247. /* 顶部统计 ---- end ---- */
  248. $store_good_ranking_list = $this->getStoreGoodRankingList();
  249. /* 省级地区销售排名 ---- start ---- */
  250. $store_datas = $this->getStoreDatas();
  251. /* 省级地区销售排名 ---- end ---- */
  252. // 门店总数
  253. $all_store_numbers = array_sum(array_column($store_datas, 'store_numbers'));
  254. $all_sale_amounts = round(array_sum(array_column($store_datas, 'sale_amounts')), 2);
  255. $data = [
  256. 'currTime' => date('Y-m-d H:i:s'),
  257. 'statistics' => [
  258. 'pay_people_numbers' => $this->getPayPeopleNumbers(),
  259. 'real_pay_amounts' => $this->getRealPayAmounts(),
  260. 'not_settle_amounts' => $this->getNotSettleAmounts(),
  261. 'settle_amounts' => $this->getSettleAmounts(),
  262. 'pay_order_numbers' => $this->getPayOrderNumbers(),
  263. 'waiting_audit_withdraw_amounts' => $waiting_audit_withdraw_amounts,
  264. 'waiting_pay_withdraw_amounts' => $waiting_pay_withdraw_amounts,
  265. 'waiting_audit_store_numbers' => $this->getWaitingAuditStoreNumbers(),
  266. 'yesterday_pay_order_numbers' => $result['yesterday_pay_order_numbers'],
  267. 'yesterday_pay_people_numbers' => $result['yesterday_pay_people_numbers'],
  268. 'yesterday_real_pay_amounts' => $result['yesterday_real_pay_amounts'],
  269. 'yesterday_not_settle_amounts' => $result['yesterday_not_settle_amounts'],
  270. 'yesterday_settle_amounts' => $result['yesterday_settle_amounts'],
  271. 'yesterday_waiting_audit_withdraw_amounts' => $result['yesterday_waiting_audit_withdraw_amounts'],
  272. 'yesterday_waiting_pay_withdraw_amounts' => $result['yesterday_waiting_pay_withdraw_amounts'],
  273. 'yesterday_waiting_audit_store_numbers' => $result['yesterday_waiting_audit_store_numbers'],
  274. ],
  275. 'store_good_ranking_list' => $store_good_ranking_list,
  276. 'region_ranking_list' => $store_datas,
  277. 'map' => [
  278. $all_store_numbers, $all_sale_amounts
  279. ],
  280. 'total_store_numbers' => $all_store_numbers,
  281. 'total_sale_amounts' => $all_sale_amounts,
  282. ];
  283. return $this->success('success', $data);
  284. }
  285. }
  286. public function getStoreGoodRankingList()
  287. {
  288. $store_good_ranking_list = StoreGoodsRanking::find()
  289. ->select('store_id,sum(sales_money) as sales_money')
  290. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])
  291. ->orderBy('sales_money desc')
  292. ->groupBy('store_id')
  293. ->limit(10)
  294. ->asArray()
  295. ->all();
  296. if (empty($store_good_ranking_list)) {
  297. $store_good_ranking_list = [];
  298. }
  299. if (!empty($store_good_ranking_list)) {
  300. $store_ids = array_column($store_good_ranking_list, 'store_id');
  301. $stores = Store::find()
  302. ->select('id,store_name,logo_img')
  303. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $store_ids])
  304. ->asArray()
  305. ->indexBy('id')
  306. ->all();
  307. foreach ($store_good_ranking_list as &$list) {
  308. $store = $stores[$list['store_id']] ?? [];
  309. $list['store_name'] = $store['store_name'] ?? '';
  310. $list['logo_img'] = $store['logo_img'] ?? '';
  311. }
  312. }
  313. return $store_good_ranking_list;
  314. }
  315. public function getStoreDatas()
  316. {
  317. $store_datas = [];
  318. $regions = Region::find()->select('id,name')->where(['level' => 1])->asArray()->indexBy('id')->all();
  319. $page = 1;
  320. $limit = 200;
  321. do {
  322. $offset = ($page - 1) * $limit;
  323. $page++;
  324. $stores = Store::find()
  325. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])
  326. ->andWhere(['check_status' => 1])
  327. ->limit($limit)
  328. ->offset($offset)
  329. ->all();
  330. if (!empty($stores)) {
  331. foreach ($stores as $store) {
  332. $store_datas[$store->province_id]['region_name'] = $regions[$store->province_id]['name'] ?? '';
  333. if (!isset($store_datas[$store->province_id]['store_numbers'])) {
  334. $store_datas[$store->province_id]['store_numbers'] = 0;
  335. }
  336. $store_datas[$store->province_id]['store_numbers'] += 1;
  337. if (!isset($store_datas[$store->province_id]['sale_amounts'])) {
  338. $store_datas[$store->province_id]['sale_amounts'] = 0;
  339. }
  340. // $store_datas[$store->province_id]['sale_amounts'] += $store->total_order_money;
  341. $store_datas[$store->province_id]['sale_amounts'] = bcadd($store_datas[$store->province_id]['sale_amounts'], $store->total_order_money, 2);
  342. }
  343. }
  344. } while ($stores);
  345. $store_datas = ArrayHelper::arraySort($store_datas, 'sale_amounts', 'desc');
  346. $store_datas = array_values($store_datas);
  347. return $store_datas;
  348. }
  349. //实收金额
  350. public function getRealPayAmounts()
  351. {
  352. $key = StoreEnum::STORE_REAL_PAY_AMOUNTS . ':' . $this->mall_id;
  353. $res = \Yii::$app->redis->get($key);//待结算
  354. if (!empty($res)) return $res;
  355. $realPayAmounts = StoreCommission::find()->where(['mall_id' => $this->mall_id, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])
  356. ->sum('amount_received');
  357. if(empty($realPayAmounts)) $realPayAmounts = 0;
  358. \Yii::$app->redis->set($key,$realPayAmounts);
  359. return $realPayAmounts;
  360. }
  361. //待结算
  362. public function getNotSettleAmounts()
  363. {
  364. $key = StoreEnum::STORE_NOT_SETTLE_AMOUNTS . ':' . $this->mall_id;
  365. $res = \Yii::$app->redis->get($key);//待结算
  366. if (!empty($res)) return $res;
  367. $not_settle_amounts = StoreCommission::find()->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'is_settlement' => 0])
  368. ->sum('amount_received');
  369. if(empty($not_settle_amounts)) $not_settle_amounts = 0;
  370. \Yii::$app->redis->set($key,$not_settle_amounts);
  371. return $not_settle_amounts;
  372. }
  373. //给会员的佣金
  374. public function getSettleAmounts()
  375. {
  376. $key = StoreEnum::STORE_SETTLE_AMOUNTS . ':' . $this->mall_id;
  377. $res = \Yii::$app->redis->get($key);//给会员的佣金
  378. if (!empty($res)) return $res;
  379. $settle_amounts = CommissionLog::find()->where(['mall_id' => $this->mall_id, 'source_table' => ['store_order_detail', 'store_cashier_order']])->sum('change_num');
  380. if(empty($settle_amounts)) $settle_amounts = 0;
  381. \Yii::$app->redis->set($key,$settle_amounts);
  382. return $settle_amounts;
  383. }
  384. //支付人数
  385. public function getPayPeopleNumbers()
  386. {
  387. $key = StoreEnum::STORE_PAY_PEOPLE_NUMBERS . ':' . $this->mall_id;
  388. $res = \Yii::$app->redis->get($key);//支付人数
  389. if (!empty($res)) return $res;
  390. $mall_id = $this->mall_id;
  391. $sql = "select count(*) as counts from (select user_id from qimall_addons_store_commission where mall_id = {$mall_id} and status in(0,1) group by user_id) t";
  392. $result = \Yii::$app->db->createCommand($sql)->queryAll();
  393. if(empty($result[0]['counts'])) $result[0]['counts'] = 0;
  394. \Yii::$app->redis->set($key,$result[0]['counts']);
  395. return $result[0]['counts'];
  396. }
  397. //支付订单数
  398. public function getPayOrderNumbers()
  399. {
  400. $key = StoreEnum::STORE_PAY_ORDER_NUMBERS . ':' . $this->mall_id;
  401. $res = \Yii::$app->redis->get($key);//支付订单数
  402. if (!empty($res)) return $res;
  403. $pay_order_numbers = StoreCommission::find()->where(['mall_id' => $this->mall_id, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])
  404. ->count();
  405. if(empty($pay_order_numbers)) $pay_order_numbers = 0;
  406. \Yii::$app->redis->set($key,$pay_order_numbers);
  407. return $pay_order_numbers;
  408. }
  409. //待审核门店
  410. public function getWaitingAuditStoreNumbers()
  411. {
  412. $key = StoreEnum::STORE_WAITING_AUDIT_STORE_NUMBERS . ':' . $this->mall_id;
  413. $res = \Yii::$app->redis->get($key);//待审核门店
  414. if (!empty($res)) return $res;
  415. $waiting_audit_store_numbers = Store::find()->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'check_status' => StoreEnum::CHECK_WAITING])->count();
  416. if(empty($waiting_audit_store_numbers)) $waiting_audit_store_numbers = 0;
  417. \Yii::$app->redis->set($key,$waiting_audit_store_numbers);
  418. return $waiting_audit_store_numbers;
  419. }
  420. public function getWithdrawData()
  421. {
  422. $list = StoreWithdrawLog::lists([
  423. 'where' => [
  424. ['mall_id' => $this->mall_id], ['status' => StatusEnum::ENABLED], ['withdraw_status' => [0, 1]]
  425. ],
  426. 'group' => 'withdraw_status',
  427. 'select' => 'withdraw_status,sum(num) as num'
  428. ]);
  429. $waiting_audit_withdraw_amounts = 0;
  430. $waiting_pay_withdraw_amounts = 0;
  431. foreach ($list as $item) {
  432. if ($item['withdraw_status'] == 0) {
  433. $waiting_audit_withdraw_amounts = $item['num'];
  434. }
  435. if ($item['withdraw_status'] == 1) {
  436. $waiting_pay_withdraw_amounts = $item['num'];
  437. }
  438. }
  439. return [$waiting_audit_withdraw_amounts, $waiting_pay_withdraw_amounts];
  440. }
  441. public function getYesterdayData($time_nodes)
  442. {
  443. $yesterday = date('Y-m-d',strtotime("-1 days"));
  444. $key = StoreEnum::STORE_GLOBAL_STATISTICS_YESTERDAY . ':' . $this->mall_id.':'.$yesterday;
  445. $result = \Yii::$app->redis->get($key);
  446. if (!empty($result)) {
  447. return json_decode($result, true);
  448. }
  449. $obj = new StoreCensus($this->mall_id, $time_nodes['start'], $time_nodes['end']);
  450. $yesterday_pay_order_numbers = $obj->getPayOrderNumbers();
  451. $yesterday_pay_people_numbers = $obj->getPayPeopleNumbers();
  452. $yesterday_real_pay_amounts = $obj->getRealPayAmounts();
  453. $yesterday_not_settle_amounts = $obj->getNotSettleAmounts();
  454. $yesterday_settle_amounts = $obj->getSettleAmounts();
  455. list($yesterday_waiting_audit_withdraw_amounts, $yesterday_waiting_pay_withdraw_amounts) = $obj->getWithdrawData();
  456. $yesterday_waiting_audit_store_numbers = $obj->getWaitingAuditStoreNumbers();
  457. $data = [
  458. 'yesterday_pay_order_numbers' => $yesterday_pay_order_numbers,
  459. 'yesterday_pay_people_numbers' => $yesterday_pay_people_numbers,
  460. 'yesterday_real_pay_amounts' => $yesterday_real_pay_amounts,
  461. 'yesterday_not_settle_amounts' => $yesterday_not_settle_amounts,
  462. 'yesterday_settle_amounts' => $yesterday_settle_amounts,
  463. 'yesterday_waiting_audit_withdraw_amounts' => $yesterday_waiting_audit_withdraw_amounts,
  464. 'yesterday_waiting_pay_withdraw_amounts' => $yesterday_waiting_pay_withdraw_amounts,
  465. 'yesterday_waiting_audit_store_numbers' => $yesterday_waiting_audit_store_numbers,
  466. ];
  467. \Yii::$app->redis->set($key,json_encode($data));
  468. return $data;
  469. }
  470. }