96 lines
2.9 KiB
PHP
96 lines
2.9 KiB
PHP
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | saiadmin [ saiadmin快速开发框架 ]
|
|
// +----------------------------------------------------------------------
|
|
// | Author: sai <1430792918@qq.com>
|
|
// +----------------------------------------------------------------------
|
|
namespace plugin\saiadmin\app\logic\system;
|
|
|
|
use plugin\saiadmin\app\model\system\SystemPost;
|
|
use plugin\saiadmin\basic\think\BaseLogic;
|
|
use plugin\saiadmin\exception\ApiException;
|
|
use plugin\saiadmin\service\OpenSpoutWriter;
|
|
use OpenSpout\Reader\XLSX\Reader;
|
|
|
|
/**
|
|
* 岗位管理逻辑层
|
|
*/
|
|
class SystemPostLogic extends BaseLogic
|
|
{
|
|
/**
|
|
* 构造函数
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->model = new SystemPost();
|
|
}
|
|
|
|
/**
|
|
* 可操作岗位
|
|
* @param array $where
|
|
* @return array
|
|
*/
|
|
public function accessPost(array $where = []): array
|
|
{
|
|
$query = $this->search($where);
|
|
$query->field('id, id as value, name as label, name, code');
|
|
return $this->getAll($query);
|
|
}
|
|
|
|
/**
|
|
* 导入数据
|
|
*/
|
|
public function import($file)
|
|
{
|
|
$path = $this->getImport($file);
|
|
$reader = new Reader();
|
|
try {
|
|
$reader->open($path);
|
|
$data = [];
|
|
foreach ($reader->getSheetIterator() as $sheet) {
|
|
$isHeader = true;
|
|
foreach ($sheet->getRowIterator() as $row) {
|
|
if ($isHeader) {
|
|
$isHeader = false;
|
|
continue;
|
|
}
|
|
$cells = $row->getCells();
|
|
$data[] = [
|
|
'name' => $cells[0]->getValue(),
|
|
'code' => $cells[1]->getValue(),
|
|
'sort' => $cells[2]->getValue(),
|
|
'status' => $cells[3]->getValue(),
|
|
];
|
|
}
|
|
}
|
|
$this->saveAll($data);
|
|
} catch (\Exception $e) {
|
|
throw new ApiException('Import file error, please upload correct xlsx file');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 导出数据
|
|
*/
|
|
public function export($where = [])
|
|
{
|
|
$query = $this->search($where)->field('id,name,code,sort,status,create_time');
|
|
$data = $this->getAll($query);
|
|
$file_name = '岗位数据.xlsx';
|
|
$header = ['编号', '岗位名称', '岗位标识', '排序', '状态', '创建时间'];
|
|
$filter = [
|
|
'status' => [
|
|
['value' => 1, 'label' => '正常'],
|
|
['value' => 2, 'label' => '禁用']
|
|
]
|
|
];
|
|
$writer = new OpenSpoutWriter($file_name);
|
|
$writer->setWidth([15, 15, 20, 15, 15, 25]);
|
|
$writer->setHeader($header);
|
|
$writer->setData($data, null, $filter);
|
|
$file_path = $writer->returnFile();
|
|
return response()->download($file_path, urlencode($file_name));
|
|
}
|
|
|
|
}
|