链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
2.0 KiB

  1. <?php
  2. namespace App\Admin\Actions\Exporter;
  3. use Maatwebsite\Excel\Concerns\FromArray;
  4. use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
  5. use App\Admin\Repositories\v3\GoodsActivityReport;
  6. use App\Models\v3\Market as MarketModel;
  7. use App\Models\v3\Store as StoreModel;
  8. class GoodsActivitySales implements FromArray, WithStrictNullComparison
  9. {
  10. protected $params = [];
  11. public function __construct($params)
  12. {
  13. $this->params = $params;
  14. }
  15. public function array(): array
  16. {
  17. $result = [[
  18. '商品ID',
  19. '商品名称',
  20. '市场',
  21. '店铺',
  22. '售价(元)',
  23. '原价(元)',
  24. '销量(单)',
  25. '补贴(元)',
  26. ]];
  27. $data = $this->getData($this->params);
  28. $markets = MarketModel::getMarketArray();
  29. $stores = StoreModel::getStoreArray();
  30. foreach ($data as $value){
  31. $item = [
  32. $value['goods_id'],
  33. $value['name']??'',
  34. $markets[$value['market_id']]??'',
  35. $stores[$value['store_id']]??'',
  36. $value['price']??0,
  37. $value['original_price']??0,
  38. $value['total']??0,
  39. $value['subsidy_total']??0
  40. ];
  41. $result[] = $item;
  42. }
  43. return $result;
  44. }
  45. /**
  46. * 获取数据
  47. */
  48. public function getData($option = [])
  49. {
  50. $params = $option;
  51. $repository = new GoodsActivityReport();
  52. $selects = 'SUM(number) as total,SUM((original_price-price)*number) as subsidy_total,price,original_price,lanzu_order_goods.goods_id,lanzu_order_goods.name,lanzu_order_goods.cover_img,lanzu_order_main.market_id,lanzu_order.store_id';
  53. $orderGoodsActivity = $repository->getDataModel($selects,$params);
  54. $list = $orderGoodsActivity->orderBy('total','desc')->groupBy('goods_id','lanzu_order_goods.name','cover_img','market_id','store_id','price','original_price')->get()->toArray();
  55. return $list;
  56. }
  57. }