Compare commits

...

2 Commits

4 changed files with 80 additions and 50 deletions

View File

@@ -1,8 +0,0 @@
// ANSI 转义码生成网站 https://patorjk.com/software/taag/#p=display&f=Big&t=ABB%0A
const asciiArt = `
\x1b[32m欢迎使用 SaiAdmin 6.x
\x1b[0m
\x1b[36mSaiAdmin 官网: https://saithink.top
\x1b[0m
`
console.log(asciiArt)

View File

@@ -14,6 +14,7 @@ use support\think\Db;
use app\api\controller\BaseController;
use support\Request;
use support\Response;
use app\api\cache\UserCache;
/**
* 平台 v1 游戏接口
@@ -297,6 +298,12 @@ class GameController extends BaseController
return $this->fail('操作失败:' . $e->getMessage(), ReturnCode::SERVER_ERROR);
}
// 出于安全:删除该玩家相关缓存,后续 API 调用按需重建
UserCache::deleteUser($player->id);
if ($player->username !== '') {
UserCache::deletePlayerByUsername($player->username);
}
$recordArr = $record->toArray();
$recordArr['dice_player'] = ['id' => (int) $player->id, 'username' => $player->username ?? '', 'phone' => $player->phone ?? ''];
return $this->success($recordArr);

View File

@@ -1,6 +1,6 @@
<?php
// +----------------------------------------------------------------------
// | saiadmin [ saiadmin?????? ]
// | saiadmin [ saiadmin快速开发框架 ]
// +----------------------------------------------------------------------
// | Author: your name
// +----------------------------------------------------------------------
@@ -15,14 +15,16 @@ use app\dice\validate\player\DicePlayerValidate;
use plugin\saiadmin\service\Permission;
use support\Request;
use support\Response;
use app\api\cache\UserCache;
use app\dice\model\player\DicePlayer;
/**
* ???-?????
* 玩家控制器
*/
class DicePlayerController extends BaseController
{
/**
* ????
* 构造函数
*/
public function __construct()
{
@@ -32,11 +34,11 @@ class DicePlayerController extends BaseController
}
/**
* ??????????DiceLotteryPoolConfig.id?name????? lottery_config_id ????
* 获取彩金池配置选项(idname
* @param Request $request
* @return Response ?? [ ['id' => int, 'name' => string], ... ]
* @return Response
*/
#[Permission('???-????', 'dice:player:index:index')]
#[Permission('玩家列表', 'dice:player:index:index')]
public function getLotteryConfigOptions(Request $request): Response
{
$list = DiceLotteryPoolConfig::field('id,name')->order('id', 'asc')->select();
@@ -47,12 +49,11 @@ class DicePlayerController extends BaseController
}
/**
* ??????????SystemUser.id?username?realname??? admin_id ????
* ????????????????????????????????
* 获取后台管理员选项(idusernamerealname
* @param Request $request
* @return Response ?? [ ['id' => int, 'username' => string, 'realname' => string], ... ]
* @return Response
*/
#[Permission('???-????', 'dice:player:index:index')]
#[Permission('玩家列表', 'dice:player:index:index')]
public function getSystemUserOptions(Request $request): Response
{
$query = SystemUser::field('id,username,realname')->where('status', 1)->order('id', 'asc');
@@ -76,11 +77,11 @@ class DicePlayerController extends BaseController
}
/**
* ????
* 数据列表
* @param Request $request
* @return Response
*/
#[Permission('???-????', 'dice:player:index:index')]
#[Permission('玩家列表', 'dice:player:index:index')]
public function index(Request $request): Response
{
$where = $request->more([
@@ -99,54 +100,59 @@ class DicePlayerController extends BaseController
}
/**
* ????
* 读取数据
* @param Request $request
* @return Response
*/
#[Permission('???-????', 'dice:player:index:read')]
#[Permission('玩家读取', 'dice:player:index:read')]
public function read(Request $request): Response
{
$id = $request->input('id', '');
$model = $this->logic->read($id);
if (!$model) {
return $this->fail('??????');
return $this->fail('未查找到信息');
}
$allowedIds = AdminScopeHelper::getAllowedAdminIds($this->adminInfo ?? null);
if ($allowedIds !== null && !in_array((int) ($model->admin_id ?? 0), $allowedIds, true)) {
return $this->fail('????????');
return $this->fail('无权限查看该记录');
}
$data = is_array($model) ? $model : $model->toArray();
return $this->success($data);
}
/**
* ????
* 保存数据
* @param Request $request
* @return Response
*/
#[Permission('???-????', 'dice:player:index:save')]
#[Permission('玩家添加', 'dice:player:index:save')]
public function save(Request $request): Response
{
$data = $request->post();
$this->validate('save', $data);
// ?????????????????????
// 类型转化
if (empty($data['admin_id']) && isset($this->adminInfo['id']) && (int) $this->adminInfo['id'] > 0) {
$data['admin_id'] = (int) $this->adminInfo['id'];
}
$result = $this->logic->add($data);
if ($result) {
return $this->success('????');
} else {
return $this->fail('????');
if ($result && isset($result['id'])) {
// 出于安全:删除该玩家缓存,后续 API 按需重建
UserCache::deleteUser($result['id']);
$player = DicePlayer::find($result['id']);
if ($player && $player->username !== '') {
UserCache::deletePlayerByUsername($player->username);
}
return $this->success('添加成功');
}
return $this->fail('添加失败');
}
/**
* ????
* 更新数据
* @param Request $request
* @return Response
*/
#[Permission('???-????', 'dice:player:index:update')]
#[Permission('玩家修改', 'dice:player:index:update')]
public function update(Request $request): Response
{
$data = $request->post();
@@ -155,55 +161,66 @@ class DicePlayerController extends BaseController
if ($model) {
$allowedIds = AdminScopeHelper::getAllowedAdminIds($this->adminInfo ?? null);
if ($allowedIds !== null && !in_array((int) ($model->admin_id ?? 0), $allowedIds, true)) {
return $this->fail('????????');
return $this->fail('无权限修改该记录');
}
}
$result = $this->logic->edit($data['id'], $data);
if ($result) {
return $this->success('????');
} else {
return $this->fail('????');
// 出于安全:删除该玩家缓存,后续 API 按需重建
UserCache::deleteUser($data['id']);
$player = DicePlayer::find($data['id']);
if ($player && $player->username !== '') {
UserCache::deletePlayerByUsername($player->username);
}
return $this->success('修改成功');
}
return $this->fail('修改失败');
}
/**
* ?????????????
* 更新状态
* @param Request $request
* @return Response
*/
#[Permission('???-????', 'dice:player:index:update')]
#[Permission('玩家状态修改', 'dice:player:index:update')]
public function updateStatus(Request $request): Response
{
$id = $request->input('id');
$status = $request->input('status');
if ($id === null || $id === '') {
return $this->fail('?? id');
return $this->fail('缺少参数 id');
}
if ($status === null || $status === '') {
return $this->fail('?? status');
return $this->fail('缺少参数 status');
}
$model = $this->logic->read($id);
if ($model) {
$allowedIds = AdminScopeHelper::getAllowedAdminIds($this->adminInfo ?? null);
if ($allowedIds !== null && !in_array((int) ($model->admin_id ?? 0), $allowedIds, true)) {
return $this->fail('????????');
return $this->fail('无权限修改该记录');
}
}
$this->logic->edit($id, ['status' => (int) $status]);
return $this->success('????');
// 出于安全:删除该玩家缓存,后续 API 按需重建
UserCache::deleteUser($id);
$player = DicePlayer::find($id);
if ($player && $player->username !== '') {
UserCache::deletePlayerByUsername($player->username);
}
return $this->success('修改成功');
}
/**
* ????
* 删除数据
* @param Request $request
* @return Response
*/
#[Permission('???-????', 'dice:player:index:destroy')]
#[Permission('玩家删除', 'dice:player:index:destroy')]
public function destroy(Request $request): Response
{
$ids = $request->post('ids', '');
if (empty($ids)) {
return $this->fail('?????????');
return $this->fail('请选择要删除的数据');
}
$ids = is_array($ids) ? $ids : explode(',', (string) $ids);
$allowedIds = AdminScopeHelper::getAllowedAdminIds($this->adminInfo ?? null);
@@ -218,15 +235,22 @@ class DicePlayerController extends BaseController
}
$ids = $validIds;
if (empty($ids)) {
return $this->fail('?????????');
return $this->fail('无权限删除所选数据');
}
}
$result = $this->logic->destroy($ids);
if ($result) {
return $this->success('????');
} else {
return $this->fail('????');
// 出于安全:删除相关玩家缓存,后续 API 按需重建
foreach ($ids as $id) {
UserCache::deleteUser($id);
$player = DicePlayer::find($id);
if ($player && $player->username !== '') {
UserCache::deletePlayerByUsername($player->username);
}
}
return $this->success('删除成功');
}
return $this->fail('删除失败');
}
}

View File

@@ -10,6 +10,7 @@ use plugin\saiadmin\basic\think\BaseLogic;
use plugin\saiadmin\exception\ApiException;
use app\dice\model\player_wallet_record\DicePlayerWalletRecord;
use app\dice\model\player\DicePlayer;
use app\api\cache\UserCache;
/**
* 玩家钱包流水逻辑层
@@ -73,6 +74,12 @@ class DicePlayerWalletRecordLogic extends BaseLogic
DicePlayer::where('id', $playerId)->update(['coin' => $walletAfter]);
// 出于安全:删除该玩家相关缓存,后续 API 按需重建
UserCache::deleteUser($playerId);
if (isset($player->username) && $player->username !== '') {
UserCache::deletePlayerByUsername($player->username);
}
$playerAdminId = ($player->admin_id ?? null) ? (int) $player->admin_id : null;
$record = [
'player_id' => $playerId,