'int' ,
'news_guid' => 'string' ,
'news_type' => 'int' ,
'news_title' => 'string' ,
'news_intro' => 'string' ,
'news_source' => 'string' ,
'news_link' => 'string' ,
'news_issue_date' => '' ,
'news_views_num' => 'int' ,
'news_sort' => 'int' ,
'news_content' => '' ,
'news_create_time' => 'datetime' ,
'news_create_user_guid' => 'string' ,
'news_update_time' => 'datetime' ,
'news_update_user_guid' => 'string' ,
'news_delete_time' => 'datetime' ,
'news_delete_user_guid' => 'string' ,
];
// 设置json类型字段
protected $json = [''];
// 开启自动写入时间戳字段
protected $autoWriteTimestamp = 'datetime';
// 创建时间
protected $createTime = 'news_create_time';
// 修改时间
protected $updateTime = 'news_update_time';
//排序字段
public $order_field = 'news_sort';
// excel导入/下载模板表头
public const EXCELFIELD = [
'news_type' => '新闻类型',
'news_title' => '新闻标题',
'news_intro' => '新闻简介',
'news_source' => '文章来源',
'news_link' => '跳转链接',
'news_issue_date' => '发布日期',
'news_views_num' => '浏览次数',
'news_sort' => '新闻排序',
'news_content' => '新闻内容',
];
/**
* 新增前
*/
public static function onBeforeInsert(self $model): void
{
Tool::dataAddSortProc($model);
$model->completeCreateField();
}
/**
* 更新前
*/
public static function onBeforeUpdate(self $model): void
{
Tool::dataEditSortProc($model);
$model->completeUpdateField();
}
/**
* 删除前
*/
public static function onBeforeDelete(self $model): void
{
Tool::dataDeleteSortProc($model);
$model->completeDeleteField();
}
/**
* 导出Excel
*
* @param array $select 导出的数据
*/
public static function exportExcel(array $select): void
{
$data = [[
'新闻类型',
'新闻标题',
'新闻简介',
'文章来源',
'跳转链接',
'发布日期',
'浏览次数',
'新闻排序',
'新闻内容'
]];
foreach ($select as $key => $val) {
$data[] = [
$val['news_type'],
$val['news_title'],
$val['news_intro'],
$val['news_source'],
$val['news_link'],
$val['news_issue_date'],
$val['news_views_num'],
$val['news_sort'],
$val['news_content'],
];
}
$excel = (new Excel())->exporTsheet($data);
$excel->save('新闻.xlsx');
}
/**
* 导入excel
*
* @param \app\common\arw\adjfut\src\UploadFile $file excel
*/
public static function importExcel(\app\common\arw\adjfut\src\UploadFile $file): string
{
$msg = [];
Db::startTrans();
try {
$excel = new Excel($file);
$data = $excel->parseExcel(
Tool::getExcelRule(self::EXCELFIELD),
['titleLine' => [1]]);
if (!$data) throwErrorMsg('excel无数据', 1);
$msg = [];
foreach ($data as $line => $value) {
try {
$model = self::importExcelInit($value);
$msg[] = "{$line} 新增成功!
";
} catch (\Throwable $th) {
$msg[] = "{$line} {$th->getMessage()}
";
}
}
Db::commit();
return implode(', ', $msg);
} catch (\Throwable $th) {
Db::rollback();
throw $th;
}
}
/**
* 导入excel初始化
*
* @param array $value excel每行数据
*/
public static function importExcelInit(array $value):void
{
$news_type = $value['news_type'];$news_title = $value['news_title'];$news_intro = $value['news_intro'];$news_source = $value['news_source'];$news_link = $value['news_link'];$news_issue_date = $value['news_issue_date'];$news_views_num = $value['news_views_num'];$news_sort = $value['news_sort'];$news_content = $value['news_content'];
self::create(
['news_type' => $news_type,
'news_title' => $news_title,
'news_intro' => $news_intro,
'news_source' => $news_source,
'news_link' => $news_link,
'news_issue_date' => $news_issue_date,
'news_views_num' => $news_views_num,
'news_sort' => $news_sort,
'news_content' => $news_content,
],
[
'news_type',
'news_title',
'news_intro',
'news_source',
'news_link',
'news_issue_date',
'news_views_num',
'news_sort',
'news_content',
'news_guid',
'news_create_user_guid',
'news_update_user_guid'
]
);
}
}