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

<?php
namespace App\Admin\Actions\Exporter;
use Maatwebsite\Excel\Concerns\FromArray;
use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use App\Admin\Repositories\v3\GoodsReport;
use App\Models\v3\Market as MarketModel;
use App\Models\v3\Store as StoreModel;
use App\Models\LanzuOrderGoods as OrderGoodsModel;
use App\Models\ImsCjdcOrderMain as OrderMainModel;
use App\Models\ImsCjdcOrder as OrderModel;
class GoodsSales implements FromArray, WithStrictNullComparison, ShouldAutoSize
{
protected $params = [];
public function __construct($params)
{
$this->params = $params;
}
public function array(): array
{
$result = [[
'下单时间',
'主订单号',
'商品ID',
'商品名称',
'市场',
'店铺',
'售价(元)',
'原价(元)',
'数量',
'单位',
'规格',
]];
$data = $this->getData($this->params);
$markets = MarketModel::getMarketArray();
$stores = StoreModel::getStoreArray();
foreach ($data as $value){
$specStr = '';
if(!empty($value['spec'])){
$specArr = json_decode($value['spec'],true);
if(isset($specArr[0]['spec_key'])){
foreach($specArr as $spec){
$specStr .= ' ['.$spec['spec_key'].':'.$spec['spec_value'].'] ';
}
}
}
$global_order_id = $value['global_order_id']??'';
$item = [
date('Y-m_d H:i:s',$value['created_at']),
' '.$global_order_id,
$value['goods_id'],
$value['name']??'',
$markets[$value['market_id']]??'',
$stores[$value['store_id']]??'',
$value['price']??0,
$value['original_price']??0,
$value['number']??0,
$value['goods_unit']??'',
$specStr??''
];
$result[] = $item;
}
return $result;
}
/**
* 获取数据
*/
public function getData($option = [])
{
$params = $option;
$repository = new GoodsReport();
$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';
$orderGoods = $repository->getDataModel($selects,$params);
$list = $orderGoods->get()->toArray();
return $list;
}
}