-- ============================================================================= -- Muse 全栈 app 最小启动种子(PostgreSQL) -- 适用:muse-server,spring profile = local,infra,muse.security.mock-enable=true -- 目标库:已含【yudao 基座表 system_*/infra_*】+【Muse Flyway V1-V21】的 PG 库 -- 目标:让 app 启动成功 + 放行/服务 /app-api/muse/** -- -- 关键结论(基于只读代码核查,非猜测): -- 1) 每个 app-api 请求都会先走 TokenAuthenticationFilter: -- checkAccessToken(token) -> system_oauth2_access_token / system_oauth2_refresh_token -- (查不到再回退到 mock 登录)。这两张表必须【存在】(yudao 基座表,已假定存在), -- 但【无需任何种子行】——mock token 命中不了它们正是预期路径。 -- 2) muse.tenant.enable=true 时,TenantSecurityWebFilter 对非 ignore 的 app-api 请求 -- 调用 validTenant(tenantId),校验 system_tenant:存在 + status 启用 + 未过期。 -- => 这是本种子【唯一强制】的一行:system_tenant(id=1)。 -- 3) validTenant 不连表查 system_tenant_package / system_users / system_role, -- 故这些表对“app 启动 + /app-api/muse/** 放行”不是必需;下文按“可选”给出, -- 仅为后续 admin-api 登录 / 跨租户场景方便。 -- -- 列布局对齐真实 PG yudao 基座(BaseDO):deleted 为 boolean,tenant_id 为 bigint, -- 审计列 creator/create_time/updater/update_time 均有默认值。id 显式给定(INPUT 模式)。 -- 全部 INSERT 幂等:ON CONFLICT (id) DO NOTHING,可重复执行。 -- ============================================================================= -- ----------------------------------------------------------------------------- -- [必需] 默认租户 system_tenant(id=1) -- status=0 启用(CommonStatusEnum.ENABLE=0;DISABLE=1) -- expire_time 设到 2099 远未来,避免 DateUtils.isExpired 触发 TENANT_EXPIRE -- package_id=1:仅为列非空占位(yudao 无外键约束,不要求 package 行真实存在) -- ----------------------------------------------------------------------------- INSERT INTO system_tenant (id, name, contact_user_id, contact_name, contact_mobile, status, websites, package_id, expire_time, account_count, creator, create_time, updater, update_time, deleted) VALUES (1, '芋道源码', 1, 'Muse', '15601691300', 0, '', 1, TIMESTAMP '2099-12-31 23:59:59', 1000, '1', CURRENT_TIMESTAMP, '1', CURRENT_TIMESTAMP, FALSE) ON CONFLICT (id) DO NOTHING; -- ============================================================================= -- 以下均为【可选】:/app-api/muse/** 的 mock 路径不需要它们。 -- 仅当你还想跑 admin-api 登录、或希望 getTenantIdList/套餐相关逻辑数据完整时再放开。 -- ============================================================================= -- ----------------------------------------------------------------------------- -- [可选] 租户套餐 system_tenant_package(id=1):status=0 启用 -- menu_ids 用 '[]' 占位(DO 内是 Set,JSON 数组字符串) -- ----------------------------------------------------------------------------- INSERT INTO system_tenant_package (id, name, status, remark, menu_ids, creator, create_time, updater, update_time, deleted) VALUES (1, '系统租户套餐', 0, '最小启动占位', '[]', '1', CURRENT_TIMESTAMP, '1', CURRENT_TIMESTAMP, FALSE) ON CONFLICT (id) DO NOTHING; -- ----------------------------------------------------------------------------- -- [可选] 管理员 system_users(id=1):status=0 启用,tenant_id=1 -- password 为 admin 的 BCrypt 值(yudao 默认 admin/admin123,密文随版本可能不同; -- 如需精确登录请以本环境实际加密结果为准)。app-api/muse/** 不读此表。 -- ----------------------------------------------------------------------------- INSERT INTO system_users (id, username, password, nickname, remark, dept_id, post_ids, email, mobile, sex, avatar, status, login_ip, login_date, creator, create_time, updater, update_time, deleted, tenant_id) VALUES (1, 'admin', '$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KFkOJ/.', '芋道源码', '管理员', NULL, NULL, 'aoteman@126.com', '15612345678', 1, '', 0, '', NULL, '1', CURRENT_TIMESTAMP, '1', CURRENT_TIMESTAMP, FALSE, 1) ON CONFLICT (id) DO NOTHING; -- ----------------------------------------------------------------------------- -- [可选] 超级管理员角色 system_role(id=1):type=1 内置,data_scope=1 全部,status=0 启用 -- ----------------------------------------------------------------------------- INSERT INTO system_role (id, name, code, sort, data_scope, data_scope_dept_ids, status, type, remark, creator, create_time, updater, update_time, deleted, tenant_id) VALUES (1, '超级管理员', 'super_admin', 1, 1, '', 0, 1, '内置角色', '1', CURRENT_TIMESTAMP, '1', CURRENT_TIMESTAMP, FALSE, 1) ON CONFLICT (id) DO NOTHING; -- ============================================================================= -- 说明:本种子不创建任何表。若启动报 “relation does not exist”,说明目标库缺少 -- 对应 yudao 基座表(最常见:system_oauth2_access_token / system_oauth2_refresh_token / -- infra_* 系列),需要先用 yudao 基座 PG 建表脚本补齐,再执行本种子。 -- =============================================================================