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

86 lines
2.7 KiB

  1. <?php
  2. namespace App\Admin\Actions\Exporter;
  3. use Maatwebsite\Excel\Concerns\FromArray;
  4. use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
  5. use Maatwebsite\Excel\Concerns\ShouldAutoSize;
  6. use App\Admin\Repositories\v3\GoodsReport;
  7. use App\Models\v3\Market as MarketModel;
  8. use App\Models\v3\Store as StoreModel;
  9. use App\Models\LanzuOrderGoods as OrderGoodsModel;
  10. use App\Models\ImsCjdcOrderMain as OrderMainModel;
  11. use App\Models\ImsCjdcOrder as OrderModel;
  12. class GoodsSales implements FromArray, WithStrictNullComparison, ShouldAutoSize
  13. {
  14. protected $params = [];
  15. public function __construct($params)
  16. {
  17. $this->params = $params;
  18. }
  19. public function array(): array
  20. {
  21. $result = [[
  22. '下单时间',
  23. '主订单号',
  24. '商品ID',
  25. '商品名称',
  26. '市场',
  27. '店铺',
  28. '售价(元)',
  29. '原价(元)',
  30. '数量',
  31. '单位',
  32. '规格',
  33. ]];
  34. $data = $this->getData($this->params);
  35. $markets = MarketModel::getMarketArray();
  36. $stores = StoreModel::getStoreArray();
  37. foreach ($data as $value){
  38. $specStr = '';
  39. if(!empty($value['spec'])){
  40. $specArr = json_decode($value['spec'],true);
  41. if(isset($specArr[0]['spec_key'])){
  42. foreach($specArr as $spec){
  43. $specStr .= ' ['.$spec['spec_key'].':'.$spec['spec_value'].'] ';
  44. }
  45. }
  46. }
  47. $global_order_id = $value['global_order_id']??'';
  48. $item = [
  49. date('Y-m_d H:i:s',$value['created_at']),
  50. ' '.$global_order_id,
  51. $value['goods_id'],
  52. $value['name']??'',
  53. $markets[$value['market_id']]??'',
  54. $stores[$value['store_id']]??'',
  55. $value['price']??0,
  56. $value['original_price']??0,
  57. $value['number']??0,
  58. $value['goods_unit']??'',
  59. $specStr??''
  60. ];
  61. $result[] = $item;
  62. }
  63. return $result;
  64. }
  65. /**
  66. * 获取数据
  67. */
  68. public function getData($option = [])
  69. {
  70. $params = $option;
  71. $repository = new GoodsReport();
  72. $selects = OrderGoodsModel::$tableName.'.goods_id,'.OrderGoodsModel::$tableName.'.name,price,original_price,goods_unit,spec,'.OrderMainModel::$tableName.'.market_id,'.OrderModel::$tableName.'.store_id,number,'.OrderMainModel::$tableName.'.created_at,global_order_id';
  73. $orderGoods = $repository->getDataModel($selects,$params);
  74. $list = $orderGoods->get()->toArray();
  75. return $list;
  76. }
  77. }