Store.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <?php
  2. namespace app\store\model;
  3. use app\common\library\helper;
  4. use app\common\model\Store as StoreModel;
  5. /**
  6. * 商城模型
  7. * Class Store
  8. * @package app\store\model
  9. */
  10. class Store extends StoreModel
  11. {
  12. /* @var Goods $GoodsModel */
  13. private $GoodsModel;
  14. /* @var Order $GoodsModel */
  15. private $OrderModel;
  16. /* @var User $GoodsModel */
  17. private $UserModel;
  18. /**
  19. * 构造方法
  20. */
  21. public function initialize()
  22. {
  23. parent::initialize();
  24. /* 初始化模型 */
  25. $this->GoodsModel = new Goods;
  26. $this->OrderModel = new Order;
  27. $this->UserModel = new User;
  28. }
  29. /**
  30. * 后台首页数据
  31. * @return array
  32. * @throws \think\Exception
  33. */
  34. public function getHomeData()
  35. {
  36. $today = date('Y-m-d');
  37. $yesterday = date('Y-m-d', strtotime('-1 day'));
  38. // 最近七天日期
  39. $lately7days = $this->getLately7days();
  40. $data = [
  41. 'widget-card' => [
  42. // 商品总量
  43. 'goods_total' => $this->getGoodsTotal(),
  44. // 用户总量
  45. 'user_total' => $this->getUserTotal(),
  46. // 订单总量
  47. 'order_total' => $this->getOrderTotal(),
  48. // 评价总量
  49. 'comment_total' => $this->getCommentTotal()
  50. ],
  51. 'widget-outline' => [
  52. // 销售额(元)
  53. 'order_total_price' => [
  54. 'tday' => $this->getOrderTotalPrice($today),
  55. 'ytd' => $this->getOrderTotalPrice($yesterday)
  56. ],
  57. // 支付订单数
  58. 'order_total' => [
  59. 'tday' => $this->getOrderTotal($today),
  60. 'ytd' => $this->getOrderTotal($yesterday)
  61. ],
  62. // 新增用户数
  63. 'new_user_total' => [
  64. 'tday' => $this->getUserTotal($today),
  65. 'ytd' => $this->getUserTotal($yesterday)
  66. ],
  67. // 下单用户数
  68. 'order_user_total' => [
  69. 'tday' => $this->getPayOrderUserTotal($today),
  70. 'ytd' => $this->getPayOrderUserTotal($yesterday)
  71. ]
  72. ],
  73. 'widget-echarts' => [
  74. // 最近七天日期
  75. 'date' => helper::jsonEncode($lately7days),
  76. 'order_total' => helper::jsonEncode($this->getOrderTotalByDate($lately7days)),
  77. 'order_total_price' => helper::jsonEncode($this->getOrderTotalPriceByDate($lately7days))
  78. ]
  79. ];
  80. return $data;
  81. }
  82. /**
  83. * 最近七天日期
  84. */
  85. private function getLately7days()
  86. {
  87. // 获取当前周几
  88. $date = [];
  89. for ($i = 0; $i < 7; $i++) {
  90. $date[] = date('Y-m-d', strtotime('-' . $i . ' days'));
  91. }
  92. return array_reverse($date);
  93. }
  94. /**
  95. * 获取商品总量
  96. * @return string
  97. * @throws \think\Exception
  98. */
  99. private function getGoodsTotal()
  100. {
  101. return number_format($this->GoodsModel->getGoodsTotal());
  102. }
  103. /**
  104. * 获取用户总量
  105. * @param null $day
  106. * @return string
  107. * @throws \think\Exception
  108. */
  109. private function getUserTotal($day = null)
  110. {
  111. return number_format($this->UserModel->getUserTotal($day));
  112. }
  113. /**
  114. * 获取订单总量
  115. * @param null $day
  116. * @return string
  117. * @throws \think\Exception
  118. */
  119. private function getOrderTotal($day = null)
  120. {
  121. return number_format($this->OrderModel->getPayOrderTotal($day, $day));
  122. }
  123. /**
  124. * 获取订单总量 (指定日期)
  125. * @param $days
  126. * @return array
  127. * @throws \think\Exception
  128. */
  129. private function getOrderTotalByDate($days)
  130. {
  131. $data = [];
  132. foreach ($days as $day) {
  133. $data[] = $this->getOrderTotal($day);
  134. }
  135. return $data;
  136. }
  137. /**
  138. * 获取评价总量
  139. * @return string
  140. */
  141. private function getCommentTotal()
  142. {
  143. $model = new Comment;
  144. return number_format($model->getCommentTotal());
  145. }
  146. /**
  147. * 获取某天的总销售额
  148. * @param null $day
  149. * @return string
  150. */
  151. private function getOrderTotalPrice($day = null)
  152. {
  153. return helper::number2($this->OrderModel->getOrderTotalPrice($day, $day));
  154. }
  155. /**
  156. * 获取订单总量 (指定日期)
  157. * @param $days
  158. * @return array
  159. */
  160. private function getOrderTotalPriceByDate($days)
  161. {
  162. $data = [];
  163. foreach ($days as $day) {
  164. $data[] = $this->getOrderTotalPrice($day);
  165. }
  166. return $data;
  167. }
  168. /**
  169. * 获取某天的下单用户数
  170. * @param $day
  171. * @return float|int
  172. */
  173. private function getPayOrderUserTotal($day)
  174. {
  175. return number_format($this->OrderModel->getPayOrderUserTotal($day));
  176. }
  177. }