Home.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
  8. // +----------------------------------------------------------------------
  9. // | Author: 萤火科技 <admin@yiovo.com>
  10. // +----------------------------------------------------------------------
  11. declare (strict_types = 1);
  12. namespace app\store\service;
  13. use app\common\enum\order\refund\RefundStatus as RefundStatusEnum;
  14. use app\common\library\helper;
  15. use app\common\model\Cart;
  16. use app\common\service\BaseService;
  17. use app\store\model\OrderRefund;
  18. use app\store\model\User as UserModel;
  19. use app\store\model\Goods as GoodsModel;
  20. use app\store\model\ShopGoods as ShopGoodsModel;
  21. use app\store\model\Order as OrderModel;
  22. use app\store\model\OrderGoods as OrderGoodsModel;
  23. use app\store\model\Receipt as ReceiptModel;
  24. use app\store\model\OrderRefund as OrderRefundModel;
  25. use app\store\model\UserCoupon;
  26. use app\store\model\VisitRecord;
  27. use app\common\enum\order\OrderStatus as OrderStatusEnum;
  28. use app\common\enum\order\PayStatus as PayStatusEnum;
  29. use think\facade\Db;
  30. /**
  31. * 商户数据服务类
  32. * Class Store
  33. * @package app\store\service
  34. */
  35. class Home extends BaseService
  36. {
  37. /* @var GoodsModel $GoodsModel */
  38. private $GoodsModel;
  39. /* @var OrderModel $GoodsModel */
  40. private $OrderModel;
  41. private $OrderGoodsModel;
  42. /* @var UserModel $GoodsModel */
  43. private $UserModel;
  44. private $ReceiptModel;
  45. /**
  46. * 构造方法
  47. */
  48. public function __construct()
  49. {
  50. parent::__construct();
  51. /* 初始化模型 */
  52. $this->GoodsModel = new GoodsModel;
  53. $this->OrderModel = new OrderModel;
  54. $this->OrderGoodsModel = new OrderGoodsModel;
  55. $this->UserModel = new UserModel;
  56. $this->ReceiptModel = new ReceiptModel;
  57. }
  58. /**
  59. * 后台首页数据
  60. * @return array
  61. */
  62. public function getData(): array
  63. {
  64. // 今天的日期
  65. $today = date('Y-m-d');
  66. // $today = '2022-06-16';
  67. // 昨天的日期
  68. $yesterday = date('Y-m-d', strtotime('-1 day'));
  69. // $yesterday = '2022-06-15';
  70. // 最近七天日期
  71. $lately7days = $this->getLately7days();
  72. $tdayPayRatio = $this->getuVTotal($today) > 0 ?
  73. helper::number2($this->getPayOrderUserTotal($today)/$this->getuVTotal($today)*100) : '0.00';
  74. $ytdPayRatio = $this->getuVTotal($yesterday) > 0 ?
  75. helper::number2($this->getPayOrderUserTotal($yesterday)/$this->getuVTotal($yesterday)*100) : '0.00';
  76. $tdayUserUnitPrice = $this->getPayOrderUserTotal($today) > 0 ?
  77. helper::number2($this->getOrderTotalPrice($today)/$this->getPayOrderUserTotal($today)) : '0.00';
  78. $ytdUserUnitPrice = $this->getPayOrderUserTotal($yesterday) > 0 ?
  79. helper::number2($this->getOrderTotalPrice($yesterday)/$this->getPayOrderUserTotal($yesterday)) : '0.00';
  80. $data = [
  81. // 实时概况
  82. 'overview' => [
  83. // 支付金额(元)
  84. 'orderTotalPrice' => [
  85. 'tday' => $this->getOrderTotalPrice($today),
  86. 'ytd' => $this->getOrderTotalPrice($yesterday),
  87. 'tb' => $this->formatTb($this->getOrderTotalPrice($today), $this->getOrderTotalPrice($yesterday)),
  88. ],
  89. // 新客成交金额(元)
  90. 'newUserOrderAmount' => $this->getNewUserOrderAmount($today),
  91. // 老客成交金额(元)
  92. 'oldUserOrderAmount' => $this->getOldUserOrderAmount($today),
  93. // 支付人数
  94. 'consumeUserTotal' => [
  95. 'tday' => $this->getPayOrderUserTotal($today),
  96. 'ytd' => $this->getPayOrderUserTotal($yesterday),
  97. 'tb' => $this->formatTb($this->getPayOrderUserTotal($today), $this->getPayOrderUserTotal($yesterday))
  98. ],
  99. // 支付订单数
  100. 'orderTotal' => [
  101. 'tday' => $this->getPayOrderTotal($today),
  102. 'ytd' => $this->getPayOrderTotal($yesterday),
  103. 'tb' => $this->formatTb($this->getPayOrderTotal($today), $this->getPayOrderTotal($yesterday))
  104. ],
  105. // 支付商品件数
  106. 'orderGoodsTotal' => [
  107. 'tday' => $this->getPayOrderGoodsTotal($today),
  108. 'ytd' => $this->getPayOrderGoodsTotal($yesterday),
  109. 'tb' => $this->formatTb($this->getPayOrderGoodsTotal($today), $this->getPayOrderGoodsTotal($yesterday))
  110. ],
  111. // 新增会员数
  112. 'newUserTotal' => [
  113. 'tday' => $this->getUserTotal($today),
  114. 'ytd' => $this->getUserTotal($yesterday)
  115. ],
  116. //领券用户数
  117. 'couponUserTotal' => [
  118. 'tday' => $this->getCouponUserTotal($today),
  119. 'ytd' => $this->getCouponUserTotal($yesterday)
  120. ],
  121. //加购用户数
  122. 'cartUserTotal' => [
  123. 'tday' => $this->getCartUserTotal($today),
  124. 'ytd' => $this->getCartUserTotal($yesterday)
  125. ],
  126. //退款订单数
  127. 'refundOrderTotal' => [
  128. 'tday' => $this->getRefundOrderTotal($today),
  129. 'ytd' => $this->getRefundOrderTotal($yesterday)
  130. ],
  131. //退款商品件数
  132. 'refundGoodsTotal' => [
  133. 'tday' => $this->getRefundGoodsTotal($today),
  134. 'ytd' => $this->getRefundGoodsTotal($yesterday)
  135. ],
  136. //退款金额
  137. 'refundMoneyTotal' => [
  138. 'tday' => $this->getRefundMoneyTotal($today),
  139. 'ytd' => $this->getRefundMoneyTotal($yesterday)
  140. ],
  141. // 访客数
  142. 'uvTotal' => [
  143. 'tday' => $this->getuVTotal($today),
  144. 'ytd' => $this->getuVTotal($yesterday),
  145. 'tb' => $this->formatTb($this->getuVTotal($today), $this->getuVTotal($yesterday))
  146. ],
  147. // 浏览量
  148. 'pvTotal' => [
  149. 'tday' => $this->getpVTotal($today),
  150. 'ytd' => $this->getpVTotal($yesterday),
  151. 'tb' => $this->formatTb($this->getpVTotal($today), $this->getpVTotal($yesterday))
  152. ],
  153. // 支付转化率
  154. 'payRatio' => [
  155. 'tday' => $tdayPayRatio,
  156. 'ytd' => $ytdPayRatio,
  157. 'tb' => $this->formatTb($tdayPayRatio, $ytdPayRatio)
  158. ],
  159. // 客单价
  160. 'userUnitPrice' => [
  161. 'tday' => $tdayUserUnitPrice,
  162. 'ytd' => $ytdUserUnitPrice,
  163. 'tb' => $this->formatTb($tdayUserUnitPrice, $ytdUserUnitPrice)
  164. ],
  165. ],
  166. // 数据统计
  167. 'statistics' => [
  168. // 在售商品总数量
  169. 'onSaleGoodsTotal' => $this->getOnSaleGoodsTotal(),
  170. // 会员总人数
  171. 'userTotal' => $this->getUserTotal(),
  172. // 本月付款订单总量
  173. 'orderTotal' => $this->getMonthPayOrderTotal(),
  174. // 本月消费总人数
  175. 'consumeUserTotal' => $this->getMonthPayUserTotal()
  176. ],
  177. // 待办事项
  178. 'pending' => [
  179. // 待发货订单
  180. 'deliverOrderTotal' => $this->getNotDeliveredOrderTotal(),
  181. 'deliverShopOrderTotal' => $this->getNotDeliveredShopOrderTotal(),//待提货订单
  182. // 待处理售后单
  183. 'refundTotal' => $this->getRefundTotal(),
  184. // 待付款订单(笔)
  185. 'paidOrderTotal' => $this->getNotPayOrderTotal(),
  186. // 已售罄商品数量
  187. 'soldoutGoodsTotal' => $this->getSoldoutGoodsTotal(),
  188. // 库存预警商品(SKU)
  189. 'alarmGoodsTotal' => $this->getAlarmGoodsTotal(),
  190. // 门店库存预警商品(SKU)
  191. 'alarmShopGoodsTotal' => $this->getAlarmShopGoodsTotal(),
  192. // 待开发票
  193. 'waitReceiptTotal' => $this->getWaitReceiptTotal()
  194. ],
  195. // 交易走势
  196. 'tradeTrend' => [
  197. // 最近七天日期
  198. 'date' => $lately7days,
  199. 'orderTotal' => $this->getOrderTotalByDate($lately7days),
  200. 'orderTotalPrice' => $this->getOrderTotalPriceByDate($lately7days)
  201. ]
  202. ];
  203. return $data;
  204. }
  205. /**
  206. * 格式化输出较前一日对比
  207. *
  208. * @param float|int $tday 今日
  209. * @param float|int $ytd 明日
  210. * @return array
  211. */
  212. private function formatTb($tday, $ytd)
  213. {
  214. if ($tday == 0 && $ytd > 0) {
  215. $type = 2;
  216. $percent = '--';
  217. } elseif ($tday > 0 && $ytd == 0) {
  218. $type = 1;
  219. $percent = '--';
  220. } elseif ($tday == $ytd) {
  221. $type = 3;
  222. $percent = '持平';
  223. } else {
  224. $percent = helper::bcdiv(abs($tday-$ytd), $ytd, 3) * 100;
  225. $percent = $percent.'%';
  226. if ($tday > $ytd) {
  227. $type = 1;
  228. } else {
  229. $type = 2;
  230. }
  231. }
  232. return [
  233. 'type' => $type,
  234. 'percent' => $percent
  235. ];
  236. }
  237. /**
  238. * 最近七天日期
  239. */
  240. private function getLately7days()
  241. {
  242. // 获取当前周几
  243. $date = [];
  244. for ($i = 0; $i < 7; $i++) {
  245. $date[] = date('Y-m-d', strtotime('-' . $i . ' days'));
  246. }
  247. return array_reverse($date);
  248. }
  249. /**
  250. * 获取商品总量
  251. * @return string
  252. */
  253. private function getOnSaleGoodsTotal()
  254. {
  255. return number_format($this->GoodsModel->getOnSaleGoodsTotal());
  256. }
  257. /**
  258. * 会员总人数
  259. * @param string $date 注册日期
  260. * @param true $isConsume 是否已消费
  261. * @return string
  262. */
  263. private function getUserTotal(string $date = null, $isConsume = null)
  264. {
  265. return number_format($this->UserModel->getUserTotal(compact('date', 'isConsume')));
  266. }
  267. /**
  268. * 获取某天的领券用户数
  269. * @param $date
  270. */
  271. private function getCouponUserTotal($date)
  272. {
  273. $startTime = strtotime($date);
  274. $data = UserCoupon::where('create_time', '>=', $startTime)
  275. ->where('create_time', '<', $startTime + 86400)
  276. ->group('user_id')->count();
  277. return $data;
  278. }
  279. /**
  280. * 获取某天的加购用户数
  281. * @param string $date
  282. * @return float|int
  283. */
  284. public function getCartUserTotal(string $date)
  285. {
  286. $startTime = strtotime($date);
  287. return Cart::field('user_id')
  288. ->where('create_time', '>=', $startTime)
  289. ->where('create_time', '<', $startTime + 86400)
  290. ->where('is_delete', '=', '0')
  291. ->group('user_id')
  292. ->count();
  293. }
  294. /**
  295. * 获取某天的退款订单数
  296. * @param $date
  297. */
  298. private function getRefundOrderTotal($date)
  299. {
  300. $startTime = strtotime($date);
  301. $filter[] = ['status', '=', RefundStatusEnum::COMPLETED];
  302. $filter[] = ['finance_refund', '=', 10];
  303. $filter[] = ['refund_succ_time', '>=', $startTime];
  304. $filter[] = ['refund_succ_time', '<', $startTime + 86400];
  305. $data = OrderRefund::where($filter)->group('order_id')->count();
  306. return $data;
  307. }
  308. /**
  309. * 获取某天的退款商品件数
  310. * @param $date
  311. */
  312. private function getRefundGoodsTotal($date)
  313. {
  314. $startTime = strtotime($date);
  315. $filter[] = ['status', '=', RefundStatusEnum::COMPLETED];
  316. $filter[] = ['finance_refund', '=', 10];
  317. $filter[] = ['refund_succ_time', '>=', $startTime];
  318. $filter[] = ['refund_succ_time', '<', $startTime + 86400];
  319. $data = OrderRefund::where($filter)->sum('goods_num');
  320. return $data;
  321. }
  322. /**
  323. * 获取某天的退款金额
  324. * @param $date
  325. */
  326. private function getRefundMoneyTotal($date)
  327. {
  328. $startTime = strtotime($date);
  329. $filter[] = ['status', '=', RefundStatusEnum::COMPLETED];
  330. $filter[] = ['finance_refund', '=', 10];
  331. $filter[] = ['refund_succ_time', '>=', $startTime];
  332. $filter[] = ['refund_succ_time', '<', $startTime + 86400];
  333. $res = OrderRefund::where($filter)->sum('refund_money');
  334. return helper::number2($res);
  335. }
  336. /**
  337. * 获取某天的uv
  338. * @param $date
  339. * @return int
  340. */
  341. private function getuVTotal($date)
  342. {
  343. $startTime = strtotime($date);
  344. $filter[] = ['v_type', '=', 1]; // 0-pv 1-uv
  345. $filter[] = ['create_time', '>=', $startTime];
  346. $filter[] = ['create_time', '<', $startTime + 86400];
  347. $data = VisitRecord::where($filter)->count();
  348. return $data;
  349. }
  350. /**
  351. * 获取某天的pv
  352. * @param $date
  353. * @return int
  354. */
  355. private function getpVTotal($date)
  356. {
  357. $startTime = strtotime($date);
  358. $filter[] = ['v_type', '=', 0]; // 0-pv 1-uv
  359. // $filter[] = ['visit_type', '=', 0]; // 0-首页
  360. $filter[] = ['create_time', '>=', $startTime];
  361. $filter[] = ['create_time', '<', $startTime + 86400];
  362. $data = VisitRecord::where($filter)->count();
  363. return $data;
  364. }
  365. /**
  366. * 获取已付款订单总量 (批量)
  367. * @param array $days
  368. * @return array
  369. */
  370. private function getOrderTotalByDate(array $days)
  371. {
  372. $data = [];
  373. foreach ($days as $day) {
  374. $data[] = $this->getPayOrderTotal($day);
  375. }
  376. return $data;
  377. }
  378. /**
  379. * 获取订单总金额(指定日期)
  380. * @param string $day
  381. * @return string
  382. */
  383. private function getOrderTotalPrice(string $day = null)
  384. {
  385. return helper::number2($this->OrderModel->getOrderTotalPrice($day, $day));
  386. }
  387. /**
  388. * 获取新客成交金额(指定日期)
  389. * 新客成交金额(元):统计当日新客(指未在公明腊肠小程序下过单的用户)实际成交金额
  390. * 占总成交额:统计新客成交金额占当日新老客总成交金额的百分比,四舍五入保留1位小数
  391. * 如果一个新客当天先后下单2次,第1次算新客成交金额,第2次算老客成交金额
  392. * @param $date
  393. * @return array
  394. */
  395. private function getNewUserOrderAmount($date)
  396. {
  397. $startTime = strtotime($date);
  398. // 总销售额
  399. $totalAmount = OrderModel::where('pay_status', '=', PayStatusEnum::SUCCESS)
  400. ->where('order_status', '<>', OrderStatusEnum::CANCELLED)
  401. ->where('is_delete', '=', 0)
  402. ->where('pay_time', '>=', $startTime)
  403. ->where('pay_time', '<', $startTime + 86400)
  404. ->field('sum(pay_price+rice_card_money) as total_amount')
  405. ->find();
  406. $totalAmount = $totalAmount->total_amount ?? 0;
  407. // 获取新客成交金额 历史未下单
  408. // $newAmount = OrderModel::alias('o')->where('o.pay_status', '=', PayStatusEnum::SUCCESS)
  409. // ->where('o.order_status', '<>', OrderStatusEnum::CANCELLED)
  410. // ->where('o.is_delete', '=', 0)
  411. // ->whereNotExists("select 1 from yoshop_order where user_id=o.user_id and pay_status=20 and pay_time < {$startTime}")
  412. // ->where('pay_time', '>=', $startTime)
  413. // ->where('pay_time', '<', $startTime + 86400)
  414. // ->order('pay_time', 'desc')
  415. // ->group('o.user_id')
  416. // ->field('min(o.pay_time) pay_time,sum(o.pay_price+o.rice_card_money) as total_amount')
  417. // ->find();
  418. // $newAmount = $newAmount->total_amount ?? 0;
  419. $newAmountArr = Db::query("select o.user_id,sum(o.pay_price+o.rice_card_money) as total_amount
  420. from (select user_id,min(pay_time) as mp from `yoshop_order` group by user_id) as ump,`yoshop_order` as o
  421. where not exists(select 1 from yoshop_order where user_id=o.user_id and pay_status=20 and pay_time < ?)
  422. and ump.user_id=o.user_id and ump.mp=o.pay_time
  423. and pay_status = 20 and is_delete=0 and order_status <> 20
  424. and pay_time >= ? and pay_time < ? and ump.mp > 0 group by o.user_id order by pay_time;", [$startTime, $startTime, $startTime + 86400]);
  425. $newAmount = array_sum(array_column($newAmountArr,'total_amount'));
  426. return [
  427. 'tday' => helper::number2($newAmount),
  428. 'percent' => $totalAmount > 0 ? helper::number2($newAmount / $totalAmount * 100) : '0.00'
  429. ];
  430. }
  431. /**
  432. * 获取老客成交金额(指定日期)
  433. * 老客成交金额(元):统计当日老客(指已在公明腊肠小程序下过单的用户)实际成交金额
  434. * 占总成交额:统计老客成交金额占当日新老客总成交金额的百分比,四舍五入保留1位小数
  435. * @param $date
  436. * @return array
  437. */
  438. private function getOldUserOrderAmount($date)
  439. {
  440. $startTime = strtotime($date);
  441. // 总销售额
  442. $totalAmount = OrderModel::where('pay_status', '=', PayStatusEnum::SUCCESS)
  443. ->where('order_status', '<>', OrderStatusEnum::CANCELLED)
  444. ->where('is_delete', '=', 0)
  445. ->where('pay_time', '>=', $startTime)
  446. ->where('pay_time', '<', $startTime + 86400)
  447. ->field('sum(pay_price+rice_card_money) as total_amount')
  448. ->find();
  449. $totalAmount = $totalAmount->total_amount ?? 0;
  450. // 获取老客成交金额
  451. $oldAmount = OrderModel::alias('o')->where('o.pay_status', '=', PayStatusEnum::SUCCESS)
  452. ->where('o.order_status', '<>', OrderStatusEnum::CANCELLED)
  453. ->where('o.is_delete', '=', 0)
  454. ->whereExists("select 1 from yoshop_order where user_id=o.user_id and pay_status=20 and pay_time < {$startTime}")
  455. ->where('pay_time', '>=', $startTime)
  456. ->where('pay_time', '<', $startTime + 86400)
  457. ->order('pay_time', 'desc')
  458. ->group('o.user_id')
  459. ->field('sum(o.pay_price+o.rice_card_money) as total_amount')
  460. ->find();
  461. // 当日新客消费大于1次的成交金额
  462. $newAmountFirst = $this->getNewUserOrderAmount($date)['tday'] ?? 0;
  463. // 当日新客消费总金额
  464. $newAmount = OrderModel::alias('o')->where('o.pay_status', '=', PayStatusEnum::SUCCESS)
  465. ->where('o.order_status', '<>', OrderStatusEnum::CANCELLED)
  466. ->where('o.is_delete', '=', 0)
  467. ->whereNotExists("select 1 from yoshop_order where user_id=o.user_id and pay_status=20 and pay_time < {$startTime}")
  468. ->where('pay_time', '>=', $startTime)
  469. ->where('pay_time', '<', $startTime + 86400)
  470. ->order('pay_time', 'desc')
  471. ->field('sum(o.pay_price+o.rice_card_money) as total_amount')
  472. ->find();
  473. $newAmount = $newAmount->total_amount ?? 0;
  474. $oldAmount = $oldAmount->total_amount ?? 0;
  475. $oldAmount = $oldAmount + ($newAmount - $newAmountFirst);
  476. return [
  477. 'tday' => helper::number2($oldAmount),
  478. 'percent' => $totalAmount > 0 ? helper::number2($oldAmount / $totalAmount * 100) : '0.00'
  479. ];
  480. }
  481. /**
  482. * 获取订单总金额 (批量)
  483. * @param array $days
  484. * @return array
  485. */
  486. private function getOrderTotalPriceByDate(array $days)
  487. {
  488. $data = [];
  489. foreach ($days as $day) {
  490. $data[] = $this->getOrderTotalPrice($day);
  491. }
  492. return $data;
  493. }
  494. /**
  495. * 获取某天的下单用户数
  496. * @param string $day
  497. * @return float|int
  498. */
  499. private function getPayOrderUserTotal(string $day)
  500. {
  501. return number_format($this->OrderModel->getPayOrderUserTotal($day));
  502. }
  503. /**
  504. * 获取订单总量
  505. * @param string $day
  506. * @return string
  507. */
  508. private function getPayOrderTotal(string $day = null)
  509. {
  510. return number_format($this->OrderModel->getPayOrderTotal($day, $day));
  511. }
  512. /**
  513. * 获取支付商品件数
  514. * @param string $day
  515. * @return string
  516. */
  517. private function getPayOrderGoodsTotal(string $day = null)
  518. {
  519. return number_format($this->OrderModel->getPayOrderGoodsTotal($day, $day));
  520. }
  521. /**
  522. * 获取本月已付款订单总量
  523. * @return string
  524. */
  525. private function getMonthPayOrderTotal()
  526. {
  527. return number_format($this->OrderModel->getMonthPayOrderTotal());
  528. }
  529. public function getMonthPayUserTotal() {
  530. return number_format($this->OrderModel->getMonthPayUserTotal());
  531. }
  532. // 获取未发货订单数量
  533. private function getNotDeliveredOrderTotal()
  534. {
  535. return number_format($this->OrderGoodsModel->getNotDeliveredOrderTotal());
  536. }
  537. //获取未自提订单数量
  538. private function getNotDeliveredShopOrderTotal(){
  539. return number_format($this->OrderGoodsModel->getNotDeliveredShopOrderTotal());
  540. }
  541. // 获取未付款订单数量
  542. private function getNotPayOrderTotal()
  543. {
  544. return number_format($this->OrderModel->getNotPayOrderTotal());
  545. }
  546. // 获取已售罄的商品
  547. private function getSoldoutGoodsTotal()
  548. {
  549. return number_format($this->GoodsModel->getSoldoutGoodsTotal());
  550. }
  551. // 获取库存预警的商品(SKU)
  552. private function getAlarmGoodsTotal()
  553. {
  554. return number_format($this->GoodsModel->getAlarmGoodsTotal());
  555. }
  556. // 获取门店库存预警的商品(SKU)
  557. private function getAlarmShopGoodsTotal()
  558. {
  559. return number_format((new ShopGoodsModel())->getAlarmGoodsTotal());
  560. }
  561. private function getWaitReceiptTotal()
  562. {
  563. return number_format($this->ReceiptModel->getWaitReceiptTotal());
  564. }
  565. // 获取待处理售后单数量
  566. private function getRefundTotal()
  567. {
  568. $model = new OrderRefundModel;
  569. return number_format($model->getRefundTotal());
  570. }
  571. }