From 77169294470e328130859f769cc19df46f9012a2 Mon Sep 17 00:00:00 2001 From: zhenhui <1276357500@qq.com> Date: Tue, 10 Mar 2026 10:45:23 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=B8=A0=E9=81=93ChannelMana?= =?UTF-8?q?ge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/plugin/channel/api/manage/index.ts | 95 ----- .../plugin/channel/manage/index/index.vue | 199 ----------- .../manage/index/modules/edit-dialog.vue | 227 ------------ .../manage/index/modules/table-search.vue | 119 ------- .../dice/api/player_wallet_record/index.ts | 16 +- .../plugin/dice/api/reward_config/index.ts | 10 +- .../manage/ChannelManageController.php | 327 ------------------ .../logic/manage/ChannelManageLogic.php | 44 --- .../channel/model/manage/ChannelManage.php | 114 ------ .../validate/manage/ChannelManageValidate.php | 58 ---- server/plugin/saiadmin/config/route.php | 23 +- 11 files changed, 31 insertions(+), 1201 deletions(-) delete mode 100644 saiadmin-artd/src/views/plugin/channel/api/manage/index.ts delete mode 100644 saiadmin-artd/src/views/plugin/channel/manage/index/index.vue delete mode 100644 saiadmin-artd/src/views/plugin/channel/manage/index/modules/edit-dialog.vue delete mode 100644 saiadmin-artd/src/views/plugin/channel/manage/index/modules/table-search.vue delete mode 100644 server/app/channel/controller/manage/ChannelManageController.php delete mode 100644 server/app/channel/logic/manage/ChannelManageLogic.php delete mode 100644 server/app/channel/model/manage/ChannelManage.php delete mode 100644 server/app/channel/validate/manage/ChannelManageValidate.php diff --git a/saiadmin-artd/src/views/plugin/channel/api/manage/index.ts b/saiadmin-artd/src/views/plugin/channel/api/manage/index.ts deleted file mode 100644 index f51085b..0000000 --- a/saiadmin-artd/src/views/plugin/channel/api/manage/index.ts +++ /dev/null @@ -1,95 +0,0 @@ -import request from '@/utils/http' - -/** - * 渠道 API接口 - */ -export default { - /** - * 获取数据列表 - * @param params 搜索参数 - * @returns 数据列表 - */ - list(params: Record) { - return request.get({ - url: '/core/channel/manage/ChannelManage/index', - params - }) - }, - - /** - * 读取数据 - * @param id 数据ID - * @returns 数据详情 - */ - read(id: number | string) { - return request.get({ - url: '/core/channel/manage/ChannelManage/read?id=' + id - }) - }, - - /** - * 创建数据 - * @param params 数据参数 - * @returns 执行结果 - */ - save(params: Record) { - return request.post({ - url: '/core/channel/manage/ChannelManage/save', - data: params - }) - }, - - /** - * 更新数据 - * @param params 数据参数 - * @returns 执行结果 - */ - update(params: Record) { - return request.put({ - url: '/core/channel/manage/ChannelManage/update', - data: params - }) - }, - - /** - * 删除数据 - * @returns 执行结果 - * @param params - */ - delete(params: Record) { - return request.del({ - url: '/core/channel/manage/ChannelManage/destroy', - data: params - }) - }, - - /** - * 仅更新状态(列表内开关用) - */ - updateStatus(params: { id: number | string; status: number }) { - return request.put({ - url: '/core/channel/manage/ChannelManage/updateStatus', - data: params - }) - }, - - /** - * 获取可操作部门列表(树形) - * @returns 部门树 - */ - getDeptList() { - return request.get({ - url: '/core/channel/manage/ChannelManage/getDeptList' - }) - }, - - /** - * 获取管理员下拉列表(SystemUser 的 id、username、realname) - * @returns 管理员列表 - */ - getAdminList() { - return request.get({ - url: '/core/channel/manage/ChannelManage/getAdminList' - }) - } -} diff --git a/saiadmin-artd/src/views/plugin/channel/manage/index/index.vue b/saiadmin-artd/src/views/plugin/channel/manage/index/index.vue deleted file mode 100644 index b1a88fc..0000000 --- a/saiadmin-artd/src/views/plugin/channel/manage/index/index.vue +++ /dev/null @@ -1,199 +0,0 @@ - - - diff --git a/saiadmin-artd/src/views/plugin/channel/manage/index/modules/edit-dialog.vue b/saiadmin-artd/src/views/plugin/channel/manage/index/modules/edit-dialog.vue deleted file mode 100644 index 433ee40..0000000 --- a/saiadmin-artd/src/views/plugin/channel/manage/index/modules/edit-dialog.vue +++ /dev/null @@ -1,227 +0,0 @@ - - - diff --git a/saiadmin-artd/src/views/plugin/channel/manage/index/modules/table-search.vue b/saiadmin-artd/src/views/plugin/channel/manage/index/modules/table-search.vue deleted file mode 100644 index 0042928..0000000 --- a/saiadmin-artd/src/views/plugin/channel/manage/index/modules/table-search.vue +++ /dev/null @@ -1,119 +0,0 @@ - - - diff --git a/saiadmin-artd/src/views/plugin/dice/api/player_wallet_record/index.ts b/saiadmin-artd/src/views/plugin/dice/api/player_wallet_record/index.ts index 04be5e2..c1beb16 100644 --- a/saiadmin-artd/src/views/plugin/dice/api/player_wallet_record/index.ts +++ b/saiadmin-artd/src/views/plugin/dice/api/player_wallet_record/index.ts @@ -11,7 +11,7 @@ export default { */ list(params: Record) { return request.get({ - url: '/dice/player_wallet_record/DicePlayerWalletRecord/index', + url: '/core/dice/player_wallet_record/DicePlayerWalletRecord/index', params }) }, @@ -23,7 +23,7 @@ export default { */ read(id: number | string) { return request.get({ - url: '/dice/player_wallet_record/DicePlayerWalletRecord/read?id=' + id + url: '/core/dice/player_wallet_record/DicePlayerWalletRecord/read?id=' + id }) }, @@ -34,7 +34,7 @@ export default { */ save(params: Record) { return request.post({ - url: '/dice/player_wallet_record/DicePlayerWalletRecord/save', + url: '/core/dice/player_wallet_record/DicePlayerWalletRecord/save', data: params }) }, @@ -46,7 +46,7 @@ export default { */ update(params: Record) { return request.put({ - url: '/dice/player_wallet_record/DicePlayerWalletRecord/update', + url: '/core/dice/player_wallet_record/DicePlayerWalletRecord/update', data: params }) }, @@ -58,7 +58,7 @@ export default { */ delete(params: Record) { return request.del({ - url: '/dice/player_wallet_record/DicePlayerWalletRecord/destroy', + url: '/core/dice/player_wallet_record/DicePlayerWalletRecord/destroy', data: params }) }, @@ -68,7 +68,7 @@ export default { */ getPlayerOptions() { return request.get<{ id: number; username: string }[]>({ - url: '/dice/player_wallet_record/DicePlayerWalletRecord/getPlayerOptions' + url: '/core/dice/player_wallet_record/DicePlayerWalletRecord/getPlayerOptions' }) }, @@ -77,7 +77,7 @@ export default { */ getPlayerWalletBefore(playerId: number | string) { return request.get<{ wallet_before: number }>({ - url: '/dice/player_wallet_record/DicePlayerWalletRecord/getPlayerWalletBefore', + url: '/core/dice/player_wallet_record/DicePlayerWalletRecord/getPlayerWalletBefore', params: { player_id: playerId } }) }, @@ -93,7 +93,7 @@ export default { remark?: string }) { return request.post({ - url: '/dice/player_wallet_record/DicePlayerWalletRecord/adminOperate', + url: '/core/dice/player_wallet_record/DicePlayerWalletRecord/adminOperate', data: params }) } diff --git a/saiadmin-artd/src/views/plugin/dice/api/reward_config/index.ts b/saiadmin-artd/src/views/plugin/dice/api/reward_config/index.ts index 54a8270..8b38b17 100644 --- a/saiadmin-artd/src/views/plugin/dice/api/reward_config/index.ts +++ b/saiadmin-artd/src/views/plugin/dice/api/reward_config/index.ts @@ -11,7 +11,7 @@ export default { */ list(params: Record) { return request.get({ - url: '/dice/reward_config/DiceRewardConfig/index', + url: '/core/dice/reward_config/DiceRewardConfig/index', params }) }, @@ -23,7 +23,7 @@ export default { */ read(id: number | string) { return request.get({ - url: '/dice/reward_config/DiceRewardConfig/read?id=' + id + url: '/core/dice/reward_config/DiceRewardConfig/read?id=' + id }) }, @@ -34,7 +34,7 @@ export default { */ save(params: Record) { return request.post({ - url: '/dice/reward_config/DiceRewardConfig/save', + url: '/core/dice/reward_config/DiceRewardConfig/save', data: params }) }, @@ -46,7 +46,7 @@ export default { */ update(params: Record) { return request.put({ - url: '/dice/reward_config/DiceRewardConfig/update', + url: '/core/dice/reward_config/DiceRewardConfig/update', data: params }) }, @@ -58,7 +58,7 @@ export default { */ delete(params: Record) { return request.del({ - url: '/dice/reward_config/DiceRewardConfig/destroy', + url: '/core/dice/reward_config/DiceRewardConfig/destroy', data: params }) } diff --git a/server/app/channel/controller/manage/ChannelManageController.php b/server/app/channel/controller/manage/ChannelManageController.php deleted file mode 100644 index f9249bd..0000000 --- a/server/app/channel/controller/manage/ChannelManageController.php +++ /dev/null @@ -1,327 +0,0 @@ -logic = new ChannelManageLogic(); - $this->validate = new ChannelManageValidate; - parent::__construct(); - } - - /** - * 数据列表 - * @param Request $request - * @return Response - */ - #[Permission('渠道列表', 'channel:manage:index:index')] - public function index(Request $request): Response - { - $where = $request->more([ - ['name', ''], - ['title', ''], - ['status', ''], - ['department_id', ''], - ['total_recharge', ''], - ['total_withdrawal', ''], - ['total_profit', ''], - ]); - $query = $this->logic->search($where); - // 仅渠道管理员和超级管理员可查看:超管看全部,渠道管理员只看自己管理的渠道 - if (isset($this->adminInfo['id']) && (int) $this->adminInfo['id'] > 1) { - $query->where('admin_id', $this->adminInfo['id']); - } - $data = $this->logic->getList($query); - $data['data'] = $this->attachAdminToRows($data['data'] ?? []); - $data['data'] = $this->attachDepartmentToRows($data['data'] ?? []); - $data['data'] = $this->attachCanOperate($data['data'] ?? []); - return $this->success($data); - } - - /** - * 读取数据 - * @param Request $request - * @return Response - */ - #[Permission('渠道读取', 'channel:manage:index:read')] - public function read(Request $request): Response - { - $id = $request->input('id', ''); - $model = $this->logic->read($id); - if ($model) { - $data = is_array($model) ? $model : $model->toArray(); - if (!$this->logic->canOperateChannel($data)) { - throw new ApiException('没有权限查看该渠道'); - } - return $this->success($data); - } else { - return $this->fail('未查找到信息'); - } - } - - /** - * 保存数据 - * @param Request $request - * @return Response - */ - #[Permission('渠道添加', 'channel:manage:index:save')] - public function save(Request $request): Response - { - $data = $request->post(); - $data['agent'] = md5((string)($data['name'] ?? '') . (string)($data['admin_id'] ?? '')); - $this->validate('save', $data); - $result = $this->logic->add($data); - if ($result) { - return $this->success('添加成功'); - } else { - return $this->fail('添加失败'); - } - } - - /** - * 更新数据 - * @param Request $request - * @return Response - */ - #[Permission('渠道修改', 'channel:manage:index:update')] - public function update(Request $request): Response - { - $data = $request->post(); - $channel = $this->logic->read($data['id'] ?? 0); - if (!$channel || !$this->logic->canOperateChannel($channel)) { - throw new ApiException('没有权限修改该渠道'); - } - $data['agent'] = md5((string)($data['name'] ?? '') . (string)($data['admin_id'] ?? '')); - $this->validate('update', $data); - $result = $this->logic->edit($data['id'], $data); - if ($result) { - return $this->success('修改成功'); - } else { - return $this->fail('修改失败'); - } - } - - /** - * 仅更新状态(列表内开关用) - * @param Request $request - * @return Response - */ - #[Permission('渠道管理-更新状态', 'channel:manage:index:update')] - public function updateStatus(Request $request): Response - { - $id = $request->input('id'); - $status = $request->input('status'); - if ($id === null || $id === '') { - return $this->fail('缺少 id'); - } - if ($status === null || $status === '') { - return $this->fail('缺少 status'); - } - $channel = $this->logic->read($id); - if (!$channel || !$this->logic->canOperateChannel($channel)) { - throw new ApiException('没有权限修改该渠道'); - } - $this->logic->edit($id, ['status' => (int) $status]); - return $this->success('修改成功'); - } - - /** - * 删除数据 - * @param Request $request - * @return Response - */ - #[Permission('渠道删除', 'channel:manage:index:destroy')] - public function destroy(Request $request): Response - { - $ids = $request->post('ids', ''); - if (empty($ids)) { - return $this->fail('请选择要删除的数据'); - } - $idList = is_array($ids) ? $ids : (array) $ids; - foreach ($idList as $id) { - $channel = $this->logic->read($id); - if (!$channel || !$this->logic->canOperateChannel($channel)) { - throw new ApiException('没有权限删除该渠道'); - } - } - $result = $this->logic->destroy($ids); - if ($result) { - return $this->success('删除成功'); - } else { - return $this->fail('删除失败'); - } - } - - /** - * 获取可操作部门列表(树形,用于渠道所属部门选择) - * @param Request $request - * @return Response - */ - #[Permission('渠道部门列表', 'channel:manage:index:index')] - public function getDeptList(Request $request): Response - { - $this->ensureAdminInfo(); - $logic = new \plugin\saiadmin\app\logic\system\SystemDeptLogic(); - $logic->init($this->adminInfo ?? []); - $data = $logic->accessDept(['status' => 1]); - return $this->success($data); - } - - /** - * 获取管理员下拉列表(远程关联 SystemUser:value=id, label=name) - * @param Request $request - * @return Response - */ - #[Permission('渠道管理员列表', 'channel:manage:index:index')] - public function getAdminList(Request $request): Response - { - $list = SystemUser::where('status', 1) - ->field('id, username, realname') - ->select(); - $rows = $list->toArray(); - $data = array_map(function ($row) { - $name = !empty($row['realname']) && trim($row['realname']) !== '' - ? trim($row['realname']) - : ($row['username'] ?? '#' . $row['id']); - return [ - 'id' => $row['id'], - 'name' => $name, - ]; - }, $rows); - return $this->success($data); - } - - /** - * 为列表行附加管理员信息(避免 Eloquent with(Think 模型) 触发 getConnectionName 报错) - * @param array $rows 列表行,可为 Eloquent 模型或数组 - * @return array 已附加 admin 的列表 - */ - protected function attachAdminToRows(array $rows): array - { - if (empty($rows)) { - return $rows; - } - $adminIds = []; - foreach ($rows as $row) { - $id = is_array($row) ? ($row['admin_id'] ?? null) : $row->admin_id; - if ($id !== null && $id !== '') { - $adminIds[(string) $id] = true; - } - } - $adminIds = array_keys($adminIds); - if (empty($adminIds)) { - return $rows; - } - $admins = SystemUser::whereIn('id', $adminIds) - ->field('id, username, realname') - ->select() - ->toArray(); - $map = []; - foreach ($admins as $a) { - $map[(string) ($a['id'] ?? '')] = $a; - } - foreach ($rows as &$row) { - $aid = is_array($row) ? ($row['admin_id'] ?? null) : $row->admin_id; - $admin = $map[(string) ($aid ?? '')] ?? null; - if (is_array($row)) { - $row['admin'] = $admin; - } else { - $row->setAttribute('admin', $admin); - } - } - unset($row); - return $rows; - } - - /** - * 为列表行附加部门信息(department_id 关联 SystemDept) - * @param array $rows 列表行,可为 Eloquent 模型或数组 - * @return array 已附加 department 的列表 - */ - protected function attachDepartmentToRows(array $rows): array - { - if (empty($rows)) { - return $rows; - } - $deptIds = []; - foreach ($rows as $row) { - $id = is_array($row) ? ($row['department_id'] ?? null) : ($row->department_id ?? null); - if ($id !== null && $id !== '') { - $deptIds[(string) $id] = true; - } - } - $deptIds = array_keys($deptIds); - if (empty($deptIds)) { - foreach ($rows as &$row) { - if (is_array($row)) { - $row['department'] = null; - } else { - $row->setAttribute('department', null); - } - } - unset($row); - return $rows; - } - $depts = SystemDept::whereIn('id', $deptIds) - ->field('id, name') - ->select() - ->toArray(); - $map = []; - foreach ($depts as $d) { - $map[(string) ($d['id'] ?? '')] = $d; - } - foreach ($rows as &$row) { - $did = is_array($row) ? ($row['department_id'] ?? null) : ($row->department_id ?? null); - $dept = $map[(string) ($did ?? '')] ?? null; - if (is_array($row)) { - $row['department'] = $dept; - } else { - $row->setAttribute('department', $dept); - } - } - unset($row); - return $rows; - } - - /** - * 为列表行附加是否可操作标记(仅渠道管理员和超级管理员可操作) - * @param array $rows 列表行 - * @return array - */ - protected function attachCanOperate(array $rows): array - { - foreach ($rows as &$row) { - $canOperate = $this->logic->canOperateChannel($row); - if (is_array($row)) { - $row['canOperate'] = $canOperate; - } else { - $row->setAttribute('canOperate', $canOperate); - } - } - unset($row); - return $rows; - } - -} diff --git a/server/app/channel/logic/manage/ChannelManageLogic.php b/server/app/channel/logic/manage/ChannelManageLogic.php deleted file mode 100644 index cb30435..0000000 --- a/server/app/channel/logic/manage/ChannelManageLogic.php +++ /dev/null @@ -1,44 +0,0 @@ -model = new ChannelManage(); - } - - /** - * 判断当前用户是否可操作该渠道(仅渠道管理员或超级管理员可操作) - * @param object|array $channel 渠道数据,需包含 admin_id - * @return bool - */ - public function canOperateChannel($channel): bool - { - if (empty($this->adminInfo) || !isset($this->adminInfo['id'])) { - return false; - } - $adminId = (int) ($this->adminInfo['id']); - if ($adminId === 1) { - return true; - } - $channelAdminId = is_array($channel) ? ($channel['admin_id'] ?? null) : ($channel->admin_id ?? null); - return $channelAdminId !== null && (int) $channelAdminId === $adminId; - } - -} diff --git a/server/app/channel/model/manage/ChannelManage.php b/server/app/channel/model/manage/ChannelManage.php deleted file mode 100644 index f220e93..0000000 --- a/server/app/channel/model/manage/ChannelManage.php +++ /dev/null @@ -1,114 +0,0 @@ -where('name', 'like', '%'.$value.'%'); - } - - /** - * 标题 搜索 - */ - public function searchTitleAttr($query, $value) - { - $query->where('title', 'like', '%'.$value.'%'); - } - - /** - * 部门 搜索 - */ - public function searchDepartmentIdAttr($query, $value) - { - if ($value !== '' && $value !== null) { - $query->where('department_id', $value); - } - } - - /** - * 总充值 搜索 - */ - public function searchTotalRechargeAttr($query, $value) - { - $query->where('total_recharge', '>=', $value); - } - - /** - * 总提现 搜索 - */ - public function searchTotalWithdrawalAttr($query, $value) - { - $query->where('total_withdrawal', '>=', $value); - } - - /** - * 总盈利 搜索 - */ - public function searchTotalProfitAttr($query, $value) - { - $query->where('total_profit', '>=', $value); - } - - /** - * 管理员 - * 关联模型 systemUser - */ - public function admin(): \Illuminate\Database\Eloquent\Relations\BelongsTo - { - return $this->belongsTo(SystemUser::class, 'admin_id', 'id'); - } - -} diff --git a/server/app/channel/validate/manage/ChannelManageValidate.php b/server/app/channel/validate/manage/ChannelManageValidate.php deleted file mode 100644 index 83e2f2b..0000000 --- a/server/app/channel/validate/manage/ChannelManageValidate.php +++ /dev/null @@ -1,58 +0,0 @@ - 'require', - 'title' => 'require', - 'admin_id' => 'require', - 'game_url' => 'require', - 'image' => 'require', - ]; - - /** - * 定义错误信息 - */ - protected $message = [ - 'name' => '名称必须填写', - 'title' => '标题必须填写', - 'admin_id' => '管理员必须填写', - 'game_url' => '游戏地址必须填写', - 'image' => '图标必须填写', - ]; - - /** - * 定义场景(agent 由后端按 md5(name.admin_id) 自动生成,无需校验) - */ - protected $scene = [ - 'save' => [ - 'name', - 'title', - 'admin_id', - 'game_url', - 'image', - ], - 'update' => [ - 'name', - 'title', - 'admin_id', - 'game_url', - 'image', - ], - ]; - -} diff --git a/server/plugin/saiadmin/config/route.php b/server/plugin/saiadmin/config/route.php index 1454ca5..1e7e2ac 100644 --- a/server/plugin/saiadmin/config/route.php +++ b/server/plugin/saiadmin/config/route.php @@ -82,11 +82,24 @@ Route::group('/core', function () { Route::get("/server/cache", [\plugin\saiadmin\app\controller\system\SystemServerController::class, 'cache']); Route::post("/server/clear", [\plugin\saiadmin\app\controller\system\SystemServerController::class, 'clear']); - // 渠道管理 - fastRoute('channel/manage/ChannelManage', \app\channel\controller\manage\ChannelManageController::class); - Route::get("/channel/manage/ChannelManage/getDeptList", [\app\channel\controller\manage\ChannelManageController::class, 'getDeptList']); - Route::get("/channel/manage/ChannelManage/getAdminList", [\app\channel\controller\manage\ChannelManageController::class, 'getAdminList']); - Route::put("/channel/manage/ChannelManage/updateStatus", [\app\channel\controller\manage\ChannelManageController::class, 'updateStatus']); + // 大富翁 Dice 模块 + fastRoute('dice/config/DiceConfig', \app\dice\controller\config\DiceConfigController::class); + fastRoute('dice/player/DicePlayer', \app\dice\controller\player\DicePlayerController::class); + Route::put('/dice/player/DicePlayer/updateStatus', [\app\dice\controller\player\DicePlayerController::class, 'updateStatus']); + Route::get('/dice/player/DicePlayer/getLotteryConfigOptions', [\app\dice\controller\player\DicePlayerController::class, 'getLotteryConfigOptions']); + fastRoute('dice/play_record/DicePlayRecord', \app\dice\controller\play_record\DicePlayRecordController::class); + Route::get('/dice/play_record/DicePlayRecord/getPlayerOptions', [\app\dice\controller\play_record\DicePlayRecordController::class, 'getPlayerOptions']); + Route::get('/dice/play_record/DicePlayRecord/getLotteryConfigOptions', [\app\dice\controller\play_record\DicePlayRecordController::class, 'getLotteryConfigOptions']); + Route::get('/dice/play_record/DicePlayRecord/getRewardConfigOptions', [\app\dice\controller\play_record\DicePlayRecordController::class, 'getRewardConfigOptions']); + fastRoute('dice/player_wallet_record/DicePlayerWalletRecord', \app\dice\controller\player_wallet_record\DicePlayerWalletRecordController::class); + Route::get('/dice/player_wallet_record/DicePlayerWalletRecord/getPlayerOptions', [\app\dice\controller\player_wallet_record\DicePlayerWalletRecordController::class, 'getPlayerOptions']); + Route::get('/dice/player_wallet_record/DicePlayerWalletRecord/getPlayerWalletBefore', [\app\dice\controller\player_wallet_record\DicePlayerWalletRecordController::class, 'getPlayerWalletBefore']); + Route::post('/dice/player_wallet_record/DicePlayerWalletRecord/adminOperate', [\app\dice\controller\player_wallet_record\DicePlayerWalletRecordController::class, 'adminOperate']); + fastRoute('dice/player_ticket_record/DicePlayerTicketRecord', \app\dice\controller\player_ticket_record\DicePlayerTicketRecordController::class); + Route::get('/dice/player_ticket_record/DicePlayerTicketRecord/getPlayerOptions', [\app\dice\controller\player_ticket_record\DicePlayerTicketRecordController::class, 'getPlayerOptions']); + fastRoute('dice/reward_config/DiceRewardConfig', \app\dice\controller\reward_config\DiceRewardConfigController::class); + fastRoute('dice/lottery_config/DiceLotteryConfig', \app\dice\controller\lottery_config\DiceLotteryConfigController::class); + Route::get('/dice/lottery_config/DiceLotteryConfig/getOptions', [\app\dice\controller\lottery_config\DiceLotteryConfigController::class, 'getOptions']); // 数据表维护 Route::get("/database/index", [\plugin\saiadmin\app\controller\system\DataBaseController::class, 'index']);