houde_web_api/app/admin/controller/News/News.php
2023-04-16 23:05:17 +08:00

292 lines
8.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\admin\controller\News;
use app\BaseController;
use app\common\model\News\News as ModelNews;
use app\Request;
use think\Validate;
use think\exception\ValidateException;
use think\facade\Filesystem;
use app\common\arw\adjfut\src\Excel;
use app\common\arw\adjfut\src\UploadFile;
use think\facade\Db;
use think\facade\Env;
class News extends BaseController
{
/**
* 获取新闻列表
*/
public function getNewsList(Request $request): array
{
$params = $request->param();
$con = [];
if (isset($params['news_title']) && $params['news_title']) {
$con[] = ['news_title', 'LIKE', '%' . $params['news_title'] . '%'];
};
if (isset($params['news_type']) && $params['news_type']) {
$con[] = ['news_type', '=', $params['news_type']];
};
$query = ModelNews::where($con);
$select = self::pageWrapper($query)
->field([
'news_id',
'news_guid',
'news_title',
'news_author',
'news_intro',
'news_type',
'news_img',
'news_content',
'news_num'
])
->order('news_update_time', 'desc')
->select();
$count = $query->count();
return [
'code' => 0,
'data' => $select,
'count' => $count,
'msg' => 'ok'
];
}
/**
* 编辑新闻
*/
public function editNews(Request $request): array
{
$params = $request->param();
$this->validate($params, [
'news_title|新闻标题' => 'require',
'news_author|新闻作者' => 'require',
'news_intro|新闻简介' => 'require',
'news_type|新闻类型' => 'require',
'news_img|新闻封面' => 'require',
]);
$model = ModelNews::where('news_guid', $params['news_guid'])->find();
if (!$model) throwErrorMsg("该新闻不存在", 1);
$model->allowField([
'news_update_user_guid',
'news_title',
'news_author',
'news_intro',
'news_type',
'news_img',
'news_content',
'news_num'
])->save($params);
return [
'code' => 0,
'msg' => '编辑成功'
];
}
/**
* 添加新闻
*/
public function addNews(Request $request): array
{
$params = $request->param();
$this->validate($params, [
'news_title|新闻标题' => 'require',
'news_author|新闻作者' => 'require',
'news_intro|新闻简介' => 'require',
'news_type|新闻类型' => 'require',
'news_img|新闻封面' => 'require',
]);
$model = ModelNews::create($params, [
'news_guid',
'news_create_user_guid',
'news_update_user_guid',
'news_title',
'news_author',
'news_intro',
'news_type',
'news_img',
'news_content',
'news_num'
]);
return [
'code' => 0,
'msg' => '添加成功'
];
}
/**
* 删除新闻
*/
public function deleteNews(Request $request): array
{
$params = $request->param();
$this->validate($params, [
'news_guid' => 'require',
]);
$news = ModelNews::where([
'news_guid' => explode(',', $params['news_guid'])
])->select();
$news->delete();
return [
'code' => 0,
'msg' => "删除成功"
];
}
/**
* 导出Excel
*/
public function exportExcel(Request $request)
{
$params = $request->param();
$select = ModelNews::field([
'news_title',
'news_author',
'news_intro',
'news_type',
'news_img',
'news_content',
'news_num'
])
->order('news_update_time', 'desc')
->select();
$data = [[
'新闻标题',
'新闻作者',
'新闻简介',
'新闻类型',
'新闻封面',
'新闻内容',
'新闻数量'
]];
foreach ($select as $key => $val) {
$data[] = [
$val['news_title'],
$val['news_author'],
$val['news_intro'],
$val['news_type'],
$val['news_img'],
$val['news_content'],
$val['news_num'],
];
}
$excel = (new Excel())->exporTsheet($data);
$excel->save('新闻.xlsx');
}
/**
* 下载导入模板
*/
public function downloadTemplate(Request $request)
{
$params = $request->param();
$data = [
'新闻标题',
'新闻作者',
'新闻简介',
'新闻类型',
'新闻封面',
'新闻内容',
'新闻数量'
];
$excel = (new Excel())->exporTsheet($data);
$excel->save('新闻导入模板.xlsx');
}
/**
* 导入excel
*/
public function importExcel(Request $request)
{
$file = new UploadFile('uploads', 'fileExt:xlsx');
$file->putFile('news');
Db::startTrans();
try {
$excel = new Excel($file);
$data = $excel->parseExcel(
[[
'title' => '新闻标题',
'validate' => 'require',
'field' => 'news_title',
], [
'title' => '新闻作者',
'validate' => 'require',
'field' => 'news_author',
], [
'title' => '新闻简介',
'validate' => 'require',
'field' => 'news_intro',
], [
'title' => '新闻类型',
'validate' => 'require',
'field' => 'news_type',
], [
'title' => '新闻封面',
'validate' => 'require',
'field' => 'news_img',
], [
'title' => '新闻内容',
'validate' => 'require',
'field' => 'news_content',
], [
'title' => '新闻数量',
'validate' => 'require',
'field' => 'news_num',
],],
[
'titleLine' => [1]
]
);
if (!$data) throwErrorMsg('excel无数据', 1);
$error = [];
foreach ($data as $line => $value) {
try {
$news_title = $value['news_title'];
$news_author = $value['news_author'];
$news_intro = $value['news_intro'];
$news_type = $value['news_type'];
$news_img = $value['news_img'];
$news_content = $value['news_content'];
$news_data = $value['news_data'];
$news_time = $value['news_time'];
$news_num = $value['news_num'];
ModelNews::create([
'news_title' => $news_title,
'news_author' => $news_author,
'news_intro' => $news_intro,
'news_type' => $news_type,
'news_img' => $news_img,
'news_content' => $news_content,
'news_num' => $news_num,
]);
} catch (\Throwable $th) {
$error[] = $line . '' . $th->getMessage();
}
}
if ($error) throwErrorMsg(implode(', ', $error), 1);
Db::commit();
} catch (\Throwable $th) {
Db::rollback();
throw $th;
}
return [
'code' => 0,
'msg' => '导入成功!'
];
}
}