style(api): 统一代码格式化规范
- 调整 import 语句格式,统一空格和引号风格 - 修复函数参数跨行时的格式对齐问题 - 清理多余空行和注释中的空白字符 - 统一对象属性结尾逗号的使用规范 - 规范化字符串拼接和模板语法的格式 - 优化长参数列表的换行和缩进格式
This commit is contained in:
@@ -75,7 +75,10 @@ class TenantPortCache {
|
||||
localStorage.removeItem(this.CACHE_KEY);
|
||||
}
|
||||
|
||||
static generateKey(tenantId: string | number, environment: Environment): string {
|
||||
static generateKey(
|
||||
tenantId: string | number,
|
||||
environment: Environment
|
||||
): string {
|
||||
return `${tenantId}-${environment}`;
|
||||
}
|
||||
}
|
||||
@@ -107,7 +110,7 @@ export class TenantPortManager {
|
||||
}): Promise<PortAllocationResult> {
|
||||
try {
|
||||
// 1. 获取租户信息
|
||||
const tenantId = options?.tenantId || await getTenantId();
|
||||
const tenantId = options?.tenantId || (await getTenantId());
|
||||
const tenantInfo = await getTenantInfo();
|
||||
|
||||
if (!tenantId) {
|
||||
@@ -119,7 +122,10 @@ export class TenantPortManager {
|
||||
}
|
||||
|
||||
// 2. 检查现有绑定
|
||||
const bindingKey = TenantPortCache.generateKey(tenantId, this.currentEnvironment);
|
||||
const bindingKey = TenantPortCache.generateKey(
|
||||
tenantId,
|
||||
this.currentEnvironment
|
||||
);
|
||||
const existingBinding = this.bindings.get(bindingKey);
|
||||
|
||||
if (existingBinding && !options?.forceNew) {
|
||||
@@ -148,7 +154,11 @@ export class TenantPortManager {
|
||||
});
|
||||
|
||||
// 4. 创建租户端口绑定
|
||||
const binding = this.createTenantBinding(tenantId, tenantInfo, portConfig);
|
||||
const binding = this.createTenantBinding(
|
||||
tenantId,
|
||||
tenantInfo,
|
||||
portConfig
|
||||
);
|
||||
this.updateBinding(bindingKey, binding);
|
||||
|
||||
console.log('🎯 为租户分配新端口:', {
|
||||
@@ -163,7 +173,6 @@ export class TenantPortManager {
|
||||
binding,
|
||||
recommendations: this.generateRecommendations(binding)
|
||||
};
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 租户端口分配失败:', error);
|
||||
return {
|
||||
@@ -177,7 +186,9 @@ export class TenantPortManager {
|
||||
/**
|
||||
* 验证端口绑定是否有效
|
||||
*/
|
||||
private async validatePortBinding(binding: TenantPortBinding): Promise<boolean> {
|
||||
private async validatePortBinding(
|
||||
binding: TenantPortBinding
|
||||
): Promise<boolean> {
|
||||
try {
|
||||
// 检查端口是否仍然可用
|
||||
const response = await fetch(`http://localhost:${binding.assignedPort}`, {
|
||||
@@ -214,7 +225,9 @@ export class TenantPortManager {
|
||||
metadata: {
|
||||
projectName: portConfig.projectName || 'mp-vue',
|
||||
version: '1.0.0',
|
||||
description: `${tenantInfo?.name || '租户'} - ${this.currentEnvironment}环境`
|
||||
description: `${tenantInfo?.name || '租户'} - ${
|
||||
this.currentEnvironment
|
||||
}环境`
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -238,7 +251,9 @@ export class TenantPortManager {
|
||||
switch (binding.environment) {
|
||||
case 'development':
|
||||
recommendations.push('开发环境:建议配置热重载和调试工具');
|
||||
recommendations.push(`访问地址:http://localhost:${binding.assignedPort}`);
|
||||
recommendations.push(
|
||||
`访问地址:http://localhost:${binding.assignedPort}`
|
||||
);
|
||||
break;
|
||||
case 'test':
|
||||
recommendations.push('测试环境:建议配置自动化测试和监控');
|
||||
@@ -252,7 +267,10 @@ export class TenantPortManager {
|
||||
}
|
||||
|
||||
// 端口范围建议
|
||||
if (binding.assignedPort < strategy.portRange[0] || binding.assignedPort > strategy.portRange[1]) {
|
||||
if (
|
||||
binding.assignedPort < strategy.portRange[0] ||
|
||||
binding.assignedPort > strategy.portRange[1]
|
||||
) {
|
||||
recommendations.push('⚠️ 分配的端口超出推荐范围,可能存在冲突风险');
|
||||
}
|
||||
|
||||
@@ -267,14 +285,17 @@ export class TenantPortManager {
|
||||
history: TenantPortBinding[];
|
||||
recommendations: string[];
|
||||
}> {
|
||||
const targetTenantId = tenantId || await getTenantId();
|
||||
const targetTenantId = tenantId || (await getTenantId());
|
||||
const history: TenantPortBinding[] = [];
|
||||
let current: TenantPortBinding | undefined;
|
||||
|
||||
// 查找当前和历史绑定
|
||||
this.bindings.forEach(binding => {
|
||||
this.bindings.forEach((binding) => {
|
||||
if (binding.tenantId === targetTenantId) {
|
||||
if (binding.environment === this.currentEnvironment && binding.isActive) {
|
||||
if (
|
||||
binding.environment === this.currentEnvironment &&
|
||||
binding.isActive
|
||||
) {
|
||||
current = binding;
|
||||
}
|
||||
history.push(binding);
|
||||
@@ -296,14 +317,19 @@ export class TenantPortManager {
|
||||
*/
|
||||
async releaseTenantPort(tenantId?: string | number): Promise<boolean> {
|
||||
try {
|
||||
const targetTenantId = tenantId || await getTenantId();
|
||||
const bindingKey = TenantPortCache.generateKey(targetTenantId, this.currentEnvironment);
|
||||
const targetTenantId = tenantId || (await getTenantId());
|
||||
const bindingKey = TenantPortCache.generateKey(
|
||||
targetTenantId,
|
||||
this.currentEnvironment
|
||||
);
|
||||
|
||||
const binding = this.bindings.get(bindingKey);
|
||||
if (binding) {
|
||||
binding.isActive = false;
|
||||
this.updateBinding(bindingKey, binding);
|
||||
console.log(`🔓 已释放租户 ${targetTenantId} 的端口 ${binding.assignedPort}`);
|
||||
console.log(
|
||||
`🔓 已释放租户 ${targetTenantId} 的端口 ${binding.assignedPort}`
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -329,13 +355,16 @@ export class TenantPortManager {
|
||||
activeBindings: 0,
|
||||
environmentStats: {} as Record<Environment, number>,
|
||||
portRangeUsage: { min: Infinity, max: 0, average: 0 },
|
||||
topTenants: [] as Array<{ tenantId: string | number; bindingsCount: number }>
|
||||
topTenants: [] as Array<{
|
||||
tenantId: string | number;
|
||||
bindingsCount: number;
|
||||
}>
|
||||
};
|
||||
|
||||
const tenantCounts = new Map<string | number, number>();
|
||||
let portSum = 0;
|
||||
|
||||
this.bindings.forEach(binding => {
|
||||
this.bindings.forEach((binding) => {
|
||||
// 活跃绑定统计
|
||||
if (binding.isActive) {
|
||||
stats.activeBindings++;
|
||||
@@ -346,8 +375,14 @@ export class TenantPortManager {
|
||||
(stats.environmentStats[binding.environment] || 0) + 1;
|
||||
|
||||
// 端口范围统计
|
||||
stats.portRangeUsage.min = Math.min(stats.portRangeUsage.min, binding.assignedPort);
|
||||
stats.portRangeUsage.max = Math.max(stats.portRangeUsage.max, binding.assignedPort);
|
||||
stats.portRangeUsage.min = Math.min(
|
||||
stats.portRangeUsage.min,
|
||||
binding.assignedPort
|
||||
);
|
||||
stats.portRangeUsage.max = Math.max(
|
||||
stats.portRangeUsage.max,
|
||||
binding.assignedPort
|
||||
);
|
||||
portSum += binding.assignedPort;
|
||||
|
||||
// 租户统计
|
||||
@@ -356,9 +391,8 @@ export class TenantPortManager {
|
||||
});
|
||||
|
||||
// 计算平均端口
|
||||
stats.portRangeUsage.average = stats.totalBindings > 0
|
||||
? Math.round(portSum / stats.totalBindings)
|
||||
: 0;
|
||||
stats.portRangeUsage.average =
|
||||
stats.totalBindings > 0 ? Math.round(portSum / stats.totalBindings) : 0;
|
||||
|
||||
// 修复无限大的情况
|
||||
if (stats.portRangeUsage.min === Infinity) {
|
||||
|
||||
Reference in New Issue
Block a user