StatService.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Niucloud-admin 企业快速开发的saas管理平台
  4. // +----------------------------------------------------------------------
  5. // | 官方网址:https://www.niucloud.com
  6. // +----------------------------------------------------------------------
  7. // | niucloud团队 版权所有 开源版本可自由商用
  8. // +----------------------------------------------------------------------
  9. // | Author: Niucloud Team
  10. // +----------------------------------------------------------------------
  11. namespace app\service\admin\stat;
  12. use app\service\admin\member\MemberCashOutService;
  13. use app\service\admin\shop\admin\ShopCashOutService;
  14. use app\service\admin\site\SiteService;
  15. use app\service\core\member\CoreMemberService;
  16. use core\base\BaseAdminService;
  17. /**
  18. * 统计服务层
  19. * Class StatService
  20. * @package app\service\admin\stat
  21. */
  22. class StatService extends BaseAdminService
  23. {
  24. public function __construct()
  25. {
  26. parent::__construct();
  27. }
  28. // /**
  29. // * 获取统计数据
  30. // * @return int[]
  31. // * @throws DataNotFoundException
  32. // * @throws DbException
  33. // * @throws ModelNotFoundException
  34. // */
  35. // public function getIndexData()
  36. // {
  37. // $data = [
  38. // 'today_data' => [
  39. // 'member_count' => 1,
  40. // 'site_count' => 2,
  41. // 'visit_count' => 675,
  42. // 'total_member_count' => 0,
  43. // 'total_site_count' => 0,
  44. // 'total_visit_count' => 6840,
  45. // ],
  46. // 'system' => [],
  47. // 'version' => [],
  48. //// 'visit_stat' => [
  49. //// 'date' => [],
  50. //// 'value' => [980, 1323, 882, 762, 865, 923, 1105]
  51. //// ],
  52. // 'site_stat' => [
  53. // 'date' => [],
  54. // 'value' => []
  55. // ],
  56. // 'member_stat' => [
  57. // 'type' => ['男', '女', '未知'],
  58. // 'value' => []
  59. // ],
  60. // 'site_group_stat' => [
  61. // 'type' => [],
  62. // 'value' => []
  63. // ],
  64. // 'about' => [
  65. // [
  66. // 'name' => 'Niucloud官方公众号',
  67. // 'image' => 'static/resource/icon/index_icon/wx_qrcode.jpg',
  68. // 'desc' => '微信扫码关注'
  69. // ],
  70. // [
  71. // 'name' => '添加企业微信群',
  72. // 'image' => 'static/resource/icon/index_icon/wework_qrcode.png',
  73. // 'desc' => '更多内容请扫码加入'
  74. // ]
  75. // ]
  76. // ];
  77. //
  78. // $day_start_time = strtotime(date('Y-m-d'));
  79. // //当天结束之间
  80. // $day_end_time = $day_start_time + 86400;
  81. // $data['today_data']['total_member_count'] = (new CoreMemberService())->getCount();
  82. // $data['today_data']['today_member_count'] = (new CoreMemberService())->getCount(['create_time' => get_start_and_end_time_by_day()]);
  83. // $data['today_data']['total_site_count'] = (new SiteService())->getCount();
  84. // $data['today_data']['today_site_count'] = (new SiteService())->getCount(['create_time' => [$day_start_time, $day_end_time]]);
  85. // $data['today_data']['norma_site_count'] = (new SiteService())->getCount(['status' => [1],'app_type' => ['site']]);
  86. // $data['today_data']['expire_site_count'] = (new SiteService())->getCount(['status' => [2]]);
  87. //
  88. // $data['system'] = (new SystemService())->getInfo();
  89. // $data['version'] = $data['system']['version'] ?? [];
  90. // $time = time();
  91. // for ($i = 1; $i <= 7; $i++){
  92. // $item_day = date('Y-m-d', strtotime('+' . $i - 7 . ' days', $time));
  93. // $data['site_stat']['date'][] = $item_day;
  94. // $data['site_stat']['value'][] = (new Site())->where([['create_time','between',get_start_and_end_time_by_day($item_day)]])->count();
  95. // }
  96. // $man_count = (new CoreMemberService())->getCount(['sex' => '1']);
  97. // $woman_count = (new CoreMemberService())->getCount(['sex' => '2']);
  98. // $data['member_stat']['value'] = [$man_count, $woman_count, (int)($data['today_data']['total_member_count'] - $man_count - $woman_count)];
  99. //
  100. // $site_group_list = (new SiteGroupService())->getAll([]);
  101. //
  102. // if(!empty($site_group_list)){
  103. // foreach($site_group_list as $v){
  104. // $data['site_group_stat']['type'][] = $v['group_name'];
  105. // $data['site_group_stat']['value'][] = (new SiteService())->getCount(['group_id' => $v['group_id']]);
  106. // }
  107. // }
  108. // $app_count = (new CoreAddonService())->getLocalAddonCount();
  109. // $app_installed_count = (new CoreAddonService())->getCount();
  110. // $app = [
  111. // 'app_count' => $app_count,
  112. // 'app_no_installed_count' => $app_count-$app_installed_count,
  113. // 'app_installed_count' => $app_installed_count,
  114. // ];
  115. // $data['app'] = $app;
  116. // return $data;
  117. // }
  118. /**
  119. * 获取首页统计数据
  120. * @return array
  121. */
  122. public function getIndexStatData()
  123. {
  124. $data = [
  125. 'order_stat' => [
  126. 'today_order_count' => 0,
  127. 'yesterday_order_count' => 0,
  128. 'total_order_count' => 0,
  129. ],
  130. 'sale_stat' => [
  131. 'today_sale_money' => 0,
  132. 'yesterday_sale_money' => 0,
  133. 'total_sale_money' => 0,
  134. ],
  135. 'member_stat' => [
  136. 'today_member_count' => 0,
  137. 'yesterday_member_count' => 0,
  138. 'total_member_count' => 0,
  139. ],
  140. 'site_stat' => [
  141. 'today_site_count' => 0,
  142. 'yesterday_site_count' => 0,
  143. 'total_site_count' => 0,
  144. ],
  145. 'my_order_stat' => [
  146. 'wait_pay_order' => 0,
  147. 'wait_delivery_order' => 0,
  148. 'wait_take_order' => 0,
  149. 'refund_order' => 0,
  150. ],
  151. 'cash_out_stat' => [
  152. 'member_count' => 0,
  153. 'site_count' => 0,
  154. ],
  155. 'goods_stat' => [
  156. 'sale_goods_num' => 0,
  157. 'audit_goods_num' => 0,
  158. ],
  159. ];
  160. $order_stat_array = event('MallOrderStat');
  161. if (!empty($order_stat_array)) {
  162. $order_stat_list = [];
  163. foreach($order_stat_array as $v){
  164. $order_stat_list = empty($order_stat_list) ? $v : array_merge($order_stat_list, $v);
  165. }
  166. $data[ 'order_stat' ] = $order_stat_list[ 'order_stat' ];
  167. $data[ 'sale_stat' ] = $order_stat_list[ 'sale_stat' ];
  168. $data[ 'my_order_stat' ] = $order_stat_list[ 'my_order_stat' ];
  169. }
  170. $goods_stat_array = event('MallGoodsStat');
  171. if (!empty($goods_stat_array)) {
  172. $goods_stat_list = [];
  173. foreach($goods_stat_array as $v){
  174. $goods_stat_list = empty($goods_stat_list) ? $v : array_merge($goods_stat_list, $v);
  175. }
  176. $data[ 'goods_stat' ] = $goods_stat_list[ 'goods_stat' ];
  177. }
  178. $data['member_stat']['today_member_count'] = (new CoreMemberService())->getCount(['create_time' => get_start_and_end_time_by_day()]);
  179. $data['member_stat']['yesterday_member_count'] = (new CoreMemberService())->getCount(['create_time' => get_start_and_end_time_by_day(date('Y-m-d', strtotime("-1 day")))]);
  180. $data['member_stat']['total_member_count'] = (new CoreMemberService())->getCount();
  181. $data['site_stat']['today_site_count'] = (new SiteService())->getCount(['create_time' => get_start_and_end_time_by_day()]);
  182. $data['site_stat']['yesterday_site_count'] = (new SiteService())->getCount(['create_time' => get_start_and_end_time_by_day(date('Y-m-d', strtotime("-1 day")))]);
  183. $data['site_stat']['total_site_count'] = (new SiteService())->getCount();
  184. $data['cash_out_stat']['member_count'] = (new MemberCashOutService())->getCount();
  185. $data['cash_out_stat']['site_count'] = (new ShopCashOutService())->getCount();
  186. return $data;
  187. }
  188. /**
  189. * 获取首页图表统计数据
  190. * @return array|mixed
  191. */
  192. public function getIndexChartStat()
  193. {
  194. $params = $this->request->params([
  195. ['start_date', date('Y-m-d', strtotime('-6 day')) ],
  196. ['end_date', date('Y-m-d', strtotime('+1 day'))]
  197. ]);
  198. $chart_stat_array = event('MallChartStat', $params);
  199. $chart_stat_list = [];
  200. foreach($chart_stat_array as $v){
  201. $chart_stat_list = empty($chart_stat_list) ? $v : array_merge($chart_stat_list, $v);
  202. }
  203. return $chart_stat_list;
  204. }
  205. }