<?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表格
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.