IndexController.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. namespace addons\Mch\client\controllers;
  3. use addons\Mch\common\models\Mch;
  4. use addons\Mch\common\models\MchCensus;
  5. use addons\Mch\common\models\MchGoodsRanking;
  6. use addons\Mch\common\models\MchUser;
  7. use common\models\goods\Goods;
  8. use common\models\order\Order;
  9. use common\models\order\OrderRefund;
  10. use common\models\user\User;
  11. use Yii;
  12. class IndexController extends BaseController
  13. {
  14. /**
  15. * 门店首页(概况)
  16. * @Author bing
  17. * @DateTime 2022-04-26 18:06:27
  18. * @return void
  19. * @copyright: Copyright (c) 2022 广东七件事集团
  20. */
  21. public function actionIndex()
  22. {
  23. if (Yii::$app->request->isAjax) {
  24. $goods_ranking_list = MchGoodsRanking::lists([
  25. 'where' => [
  26. ['mch_id' => $this->mch_id],
  27. ],
  28. 'order' => 'sales_money desc',
  29. 'select' => 'id,goods_id,sales_money',
  30. 'limit' => 5
  31. ]);
  32. $goods_ids = array_column($goods_ranking_list, 'goods_id');
  33. $store_goods_list = Goods::lists(['where' => [['id' => $goods_ids]], 'index' => 'id', 'select' => 'id,goods_name,cover_pic']);
  34. foreach ($goods_ranking_list as &$item) {
  35. $item['goods_name'] = $item['cover_pic'] = '';
  36. if (isset($store_goods_list[$item['goods_id']])) {
  37. $item['goods_name'] = $store_goods_list[$item['goods_id']]['goods_name'];
  38. $item['cover_pic'] = $store_goods_list[$item['goods_id']]['cover_pic'];
  39. }
  40. }
  41. $user_ranking_list = MchUser::lists([
  42. 'where' => [
  43. ['mch_id' => $this->mch_id],
  44. ],
  45. 'order' => 'pay_money desc',
  46. 'select' => 'id,user_id,pay_money',
  47. 'limit' => 5
  48. ]);
  49. $user_ids = array_column($user_ranking_list, 'user_id');
  50. $user_list = User::lists(['where' => [['id' => $user_ids]], 'index' => 'id', 'select' => 'id,nickname,avatar_url']);
  51. foreach ($user_ranking_list as &$item) {
  52. $item['nickname'] = $item['avatar_url'] = '';
  53. if (isset($user_list[$item['user_id']])) {
  54. $item['nickname'] = $user_list[$item['user_id']]['nickname'];
  55. $item['avatar_url'] = $user_list[$item['user_id']]['avatar_url'];
  56. }
  57. }
  58. $time = time();
  59. $today = date('Y-m-d', $time);
  60. $yesterday = date("Y-m-d", strtotime("-1 day"));
  61. $date_time_arr = [$today, $yesterday];
  62. for ($i = 2; $i <= 4; $i++) {
  63. $date_time_arr[] = date("Y-m-d", strtotime("-{$i} day"));
  64. }
  65. $today_data = $yesterday_data = [
  66. "add_user_nums"=>'--',
  67. "order_nums"=>'--',
  68. "sales_money"=>'--',
  69. "settlement_commission"=>'--',
  70. ];
  71. $store_census_list = MchCensus::lists(['where' => [['mch_id' => $this->mch_id], ['date_time' => $date_time_arr]], 'order' => 'created_at asc']);
  72. $table_list = [];
  73. if ($store_census_list) {
  74. foreach ($store_census_list as $val) {
  75. $table_list[] = [
  76. 'created_at' => $val['date_time'],
  77. 'sales_money' => $val['sales_money'] ?? 0,
  78. ];
  79. switch ($val['date_time']) {
  80. case $today:
  81. $today_data = $val;
  82. break;
  83. case $yesterday:
  84. $yesterday_data = $val;
  85. break;
  86. }
  87. }
  88. }
  89. $store = Mch::getOne([['id' => $this->mch_id]], true, [], false, 'id,shop_owner,store_name,shop_status,logo_img,expire_time');
  90. $store['business_status'] = empty( $store['shop_status'])?'休息中': '营业中';
  91. $no_pay_counts = Order::find()->where(['mch_id' => $this->mch_id, 'order_status' => 0])->count();//待付款
  92. $no_delivery_counts = Order::find()->where(['mch_id' => $this->mch_id, 'order_status' => 1])->count();//待发货
  93. $after_sale_counts = OrderRefund::find()->where(['mch_id' => $this->mch_id])->andWhere(['!=','refund_status',1])->count();//售后
  94. $sell_out_counts = Goods::find()->where(['mch_id' => $this->mch_id, 'stock' => 0])->count();//售罄
  95. $store['no_pay_counts'] = $no_pay_counts ?? 0;
  96. $store['no_delivery_counts'] = $no_delivery_counts ?? 0;
  97. $store['after_sale_counts'] = $after_sale_counts ?? 0;
  98. $store['sell_out_counts'] = $sell_out_counts ?? 0;
  99. return $this->success('操作成功', compact('goods_ranking_list', 'user_ranking_list', 'today_data', 'yesterday_data', 'table_list', 'store'));
  100. }
  101. return $this->render($this->action->id);
  102. }
  103. //不用验证权限
  104. public function actionToPay()
  105. {
  106. if (Yii::$app->request->isAjax) {
  107. $params = Yii::$app->request->post();
  108. $limit = 1;
  109. switch ($params['activeDay']) {
  110. case "one":
  111. $limit = 1;
  112. break;
  113. case "seven":
  114. $limit = 6;
  115. break;
  116. case "thirty":
  117. $limit = 29;
  118. break;
  119. }
  120. $time = time();
  121. $today = date('Y-m-d', $time);
  122. $date_time_arr = [$today];
  123. for ($i = 1; $i <= $limit; $i++) {
  124. $date_time_arr[] = date("Y-m-d", strtotime("-{$i} day"));
  125. }
  126. $today_data = ['add_user_nums' => 0, 'order_nums' => 0, 'settlement_commission' => 0, 'sales_money' => 0, 'cashier_sales_money' => 0];
  127. $store_census_list = MchCensus::lists(['where' => [['mch_id' => $this->mch_id], ['date_time' => $date_time_arr]], 'order' => 'created_at asc']);
  128. if ($store_census_list) {
  129. foreach ($store_census_list as $val) {
  130. $today_data['add_user_nums'] += $val['add_user_nums'];
  131. $today_data['order_nums'] += $val['order_nums'];
  132. $today_data['settlement_commission'] += $val['settlement_commission'];
  133. $today_data['sales_money'] += $val['sales_money'];
  134. $today_data['cashier_sales_money'] += $val['cashier_sales_money'];
  135. }
  136. }
  137. return $this->success('操作成功', compact('today_data'));
  138. }
  139. return $this->render($this->action->id);
  140. }
  141. public function actionHeader()
  142. {
  143. $admin = Yii::$app->mch_user->identity;
  144. $user = array(
  145. 'id' => $admin->id,
  146. 'mch_id' => $admin->mch_id,
  147. 'username' => $admin->username,
  148. 'admin_type' => $admin->admin_type,
  149. );
  150. $mall = array(
  151. 'id' => $this->mall['id'],
  152. 'name' => $this->mall['name'],
  153. );
  154. $services = Yii::$app->services->setting->platform->get('system');
  155. $update_password_status = Yii::$app->services->setting->mall->get('basic.update_password_status');
  156. $navs = [];
  157. return $this->success('操作成功', compact('user', 'mall', 'services', 'update_password_status', 'navs'));
  158. }
  159. }