CourseActivityService.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. namespace addons\Course\common\services;
  3. use common\models\goods\Goods;
  4. use common\models\order\Order;
  5. class CourseActivityService
  6. {
  7. public static function getList(array $list, int $mall_id) :array
  8. {
  9. if (empty($list) || empty($mall_id)) return [];
  10. $goods_ids = array_column($list, 'goods_id');
  11. $good_list = Goods::lists([
  12. 'where' => [['id' => $goods_ids]],
  13. 'select' => 'id,price,original_price',
  14. 'index' => 'id'
  15. ]);
  16. //统计每个课程活动的购买情况
  17. $statistics_data = Order::find()
  18. ->where(['mall_id' => $mall_id, 'marketing_type' => 'Course'])
  19. ->groupBy('marketing_id')
  20. ->select(['marketing_id', 'COUNT(*) as order_count'])
  21. ->indexBy('marketing_id')
  22. ->asArray()
  23. ->all();
  24. foreach ($list as &$item) {
  25. $good_info = $good_list[$item['goods_id']];
  26. $item['price'] = $good_info['price'] ?? 0;
  27. $item['original_price'] = $good_info['original_price'] ?? 0;
  28. $item['views'] = $statistics_data[$item['id']]['order_count'] ?? 0;
  29. }
  30. return $list;
  31. }
  32. }