23 changed files with 1523 additions and 529 deletions
-
118app/Admin/Actions/EXporter/SalesMan.php
-
2app/Admin/Actions/Tools/SalesmanOption.php
-
16app/Admin/Controllers/v3/Salesman.php
-
2app/Admin/Repositories/v3/CsInfo.php
-
1app/Admin/routes.php
-
110app/Console/Commands/CsInfoStatis.php
-
104app/Http/Controllers/TestController.php
-
1composer.json
-
1251composer.lock
-
2config/app.php
-
328config/excel.php
-
1routes/web.php
-
BINstorage/framework/laravel-excel/laravel-excel-1yWRkHreLllX7MXKHlJPTMNfnVOwIGR1.xlsx
-
BINstorage/framework/laravel-excel/laravel-excel-Uhbm2VWA7B4WTj6Pz5mKJostWKikQA0r.xlsx
-
BINstorage/framework/laravel-excel/laravel-excel-Z3fdakI4WiO9DTZJeGSnKkdpltFKwwfU.xlsx
-
BINstorage/framework/laravel-excel/laravel-excel-eYPrHax2rrY0IrKCXdV7CFDP20SFhxoY.xlsx
-
BINstorage/framework/laravel-excel/laravel-excel-seIr1cl908lcHEofP6DhBYv8QFo8cvVK.xlsx
-
17stubs/export.model.stub
-
16stubs/export.plain.stub
-
17stubs/export.query-model.stub
-
16stubs/export.query.stub
-
17stubs/import.collection.stub
-
21stubs/import.model.stub
@ -0,0 +1,118 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Admin\Actions\Exporter; |
||||
|
|
||||
|
use App\Models\LanzuCsInfo; |
||||
|
use App\Models\LanzuMarket; |
||||
|
use Dcat\Admin\Grid\Exporters\AbstractExporter; |
||||
|
use Illuminate\Database\Eloquent\Collection; |
||||
|
use Illuminate\Support\Facades\DB; |
||||
|
use Maatwebsite\Excel\Concerns\FromArray; |
||||
|
use Maatwebsite\Excel\Concerns\FromCollection; |
||||
|
use Maatwebsite\Excel\Concerns\WithStrictNullComparison; |
||||
|
use Maatwebsite\Excel\Facades\Excel; |
||||
|
use App\Admin\Common\Order; |
||||
|
use App\Models\LanzuUserRelationBind; |
||||
|
use Illuminate\Console\Command; |
||||
|
use \App\Models\v3\CsInfo as modelCsInfo; |
||||
|
|
||||
|
class SalesMan implements FromArray, WithStrictNullComparison |
||||
|
{ |
||||
|
protected $_name; |
||||
|
protected $_option; |
||||
|
public function __construct($option,$name) |
||||
|
{ |
||||
|
$this->_name = $name; |
||||
|
$this->_option = $option; |
||||
|
} |
||||
|
|
||||
|
public function array(): array |
||||
|
{ |
||||
|
$result[] = [ |
||||
|
'懒ID', |
||||
|
'拓展员', |
||||
|
'服务站点', |
||||
|
'站点地址', |
||||
|
'绑定用户数', |
||||
|
$this->_name.'下单人数', |
||||
|
$this->_name.'订单数', |
||||
|
$this->_name.'订单金额', |
||||
|
]; |
||||
|
$res = $this->getSaleMan(-30); |
||||
|
foreach ($res as $value){ |
||||
|
$item =[]; |
||||
|
$item[] = $value['person_id']; |
||||
|
$item[] = $value['nick_name']; |
||||
|
$item[] = $value['name']; |
||||
|
$item[] = $value['address']; |
||||
|
$item[] = $value['user_num']??0; |
||||
|
$item[] = $value['order_user_num']??0; |
||||
|
$item[] = $value['order_num']??0; |
||||
|
$item[] = $value['order_amount']??0; |
||||
|
$result[] = $item; |
||||
|
} |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取拓展员 |
||||
|
*/ |
||||
|
public function getSaleMan($option) |
||||
|
{ |
||||
|
$data = LanzuCsInfo::select( |
||||
|
DB::raw('count("lanzu_cs_info.person_id") as total'), |
||||
|
DB::raw('group_concat(lanzu_cs_info.admin_user_id) as admin_user_id'), |
||||
|
DB::raw('group_concat(rb.user_id) as user_id'), |
||||
|
'lanzu_cs_info.person_id', 'lanzu_user.nick_name') |
||||
|
->groupBy('lanzu_cs_info.person_id') |
||||
|
->leftJoin('lanzu_user', 'lanzu_user.id', 'lanzu_cs_info.person_id') |
||||
|
->leftJoin('lanzu_user_relation_bind as rb', 'rb.source_id', 'lanzu_cs_info.admin_user_id') |
||||
|
->where('lanzu_cs_info.person_id', '>', 0)->get()->toArray(); |
||||
|
$result = []; |
||||
|
foreach ($data as $key => $value) { |
||||
|
$value['admin_user_id'] = array_unique(explode(',', $value['admin_user_id'])); |
||||
|
$result = $this->csDetail($value['admin_user_id'], $this->_option, $value['nick_name'], $result); |
||||
|
} |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取站点详情 |
||||
|
*/ |
||||
|
public function csDetail($adminUid, $option, $nickName, $result) |
||||
|
{ |
||||
|
$data = modelCsInfo::whereIn('admin_user_id', $adminUid) |
||||
|
->get()->toArray(); |
||||
|
foreach ($data as &$value) { |
||||
|
//>>1.获取绑定后下过单的用户
|
||||
|
$value['user_num'] = LanzuUserRelationBind::where('source_id', $value['admin_user_id'])->count(); |
||||
|
$uid = Order::getUserOrder($value['admin_user_id']); |
||||
|
//>>2.获取订单数据
|
||||
|
$value['order_user_num'] = Order::getOrderData([ |
||||
|
'user_type' => 'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type' => 'count_user',//取什么数据 data_type 数据类型
|
||||
|
'market_id' => '',//取哪个市场数据
|
||||
|
'condition' => 1,//取数据维度 condition
|
||||
|
'user_ids' => $uid ? $uid : null |
||||
|
], $option);//下单人数
|
||||
|
$value['order_num'] = Order::getOrderData([ |
||||
|
'user_type' => 'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type' => 'number',//取什么数据 data_type 数据类型
|
||||
|
'market_id' => '',//取哪个市场数据
|
||||
|
'condition' => 1,//取数据维度 condition
|
||||
|
'user_ids' => $uid ? $uid : null |
||||
|
], $option);//订单数
|
||||
|
$value['order_amount'] = Order::getOrderData([ |
||||
|
'user_type' => 'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type' => 'amount',//取什么数据 data_type 数据类型
|
||||
|
'market_id' => '',//取哪个市场数据
|
||||
|
'condition' => 1,//取数据维度 condition
|
||||
|
'user_ids' => $uid ? $uid : null |
||||
|
], $option);//订单金额
|
||||
|
$value['nick_name'] = $nickName; |
||||
|
$result[] = $value; |
||||
|
} |
||||
|
|
||||
|
return $result; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,110 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Console\Commands; |
||||
|
|
||||
|
use App\Admin\Common\Order; |
||||
|
use App\Models\LanzuCsInfo; |
||||
|
use App\Models\LanzuUserRelationBind; |
||||
|
use Illuminate\Console\Command; |
||||
|
use Illuminate\Support\Facades\DB; |
||||
|
use \App\Models\v3\CsInfo as modelCsInfo; |
||||
|
class CsInfoStatis extends Command |
||||
|
{ |
||||
|
/** |
||||
|
* The name and signature of the console command. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
protected $signature = 'command:CsInfoStatis'; |
||||
|
|
||||
|
/** |
||||
|
* The console command description. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
protected $description = 'export CsInfoStatis'; |
||||
|
|
||||
|
/** |
||||
|
* Create a new command instance. |
||||
|
* |
||||
|
* @return void |
||||
|
*/ |
||||
|
public function __construct() |
||||
|
{ |
||||
|
parent::__construct(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Execute the console command. |
||||
|
* |
||||
|
* @return int |
||||
|
*/ |
||||
|
public function handle() |
||||
|
{ |
||||
|
|
||||
|
$rows = $this->getSaleMan(); |
||||
|
dd($rows); |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取拓展员 |
||||
|
*/ |
||||
|
public function getSaleMan() |
||||
|
{ |
||||
|
$data = LanzuCsInfo::select( |
||||
|
DB::raw('count("lanzu_cs_info.person_id") as total'), |
||||
|
DB::raw('group_concat(lanzu_cs_info.admin_user_id) as admin_user_id'), |
||||
|
DB::raw('group_concat(rb.user_id) as user_id'), |
||||
|
'lanzu_cs_info.person_id','lanzu_user.nick_name') |
||||
|
->groupBy('lanzu_cs_info.person_id') |
||||
|
->leftJoin('lanzu_user','lanzu_user.id','lanzu_cs_info.person_id') |
||||
|
->leftJoin('lanzu_user_relation_bind as rb','rb.source_id','lanzu_cs_info.admin_user_id') |
||||
|
->where('lanzu_cs_info.person_id','>',0)->get()->toArray(); |
||||
|
foreach ($data as $key=>$value){ |
||||
|
$value['admin_user_id'] = array_unique(explode(',',$value['admin_user_id'])); |
||||
|
$row = $this->csDetail($value['admin_user_id'],-30); |
||||
|
dump($row); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取站点详情 |
||||
|
*/ |
||||
|
public function csDetail($adminUid,$option) |
||||
|
{ |
||||
|
$data = modelCsInfo::whereIn('admin_user_id',$adminUid) |
||||
|
->paginate(10) |
||||
|
->toArray(); |
||||
|
foreach ($data['data'] as &$value){ |
||||
|
//>>1.获取绑定后下过单的用户
|
||||
|
$value['user_num'] = LanzuUserRelationBind::where('source_id',$value['admin_user_id'])->count(); |
||||
|
$uid = Order::getUserOrder($value['admin_user_id']); |
||||
|
//>>2.获取订单数据
|
||||
|
$value['order_user_num'] = Order::getOrderData([ |
||||
|
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type'=>'count_user',//取什么数据 data_type 数据类型
|
||||
|
'market_id'=>'',//取哪个市场数据
|
||||
|
'condition'=>1,//取数据维度 condition
|
||||
|
'user_ids'=>$uid?$uid:null |
||||
|
],$option);//下单人数
|
||||
|
$value['order_num'] = Order::getOrderData([ |
||||
|
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type'=>'number',//取什么数据 data_type 数据类型
|
||||
|
'market_id'=>'',//取哪个市场数据
|
||||
|
'condition'=>1,//取数据维度 condition
|
||||
|
'user_ids'=>$uid?$uid:null |
||||
|
],$option);//订单数
|
||||
|
$value['order_amount'] = Order::getOrderData([ |
||||
|
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type'=>'amount',//取什么数据 data_type 数据类型
|
||||
|
'market_id'=>'',//取哪个市场数据
|
||||
|
'condition'=>1,//取数据维度 condition
|
||||
|
'user_ids'=>$uid?$uid:null |
||||
|
],$option);//订单金额
|
||||
|
|
||||
|
} |
||||
|
dd($data); |
||||
|
} |
||||
|
|
||||
|
} |
||||
1251
composer.lock
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,328 @@ |
|||||
|
<?php |
||||
|
|
||||
|
use Maatwebsite\Excel\Excel; |
||||
|
|
||||
|
return [ |
||||
|
'exports' => [ |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Chunk size |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| When using FromQuery, the query is automatically chunked. |
||||
|
| Here you can specify how big the chunk should be. |
||||
|
| |
||||
|
*/ |
||||
|
'chunk_size' => 1000, |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Pre-calculate formulas during export |
||||
|
|-------------------------------------------------------------------------- |
||||
|
*/ |
||||
|
'pre_calculate_formulas' => false, |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Enable strict null comparison |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| When enabling strict null comparison empty cells ('') will |
||||
|
| be added to the sheet. |
||||
|
*/ |
||||
|
'strict_null_comparison' => false, |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| CSV Settings |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| Configure e.g. delimiter, enclosure and line ending for CSV exports. |
||||
|
| |
||||
|
*/ |
||||
|
'csv' => [ |
||||
|
'delimiter' => ',', |
||||
|
'enclosure' => '"', |
||||
|
'line_ending' => PHP_EOL, |
||||
|
'use_bom' => false, |
||||
|
'include_separator_line' => false, |
||||
|
'excel_compatibility' => false, |
||||
|
], |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Worksheet properties |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| Configure e.g. default title, creator, subject,... |
||||
|
| |
||||
|
*/ |
||||
|
'properties' => [ |
||||
|
'creator' => '', |
||||
|
'lastModifiedBy' => '', |
||||
|
'title' => '', |
||||
|
'description' => '', |
||||
|
'subject' => '', |
||||
|
'keywords' => '', |
||||
|
'category' => '', |
||||
|
'manager' => '', |
||||
|
'company' => '', |
||||
|
], |
||||
|
], |
||||
|
|
||||
|
'imports' => [ |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Read Only |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| When dealing with imports, you might only be interested in the |
||||
|
| data that the sheet exists. By default we ignore all styles, |
||||
|
| however if you want to do some logic based on style data |
||||
|
| you can enable it by setting read_only to false. |
||||
|
| |
||||
|
*/ |
||||
|
'read_only' => true, |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Ignore Empty |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| When dealing with imports, you might be interested in ignoring |
||||
|
| rows that have null values or empty strings. By default rows |
||||
|
| containing empty strings or empty values are not ignored but can be |
||||
|
| ignored by enabling the setting ignore_empty to true. |
||||
|
| |
||||
|
*/ |
||||
|
'ignore_empty' => false, |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Heading Row Formatter |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| Configure the heading row formatter. |
||||
|
| Available options: none|slug|custom |
||||
|
| |
||||
|
*/ |
||||
|
'heading_row' => [ |
||||
|
'formatter' => 'slug', |
||||
|
], |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| CSV Settings |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| Configure e.g. delimiter, enclosure and line ending for CSV imports. |
||||
|
| |
||||
|
*/ |
||||
|
'csv' => [ |
||||
|
'delimiter' => ',', |
||||
|
'enclosure' => '"', |
||||
|
'escape_character' => '\\', |
||||
|
'contiguous' => false, |
||||
|
'input_encoding' => 'UTF-8', |
||||
|
], |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Worksheet properties |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| Configure e.g. default title, creator, subject,... |
||||
|
| |
||||
|
*/ |
||||
|
'properties' => [ |
||||
|
'creator' => '', |
||||
|
'lastModifiedBy' => '', |
||||
|
'title' => '', |
||||
|
'description' => '', |
||||
|
'subject' => '', |
||||
|
'keywords' => '', |
||||
|
'category' => '', |
||||
|
'manager' => '', |
||||
|
'company' => '', |
||||
|
], |
||||
|
|
||||
|
], |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Extension detector |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| Configure here which writer/reader type should be used when the package |
||||
|
| needs to guess the correct type based on the extension alone. |
||||
|
| |
||||
|
*/ |
||||
|
'extension_detector' => [ |
||||
|
'xlsx' => Excel::XLSX, |
||||
|
'xlsm' => Excel::XLSX, |
||||
|
'xltx' => Excel::XLSX, |
||||
|
'xltm' => Excel::XLSX, |
||||
|
'xls' => Excel::XLS, |
||||
|
'xlt' => Excel::XLS, |
||||
|
'ods' => Excel::ODS, |
||||
|
'ots' => Excel::ODS, |
||||
|
'slk' => Excel::SLK, |
||||
|
'xml' => Excel::XML, |
||||
|
'gnumeric' => Excel::GNUMERIC, |
||||
|
'htm' => Excel::HTML, |
||||
|
'html' => Excel::HTML, |
||||
|
'csv' => Excel::CSV, |
||||
|
'tsv' => Excel::TSV, |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| PDF Extension |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| Configure here which Pdf driver should be used by default. |
||||
|
| Available options: Excel::MPDF | Excel::TCPDF | Excel::DOMPDF |
||||
|
| |
||||
|
*/ |
||||
|
'pdf' => Excel::DOMPDF, |
||||
|
], |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Value Binder |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| PhpSpreadsheet offers a way to hook into the process of a value being |
||||
|
| written to a cell. In there some assumptions are made on how the |
||||
|
| value should be formatted. If you want to change those defaults, |
||||
|
| you can implement your own default value binder. |
||||
|
| |
||||
|
| Possible value binders: |
||||
|
| |
||||
|
| [x] Maatwebsite\Excel\DefaultValueBinder::class |
||||
|
| [x] PhpOffice\PhpSpreadsheet\Cell\StringValueBinder::class |
||||
|
| [x] PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder::class |
||||
|
| |
||||
|
*/ |
||||
|
'value_binder' => [ |
||||
|
'default' => Maatwebsite\Excel\DefaultValueBinder::class, |
||||
|
], |
||||
|
|
||||
|
'cache' => [ |
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Default cell caching driver |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| By default PhpSpreadsheet keeps all cell values in memory, however when |
||||
|
| dealing with large files, this might result into memory issues. If you |
||||
|
| want to mitigate that, you can configure a cell caching driver here. |
||||
|
| When using the illuminate driver, it will store each value in a the |
||||
|
| cache store. This can slow down the process, because it needs to |
||||
|
| store each value. You can use the "batch" store if you want to |
||||
|
| only persist to the store when the memory limit is reached. |
||||
|
| |
||||
|
| Drivers: memory|illuminate|batch |
||||
|
| |
||||
|
*/ |
||||
|
'driver' => 'memory', |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Batch memory caching |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| When dealing with the "batch" caching driver, it will only |
||||
|
| persist to the store when the memory limit is reached. |
||||
|
| Here you can tweak the memory limit to your liking. |
||||
|
| |
||||
|
*/ |
||||
|
'batch' => [ |
||||
|
'memory_limit' => 60000, |
||||
|
], |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Illuminate cache |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| When using the "illuminate" caching driver, it will automatically use |
||||
|
| your default cache store. However if you prefer to have the cell |
||||
|
| cache on a separate store, you can configure the store name here. |
||||
|
| You can use any store defined in your cache config. When leaving |
||||
|
| at "null" it will use the default store. |
||||
|
| |
||||
|
*/ |
||||
|
'illuminate' => [ |
||||
|
'store' => null, |
||||
|
], |
||||
|
], |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Transaction Handler |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| By default the import is wrapped in a transaction. This is useful |
||||
|
| for when an import may fail and you want to retry it. With the |
||||
|
| transactions, the previous import gets rolled-back. |
||||
|
| |
||||
|
| You can disable the transaction handler by setting this to null. |
||||
|
| Or you can choose a custom made transaction handler here. |
||||
|
| |
||||
|
| Supported handlers: null|db |
||||
|
| |
||||
|
*/ |
||||
|
'transactions' => [ |
||||
|
'handler' => 'db', |
||||
|
], |
||||
|
|
||||
|
'temporary_files' => [ |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Local Temporary Path |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| When exporting and importing files, we use a temporary file, before |
||||
|
| storing reading or downloading. Here you can customize that path. |
||||
|
| |
||||
|
*/ |
||||
|
'local_path' => storage_path('framework/laravel-excel'), |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Remote Temporary Disk |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| When dealing with a multi server setup with queues in which you |
||||
|
| cannot rely on having a shared local temporary path, you might |
||||
|
| want to store the temporary file on a shared disk. During the |
||||
|
| queue executing, we'll retrieve the temporary file from that |
||||
|
| location instead. When left to null, it will always use |
||||
|
| the local path. This setting only has effect when using |
||||
|
| in conjunction with queued imports and exports. |
||||
|
| |
||||
|
*/ |
||||
|
'remote_disk' => null, |
||||
|
'remote_prefix' => null, |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Force Resync |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| When dealing with a multi server setup as above, it's possible |
||||
|
| for the clean up that occurs after entire queue has been run to only |
||||
|
| cleanup the server that the last AfterImportJob runs on. The rest of the server |
||||
|
| would still have the local temporary file stored on it. In this case your |
||||
|
| local storage limits can be exceeded and future imports won't be processed. |
||||
|
| To mitigate this you can set this config value to be true, so that after every |
||||
|
| queued chunk is processed the local temporary file is deleted on the server that |
||||
|
| processed it. |
||||
|
| |
||||
|
*/ |
||||
|
'force_resync_remote' => null, |
||||
|
], |
||||
|
]; |
||||
@ -0,0 +1,17 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace DummyNamespace; |
||||
|
|
||||
|
use DummyFullModelClass; |
||||
|
use Maatwebsite\Excel\Concerns\FromCollection; |
||||
|
|
||||
|
class DummyClass implements FromCollection |
||||
|
{ |
||||
|
/** |
||||
|
* @return \Illuminate\Support\Collection |
||||
|
*/ |
||||
|
public function collection() |
||||
|
{ |
||||
|
return DummyModelClass::all(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,16 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace DummyNamespace; |
||||
|
|
||||
|
use Maatwebsite\Excel\Concerns\FromCollection; |
||||
|
|
||||
|
class DummyClass implements FromCollection |
||||
|
{ |
||||
|
/** |
||||
|
* @return \Illuminate\Support\Collection |
||||
|
*/ |
||||
|
public function collection() |
||||
|
{ |
||||
|
// |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,17 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace DummyNamespace; |
||||
|
|
||||
|
use DummyFullModelClass; |
||||
|
use Maatwebsite\Excel\Concerns\FromQuery; |
||||
|
|
||||
|
class DummyClass implements FromQuery |
||||
|
{ |
||||
|
/** |
||||
|
* @return \Illuminate\Database\Query\Builder |
||||
|
*/ |
||||
|
public function query() |
||||
|
{ |
||||
|
return DummyModelClass::query(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,16 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace DummyNamespace; |
||||
|
|
||||
|
use Maatwebsite\Excel\Concerns\FromQuery; |
||||
|
|
||||
|
class DummyClass implements FromQuery |
||||
|
{ |
||||
|
/** |
||||
|
* @return \Illuminate\Database\Query\Builder |
||||
|
*/ |
||||
|
public function query() |
||||
|
{ |
||||
|
// |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,17 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace DummyNamespace; |
||||
|
|
||||
|
use Illuminate\Support\Collection; |
||||
|
use Maatwebsite\Excel\Concerns\ToCollection; |
||||
|
|
||||
|
class DummyClass implements ToCollection |
||||
|
{ |
||||
|
/** |
||||
|
* @param Collection $collection |
||||
|
*/ |
||||
|
public function collection(Collection $collection) |
||||
|
{ |
||||
|
// |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,21 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace DummyNamespace; |
||||
|
|
||||
|
use DummyFullModelClass; |
||||
|
use Maatwebsite\Excel\Concerns\ToModel; |
||||
|
|
||||
|
class DummyClass implements ToModel |
||||
|
{ |
||||
|
/** |
||||
|
* @param array $row |
||||
|
* |
||||
|
* @return \Illuminate\Database\Eloquent\Model|null |
||||
|
*/ |
||||
|
public function model(array $row) |
||||
|
{ |
||||
|
return new DummyModelClass([ |
||||
|
// |
||||
|
]); |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue