<?php
/**
* Created by PhpStorm.
* User: xuzhiwen
* Date: 2019/8/26
* Time: 16:31
*/
namespace App\Imports;
use App\OdsProdGeneralSkuJd;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithBatchInserts;
use Maatwebsite\Excel\Concerns\WithChunkReading;
use Maatwebsite\Excel\Concerns\WithCustomCsvSettings;
class JdSkuImport implements ToModel,WithBatchInserts,WithChunkReading,WithCustomCsvSettings
{
protected $data_date;
protected $platform;
protected $store_code;
protected $store_name;
public function __construct($data_date,$platform,$store_code,$store_name)
{
$this->data_date =$data_date;
$this->platform = $platform;
$this->store_code = $store_code;
$this->store_name = $store_name;
}
public function getCsvSettings(): array
{
return [
'input_encoding' => 'GB2312'
];
}
public function batchSize(): int
{
return 500;
}
public function chunkSize(): int
{
return 500;
}
public function model(array $row)
{
$batch = session('batch')??0;
$rows = session('rows');
if(empty($rows)){
//获取表头信息
$rows = array_flip($row);// key value 互换
$arr = [
'商品ID',
'商品名称',
'货号',
'访客数',
'浏览量',
'商品关注数',
'加购商品件数',
'加购人数',
'成交客户数',
'成交单量',
'成交商品件数',
'成交金额',
'成交转化率',
'UV价值',
'评价数',
'最近上架时间',
'详情页跳出率',
'曝光量',
'点击次数',
'点击率',
'系统预测未来7天销量',
'下单客户数',
'下单商品件数',
'下单金额',
'下单成交转化率',
'下单转化率',
'PV现货率'
];
$flag = false;
foreach ($row as $k=>$v){
$flag = false;
foreach ($arr as $kk=>$vv){
if($vv==$v){
$flag = true;
break;
}
}
if(!$flag){
break;
}
}
if(!$flag) {
throw new \Exception('excel表格头部没有对应的信息');
}
session(['rows' => $rows]);
return null;
}else {
// 判断当前日期是第一次导入,先删除重复的数据
$data_Date = $this->data_date;
$del = session('del');
if(empty($del) || !in_array($data_Date,$del)) {
OdsProdGeneralSkuJd::query()->where('data_date',$data_Date)->delete();
$del = session('del') ?? [];
array_push($del, $data_Date);
session(['del' => $del]);
}
if($batch ==0 ){
session(['batch'=>'-1']);
return null;
}
if($batch=='-1') {
session(['batch' => 1]);
}else{
$batch = $batch + 1;
session(['batch'=>$batch]);
}
return new OdsProdGeneralSkuJd([
'platform'=>$this->platform,
'store_name'=>$this->store_name,
'store_code'=>$this->store_code,
'data_date'=>$this->data_date,
'prod_id'=>Q($row,Q($rows,'商品ID')),//商品ID
'prod_name'=>Q($row,Q($rows,'商品名称')),//商品名称
'prod_no'=>Q($row,Q($rows,'货号')),//货号
'uv'=>Q($row,Q($rows,'访客数')),//访客数
'pv'=>Q($row,Q($rows,'浏览量')),//浏览量
'prod_attent_num'=>Q($row,Q($rows,'商品关注数')),//商品关注数
'atc_items'=>Q($row,Q($rows,'加购商品件数')),//加购商品件数
'atc_custs'=>Q($row,Q($rows,'加购人数')),//加购人数
'pay_custs'=>Q($row,Q($rows,'成交客户数')),//成交客户数
'pay_orders'=>Q($row,Q($rows,'成交单量')),//成交单量
'pay_items'=>Q($row,Q($rows,'成交商品件数')),//成交商品件数
'pay_amount'=>Q($row,Q($rows,'成交金额')),//成交金额
'pay_cr'=>Q($row,Q($rows,'成交转化率')),//成交转化率
'uv_value'=>Q($row,Q($rows,'UV价值')),//UV价值
'evaluate_num'=>Q($row,Q($rows,'评价数')),//评价数
'last_onshelf_date'=>Q($row,Q($rows,'最近上架时间'))==' '?null:Q($row,Q($rows,'最近上架时间')),//最近上架时间
'detailpage_br'=>Q($row,Q($rows,'详情页跳出率')),//详情页跳出率
'exposure_num'=>Q($row,Q($rows,'曝光量')),//曝光量
'click_num'=>Q($row,Q($rows,'点击次数')),//点击次数
'click_cr'=>Q($row,Q($rows,'点击率')),//点击率
'pay_num_n7d'=>Q($row,Q($rows,'系统预测未来7天销量')),//系统预测未来7天销量
'place_custs'=>Q($row,Q($rows,'下单客户数')),//下单客户数
'place_items'=>Q($row,Q($rows,'下单商品件数')),//下单商品件数
'place_amount'=>Q($row,Q($rows,'下单金额')),//下单金额
'place_pay_cr'=>Q($row,Q($rows,'下单成交转化率')),//下单成交转化率
'place_cr'=>Q($row,Q($rows,'下单转化率')),//下单转化率
'pv_sr'=>Q($row,Q($rows,'PV现货率'))=='-'?0:Q($row,Q($rows,'PV现货率')),//PV现货率
]);
}
}
}
Laravel-EXCEL 上传Excel表格
最新推荐文章于 2023-07-09 00:14:10 发布