1.优化开奖逻辑
2.优化后台开奖派彩 3.优化接口规范
This commit is contained in:
@@ -20,7 +20,7 @@ class User extends Backend
|
||||
*/
|
||||
protected ?object $model = null;
|
||||
|
||||
protected array|string $preExcludeFields = ['id', 'uuid', 'create_time', 'update_time'];
|
||||
protected array|string $preExcludeFields = ['id', 'uuid', 'create_time', 'update_time', 'invite_code'];
|
||||
|
||||
protected array $withJoinTable = ['channel', 'admin'];
|
||||
|
||||
@@ -35,7 +35,7 @@ class User extends Backend
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加(重写:password 使用 Admin 同款加密;uuid 由 username+channel_id 生成)
|
||||
* 添加(重写:password 使用 Admin 同款加密;uuid 为 10 位唯一对外标识)
|
||||
* @throws Throwable
|
||||
*/
|
||||
protected function _add(): Response
|
||||
@@ -47,6 +47,10 @@ class User extends Backend
|
||||
}
|
||||
|
||||
$data = $this->applyInputFilter($data);
|
||||
$inviteResolved = $this->applyInviteCodeToUserChannel($data);
|
||||
if ($inviteResolved !== null) {
|
||||
return $inviteResolved;
|
||||
}
|
||||
$data = $this->excludeFields($data);
|
||||
|
||||
$password = $data['password'] ?? null;
|
||||
@@ -60,7 +64,7 @@ class User extends Backend
|
||||
if (!is_string($username) || trim($username) === '' || $channelId === null || $channelId === '') {
|
||||
return $this->error(__('Parameter %s can not be empty', ['username/channel_id']));
|
||||
}
|
||||
$data['uuid'] = md5(trim($username) . '|' . $channelId);
|
||||
$data['uuid'] = \app\common\model\User::generateUniquePublicCode10();
|
||||
|
||||
if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
|
||||
$data[$this->dataLimitField] = $this->auth->id;
|
||||
@@ -95,7 +99,7 @@ class User extends Backend
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑(重写:password 使用 Admin 同款加密;uuid 由 username+channel_id 生成)
|
||||
* 编辑(重写:password 使用 Admin 同款加密;uuid 创建后不因改名改渠道自动变更)
|
||||
* @throws Throwable
|
||||
*/
|
||||
protected function _edit(): Response
|
||||
@@ -130,18 +134,6 @@ class User extends Backend
|
||||
}
|
||||
}
|
||||
|
||||
$nextUsername = array_key_exists('username', $data) ? $data['username'] : $row['username'];
|
||||
$nextChannelId = null;
|
||||
if (array_key_exists('channel_id', $data)) {
|
||||
$nextChannelId = $data['channel_id'];
|
||||
} else {
|
||||
$nextChannelId = $row['channel_id'] ?? null;
|
||||
}
|
||||
|
||||
if (is_string($nextUsername) && trim($nextUsername) !== '' && $nextChannelId !== null && $nextChannelId !== '') {
|
||||
$data['uuid'] = md5(trim($nextUsername) . '|' . $nextChannelId);
|
||||
}
|
||||
|
||||
$result = false;
|
||||
$this->model->startTrans();
|
||||
try {
|
||||
@@ -337,6 +329,63 @@ class User extends Backend
|
||||
return array_values(array_unique(array_merge($own, $children)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求中的 `invite_code`(子代理 admin.invite_code)解析为 `channel_id`,并写入 `register_invite_code`、`admin_id`。
|
||||
* 若同时提交 `channel_id` / `admin_id`,须与邀请码对应记录一致。
|
||||
*/
|
||||
private function applyInviteCodeToUserChannel(array &$data): ?Response
|
||||
{
|
||||
if (!array_key_exists('invite_code', $data)) {
|
||||
return null;
|
||||
}
|
||||
$raw = $data['invite_code'];
|
||||
unset($data['invite_code']);
|
||||
$inviteCode = is_string($raw) ? trim($raw) : '';
|
||||
if ($inviteCode === '') {
|
||||
return null;
|
||||
}
|
||||
|
||||
$row = Db::name('admin')->field(['id', 'channel_id'])->where('invite_code', $inviteCode)->find();
|
||||
if (!$row) {
|
||||
return $this->error(__('Invite code does not exist'));
|
||||
}
|
||||
$cid = $row['channel_id'] ?? null;
|
||||
if ($cid === null || $cid === '') {
|
||||
return $this->error(__('Invite code not bound to channel'));
|
||||
}
|
||||
$cidInt = intval(trim((string) $cid));
|
||||
if ($cidInt <= 0) {
|
||||
return $this->error(__('Invite code not bound to channel'));
|
||||
}
|
||||
|
||||
if (isset($data['channel_id']) && $data['channel_id'] !== null && $data['channel_id'] !== '') {
|
||||
$existing = intval(trim((string) $data['channel_id']));
|
||||
if ($existing > 0 && $existing !== $cidInt) {
|
||||
return $this->error(__('Parameter error'));
|
||||
}
|
||||
}
|
||||
$data['channel_id'] = $cidInt;
|
||||
$data['register_invite_code'] = $inviteCode;
|
||||
|
||||
$aidRaw = $row['id'] ?? null;
|
||||
if ($aidRaw === null || $aidRaw === '') {
|
||||
return $this->error(__('Parameter error'));
|
||||
}
|
||||
$aidInt = intval(trim((string) $aidRaw));
|
||||
if ($aidInt <= 0) {
|
||||
return $this->error(__('Parameter error'));
|
||||
}
|
||||
if (isset($data['admin_id']) && $data['admin_id'] !== null && $data['admin_id'] !== '') {
|
||||
$reqAid = intval(trim((string) $data['admin_id']));
|
||||
if ($reqAid > 0 && $reqAid !== $aidInt) {
|
||||
return $this->error(__('Parameter error'));
|
||||
}
|
||||
}
|
||||
$data['admin_id'] = $aidInt;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 若需重写查看、编辑、删除等方法,请复制 @see \app\admin\library\traits\Backend 中对应的方法至此进行重写
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user