Store.php 5.0 KB

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