diff --git a/package.json b/package.json index a53ca47..cf3667c 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "mysql2": "^3.12.0", "svg-captcha": "^1.4.0", "tslib": "^2.8.1", - "typeorm": "npm:@cool-midway/typeorm@8.0.0", + "typeorm": "npm:@cool-midway/typeorm@0.3.20", "uuid": "^11.0.5", "ws": "^8.18.0" }, diff --git a/src/modules/base/db/tenant.ts b/src/modules/base/db/tenant.ts index 0f32d40..f49bc40 100644 --- a/src/modules/base/db/tenant.ts +++ b/src/modules/base/db/tenant.ts @@ -15,7 +15,6 @@ import { Config, IMidwayApplication, IMidwayContext, - Init, Inject, } from '@midwayjs/core'; import { Utils } from '../../../comm/utils'; @@ -67,7 +66,7 @@ export class TenantSubscriber implements EntitySubscriberInterface { ]; // 不进行租户过滤的用户 - ignoreUsername = ['admin']; + ignoreUsername = []; @Inject() utils: Utils; @@ -163,7 +162,7 @@ export class TenantSubscriber implements EntitySubscriberInterface { if (!this.tenant?.enable) return; const tenantId = this.getTenantId(); if (tenantId) { - queryBuilder.where( + queryBuilder.andWhere( `${ queryBuilder.alias ? queryBuilder.alias + '.' : '' }tenantId = ${tenantId}` @@ -175,11 +174,16 @@ export class TenantSubscriber implements EntitySubscriberInterface { * 插入时添加租户ID * @param queryBuilder */ - async afterInsertQueryBuilder(queryBuilder: InsertQueryBuilder) { + afterInsertQueryBuilder(queryBuilder: InsertQueryBuilder) { if (!this.tenant?.enable) return; - const tenantId = await this.getTenantId(); + const tenantId = this.getTenantId(); if (tenantId) { - queryBuilder.setParameter('tenantId', tenantId); + const values = queryBuilder.expressionMap.valuesSet; + if (Array.isArray(values)) { + queryBuilder.values(values.map(item => ({ ...item, tenantId }))); + } else if (typeof values === 'object') { + queryBuilder.values({ ...values, tenantId }); + } } } @@ -187,12 +191,12 @@ export class TenantSubscriber implements EntitySubscriberInterface { * 更新时添加租户ID和条件 * @param queryBuilder */ - async afterUpdateQueryBuilder(queryBuilder: UpdateQueryBuilder) { + afterUpdateQueryBuilder(queryBuilder: UpdateQueryBuilder) { if (!this.tenant?.enable) return; - const tenantId = await this.getTenantId(); + const tenantId = this.getTenantId(); if (tenantId) { queryBuilder.set({ tenantId }); - queryBuilder.where(`tenantId = ${tenantId}`); + queryBuilder.andWhere(`tenantId = ${tenantId}`); } } @@ -200,11 +204,11 @@ export class TenantSubscriber implements EntitySubscriberInterface { * 删除时添加租户ID和条件 * @param queryBuilder */ - async afterDeleteQueryBuilder(queryBuilder: DeleteQueryBuilder) { + afterDeleteQueryBuilder(queryBuilder: DeleteQueryBuilder) { if (!this.tenant?.enable) return; - const tenantId = await this.getTenantId(); + const tenantId = this.getTenantId(); if (tenantId) { - queryBuilder.where(`tenantId = ${tenantId}`); + queryBuilder.andWhere(`tenantId = ${tenantId}`); } } }