fix(deploy): 迁移/新建租户后同步写入 app_licenses,修复 license 404
importData API 只写 t_tenant/t_app/t_feature_service,不写 license-service 的 app_licenses 表,导致前端 /api/license/admin/apps/:appKey 返回 404。 在 deploy.sh 的迁移和新建两个分支中,import 成功后直接对同一 MySQL 执行 INSERT ... ON DUPLICATE KEY UPDATE,为所有非系统应用补写 app_licenses 记录。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
父节点
3fe5ae0807
当前提交
60aeb61433
@ -982,6 +982,23 @@ if [ "$DEPLOY_MODE" = "new" ]; then
|
||||
warn "租户记录暂未就绪(tenant-service 可能仍在初始化),继续部署"
|
||||
fi
|
||||
|
||||
# 为 bootstrap 创建的 app 补写 app_licenses(license-service 独立 DB 写入)
|
||||
_LIC_SQL_NEW="$(mktemp /tmp/xuqm-lic-new-XXXXXX.sql)"
|
||||
cat > "$_LIC_SQL_NEW" <<'LIC_SQL_NEW'
|
||||
INSERT INTO app_licenses (app_key, name, max_devices, registered_devices,
|
||||
expires_at, is_active, remark, created_at, updated_at)
|
||||
SELECT a.app_key, a.name, 1000, 0, NULL, 1, '私有化新建', NOW(), NOW()
|
||||
FROM t_app a
|
||||
WHERE a.app_key != 'ak_409e217e4aa14254ad73ad3c'
|
||||
ON DUPLICATE KEY UPDATE updated_at = updated_at;
|
||||
LIC_SQL_NEW
|
||||
docker exec -i "$MYSQL_CTR" \
|
||||
mysql -u "$MYSQL_USERNAME" -p"${MYSQL_PASSWORD}" "$MYSQL_DATABASE" \
|
||||
--default-character-set=utf8mb4 < "$_LIC_SQL_NEW" 2>/dev/null \
|
||||
&& ok "app_licenses 记录已为所有应用创建" \
|
||||
|| warn "app_licenses 写入遇到警告,继续"
|
||||
rm -f "$_LIC_SQL_NEW"
|
||||
|
||||
else
|
||||
# ── 迁移租户:调用公有平台 export API → 私有平台 import API ──
|
||||
|
||||
@ -1038,6 +1055,23 @@ print(t.get('email', ''), t.get('username', ''))
|
||||
DEPLOY_TENANT_USERNAME=$(printf '%s' "$_TENANT_INFO" | awk '{print $2}')
|
||||
ok "租户 ${DEPLOY_TENANT_EMAIL} 数据已成功导入"
|
||||
|
||||
# 为迁移的所有 app 在 app_licenses 表创建 license 记录(license-service 独立 DB 写入)
|
||||
_LIC_SQL="$(mktemp /tmp/xuqm-lic-XXXXXX.sql)"
|
||||
cat > "$_LIC_SQL" <<'LIC_SQL'
|
||||
INSERT INTO app_licenses (app_key, name, max_devices, registered_devices,
|
||||
expires_at, is_active, remark, created_at, updated_at)
|
||||
SELECT a.app_key, a.name, 1000, 0, NULL, 1, '私有化迁移', NOW(), NOW()
|
||||
FROM t_app a
|
||||
WHERE a.app_key != 'ak_409e217e4aa14254ad73ad3c'
|
||||
ON DUPLICATE KEY UPDATE updated_at = updated_at;
|
||||
LIC_SQL
|
||||
docker exec -i "$MYSQL_CTR" \
|
||||
mysql -u "$MYSQL_USERNAME" -p"${MYSQL_PASSWORD}" "$MYSQL_DATABASE" \
|
||||
--default-character-set=utf8mb4 < "$_LIC_SQL" 2>/dev/null \
|
||||
&& ok "app_licenses 记录已为所有迁移应用创建" \
|
||||
|| warn "app_licenses 写入遇到警告,继续"
|
||||
rm -f "$_LIC_SQL"
|
||||
|
||||
# 更新 bootstrap.env,防止重启时重新创建占位租户
|
||||
cat > "$ROOT_DIR/config/tenant/bootstrap.env" <<BSENV
|
||||
TENANT_BOOTSTRAP_EMAIL=${DEPLOY_TENANT_EMAIL}
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户