feat: 新增命令和迁移以优化抽奖数据管理
- 新增 `LotteryDevPruneDrawBacklogCommand` 命令,用于按营业日区间删除积压的抽奖期号,并支持干运行和级联删除相关数据。 - 添加多个迁移文件以同步数据库结构,包括重命名重复的迁移文件、添加用户名字段、迁移抽奖状态到领域字典、合并显示名称字段、扩展审计日志目标类型字段,以及细化后台权限管理。 - 更新 `AdminRbacAndUserSeeder` 以包含角色代码字段,确保一致性与可维护性。
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
/**
|
||||
* 将历史上重复时间戳的 migration 文件名同步到 migrations 表,避免重命名后被视为未执行。
|
||||
*
|
||||
* 新装库:UPDATE 命中 0 行,无影响。
|
||||
* 已有库:把旧文件名改为新文件名,与重命名后的 PHP 文件一致。
|
||||
*
|
||||
* 若从旧文件名升级且 `php artisan migrate` 报「列已存在」等重复执行错误,请先单独执行本文件再全量 migrate:
|
||||
* php artisan migrate --path=database/migrations/2026_05_09_119999_rename_duplicate_migration_filenames_in_table.php
|
||||
* php artisan migrate
|
||||
*/
|
||||
return new class extends Migration
|
||||
{
|
||||
/** @var array<string, string> */
|
||||
private const RENAMES = [
|
||||
'2026_05_09_120000_add_username_and_nullable_email_to_admin_users' => '2026_05_09_120001_add_username_and_nullable_email_to_admin_users',
|
||||
'2026_05_09_120000_migrate_draw_status_to_domain_dict' => '2026_05_09_120002_migrate_draw_status_to_domain_dict',
|
||||
'2026_05_25_120000_consolidate_play_display_name_columns' => '2026_05_25_120001_consolidate_play_display_name_columns',
|
||||
'2026_05_25_120000_expand_audit_logs_target_type' => '2026_05_25_120002_expand_audit_logs_target_type',
|
||||
'2026_05_25_120000_refine_admin_permission_granularity' => '2026_05_25_120003_refine_admin_permission_granularity',
|
||||
];
|
||||
|
||||
public function up(): void
|
||||
{
|
||||
foreach (self::RENAMES as $from => $to) {
|
||||
DB::table('migrations')->where('migration', $from)->update(['migration' => $to]);
|
||||
}
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
foreach (self::RENAMES as $from => $to) {
|
||||
DB::table('migrations')->where('migration', $to)->update(['migration' => $from]);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
/**
|
||||
* admin_api_resources.code 最长可达 128;中间件将完整 code 写入 audit_logs.target_type。
|
||||
*/
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('audit_logs', function (Blueprint $table): void {
|
||||
$table->string('target_type', 128)->nullable()->change();
|
||||
});
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('audit_logs', function (Blueprint $table): void {
|
||||
$table->string('target_type', 32)->nullable()->change();
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -30,13 +30,13 @@ final class AdminRbacAndUserSeeder extends Seeder
|
||||
{
|
||||
$super = AdminRole::query()->updateOrCreate(
|
||||
['slug' => AdminUser::ROLE_SUPER_ADMIN],
|
||||
['name' => '超级管理员'],
|
||||
['code' => AdminUser::ROLE_SUPER_ADMIN, 'name' => '超级管理员'],
|
||||
);
|
||||
$this->syncRolePermissions($super, $this->allCatalogSlugs());
|
||||
|
||||
$risk = AdminRole::query()->updateOrCreate(
|
||||
['slug' => 'risk_operator'],
|
||||
['name' => '风控运营员'],
|
||||
['code' => 'risk_operator', 'name' => '风控运营员'],
|
||||
);
|
||||
$this->syncRolePermissions($risk, [
|
||||
'prd.dashboard.view',
|
||||
@@ -59,7 +59,7 @@ final class AdminRbacAndUserSeeder extends Seeder
|
||||
|
||||
$finance = AdminRole::query()->updateOrCreate(
|
||||
['slug' => 'finance'],
|
||||
['name' => '财务/对账员'],
|
||||
['code' => 'finance', 'name' => '财务/对账员'],
|
||||
);
|
||||
$this->syncRolePermissions($finance, [
|
||||
'prd.dashboard.view',
|
||||
@@ -79,7 +79,7 @@ final class AdminRbacAndUserSeeder extends Seeder
|
||||
|
||||
$cs = AdminRole::query()->updateOrCreate(
|
||||
['slug' => 'customer_service'],
|
||||
['name' => '客服人员'],
|
||||
['code' => 'customer_service', 'name' => '客服人员'],
|
||||
);
|
||||
$this->syncRolePermissions($cs, [
|
||||
'prd.dashboard.view',
|
||||
|
||||
Reference in New Issue
Block a user