add:新增导入导出公共接口
This commit is contained in:
parent
38e10896d4
commit
4e1e040936
105
catch/system/controller/Excel.php
Normal file
105
catch/system/controller/Excel.php
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
<?php
|
||||||
|
namespace catchAdmin\system\controller;
|
||||||
|
|
||||||
|
use catcher\base\CatchController;
|
||||||
|
use catcher\CatchResponse;
|
||||||
|
use think\Request;
|
||||||
|
|
||||||
|
class Excel extends CatchController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 导出
|
||||||
|
*
|
||||||
|
* @time 2021年04月22日
|
||||||
|
* @param Request $request
|
||||||
|
* @return \think\response\Json
|
||||||
|
*/
|
||||||
|
public function export(Request $request): \think\response\Json
|
||||||
|
{
|
||||||
|
$fields = $this->resetFields(\json_decode($request->post('fields'), true));
|
||||||
|
|
||||||
|
$excel = app()->make($request->post('model'))
|
||||||
|
->field(array_column($fields, 'field'))
|
||||||
|
->select()
|
||||||
|
->each(function (&$item, $key) use ($fields) {
|
||||||
|
foreach ($fields as $field) {
|
||||||
|
if (isset($field['options']) && count($field['options'])) {
|
||||||
|
$options = $this->valueToLabel($field['options']);
|
||||||
|
|
||||||
|
$item[$field['field']] = $options[$item[$field['field']]] ?? '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})->export(array_column($fields, 'name'));
|
||||||
|
|
||||||
|
return CatchResponse::success($excel);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入
|
||||||
|
*
|
||||||
|
* @time 2021年04月23日
|
||||||
|
* @param Request $request
|
||||||
|
* @return \think\response\Json
|
||||||
|
*/
|
||||||
|
public function import(Request $request): \think\response\Json
|
||||||
|
{
|
||||||
|
return CatchResponse::success(app()->make($request->post('model'))
|
||||||
|
->import(
|
||||||
|
\json_decode($request->post('fields'), 'field'),
|
||||||
|
$request->file('file')
|
||||||
|
));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* value => label
|
||||||
|
*
|
||||||
|
* @time 2021年04月22日
|
||||||
|
* @param array $options
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function valueToLabel(array $options): array
|
||||||
|
{
|
||||||
|
$p = [];
|
||||||
|
foreach ($options as $option) {
|
||||||
|
$p[$option['value']] = $option['label'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $p;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*label => value
|
||||||
|
*
|
||||||
|
* @time 2021年04月22日
|
||||||
|
* @param array $options
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function labelToValue(array $options): array
|
||||||
|
{
|
||||||
|
$p = [];
|
||||||
|
foreach ($options as $option) {
|
||||||
|
$p[$option['label']] = $option['value'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $p;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重组 fields
|
||||||
|
*
|
||||||
|
* @time 2021年04月22日
|
||||||
|
* @param array $fields
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function resetFields(array $fields): array
|
||||||
|
{
|
||||||
|
$f = [];
|
||||||
|
|
||||||
|
foreach ($fields as $field) {
|
||||||
|
$f[$field['field']] = $field;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $f;
|
||||||
|
}
|
||||||
|
}
|
@ -48,6 +48,11 @@ $router->group(function () use ($router) {
|
|||||||
$router->put('modules/<module>', '\catchAdmin\system\controller\Module@disOrEnable');
|
$router->put('modules/<module>', '\catchAdmin\system\controller\Module@disOrEnable');
|
||||||
$router->put('cache/modules', '\catchAdmin\system\controller\Module@cache');
|
$router->put('cache/modules', '\catchAdmin\system\controller\Module@cache');
|
||||||
$router->delete('clear/modules', '\catchAdmin\system\controller\Module@clear');
|
$router->delete('clear/modules', '\catchAdmin\system\controller\Module@clear');
|
||||||
|
|
||||||
|
// excel 导入&导出通用
|
||||||
|
$router->post('excel/export', '\catchAdmin\system\controller\Excel@export');
|
||||||
|
$router->post('excel/import', '\catchAdmin\system\controller\Excel@import');
|
||||||
|
|
||||||
})->middleware('auth');
|
})->middleware('auth');
|
||||||
|
|
||||||
// 获取 table
|
// 获取 table
|
||||||
|
Loading…
x
Reference in New Issue
Block a user