链街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.

68 lines
2.1 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. ]];
  28. $data = $this->getData($this->params);
  29. $markets = MarketModel::getMarketArray();
  30. $stores = StoreModel::getStoreArray();
  31. foreach ($data as $value){
  32. $createdAt = $value['created_at']??0;
  33. $item = [
  34. $value['goods_id'],
  35. $value['name']??'',
  36. $markets[$value['market_id']]??'',
  37. $stores[$value['store_id']]??'',
  38. $value['price']??0,
  39. $value['original_price']??0,
  40. date('Y-m-d H:i:s',$createdAt),
  41. $value['total']??0,
  42. $value['subsidy_total']??0
  43. ];
  44. $result[] = $item;
  45. }
  46. return $result;
  47. }
  48. /**
  49. * 获取数据
  50. */
  51. public function getData($option = [])
  52. {
  53. $params = $option;
  54. $repository = new GoodsActivityReport();
  55. $selects = 'number as total,(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_goods.created_at,lanzu_order_main.market_id,lanzu_order.store_id';
  56. $orderGoodsActivity = $repository->getDataModel($selects,$params);
  57. $list = $orderGoodsActivity->orderBy('total','desc')->get()->toArray();
  58. return $list;
  59. }
  60. }