110 lines
3.3 KiB
PHP
110 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace app\admin\controller\channel;
|
|
|
|
use Throwable;
|
|
use app\common\controller\Backend;
|
|
|
|
/**
|
|
* 渠道管理
|
|
*/
|
|
class Manage extends Backend
|
|
{
|
|
/**
|
|
* ChannelManage模型对象
|
|
* @var object|null
|
|
* @phpstan-var \app\common\model\ChannelManage|null
|
|
*/
|
|
protected ?object $model = null;
|
|
|
|
protected array|string $preExcludeFields = ['id', 'create_time', 'update_time', 'secret'];
|
|
|
|
protected array $withJoinTable = ['admin'];
|
|
|
|
protected string|array $quickSearchField = ['id'];
|
|
|
|
protected bool $autoFillAdminId = true;
|
|
|
|
public function initialize(): void
|
|
{
|
|
parent::initialize();
|
|
$this->model = new \app\common\model\ChannelManage();
|
|
}
|
|
|
|
/**
|
|
* 查看
|
|
* @throws Throwable
|
|
*/
|
|
public function index(\Webman\Http\Request $request): \support\Response
|
|
{
|
|
$response = $this->initializeBackend($request);
|
|
if ($response !== null) {
|
|
return $response;
|
|
}
|
|
|
|
if ($request->get('select') || $request->post('select')) {
|
|
return $this->select($request);
|
|
}
|
|
|
|
/**
|
|
* 1. withJoin 不可使用 alias 方法设置表别名,别名将自动使用关联模型名称(小写下划线命名规则)
|
|
* 2. 以下的别名设置了主表别名,同时便于拼接查询参数等
|
|
* 3. paginate 数据集可使用链式操作 each(function($item, $key) {}) 遍历处理
|
|
*/
|
|
list($where, $alias, $limit, $order) = $this->queryBuilder();
|
|
$res = $this->model
|
|
->withJoin($this->withJoinTable, $this->withJoinType)
|
|
->visible(['admin' => ['username']])
|
|
->alias($alias)
|
|
->where($where)
|
|
->order($order)
|
|
->paginate($limit);
|
|
|
|
return $this->success('', [
|
|
'list' => $res->items(),
|
|
'total' => $res->total(),
|
|
'remark' => get_route_remark(),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 白名单(页面按钮规则,用于菜单规则中配置按钮权限)
|
|
* 实际编辑通过 edit 接口提交 ip_white 字段
|
|
*/
|
|
public function whitelist(\Webman\Http\Request $request): \support\Response
|
|
{
|
|
$response = $this->initializeBackend($request);
|
|
if ($response !== null) {
|
|
return $response;
|
|
}
|
|
return $this->success();
|
|
}
|
|
|
|
/**
|
|
* 渠道下拉选择(供 remoteSelect 使用)
|
|
*/
|
|
public function select(\Webman\Http\Request $request): \support\Response
|
|
{
|
|
$response = $this->initializeBackend($request);
|
|
if ($response !== null) {
|
|
return $response;
|
|
}
|
|
list($where, $alias, $limit, $order) = $this->queryBuilder();
|
|
$res = $this->model
|
|
->field('id,name,title')
|
|
->alias($alias)
|
|
->where($where)
|
|
->order($order)
|
|
->paginate($limit);
|
|
return $this->success('', [
|
|
'list' => $res->items(),
|
|
'total' => $res->total(),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* add、edit、del、sortable 已由父类 Backend 实现,无需重写即可直接使用
|
|
* 若需重写,请确保调用 initializeBackend($request) 并传入 Request 参数
|
|
* 若模型有 admin_id 字段需自动填充,可设置 protected bool $autoFillAdminId = true
|
|
*/
|
|
} |