diff --git a/packages/libs/lib-server/src/basic/base-service.ts b/packages/libs/lib-server/src/basic/base-service.ts index b8b8377b..d45098bc 100644 --- a/packages/libs/lib-server/src/basic/base-service.ts +++ b/packages/libs/lib-server/src/basic/base-service.ts @@ -59,26 +59,42 @@ export abstract class BaseService { return await this.getRepository().find(options); } + /** + * + * @param where + */ + async deleteWhere(where: any) { + await this.getRepository().delete({ + ...where, + }); + } + /** * 删除 * @param ids 删除的ID集合 如:[1,2,3] 或者 1,2,3 * @param where */ - async delete(ids: any, where?: any) { + async delete(ids: string | any[], where?: any) { + const idArr = this.resolveIdArr(ids); + if (idArr.length === 0) { + return; + } + await this.getRepository().delete({ + id: In(idArr), + ...where, + }); + await this.modifyAfter(idArr); + } + + resolveIdArr(ids: string | any[]) { if (!ids) { throw new ValidateException('ids不能为空'); } if (typeof ids === 'string') { - ids = ids.split(','); + return ids.split(','); + } else { + return ids; } - if (ids.length === 0) { - return; - } - await this.getRepository().delete({ - id: In(ids), - ...where, - }); - await this.modifyAfter(ids); } /** diff --git a/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts b/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts index 9f81a31d..8dc0888c 100644 --- a/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts +++ b/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts @@ -237,7 +237,7 @@ export class PipelineService extends BaseService { }); } - async delete(id: number) { + async delete(id: any) { await this.clearTriggers(id); //TODO 删除storage // const storage = new DbStorage(pipeline.userId, this.storageService); diff --git a/packages/ui/certd-server/src/modules/sys/authority/service/role-service.ts b/packages/ui/certd-server/src/modules/sys/authority/service/role-service.ts index 72bfa4ac..0af16006 100644 --- a/packages/ui/certd-server/src/modules/sys/authority/service/role-service.ts +++ b/packages/ui/certd-server/src/modules/sys/authority/service/role-service.ts @@ -29,8 +29,8 @@ export class RoleService extends BaseService { ttl: 1000 * 60 * 10, }); - //@ts-ignore -getRepository() { + //@ts-ignore + getRepository() { return this.repository; } @@ -77,7 +77,7 @@ getRepository() { return; } //先删除所有 - await this.userRoleService.delete({ userId }); + await this.userRoleService.deleteWhere({ userId }); //再添加 await this.addRoles(userId, roles); @@ -95,7 +95,7 @@ getRepository() { } async authz(roleId: any, permissionIds: any) { - await this.rolePermissionService.delete({ roleId }); + await this.rolePermissionService.deleteWhere({ roleId }); for (const permissionId of permissionIds) { await this.rolePermissionService.add({ roleId, @@ -125,4 +125,12 @@ getRepository() { this.permissionCache.set(roleIdsKey, permissionSet); return permissionSet; } + + async delete(id: any) { + const idArr = this.resolveIdArr(id); + const urs = await this.userRoleService.find({ where: { roleId: In(idArr) } }); + if (urs.length > 0) { + throw new Error('该角色已被用户使用,无法删除'); + } + } }