1.优化开奖逻辑
2.优化后台开奖派彩 3.优化接口规范
This commit is contained in:
@@ -25,9 +25,9 @@ class Channel extends Backend
|
||||
*/
|
||||
protected ?object $model = null;
|
||||
|
||||
protected array|string $preExcludeFields = ['id', 'user_count', 'profit_amount', 'create_time', 'update_time'];
|
||||
protected array|string $preExcludeFields = ['id', 'user_count', 'profit_amount', 'create_time', 'update_time', 'admin_id'];
|
||||
|
||||
protected array $withJoinTable = ['adminGroup', 'admin'];
|
||||
protected array $withJoinTable = [];
|
||||
|
||||
protected string|array $quickSearchField = ['id', 'code', 'name'];
|
||||
|
||||
@@ -51,7 +51,7 @@ class Channel extends Backend
|
||||
if ($response !== null) return $response;
|
||||
|
||||
$query = Db::name('channel')
|
||||
->field(['id', 'name', 'admin_group_id'])
|
||||
->field(['id', 'name'])
|
||||
->order('id', 'asc');
|
||||
if (!$this->auth->isSuperAdmin()) {
|
||||
$query = $query->where('id', 'in', $this->currentChannelIds ?: [0]);
|
||||
@@ -79,11 +79,16 @@ class Channel extends Backend
|
||||
|
||||
$tree = [];
|
||||
foreach ($channels as $ch) {
|
||||
$groupId = $ch['admin_group_id'] ?? null;
|
||||
$channelId = (int) ($ch['id'] ?? 0);
|
||||
$rootGroupIds = Db::name('admin_group')
|
||||
->where('channel_id', $channelId)
|
||||
->where('pid', 0)
|
||||
->where('status', 1)
|
||||
->column('id');
|
||||
$groupIds = [];
|
||||
if ($groupId !== null && $groupId !== '') {
|
||||
$groupIds[] = $groupId;
|
||||
foreach ($getGroupChildren($groupId) as $gid) {
|
||||
foreach ($rootGroupIds as $rootId) {
|
||||
$groupIds[] = $rootId;
|
||||
foreach ($getGroupChildren($rootId) as $gid) {
|
||||
$groupIds[] = $gid;
|
||||
}
|
||||
}
|
||||
@@ -130,7 +135,7 @@ class Channel extends Backend
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加(重写:管理员只选顶级组;admin_group_id 后端自动写入)
|
||||
* 添加(重写:渠道与角色组在「角色组」侧绑定 channel_id,此处不再写入 admin_group_id)
|
||||
* @throws Throwable
|
||||
*/
|
||||
protected function _add(): Response
|
||||
@@ -150,30 +155,10 @@ class Channel extends Backend
|
||||
}
|
||||
unset($data['invite_code']);
|
||||
|
||||
$adminId = $data['admin_id'] ?? null;
|
||||
if ($adminId === null || $adminId === '') {
|
||||
return $this->error(__('Parameter %s can not be empty', ['admin_id']));
|
||||
}
|
||||
|
||||
if (array_key_exists('admin_group_id', $data)) {
|
||||
unset($data['admin_group_id']);
|
||||
}
|
||||
|
||||
$topGroupId = Db::name('admin_group_access')
|
||||
->alias('aga')
|
||||
->join('admin_group ag', 'aga.group_id = ag.id')
|
||||
->where('aga.uid', $adminId)
|
||||
->where('ag.pid', 0)
|
||||
->value('ag.id');
|
||||
|
||||
if ($topGroupId === null || $topGroupId === '') {
|
||||
return $this->error(__('Record not found'));
|
||||
}
|
||||
$data['admin_group_id'] = $topGroupId;
|
||||
if (!$this->auth->isSuperAdmin()) {
|
||||
$data['admin_id'] = $this->auth->id;
|
||||
}
|
||||
|
||||
if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
|
||||
$data[$this->dataLimitField] = $this->auth->id;
|
||||
}
|
||||
@@ -207,7 +192,7 @@ class Channel extends Backend
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑(重写:管理员只选顶级组;admin_group_id 后端自动写入)
|
||||
* 编辑(重写:不再维护 channel.admin_group_id)
|
||||
* @throws Throwable
|
||||
*/
|
||||
protected function _edit(): Response
|
||||
@@ -246,24 +231,6 @@ class Channel extends Backend
|
||||
unset($data['admin_group_id']);
|
||||
}
|
||||
|
||||
$nextAdminId = array_key_exists('admin_id', $data) ? $data['admin_id'] : ($row['admin_id'] ?? null);
|
||||
if ($nextAdminId !== null && $nextAdminId !== '') {
|
||||
$topGroupId = Db::name('admin_group_access')
|
||||
->alias('aga')
|
||||
->join('admin_group ag', 'aga.group_id = ag.id')
|
||||
->where('aga.uid', $nextAdminId)
|
||||
->where('ag.pid', 0)
|
||||
->value('ag.id');
|
||||
|
||||
if ($topGroupId === null || $topGroupId === '') {
|
||||
return $this->error(__('Record not found'));
|
||||
}
|
||||
$data['admin_group_id'] = $topGroupId;
|
||||
}
|
||||
if (!$this->auth->isSuperAdmin()) {
|
||||
$data['admin_id'] = $this->auth->id;
|
||||
}
|
||||
|
||||
$result = false;
|
||||
$this->model->startTrans();
|
||||
try {
|
||||
@@ -310,9 +277,6 @@ class Channel extends Backend
|
||||
$where[] = [$alias['channel'] . '.id', 'in', $this->currentChannelIds ?: [0]];
|
||||
}
|
||||
$res = $this->model
|
||||
->withJoin($this->withJoinTable, $this->withJoinType)
|
||||
->with($this->withJoinTable)
|
||||
->visible(['adminGroup' => ['name'], 'admin' => ['username']])
|
||||
->alias($alias)
|
||||
->where($where)
|
||||
->order($order)
|
||||
@@ -392,9 +356,9 @@ class Channel extends Backend
|
||||
return $this->error('结算单号已存在,请稍后重试');
|
||||
}
|
||||
|
||||
$adminId = $row['admin_id'] ?? null;
|
||||
if ($adminId === null || $adminId === '' || (int) $adminId <= 0) {
|
||||
return $this->error('渠道未绑定代理管理员,无法生成佣金记录');
|
||||
$adminId = $this->resolveCommissionAdminIdForChannel((int) $row['id']);
|
||||
if ($adminId === null || $adminId <= 0) {
|
||||
return $this->error('渠道下无归属管理员账号(请为管理员设置所属渠道),无法生成佣金记录');
|
||||
}
|
||||
|
||||
$now = time();
|
||||
@@ -685,8 +649,25 @@ class Channel extends Backend
|
||||
if ($admin && !empty($admin['channel_id'])) {
|
||||
$ids[] = $admin['channel_id'];
|
||||
}
|
||||
$byAdmin = Db::name('channel')->where('admin_id', $this->auth->id)->column('id');
|
||||
return array_values(array_unique(array_merge($ids, $byAdmin)));
|
||||
return array_values(array_unique($ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 佣金归属管理员:取该渠道下 admin.channel_id 匹配的首个管理员(按 id 升序)。
|
||||
*/
|
||||
private function resolveCommissionAdminIdForChannel(int $channelId): ?int
|
||||
{
|
||||
if ($channelId <= 0) {
|
||||
return null;
|
||||
}
|
||||
$aid = Db::name('admin')
|
||||
->where('channel_id', $channelId)
|
||||
->order('id', 'asc')
|
||||
->value('id');
|
||||
if ($aid === null || $aid === '') {
|
||||
return null;
|
||||
}
|
||||
return (int) $aid;
|
||||
}
|
||||
|
||||
private function normalizeAgentModeFields(array $data): array
|
||||
|
||||
Reference in New Issue
Block a user