Stat.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 山西牛酷信息科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com.cn
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace app\admin\controller;
  13. use app\model\order\OrderCommon as OrderCommonModel;
  14. use app\model\system\Stat as StatModel;
  15. /**
  16. * 统计管理 控制器
  17. */
  18. class Stat extends BaseAdmin
  19. {
  20. /**
  21. * 统计概况
  22. */
  23. public function index()
  24. {
  25. if (request()->isAjax()) {
  26. $date_type = input('date_type', 0);
  27. if($date_type == 0){
  28. $start_time = strtotime("today");
  29. $time_range = date('Y-m-d',$start_time);
  30. }else if($date_type == 1){
  31. $start_time = strtotime(date('Y-m-d', strtotime("-6 day")));
  32. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  33. }else if($date_type == 2){
  34. $start_time = strtotime(date('Y-m-d', strtotime("-29 day")));
  35. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  36. }
  37. $order_common_model = new OrderCommonModel();
  38. $shop_stat_sum = $order_common_model->getShopStatSum(0, $start_time);
  39. $shop_stat_sum['data']['time_range'] = $time_range;
  40. return $shop_stat_sum;
  41. }else{
  42. return $this->fetch("stat/index");
  43. }
  44. }
  45. /**
  46. * 店铺统计报表
  47. * */
  48. public function getStatList()
  49. {
  50. if (request()->isAjax()) {
  51. $date_type = input('date_type', 1);
  52. if($date_type == 1){
  53. $start_time = strtotime(date('Y-m-d', strtotime("-6 day")));
  54. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  55. $day = 6;
  56. }else if($date_type == 2){
  57. $start_time = strtotime(date('Y-m-d', strtotime("-29 day")));
  58. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  59. $day = 29;
  60. }
  61. $stat_model = new StatModel();
  62. $stat_list = $stat_model->getShopStatList(0, $start_time);
  63. //将时间戳作为列表的主键
  64. $shop_stat_list = array_column($stat_list['data'], null, 'day_time');
  65. $data = array();
  66. for ($i = 0;$i <= $day;$i++){
  67. $time = strtotime(date('Y-m-d',strtotime("-".($day-$i)." day")));
  68. $data['time'][$i] = date('Y-m-d',$time);
  69. if(array_key_exists($time, $shop_stat_list)){
  70. $data['order_total'][$i] = $shop_stat_list[$time]['order_total'];
  71. $data['shipping_total'][$i] = $shop_stat_list[$time]['shipping_total'];
  72. $data['refund_total'][$i] = $shop_stat_list[$time]['refund_total'];
  73. $data['order_pay_count'][$i] = $shop_stat_list[$time]['order_pay_count'];
  74. $data['goods_pay_count'][$i] = $shop_stat_list[$time]['goods_pay_count'];
  75. $data['shop_money'][$i] = $shop_stat_list[$time]['shop_money'];
  76. $data['platform_money'][$i] = $shop_stat_list[$time]['platform_money'];
  77. $data['collect_shop'][$i] = $shop_stat_list[$time]['collect_shop'];
  78. $data['collect_goods'][$i] = $shop_stat_list[$time]['collect_goods'];
  79. $data['visit_count'][$i] = $shop_stat_list[$time]['visit_count'];
  80. $data['order_count'][$i] = $shop_stat_list[$time]['order_count'];
  81. $data['goods_count'][$i] = $shop_stat_list[$time]['goods_count'];
  82. $data['add_goods_count'][$i] = $shop_stat_list[$time]['add_goods_count'];
  83. $data['member_count'][$i] = $shop_stat_list[$time]['member_count'];
  84. }else{
  85. $data['order_total'][$i] = 0.00;
  86. $data['shipping_total'][$i] = 0.00;
  87. $data['refund_total'][$i] = 0.00;
  88. $data['order_pay_count'][$i] = 0;
  89. $data['goods_pay_count'][$i] = 0;
  90. $data['shop_money'][$i] = 0.00;
  91. $data['platform_money'][$i] = 0.00;
  92. $data['collect_shop'][$i] = 0;
  93. $data['collect_goods'][$i] = 0;
  94. $data['visit_count'][$i] = 0;
  95. $data['order_count'][$i] = 0;
  96. $data['goods_count'][$i] = 0;
  97. $data['add_goods_count'][$i] = 0;
  98. $data['member_count'][$i] = 0;
  99. }
  100. }
  101. $data['time_range'] = $time_range;
  102. return $data;
  103. }
  104. }
  105. /**
  106. * 交易分析
  107. */
  108. public function order()
  109. {
  110. if (request()->isAjax()) {
  111. $date_type = input('date_type', 0);
  112. if($date_type == 0){
  113. $start_time = strtotime("today");
  114. $time_range = date('Y-m-d',$start_time);
  115. }else if($date_type == 1){
  116. $start_time = strtotime(date('Y-m-d', strtotime("-6 day")));
  117. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  118. }else if($date_type == 2){
  119. $start_time = strtotime(date('Y-m-d', strtotime("-29 day")));
  120. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  121. }
  122. $stat_model = new StatModel();
  123. $shop_stat_sum = $stat_model->getShopStatSum(0, $start_time);
  124. $shop_stat_sum['data']['time_range'] = $time_range;
  125. return $shop_stat_sum;
  126. }else{
  127. return $this->fetch("stat/order");
  128. }
  129. }
  130. /**
  131. * 交易统计报表
  132. * */
  133. public function getOrderStatList()
  134. {
  135. if (request()->isAjax()) {
  136. $date_type = input('date_type', 1);
  137. if($date_type == 1){
  138. $start_time = strtotime(date('Y-m-d', strtotime("-6 day")));
  139. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  140. $day = 6;
  141. }else if($date_type == 2){
  142. $start_time = strtotime(date('Y-m-d', strtotime("-29 day")));
  143. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  144. $day = 29;
  145. }
  146. $stat_model = new StatModel();
  147. $stat_list = $stat_model->getShopStatList(0, $start_time);
  148. //将时间戳作为列表的主键
  149. $shop_stat_list = array_column($stat_list['data'], null, 'day_time');
  150. $data = array();
  151. for ($i = 0;$i <= $day;$i++){
  152. $time = strtotime(date('Y-m-d',strtotime("-".($day-$i)." day")));
  153. $data['time'][$i] = date('Y-m-d',$time);
  154. if(array_key_exists($time, $shop_stat_list)){
  155. $data['order_total'][$i] = $shop_stat_list[$time]['order_total'];
  156. $data['shipping_total'][$i] = $shop_stat_list[$time]['shipping_total'];
  157. $data['refund_total'][$i] = $shop_stat_list[$time]['refund_total'];
  158. $data['order_pay_count'][$i] = $shop_stat_list[$time]['order_pay_count'];
  159. $data['goods_pay_count'][$i] = $shop_stat_list[$time]['goods_pay_count'];
  160. $data['shop_money'][$i] = $shop_stat_list[$time]['shop_money'];
  161. $data['platform_money'][$i] = $shop_stat_list[$time]['platform_money'];
  162. $data['collect_shop'][$i] = $shop_stat_list[$time]['collect_shop'];
  163. $data['collect_goods'][$i] = $shop_stat_list[$time]['collect_goods'];
  164. $data['visit_count'][$i] = $shop_stat_list[$time]['visit_count'];
  165. $data['order_count'][$i] = $shop_stat_list[$time]['order_count'];
  166. $data['goods_count'][$i] = $shop_stat_list[$time]['goods_count'];
  167. $data['add_goods_count'][$i] = $shop_stat_list[$time]['add_goods_count'];
  168. $data['member_count'][$i] = $shop_stat_list[$time]['member_count'];
  169. }else{
  170. $data['order_total'][$i] = 0.00;
  171. $data['shipping_total'][$i] = 0.00;
  172. $data['refund_total'][$i] = 0.00;
  173. $data['order_pay_count'][$i] = 0;
  174. $data['goods_pay_count'][$i] = 0;
  175. $data['shop_money'][$i] = 0.00;
  176. $data['platform_money'][$i] = 0.00;
  177. $data['collect_shop'][$i] = 0;
  178. $data['collect_goods'][$i] = 0;
  179. $data['visit_count'][$i] = 0;
  180. $data['order_count'][$i] = 0;
  181. $data['goods_count'][$i] = 0;
  182. $data['add_goods_count'][$i] = 0;
  183. $data['member_count'][$i] = 0;
  184. }
  185. }
  186. $data['time_range'] = $time_range;
  187. return $data;
  188. }
  189. }
  190. /**
  191. * 商品统计
  192. * @return mixed
  193. */
  194. public function goods()
  195. {
  196. if (request()->isAjax()) {
  197. $date_type = input('date_type', 0);
  198. if($date_type == 0){
  199. $start_time = strtotime("today");
  200. $time_range = date('Y-m-d',$start_time);
  201. }else if($date_type == 1){
  202. $start_time = strtotime(date('Y-m-d', strtotime("-6 day")));
  203. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  204. }else if($date_type == 2){
  205. $start_time = strtotime(date('Y-m-d', strtotime("-29 day")));
  206. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  207. }
  208. $stat_model = new StatModel();
  209. $shop_stat_sum = $stat_model->getShopStatSum(0, $start_time);
  210. $shop_stat_sum['data']['time_range'] = $time_range;
  211. return $shop_stat_sum;
  212. }else{
  213. return $this->fetch("stat/goods");
  214. }
  215. }
  216. /**
  217. * 商品统计报表
  218. * */
  219. public function getGoodsStatList()
  220. {
  221. if (request()->isAjax()) {
  222. $date_type = input('date_type', 1);
  223. if($date_type == 1){
  224. $start_time = strtotime(date('Y-m-d', strtotime("-6 day")));
  225. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  226. $day = 6;
  227. }else if($date_type == 2){
  228. $start_time = strtotime(date('Y-m-d', strtotime("-29 day")));
  229. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  230. $day = 29;
  231. }
  232. $stat_model = new StatModel();
  233. $stat_list = $stat_model->getShopStatList(0, $start_time);
  234. //将时间戳作为列表的主键
  235. $shop_stat_list = array_column($stat_list['data'], null, 'day_time');
  236. $data = array();
  237. for ($i = 0;$i <= $day;$i++){
  238. $time = strtotime(date('Y-m-d',strtotime("-".($day-$i)." day")));
  239. $data['time'][$i] = date('Y-m-d',$time);
  240. if(array_key_exists($time, $shop_stat_list)){
  241. $data['order_total'][$i] = $shop_stat_list[$time]['order_total'];
  242. $data['shipping_total'][$i] = $shop_stat_list[$time]['shipping_total'];
  243. $data['refund_total'][$i] = $shop_stat_list[$time]['refund_total'];
  244. $data['order_pay_count'][$i] = $shop_stat_list[$time]['order_pay_count'];
  245. $data['goods_pay_count'][$i] = $shop_stat_list[$time]['goods_pay_count'];
  246. $data['shop_money'][$i] = $shop_stat_list[$time]['shop_money'];
  247. $data['platform_money'][$i] = $shop_stat_list[$time]['platform_money'];
  248. $data['collect_shop'][$i] = $shop_stat_list[$time]['collect_shop'];
  249. $data['collect_goods'][$i] = $shop_stat_list[$time]['collect_goods'];
  250. $data['visit_count'][$i] = $shop_stat_list[$time]['visit_count'];
  251. $data['order_count'][$i] = $shop_stat_list[$time]['order_count'];
  252. $data['goods_count'][$i] = $shop_stat_list[$time]['goods_count'];
  253. $data['add_goods_count'][$i] = $shop_stat_list[$time]['add_goods_count'];
  254. $data['member_count'][$i] = $shop_stat_list[$time]['member_count'];
  255. }else{
  256. $data['order_total'][$i] = 0.00;
  257. $data['shipping_total'][$i] = 0.00;
  258. $data['refund_total'][$i] = 0.00;
  259. $data['order_pay_count'][$i] = 0;
  260. $data['goods_pay_count'][$i] = 0;
  261. $data['shop_money'][$i] = 0.00;
  262. $data['platform_money'][$i] = 0.00;
  263. $data['collect_shop'][$i] = 0;
  264. $data['collect_goods'][$i] = 0;
  265. $data['visit_count'][$i] = 0;
  266. $data['order_count'][$i] = 0;
  267. $data['goods_count'][$i] = 0;
  268. $data['add_goods_count'][$i] = 0;
  269. $data['member_count'][$i] = 0;
  270. }
  271. }
  272. $data['time_range'] = $time_range;
  273. return $data;
  274. }
  275. }
  276. /**
  277. * 会员统计
  278. * @return mixed
  279. */
  280. public function member()
  281. {
  282. if (request()->isAjax()) {
  283. $date_type = input('date_type', 0);
  284. if($date_type == 0){
  285. $start_time = strtotime("today");
  286. $time_range = date('Y-m-d',$start_time);
  287. }else if($date_type == 1){
  288. $start_time = strtotime(date('Y-m-d', strtotime("-6 day")));
  289. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  290. }else if($date_type == 2){
  291. $start_time = strtotime(date('Y-m-d', strtotime("-29 day")));
  292. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  293. }
  294. $stat_model = new StatModel();
  295. $shop_stat_sum = $stat_model->getShopStatSum(0, $start_time);
  296. $shop_stat_sum['data']['time_range'] = $time_range;
  297. return $shop_stat_sum;
  298. }else{
  299. return $this->fetch("stat/member");
  300. }
  301. }
  302. /**
  303. * 会员统计报表
  304. * */
  305. public function getMemberStatList()
  306. {
  307. if (request()->isAjax()) {
  308. $date_type = input('date_type', 1);
  309. if($date_type == 1){
  310. $start_time = strtotime(date('Y-m-d', strtotime("-6 day")));
  311. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  312. $day = 6;
  313. }else if($date_type == 2){
  314. $start_time = strtotime(date('Y-m-d', strtotime("-29 day")));
  315. $time_range = date('Y-m-d',$start_time).' 至 '.date('Y-m-d',strtotime("today"));
  316. $day = 29;
  317. }
  318. $stat_model = new StatModel();
  319. $stat_list = $stat_model->getShopStatList(0, $start_time);
  320. //将时间戳作为列表的主键
  321. $shop_stat_list = array_column($stat_list['data'], null, 'day_time');
  322. $data = array();
  323. for ($i = 0;$i <= $day;$i++){
  324. $time = strtotime(date('Y-m-d',strtotime("-".($day-$i)." day")));
  325. $data['time'][$i] = date('Y-m-d',$time);
  326. if(array_key_exists($time, $shop_stat_list)){
  327. $data['order_total'][$i] = $shop_stat_list[$time]['order_total'];
  328. $data['shipping_total'][$i] = $shop_stat_list[$time]['shipping_total'];
  329. $data['refund_total'][$i] = $shop_stat_list[$time]['refund_total'];
  330. $data['order_pay_count'][$i] = $shop_stat_list[$time]['order_pay_count'];
  331. $data['goods_pay_count'][$i] = $shop_stat_list[$time]['goods_pay_count'];
  332. $data['shop_money'][$i] = $shop_stat_list[$time]['shop_money'];
  333. $data['platform_money'][$i] = $shop_stat_list[$time]['platform_money'];
  334. $data['collect_shop'][$i] = $shop_stat_list[$time]['collect_shop'];
  335. $data['collect_goods'][$i] = $shop_stat_list[$time]['collect_goods'];
  336. $data['visit_count'][$i] = $shop_stat_list[$time]['visit_count'];
  337. $data['order_count'][$i] = $shop_stat_list[$time]['order_count'];
  338. $data['goods_count'][$i] = $shop_stat_list[$time]['goods_count'];
  339. $data['add_goods_count'][$i] = $shop_stat_list[$time]['add_goods_count'];
  340. $data['member_count'][$i] = $shop_stat_list[$time]['member_count'];
  341. }else{
  342. $data['order_total'][$i] = 0.00;
  343. $data['shipping_total'][$i] = 0.00;
  344. $data['refund_total'][$i] = 0.00;
  345. $data['order_pay_count'][$i] = 0;
  346. $data['goods_pay_count'][$i] = 0;
  347. $data['shop_money'][$i] = 0.00;
  348. $data['platform_money'][$i] = 0.00;
  349. $data['collect_shop'][$i] = 0;
  350. $data['collect_goods'][$i] = 0;
  351. $data['visit_count'][$i] = 0;
  352. $data['order_count'][$i] = 0;
  353. $data['goods_count'][$i] = 0;
  354. $data['add_goods_count'][$i] = 0;
  355. $data['member_count'][$i] = 0;
  356. }
  357. }
  358. $data['time_range'] = $time_range;
  359. return $data;
  360. }
  361. }
  362. }