管理员新增渠道channel_id和代理angent_id

This commit is contained in:
2026-03-19 18:04:52 +08:00
parent 3556ea42dd
commit 019b536a89
10 changed files with 107 additions and 6 deletions

View File

@@ -17,7 +17,7 @@ class Admin extends Backend
{
protected ?object $model = null;
protected array|string $preExcludeFields = ['create_time', 'update_time', 'password', 'salt', 'login_failure', 'last_login_time', 'last_login_ip'];
protected array|string $preExcludeFields = ['create_time', 'update_time', 'password', 'salt', 'login_failure', 'last_login_time', 'last_login_ip', 'agent_id'];
protected array|string $quickSearchField = ['username', 'nickname'];
@@ -25,6 +25,8 @@ class Admin extends Backend
protected string $dataLimitField = 'id';
protected array $withJoinTable = ['channel'];
protected function initController(Request $request): ?Response
{
$this->model = new AdminModel();
@@ -44,7 +46,8 @@ class Admin extends Backend
list($where, $alias, $limit, $order) = $this->queryBuilder();
$res = $this->model
->withoutField('login_failure,password,salt')
->withJoin($this->withJoinTable, $this->withJoinType)
->withJoin($this->withJoinTable, $this->withJoinType ?? 'LEFT')
->visible(['channel' => ['name']])
->alias($alias)
->where($where)
->order($order)
@@ -78,9 +81,13 @@ class Admin extends Backend
'mobile' => 'regex:/^1[3-9]\d{9}$/|unique:admin,mobile',
'group_arr' => 'required|array',
];
if ($this->auth->isSuperAdmin()) {
$rules['channel_id'] = 'required|integer|min:1';
}
$messages = [
'username.regex' => __('Please input correct username'),
'password.regex' => __('Please input correct password'),
'channel_id.required' => __('Please select channel'),
];
Validator::make($data, $rules, $messages)->validate();
} catch (ValidationException $e) {
@@ -88,6 +95,14 @@ class Admin extends Backend
}
}
if (!$this->auth->isSuperAdmin()) {
$currentChannelId = (int) ($this->auth->model->channel_id ?? 0);
if ($currentChannelId <= 0) {
return $this->error(__('Current admin has no channel bound'));
}
$data['channel_id'] = $currentChannelId;
}
$passwd = $data['password'] ?? '';
$data = $this->excludeFields($data);
$result = false;
@@ -98,6 +113,10 @@ class Admin extends Backend
$this->model->startTrans();
try {
$result = $this->model->save($data);
if ($result !== false) {
$agentId = strtolower(md5($this->model->username . $this->model->id));
$this->model->where('id', $this->model->id)->update(['agent_id' => $agentId]);
}
if (!empty($data['group_arr'])) {
$groupAccess = [];
foreach ($data['group_arr'] as $datum) {