Files
shop-platform/src/app/shop/controller/Adv.php
2025-10-29 15:32:26 +08:00

316 lines
10 KiB
PHP

<?php
namespace app\shop\controller;
use app\model\web\Adv as AdvModel;
use app\model\web\AdvPosition;
/**
* 广告管理
*/
class Adv extends BaseShop
{
/**
* 广告位管理
* @return mixed
*/
public function index()
{
$adv_position = new AdvPosition();
if (request()->isJson()) {
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$search_text = input('search_text', '');
$type = input('type', '');//位置类型 1 电脑端 2 手机端
$condition = [
[ 'site_id', '=', $this->site_id ],
[ 'type', '=', 2 ]
];
if (!empty($search_text)) {
$condition[] = [ 'ap_name', 'like', '%' . $search_text . '%' ];
}
if ($type !== '') {
$condition[] = [ 'type', '=', $type ];
}
return $adv_position->getAdvPositionPageList($condition, $page, $page_size);
} else {
return $this->fetch('adv/index');
}
}
/**
* 添加广告位
*/
public function addPosition()
{
$adv_position = new AdvPosition();
if (request()->isJson()) {
$data = [
'ap_name' => input('ap_name', ''),
'keyword' => input('keyword', ''),
'ap_intro' => input('ap_intro', ''),
'ap_height' => input('ap_height', 0),
'ap_width' => input('ap_width', 0),
'default_content' => input('default_content', ''),
'ap_background_color' => input('ap_background_color', ''),
'type' => input('type', 2),
'state' => input('state', 0),
'site_id' => $this->site_id
];
return $adv_position->addAdvPosition($data);
} else {
return $this->fetch('adv/add_position');
}
}
/**
* 编辑广告位
*/
public function editPosition()
{
$adv_position = new AdvPosition();
$ap_id = input('ap_id', 0);
if (request()->isJson()) {
$data = [
'ap_name' => input('ap_name', ''),
'keyword' => input('keyword', ''),
'ap_intro' => input('ap_intro', ''),
'ap_height' => input('ap_height', 0),
'ap_width' => input('ap_width', 0),
'default_content' => input('default_content', ''),
'ap_background_color' => input('ap_background_color', ''),
'state' => input('state', 0),
];
return $adv_position->editAdvPosition($data, [ [ 'ap_id', '=', $ap_id ], [ 'site_id', '=', $this->site_id ] ]);
} else {
$ap_info = $adv_position->getAdvPositionInfo([ [ 'ap_id', '=', $ap_id ], [ 'site_id', '=', $this->site_id ] ]);
$this->assign('info', $ap_info[ 'data' ]);
return $this->fetch('adv/edit_position');
}
}
/**
* 修改广告位字段
*/
public function editPositionField()
{
if (request()->isJson()) {
$adv_position = new AdvPosition();
$type = input('type', '');
$value = input('value', 0);
$ap_id = input('ap_id', 0);
$data = [
$type => $value
];
return $adv_position->editAdvPosition($data, [ [ 'ap_id', '=', $ap_id ] ]);
}
}
/**
* 删除广告位
*/
public function deletePosition()
{
if (request()->isJson()) {
$ap_ids = input('ap_ids', 0);
$adv_position = new AdvPosition();
return $adv_position->deleteAdvPosition([ [ 'ap_id', 'in', $ap_ids ], [ 'site_id', '=', $this->site_id ] ], $ap_ids);
}
}
/**
* 广告列表
*/
public function lists()
{
$adv = new AdvModel();
$adv_position = new AdvPosition();
$ap_id = input('ap_id', '');
$keyword = input('keyword', '');
if (!empty($keyword)) {
$info = $adv_position->getAdvPositionInfo([ [ 'keyword', '=', $keyword ] ], 'ap_id')[ 'data' ];
if (!empty($info)) {
$ap_id = $info[ 'ap_id' ];
}
}
if (request()->isJson()) {
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$search_text = input('search_text', '');
$slide_sort = input('sort', '');
//查询所有手机端广告位
$conditions[] = [ 'type', '=', 2 ];
$positions = $adv_position->getAdvPositionList($conditions);
$positions_ids = array_column($positions[ 'data' ], 'ap_id');
$condition = [
[ 'a.site_id', '=', $this->site_id ],
[ 'a.ap_id', 'in', $positions_ids ]
];
if (!empty($search_text)) {
$condition[] = [ 'a.adv_title', 'like', '%' . $search_text . '%' ];
}
if ($ap_id !== '') {
$condition[] = [ 'a.ap_id', '=', $ap_id ];
}
//排序
$slide_sort = input('order', 'slide_sort');
$sort = input('sort', 'desc');
if ($slide_sort == 'slide_sort') {
$order_by = 'a.' . $slide_sort . ' ' . $sort;
} else {
$order_by = 'a.' . $slide_sort . ' ' . $sort . ',a.slide_sort desc';
}
return $adv->getAdvPageList($condition, $page, $page_size, $order_by);
} else {
$this->assign('ap_id', $ap_id);
$adv_position = new AdvPosition();
$adv_position_list = $adv_position->getAdvPositionList([ [ 'site_id', '=', $this->site_id ], [ 'type', '=', 2 ] ], 'ap_id,ap_name')[ 'data' ];
$this->assign('adv_position', $adv_position_list);
return $this->fetch('adv/lists');
}
}
/**
* 添加广告
*/
public function addAdv()
{
$adv = new AdvModel();
if (request()->isJson()) {
$data = [
'ap_id' => input('ap_id', 0),
'adv_title' => input('adv_title', ''),
'adv_url' => input('adv_url', ''),
'adv_image' => input('adv_image', ''),
'slide_sort' => input('slide_sort', 0),
'price' => input('price', 0),
'background' => input('background', ''),
'state' => input('state', 0),
'site_id' => $this->site_id
];
return $adv->addAdv($data);
} else {
$adv_position = new AdvPosition();
$adv_position_list = $adv_position->getAdvPositionList([ [ 'site_id', '=', $this->site_id ], [ 'type', '=', 2 ] ]);
$this->assign('adv_position_list', $adv_position_list[ 'data' ]);
$ap_id = input('ap_id', 0);
$this->assign('ap_id', $ap_id);
return $this->fetch('adv/add_adv');
}
}
/**
* 编辑广告
*/
public function editAdv()
{
$adv_id = input('adv_id', '');
$adv = new AdvModel();
if (request()->isJson()) {
$data = [
'ap_id' => input('ap_id', 0),
'adv_title' => input('adv_title', ''),
'adv_url' => input('adv_url', ''),
'adv_image' => input('adv_image', ''),
'slide_sort' => input('slide_sort', 0),
'price' => input('price', 0),
'background' => input('background', ''),
// 'state' => input('state', 0),
];
return $adv->editAdv($data, [ [ 'adv_id', '=', $adv_id ], [ 'site_id', '=', $this->site_id ] ]);
} else {
$adv_position = new AdvPosition();
$adv_position_list = $adv_position->getAdvPositionList([ [ 'site_id', '=', $this->site_id ], [ 'type', '=', 2 ] ]);
$this->assign('adv_position_list', $adv_position_list[ 'data' ]);
$adv_info = $adv->getAdvInfo($adv_id);
$this->assign('adv_info', $adv_info[ 'data' ]);
// 得到当前广告图类型
$type = 2;// 1 pc、2 wap
foreach ($adv_position_list[ 'data' ] as $k => $v) {
if ($v[ 'ap_id' ] == $adv_info[ 'data' ][ 'ap_id' ]) {
$type = $v[ 'type' ];
break;
}
}
$this->assign('type', $type);
$ap_id = input('ap_id', 0);
$this->assign('ap_id', $ap_id);
return $this->fetch('adv/edit_adv');
}
}
/**
* 修改广告字段
*/
public function editAdvField()
{
if (request()->isJson()) {
$adv = new AdvModel();
$type = input('type', '');
$value = input('value', '');
$adv_id = input('adv_id', '');
$data = [
$type => $value
];
return $adv->editAdv($data, [ [ 'adv_id', '=', $adv_id ] ]);
}
}
/**
* 删除广告
*/
public function deleteAdv()
{
if (request()->isJson()) {
$adv_ids = input('adv_ids', 0);
$adv = new AdvModel();
return $adv->deleteAdv([ [ 'adv_id', 'in', $adv_ids ], [ 'site_id', '=', $this->site_id ] ]);
}
}
/**
* 修改广告位状态
* @return array
*/
public function alterAdvPositionState()
{
if (request()->isJson()) {
$ap_id = input('ap_id', 0);
$state = input('state', 0);
$ap_model = new AdvPosition();
return $ap_model->editAdvPosition([ 'state' => $state ], [ [ 'ap_id', '=', $ap_id ], [ 'site_id', '=', $this->site_id ] ]);
}
}
/**
* 修改广告状态
* @return array
*/
public function alterAdvState()
{
if (request()->isJson()) {
$adv_id = input('adv_id', 0);
$state = input('state', 0);
$ap_model = new AdvModel();
return $ap_model->editAdv([ 'state' => $state ], [ [ 'adv_id', '=', $adv_id ], [ 'site_id', '=', $this->site_id ] ]);
}
}
}