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

72 lines
2.5 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. use App\Models\ImsCjdcOrderMain as OrderMainModel;
  9. use App\Models\ImsCjdcOrder as OrderModel;
  10. use App\Models\LanzuOrderGoods as OrderGoodsModel;
  11. use App\Models\v3\GoodsActivity as GoodsActivityModel;
  12. class GoodsActivitySales implements FromArray, WithStrictNullComparison
  13. {
  14. protected $params = [];
  15. public function __construct($params)
  16. {
  17. $this->params = $params;
  18. }
  19. public function array(): array
  20. {
  21. $result = [[
  22. '商品ID',
  23. '商品名称',
  24. '市场',
  25. '店铺',
  26. '售价(元)',
  27. '采购价(元)',
  28. '下单时间',
  29. '销量(单)',
  30. '补贴(元)',
  31. ]];
  32. $data = $this->getData($this->params);
  33. $markets = MarketModel::getMarketArray();
  34. $stores = StoreModel::getStoreArray();
  35. foreach ($data as $value){
  36. $createdAt = $value['created_at']??0;
  37. $item = [
  38. $value['goods_id'],
  39. $value['name']??'',
  40. $markets[$value['market_id']]??'',
  41. $stores[$value['store_id']]??'',
  42. $value['price']??0,
  43. $value['purchase_price']??0,
  44. date('Y-m-d H:i:s',$createdAt),
  45. $value['total']??0,
  46. $value['subsidy_total']??0
  47. ];
  48. $result[] = $item;
  49. }
  50. return $result;
  51. }
  52. /**
  53. * 获取数据
  54. */
  55. public function getData($option = [])
  56. {
  57. $params = $option;
  58. $repository = new GoodsActivityReport();
  59. $selects = OrderGoodsModel::$tableName.'.number as total,('.GoodsActivityModel::TABLE_NAME.'.purchase_price-'.GoodsActivityModel::TABLE_NAME.'.price)*'.OrderGoodsModel::$tableName.'.number as subsidy_total,'.GoodsActivityModel::TABLE_NAME.'.price,'.GoodsActivityModel::TABLE_NAME.'.purchase_price,'.OrderGoodsModel::$tableName.'.goods_id,'.OrderGoodsModel::$tableName.'.name,'.OrderGoodsModel::$tableName.'.cover_img,'.OrderGoodsModel::$tableName.'.created_at,'.OrderMainModel::$tableName.'.market_id,'.OrderModel::$tableName.'.store_id';
  60. $orderGoodsActivity = $repository->getDataModel($selects,$params);
  61. $list = $orderGoodsActivity->orderBy('total','desc')->get()->toArray();
  62. return $list;
  63. }
  64. }