Sales.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace app\supplier\controller\statistics;
  3. use app\supplier\controller\Controller;
  4. use app\common\service\statistics\OrderService;
  5. use app\common\service\statistics\ProductRankingService;
  6. /**
  7. * 销售数据控制器
  8. */
  9. class Sales extends Controller
  10. {
  11. /**
  12. * 销售数据统计
  13. */
  14. public function index()
  15. {
  16. return $this->renderSuccess('', [
  17. // 成交订单统计
  18. 'order' => (new OrderService($this->getSupplierId()))->getData(),
  19. // 成交商品统计
  20. 'product' => (new OrderService($this->getSupplierId()))->getProductData(),
  21. // 销量top10
  22. 'productSaleRanking' => (new ProductRankingService())->getSaleRanking($this->getSupplierId()),
  23. // 浏览top10
  24. 'productViewRanking' => (new ProductRankingService())->getViewRanking($this->getSupplierId()),
  25. // 退款top10
  26. 'productRefundRanking' => (new ProductRankingService())->getRefundRanking($this->getSupplierId()),
  27. ]);
  28. }
  29. /**
  30. * 通过时间段查询本期上期金额
  31. * $type类型:order refund
  32. */
  33. public function order($search_time, $type = 'order')
  34. {
  35. $days = $this->getDays($search_time);
  36. $data = [];
  37. if($type == 'order'){
  38. $data = (new OrderService($this->getSupplierId()))->getDataByDate($days);
  39. }else if($type == 'refund'){
  40. $data = (new OrderService($this->getSupplierId()))->getRefundByDate($days);
  41. }
  42. return $this->renderSuccess('', [
  43. // 日期
  44. 'days' => $days,
  45. // 数据
  46. 'data' => $data,
  47. ]);
  48. }
  49. /**
  50. * 通过时间段查询本期上期金额
  51. */
  52. public function product($search_time)
  53. {
  54. $days = $this->getDays($search_time);
  55. return $this->renderSuccess('', [
  56. // 日期
  57. 'days' => $days,
  58. // 数据
  59. 'data' => (new OrderService($this->getSupplierId()))->getProductDataByDate($days),
  60. ]);
  61. }
  62. /**
  63. * 获取具体日期数组
  64. */
  65. private function getDays($search_time)
  66. {
  67. //搜索时间段
  68. if(!isset($search_time) || empty($search_time)){
  69. //没有传,则默认为最近7天
  70. $end_time = date('Y-m-d', time());
  71. $start_time = date('Y-m-d', strtotime('-7 day',time()));
  72. }else{
  73. $start_time = array_shift($search_time);
  74. $end_time = array_pop($search_time);
  75. }
  76. $dt_start = strtotime($start_time);
  77. $dt_end = strtotime($end_time);
  78. $date = [];
  79. $date[] = date('Y-m-d', strtotime($start_time));
  80. while($dt_start < $dt_end) {
  81. $date[] = date('Y-m-d', strtotime('+1 day',$dt_start));
  82. $dt_start = strtotime('+1 day',$dt_start);
  83. }
  84. return $date;
  85. }
  86. }