优化后台修改玩家信息(钱包等)没有更新缓存的问题

This commit is contained in:
2026-03-16 16:16:25 +08:00
parent 27e9de0ac9
commit 1213f8e58a
3 changed files with 80 additions and 42 deletions

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('删除失败');
}
}