1.所有接口需要根据agent_id绑定渠道
2.移除所有记录页面的更新按钮,只能查看数据 3.将所有软删除修改为硬删除
This commit is contained in:
@@ -6,6 +6,7 @@ namespace app\api\controller\v1;
|
||||
use app\api\cache\AuthTokenCache;
|
||||
use app\api\controller\BaseController;
|
||||
use app\api\util\ReturnCode;
|
||||
use plugin\saiadmin\app\model\system\SystemUser;
|
||||
use support\Request;
|
||||
use support\Response;
|
||||
use Tinywan\Jwt\JwtToken;
|
||||
@@ -54,6 +55,14 @@ class AuthTokenController extends BaseController
|
||||
return $this->fail('Signature verification failed', ReturnCode::FORBIDDEN);
|
||||
}
|
||||
|
||||
$agent = SystemUser::where('agent_id', $agentId)->find();
|
||||
if (!$agent || (int) ($agent->status ?? 0) !== 1) {
|
||||
return $this->fail('Invalid agent_id', ReturnCode::FORBIDDEN);
|
||||
}
|
||||
if (empty($agent->dept_id) || (int) $agent->dept_id <= 0) {
|
||||
return $this->fail('Agent channel is not configured', ReturnCode::FORBIDDEN);
|
||||
}
|
||||
|
||||
$exp = (int) config('api.auth_token_exp', 86400);
|
||||
$tokenResult = JwtToken::generateToken([
|
||||
'id' => 0,
|
||||
|
||||
@@ -7,7 +7,6 @@ use app\api\logic\UserLogic;
|
||||
use app\api\util\ReturnCode;
|
||||
use app\dice\model\game\DiceGame;
|
||||
use app\dice\model\player\DicePlayer;
|
||||
use plugin\saiadmin\app\model\system\SystemUser;
|
||||
use app\dice\model\play_record\DicePlayRecord;
|
||||
use app\dice\model\player_wallet_record\DicePlayerWalletRecord;
|
||||
use app\dice\model\player_ticket_record\DicePlayerTicketRecord;
|
||||
@@ -60,7 +59,7 @@ class GameController extends BaseController
|
||||
public function getGameList(Request $request): Response
|
||||
{
|
||||
$lang = $this->resolveLang($request->post('lang', 'zh'));
|
||||
$games = $this->buildPublicGameList($lang);
|
||||
$games = $this->buildPublicGameList($lang, $this->agentDeptId($request));
|
||||
return $this->success([
|
||||
'game_list' => $games,
|
||||
]);
|
||||
@@ -73,7 +72,7 @@ class GameController extends BaseController
|
||||
public function getGameHall(Request $request): Response
|
||||
{
|
||||
$lang = $this->resolveLang($request->post('lang', 'zh'));
|
||||
$games = $this->buildPublicGameList($lang);
|
||||
$games = $this->buildPublicGameList($lang, $this->agentDeptId($request));
|
||||
$hallUrl = '';
|
||||
if (!empty($games)) {
|
||||
$hallUrl = $games[0]['hall_url'] ?? '';
|
||||
@@ -106,23 +105,16 @@ class GameController extends BaseController
|
||||
$time = (string) time();
|
||||
}
|
||||
|
||||
$adminId = null;
|
||||
$adminIdsInTopDept = null;
|
||||
$agentId = trim((string) ($request->agent_id ?? ''));
|
||||
if ($agentId !== '') {
|
||||
$systemUser = SystemUser::where('agent_id', $agentId)->find();
|
||||
if ($systemUser) {
|
||||
$adminId = (int) $systemUser->id;
|
||||
$adminIdsInTopDept = UserLogic::getAdminIdsByAgentIdTopDept($agentId);
|
||||
}
|
||||
}
|
||||
$deptId = $this->agentDeptId($request);
|
||||
$adminId = $this->agentAdminId($request);
|
||||
$adminIdsInTopDept = UserLogic::getAdminIdsByAgentIdTopDept(trim((string) ($request->agent_id ?? '')));
|
||||
|
||||
$lang = trim((string) ($request->post('lang', 'zh')));
|
||||
$lang = in_array($lang, ['en', 'zh'], true) ? $lang : 'zh';
|
||||
|
||||
try {
|
||||
$logic = new UserLogic();
|
||||
$result = $logic->loginByUsername($username, $password, $lang, 0.0, $time, $adminId, $adminIdsInTopDept);
|
||||
$result = $logic->loginByUsername($username, $password, $lang, 0.0, $time, $adminId, $adminIdsInTopDept, $deptId);
|
||||
} catch (\plugin\saiadmin\exception\ApiException $e) {
|
||||
return $this->fail($e->getMessage(), ReturnCode::PARAMS_ERROR);
|
||||
}
|
||||
@@ -145,24 +137,25 @@ class GameController extends BaseController
|
||||
{
|
||||
$usernameRaw = $request->input('username', '');
|
||||
$username = is_string($usernameRaw) ? trim($usernameRaw) : '';
|
||||
$deptId = $this->agentDeptId($request);
|
||||
|
||||
if ($username === '') {
|
||||
return $this->fail('username is required', ReturnCode::PARAMS_ERROR);
|
||||
}
|
||||
|
||||
$cached = UserCache::getPlayerInfoSnapshotByUsername($username);
|
||||
$cached = UserCache::getPlayerInfoSnapshotByUsername($this->scopedUsername($deptId, $username));
|
||||
if ($cached !== null) {
|
||||
return $this->success($cached);
|
||||
}
|
||||
|
||||
$player = DicePlayer::field(self::PLAYER_INFO_DB_FIELDS)->where('username', $username)->find();
|
||||
$player = DicePlayer::field(self::PLAYER_INFO_DB_FIELDS)->where('username', $username)->where('dept_id', $deptId)->find();
|
||||
if (!$player) {
|
||||
return $this->fail('User not found', ReturnCode::NOT_FOUND);
|
||||
return $this->fail('User not found', ReturnCode::PARAMS_ERROR);
|
||||
}
|
||||
|
||||
$hidden = ['password', 'lottery_config_id', 't1_weight', 't2_weight', 't3_weight', 't4_weight', 't5_weight', 'delete_time'];
|
||||
$info = $player->hidden($hidden)->toArray();
|
||||
UserCache::setPlayerInfoSnapshotByUsername($username, $info);
|
||||
UserCache::setPlayerInfoSnapshotByUsername($this->scopedUsername($deptId, $username), $info);
|
||||
|
||||
return $this->success($info);
|
||||
}
|
||||
@@ -276,6 +269,7 @@ class GameController extends BaseController
|
||||
public function getPlayerGameRecord(Request $request): Response
|
||||
{
|
||||
$username = trim((string) ($request->post('username', '')));
|
||||
$deptId = $this->agentDeptId($request);
|
||||
$startCreateTime = trim((string) ($request->post('start_create_time', '')));
|
||||
$endCreateTime = trim((string) ($request->post('end_create_time', '')));
|
||||
$window = $this->resolvePullRecordTimeWindow($startCreateTime, $endCreateTime);
|
||||
@@ -284,10 +278,10 @@ class GameController extends BaseController
|
||||
}
|
||||
$limit = $this->resolvePullRecordLimit($request);
|
||||
|
||||
$query = DicePlayRecord::order('id', 'desc');
|
||||
$query = DicePlayRecord::where('dept_id', $deptId)->order('id', 'desc');
|
||||
|
||||
if ($username !== '') {
|
||||
$player = DicePlayer::where('username', $username)->find();
|
||||
$player = $this->findPlayerByUsername($username, $deptId);
|
||||
if (!$player) {
|
||||
return $this->success([]);
|
||||
}
|
||||
@@ -300,7 +294,7 @@ class GameController extends BaseController
|
||||
$list = $query->limit($limit)->select()->toArray();
|
||||
$playerIds = array_unique(array_column($list, 'player_id'));
|
||||
if (!empty($playerIds)) {
|
||||
$players = DicePlayer::whereIn('id', $playerIds)->field('id,username,phone')->select()->toArray();
|
||||
$players = DicePlayer::whereIn('id', $playerIds)->where('dept_id', $deptId)->field('id,username,phone')->select()->toArray();
|
||||
$playerMap = [];
|
||||
foreach ($players as $p) {
|
||||
$playerMap[(int) ($p['id'] ?? 0)] = $p;
|
||||
@@ -321,6 +315,7 @@ class GameController extends BaseController
|
||||
public function getPlayerWalletRecord(Request $request): Response
|
||||
{
|
||||
$username = trim((string) ($request->post('username', '')));
|
||||
$deptId = $this->agentDeptId($request);
|
||||
$startCreateTime = trim((string) ($request->post('start_create_time', '')));
|
||||
$endCreateTime = trim((string) ($request->post('end_create_time', '')));
|
||||
$window = $this->resolvePullRecordTimeWindow($startCreateTime, $endCreateTime);
|
||||
@@ -329,10 +324,10 @@ class GameController extends BaseController
|
||||
}
|
||||
$limit = $this->resolvePullRecordLimit($request);
|
||||
|
||||
$query = DicePlayerWalletRecord::order('id', 'desc');
|
||||
$query = DicePlayerWalletRecord::where('dept_id', $deptId)->order('id', 'desc');
|
||||
|
||||
if ($username !== '') {
|
||||
$player = DicePlayer::where('username', $username)->find();
|
||||
$player = $this->findPlayerByUsername($username, $deptId);
|
||||
if (!$player) {
|
||||
return $this->success([]);
|
||||
}
|
||||
@@ -357,6 +352,7 @@ class GameController extends BaseController
|
||||
public function getPlayerTicketRecord(Request $request): Response
|
||||
{
|
||||
$username = trim((string) ($request->post('username', '')));
|
||||
$deptId = $this->agentDeptId($request);
|
||||
$startCreateTime = trim((string) ($request->post('start_create_time', '')));
|
||||
$endCreateTime = trim((string) ($request->post('end_create_time', '')));
|
||||
$window = $this->resolvePullRecordTimeWindow($startCreateTime, $endCreateTime);
|
||||
@@ -365,10 +361,10 @@ class GameController extends BaseController
|
||||
}
|
||||
$limit = $this->resolvePullRecordLimit($request);
|
||||
|
||||
$query = DicePlayerTicketRecord::order('id', 'desc');
|
||||
$query = DicePlayerTicketRecord::where('dept_id', $deptId)->order('id', 'desc');
|
||||
|
||||
if ($username !== '') {
|
||||
$player = DicePlayer::where('username', $username)->find();
|
||||
$player = $this->findPlayerByUsername($username, $deptId);
|
||||
if (!$player) {
|
||||
return $this->success([]);
|
||||
}
|
||||
@@ -394,6 +390,7 @@ class GameController extends BaseController
|
||||
public function setPlayerWallet(Request $request): Response
|
||||
{
|
||||
$username = trim((string) ($request->post('username', '')));
|
||||
$deptId = $this->agentDeptId($request);
|
||||
$coin = $request->post('coin');
|
||||
|
||||
if ($username === '') {
|
||||
@@ -408,9 +405,9 @@ class GameController extends BaseController
|
||||
return $this->fail('coin cannot be 0', ReturnCode::PARAMS_ERROR);
|
||||
}
|
||||
|
||||
$player = DicePlayer::where('username', $username)->find();
|
||||
$player = $this->findPlayerByUsername($username, $deptId);
|
||||
if (!$player) {
|
||||
return $this->fail('User not found', ReturnCode::NOT_FOUND);
|
||||
return $this->fail('User not found', ReturnCode::PARAMS_ERROR);
|
||||
}
|
||||
|
||||
$walletBefore = (float) ($player->coin ?? 0);
|
||||
@@ -430,6 +427,7 @@ class GameController extends BaseController
|
||||
|
||||
$adminId = ($player->admin_id ?? null) ? (int) $player->admin_id : null;
|
||||
$record = DicePlayerWalletRecord::create([
|
||||
'dept_id' => $deptId,
|
||||
'player_id' => (int) $player->id,
|
||||
'admin_id' => $adminId,
|
||||
'coin' => $coinVal,
|
||||
@@ -452,6 +450,7 @@ class GameController extends BaseController
|
||||
UserCache::deleteUser($player->id);
|
||||
if ($player->username !== '') {
|
||||
UserCache::deletePlayerByUsername($player->username);
|
||||
UserCache::deletePlayerByUsername($this->scopedUsername($deptId, (string) $player->username));
|
||||
}
|
||||
|
||||
$recordArr = $record->toArray();
|
||||
@@ -471,13 +470,14 @@ class GameController extends BaseController
|
||||
return $langValue;
|
||||
}
|
||||
|
||||
private function buildPublicGameList(string $lang): array
|
||||
private function buildPublicGameList(string $lang, int $deptId): array
|
||||
{
|
||||
$rows = DiceGame::where('status', 1)
|
||||
->orderBy('sort', 'asc')
|
||||
->orderBy('id', 'asc')
|
||||
->select(array_merge(self::GAME_PUBLIC_FIELDS, ['game_name', 'game_name_en']))
|
||||
->get()
|
||||
->where('dept_id', $deptId)
|
||||
->order('sort', 'asc')
|
||||
->order('id', 'asc')
|
||||
->field(array_merge(self::GAME_PUBLIC_FIELDS, ['game_name', 'game_name_en']))
|
||||
->select()
|
||||
->toArray();
|
||||
if (empty($rows)) {
|
||||
return [];
|
||||
@@ -495,4 +495,26 @@ class GameController extends BaseController
|
||||
}
|
||||
return $games;
|
||||
}
|
||||
|
||||
private function agentDeptId(Request $request): int
|
||||
{
|
||||
return (int) ($request->agent_dept_id ?? 0);
|
||||
}
|
||||
|
||||
private function agentAdminId(Request $request): ?int
|
||||
{
|
||||
$adminId = (int) ($request->agent_admin_id ?? 0);
|
||||
return $adminId > 0 ? $adminId : null;
|
||||
}
|
||||
|
||||
private function scopedUsername(int $deptId, string $username): string
|
||||
{
|
||||
return $deptId . ':' . $username;
|
||||
}
|
||||
|
||||
private function findPlayerByUsername(string $username, int $deptId): ?DicePlayer
|
||||
{
|
||||
$player = DicePlayer::where('username', $username)->where('dept_id', $deptId)->find();
|
||||
return $player ?: null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user