220 lines
7.8 KiB
PHP
Executable File
220 lines
7.8 KiB
PHP
Executable File
<?php
|
||
|
||
namespace app\admin\controller;
|
||
|
||
use app\admin\controller\Base;
|
||
use \think\Request;
|
||
use think\facade\View;
|
||
use app\common\model\Advert as AdvertModel;
|
||
use app\common\model\AdvertType as AdvertTypeModel;
|
||
use app\common\model\Goods;
|
||
use app\common\model\Coupon;
|
||
|
||
class Advert extends Base
|
||
{
|
||
/*
|
||
*轮播图列表
|
||
*/
|
||
public function index(Request $request)
|
||
{
|
||
// 1. 获取查询参数中的 type_id
|
||
$typeId = $request->param('type_id', '', 'intval'); // 获取 type_id, 默认为空, 强制整数
|
||
|
||
$whe = [];
|
||
// 2. 如果 type_id 有效,则添加到查询条件
|
||
if (!empty($typeId)) {
|
||
$whe[] = ['type', '=', $typeId];
|
||
}
|
||
|
||
$field = '*';
|
||
$order = 'type asc,id desc'; // 排序可以保持不变,或根据需要调整
|
||
|
||
$list = AdvertModel::with('advertType')
|
||
->where($whe) // 应用查询条件
|
||
->field($field)
|
||
->order($order)
|
||
->paginate(['list_rows' => $this->page, 'query' => request()->param()]); // query 会自动保持 type_id 等参数
|
||
|
||
$count = $list->total();
|
||
|
||
// 3. 查询所有可用类型,用于下拉框
|
||
$types = AdvertTypeModel::order('sort asc, id asc')->select();
|
||
|
||
View::assign('count', $count);
|
||
View::assign('list', $list);
|
||
View::assign('types', $types); // 传递类型列表
|
||
View::assign('typeId', $typeId); // 传递当前选中的 type_id
|
||
|
||
return View::fetch('Advert/index');
|
||
}
|
||
|
||
/*
|
||
* 轮播图添加
|
||
*/
|
||
public function add(Request $request)
|
||
{
|
||
|
||
if (!$request->isPost()) {
|
||
$types = AdvertTypeModel::order('sort asc, id asc')->select();
|
||
View::assign('types', $types);
|
||
return View::fetch('Advert/add');
|
||
} else {
|
||
$data = $request->post();
|
||
|
||
if (empty($data['type'])) {
|
||
return $this->renderError("请选择类型");
|
||
}
|
||
$typeExists = AdvertTypeModel::find($data['type']);
|
||
if (!$typeExists) {
|
||
return $this->renderError("选择的类型无效");
|
||
}
|
||
|
||
if (isset($data['ttype'])) {
|
||
if ($data['ttype'] == 1) {
|
||
if (empty($data['coupon_id']) || $data['coupon_id'] < 0) {
|
||
return $this->renderError("优惠券id错误");
|
||
}
|
||
$is_find = Coupon::where('id', $data['coupon_id'])->find();
|
||
if (!$is_find) {
|
||
return $this->renderError("优惠券不存在");
|
||
}
|
||
}
|
||
if ($data['ttype'] == 2 || $data['ttype'] == 3 || $data['ttype'] == 4) {
|
||
if (empty($data['goods_id']) || $data['goods_id'] < 0) {
|
||
return $this->renderError("盒子id错误");
|
||
}
|
||
$is_find = Goods::where('id', $data['goods_id'])->find();
|
||
if (!$is_find) {
|
||
return $this->renderError("盒子不存在");
|
||
}
|
||
}
|
||
if ($data['ttype'] == 5) {
|
||
if (empty($data['url_link'])) {
|
||
return $this->renderError("请输入跳转链接");
|
||
}
|
||
// 简单的URL格式验证
|
||
if (!filter_var($data['url_link'], FILTER_VALIDATE_URL)) {
|
||
return $this->renderError("请输入有效的URL地址,必须包含http://或https://");
|
||
}
|
||
}
|
||
}
|
||
|
||
if (isset($data['sort']) && !ctype_digit((string)$data['sort'])) {
|
||
return $this->renderError("排序值请输入非负整数");
|
||
}
|
||
if (empty($data['imgurl'])) {
|
||
return $this->renderError("请上传图片");
|
||
}
|
||
|
||
$data['addtime'] = time();
|
||
$advert = new AdvertModel();
|
||
$dd = $advert->save($data);
|
||
|
||
if ($dd) {
|
||
return $this->renderSuccess("轮播图添加成功");
|
||
} else {
|
||
return $this->renderError("轮播图添加失败");
|
||
}
|
||
}
|
||
}
|
||
|
||
/*
|
||
* 轮播图修改
|
||
*/
|
||
public function edit(Request $request)
|
||
{
|
||
if (!$request->isPost()) {
|
||
$id = $request->param('id');
|
||
$data = AdvertModel::find($id);
|
||
if (!$data) {
|
||
return $this->renderError("请求参数错误: 轮播图不存在");
|
||
}
|
||
$types = AdvertTypeModel::order('sort asc, id asc')->select();
|
||
View::assign('data', $data);
|
||
View::assign('types', $types);
|
||
return View::fetch('Advert/edit');
|
||
} else {
|
||
$data = $request->post();
|
||
if (empty($data['id'])) {
|
||
return $this->renderError("请求参数错误: 缺少ID");
|
||
}
|
||
|
||
$info = AdvertModel::find($data['id']);
|
||
if (!$info) {
|
||
return $this->renderError("请求参数错误: 轮播图不存在");
|
||
}
|
||
|
||
if (empty($data['type'])) {
|
||
return $this->renderError("请选择类型");
|
||
}
|
||
$typeExists = AdvertTypeModel::find($data['type']);
|
||
if (!$typeExists) {
|
||
return $this->renderError("选择的类型无效");
|
||
}
|
||
|
||
if (isset($data['ttype'])) {
|
||
if ($data['ttype'] == 1) {
|
||
if (empty($data['coupon_id']) || $data['coupon_id'] < 0) {
|
||
return $this->renderError("优惠券id错误");
|
||
}
|
||
$is_find = Coupon::where('id', $data['coupon_id'])->find();
|
||
if (!$is_find) {
|
||
return $this->renderError("优惠券不存在");
|
||
}
|
||
}
|
||
if ($data['ttype'] == 2 || $data['ttype'] == 3 || $data['ttype'] == 4) {
|
||
if (empty($data['goods_id']) || $data['goods_id'] < 0) {
|
||
return $this->renderError("盒子id错误");
|
||
}
|
||
$is_find = Goods::where('id', $data['goods_id'])->find();
|
||
if (!$is_find) {
|
||
return $this->renderError("盒子不存在");
|
||
}
|
||
}
|
||
if ($data['ttype'] == 5) {
|
||
if (empty($data['url_link'])) {
|
||
return $this->renderError("请输入跳转链接");
|
||
}
|
||
// 简单的URL格式验证
|
||
if (!filter_var($data['url_link'], FILTER_VALIDATE_URL)) {
|
||
return $this->renderError("请输入有效的URL地址,必须包含http://或https://");
|
||
}
|
||
}
|
||
}
|
||
|
||
if (isset($data['sort']) && !ctype_digit((string)$data['sort'])) {
|
||
return $this->renderError("排序值请输入非负整数");
|
||
}
|
||
if (empty($data['imgurl'])) {
|
||
return $this->renderError("请上传图片");
|
||
}
|
||
|
||
$data['update_time'] = time();
|
||
$dd = $info->save($data);
|
||
|
||
if ($dd !== false) {
|
||
return $this->renderSuccess("轮播图编辑成功");
|
||
} else {
|
||
return $this->renderError("轮播图编辑失败或无更改");
|
||
}
|
||
}
|
||
}
|
||
|
||
/*
|
||
* 轮播图 删除
|
||
*/
|
||
public function del(Request $request)
|
||
{
|
||
$id = $request->param('id');
|
||
$info = AdvertModel::find($id);
|
||
if (!$info) {
|
||
return $this->renderError("请求参数错误: 轮播图不存在");
|
||
}
|
||
$dd = $info->delete();
|
||
if ($dd) {
|
||
return $this->renderSuccess("轮播图删除成功");
|
||
} else {
|
||
return $this->renderError("轮播图删除失败");
|
||
}
|
||
}
|
||
} |