GoodsRanking.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. /**
  3. *
  4. * @copyright ©2020 点小铺
  5. * @author hanj
  6. * @link: https://dyuit.com
  7. * Created by VSCode
  8. */
  9. namespace app\store\service\statistics\data;
  10. use app\common\service\Basics as BasicsService;
  11. use app\store\model\OrderGoods as OrderGoodsModel;
  12. use app\common\enum\order\Status as OrderStatusEnum;
  13. use app\common\enum\order\PayStatus as OrderPayStatusEnum;
  14. /**
  15. * 数据统计-商品销售榜
  16. * Class GoodsRanking
  17. * @package app\store\service\statistics\data
  18. */
  19. class GoodsRanking extends BasicsService
  20. {
  21. /**
  22. * 商品销售榜
  23. * @throws \think\db\exception\DataNotFoundException
  24. * @throws \think\db\exception\ModelNotFoundException
  25. * @throws \think\exception\DbException
  26. */
  27. public function getGoodsRanking()
  28. {
  29. return (new OrderGoodsModel)->alias('o_goods')
  30. ->field([
  31. 'goods_id',
  32. 'goods_name',
  33. 'SUM(total_pay_price) AS sales_volume',
  34. 'SUM(total_num) AS total_sales_num'
  35. ])
  36. ->join('order', 'order.order_id = o_goods.order_id')
  37. ->where('order.pay_status', '=', OrderPayStatusEnum::SUCCESS)
  38. ->where('order.order_status', '<>', OrderStatusEnum::CANCELLED)
  39. ->group('goods_id, goods_name')
  40. // order:此处按总销售额排序,如需按销量改为total_sales_num
  41. ->order(['sales_volume' => 'DESC'])
  42. ->limit(10)
  43. ->select();
  44. }
  45. }