Files
charge-pile-serve/app/controller/Event.php
MeSHard 94f7e83679 init
2025-11-10 16:12:07 +08:00

271 lines
9.6 KiB
PHP

<?php
namespace app\controller;
use app\model\Event as EventModel;
use think\facade\Filesystem;
use think\Request;
class Event
{
public function ShowEvent()
{
$list = EventModel::paginate(20)->toArray();
$i = 0;
foreach ($list['data'] as $ll) {
if (strpos($ll['pic'], ',') !== false) {
$arr = explode(',', $ll['pic']);
$s = 0;
foreach ($arr as $a) {
$arr[$s] = $a;
$s += 1;
}
$list['data'][$i]['pic'] = $arr;
} else {
$list['data'][$i]['pic'] = (array)$list['data'][$i]['pic'];
}
$i += 1;
}
return json($list);
}
public function AddEvent(Request $request, $str_file = [], $str_list_file = '')
{
$data = $request->param();
$title = $data['title'];
$content = $data['content'];
$file = $request->file();
// 设定文件上传的大小
$fileSize = 1024 * 1024 * 10;
$allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
$savename = [];
$listname = [];
if (!empty($file)) {
foreach ($file as $f) {
if (is_array($f)) {
foreach ($f as $singleFile) {
if (!in_array($singleFile->getMime(), $allowedTypes)) {
return json(['code' => 1, 'Msg' => '不支持的文件类型', 'data' => '']);
}
}
} else {
if (!in_array($f->getMime(), $allowedTypes)) {
return json(['code' => 1, 'Msg' => '不支持的文件类型', 'data' => '']);
}
}
}
}
$pico = $this->SavePic($str_file, $fileSize, $file, $request, $savename, $listname, $str_list_file);
$save = (new \app\model\Event)->save(['title' => $title, 'content' => $content, 'pic' => $pico['pic'], 'listpic' => $pico['listpic']]);
if ((int)$save == 1) {
return json(['code' => 200, 'Msg' => '新增成功', 'data' => ['title' => $title, 'content' => $content, 'pic' => $pico['pic'], 'listpic' => $pico['listpic']]]);
} else {
return json(['code' => 1, 'Msg' => '新增失败', 'data' => '']);
}
}
public function EditEvent(Request $request, $str_file = [], $str_list_file = '')
{
$data = $request->param();
$id = $data['id'];
$title = $data['title'];
$content = $data['content'];
$status = (int)$data['status'];
$edit = EventModel::find($id);
$file = $request->file();
// 设定文件上传的大小
$fileSize = 1024 * 1024 * 10;
$savename = [];
$listname = '';
$allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
try {
if (!empty($file)) {
foreach ($file as $f) {
if (is_array($f)) {
foreach ($f as $singleFile) {
if (!in_array($singleFile->getMime(), $allowedTypes)) {
return json(['code' => 1, 'Msg' => '不支持的文件类型', 'data' => '']);
}
}
} else {
if (!in_array($f->getMime(), $allowedTypes)) {
return json(['code' => 1, 'Msg' => '不支持的文件类型', 'data' => '']);
}
}
}
}
$pico = $this->SavePic($str_file, $fileSize, $file, $request, $savename, $listname, $str_list_file);
$edit = $edit->save(['title' => $title, 'content' => $content, 'pic' => $pico['pic'], 'listpic' => $pico['listpic'], 'status' => $status]);
if ((int)$edit == 1) {
return json(['code' => 200, 'Msg' => '修改成功', 'data' => ['title' => $title, 'content' => $content, 'pic' => $pico['pic'], 'status' => $status, 'listpic' => $pico['listpic']]]);
} else {
return json(['code' => 1, 'Msg' => '修改失败', 'data' => '']);
}
} catch (\think\exception\ValidateException $e) {
return json(['code' => 1, 'Msg' => $e->getMessage(), 'data' => '']);
}
}
public function DeleteEvent($id)
{
$ee = EventModel::find($id);
if ($ee != null) {
$result = EventModel::destroy($id);
if ($result) {
return json(['code' => 200, 'Msg' => '删除成功']);
} else {
return json(['code' => 1, 'Msg' => '删除失败']);
}
} else {
return json(['code' => 1, 'Msg' => '活动编号不存在']);
}
}
/**
* [将Base64图片转换为本地图片并保存]
* @E-mial wuliqiang_aa@163.com
* @TIME 2017-04-07
* @WEB http://blog.iinu.com.cn
* @param [Base64] $base64_image_content [要保存的Base64]
* @param [目录] $path [要保存的路径]
*/
function base64_image_content($base64_image_content, $path = '../public/static/img', $name = '')
{
//匹配出图片的格式
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)) {
$type = $result[2];
$new_file = $path;
if (!file_exists($new_file)) {
//检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir($new_file, 0700);
}
$new_file = $new_file . ($name ?? date('YmdHis', time()) ). ".{$type}";
if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))) {
return 'https://' . $_SERVER['HTTP_HOST'] . '/' . substr($new_file, 10);
} else {
return false;
}
} else {
return false;
}
}
/**
* @param $fileSize
* @param $file
* @param Request $request
* @param array $savename
* @return array
*/
protected function SavePic($str_file, $fileSize, $file, Request $request, array $savename, $listname, $str_list_file): array
{
if (!empty($str_file)) {
foreach ($str_file as $sfile) {
$savename[] = $sfile;
}
}
if (!empty($file)) {
validate(['logo' => 'fileSize:' . $fileSize . '|fileExt:jpg,png'])
->check($file);
$small_file = $request->file("small_file");
if (!empty($small_file) && empty($str_list_file)) {
$listname = 'https://' . $_SERVER['HTTP_HOST'] . '/static/' . str_replace('\\', '/', \think\facade\Filesystem::disk('public')->putFile('img', $small_file));
} elseif (!empty($str_list_file) && empty($small_file)) {
$listname = $str_list_file;
} else {
$listname = '';
}
$files = $request->file("file");
// 将图片保存至本地
if (!empty($files)) {
foreach ($files as $file) {
$savename[] = 'https://' . $_SERVER['HTTP_HOST'] . '/static/' . str_replace('\\', '/', \think\facade\Filesystem::disk('public')->putFile('img', $file));
}
}
} else {
if (!empty($str_list_file)) {
$listname = $str_list_file;
}
}
$pico = '';
$i = 1;
foreach ($savename as $p) {
if ($i == count($savename)) {
$pico .= $p;
} else {
$pico .= $p . ',';
}
$i += 1;
}
return ['pic' => $pico, 'listpic' => $listname];
}
public function EventList()
{
$list = EventModel::order('id desc')->paginate([
'list_rows' => 20,
'query' => request()->param()
]);
foreach ($list as $ll=>$value) {
if ($value['status'] == 1) {
$list[$ll]['statusMsg'] = '上线中';
} elseif ($value['status'] == 2) {
$list[$ll]['statusMsg'] = '已下架';
}
}
return json($list);
}
/**
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
*/
public function EventDetail($id)
{
$DMessage = EventModel::where('id', $id)->find()->toArray();
$Dpic = [];
if (strpos($DMessage['pic'], ',') !== false) {
$PicArray = explode(',', $DMessage['pic']);
$i = 0;
foreach ($PicArray as $pic) {
if ($i != 0) {
$Dpic[] = $pic;
}
$i += 1;
}
} else {
$Dpic[] = $DMessage['pic'];
}
$DMessage['pic'] = $Dpic;
if ((int)$DMessage['status'] == 1) {
$DMessage['statusMsg'] = '上线中';
} elseif ((int)$DMessage['status'] == 2) {
$DMessage['statusMsg'] = '已下架';
}
return json($DMessage);
}
public function FindEvent($name)
{
$list = EventModel::whereLike('title', '%' . $name . '%')->paginate(20)->toArray();
$i = 0;
foreach ($list['data'] as $ll) {
if (strpos($ll['pic'], ',') !== false) {
$list['data'][$i]['pic'] = explode(',', $ll['pic']);
} else {
$list['data'][$i]['pic'] = (array)$ll['pic'];
}
$i += 1;
}
return json($list);
}
}