From 21d928167e2ceb74df1d590a2c06da23aa3d6dd7 Mon Sep 17 00:00:00 2001 From: COOL Date: Wed, 9 Apr 2025 17:00:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E7=9C=8B=E5=88=B0=E8=87=AA?= =?UTF-8?q?=E5=B7=B1=E5=88=9B=E5=BB=BA=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/base/controller/admin/sys/department.ts | 5 +++++ src/modules/base/controller/admin/sys/user.ts | 5 +++++ src/modules/base/entity/sys/department.ts | 6 +++++- src/modules/base/entity/sys/user.ts | 4 ++++ src/modules/base/service/sys/department.ts | 4 +++- src/modules/base/service/sys/user.ts | 5 +++-- 6 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/modules/base/controller/admin/sys/department.ts b/src/modules/base/controller/admin/sys/department.ts index e751134..7b0d0af 100644 --- a/src/modules/base/controller/admin/sys/department.ts +++ b/src/modules/base/controller/admin/sys/department.ts @@ -11,6 +11,11 @@ import { BaseSysDepartmentService } from '../../../service/sys/department'; api: ['add', 'delete', 'update', 'list'], entity: BaseSysDepartmentEntity, service: BaseSysDepartmentService, + insertParam: ctx => { + return { + userId: ctx.admin.userId, + }; + }, }) export class BaseDepartmentController extends BaseController { @Inject() diff --git a/src/modules/base/controller/admin/sys/user.ts b/src/modules/base/controller/admin/sys/user.ts index ba8961e..8f1fa93 100644 --- a/src/modules/base/controller/admin/sys/user.ts +++ b/src/modules/base/controller/admin/sys/user.ts @@ -11,6 +11,11 @@ import { BaseSysUserService } from '../../../service/sys/user'; api: ['add', 'delete', 'update', 'info', 'list', 'page'], entity: BaseSysUserEntity, service: BaseSysUserService, + insertParam: ctx => { + return { + userId: ctx.admin.userId, + }; + }, }) export class BaseSysUserController extends BaseController { @Inject() diff --git a/src/modules/base/entity/sys/department.ts b/src/modules/base/entity/sys/department.ts index dc31083..ce38c5f 100644 --- a/src/modules/base/entity/sys/department.ts +++ b/src/modules/base/entity/sys/department.ts @@ -1,5 +1,5 @@ import { BaseEntity } from '../base'; -import { Column, Entity } from 'typeorm'; +import { Column, Entity, Index } from 'typeorm'; /** * 部门 @@ -9,6 +9,10 @@ export class BaseSysDepartmentEntity extends BaseEntity { @Column({ comment: '部门名称' }) name: string; + @Index() + @Column({ comment: '创建者ID', nullable: true }) + userId: number; + @Column({ comment: '上级部门ID', nullable: true }) parentId: number; diff --git a/src/modules/base/entity/sys/user.ts b/src/modules/base/entity/sys/user.ts index bf2e5f7..c02f81b 100644 --- a/src/modules/base/entity/sys/user.ts +++ b/src/modules/base/entity/sys/user.ts @@ -10,6 +10,10 @@ export class BaseSysUserEntity extends BaseEntity { @Column({ comment: '部门ID', nullable: true }) departmentId: number; + @Index() + @Column({ comment: '创建者ID', nullable: true }) + userId: number; + @Column({ comment: '姓名', nullable: true }) name: string; diff --git a/src/modules/base/service/sys/department.ts b/src/modules/base/service/sys/department.ts index 8037852..769c1a9 100644 --- a/src/modules/base/service/sys/department.ts +++ b/src/modules/base/service/sys/department.ts @@ -39,10 +39,12 @@ export class BaseSysDepartmentService extends BaseService { // 过滤部门权限 const find = this.baseSysDepartmentEntity.createQueryBuilder('a'); - if (this.ctx.admin.username !== 'admin') + if (this.ctx.admin.username !== 'admin') { find.andWhere('a.id in (:...ids)', { ids: !_.isEmpty(permsDepartmentArr) ? permsDepartmentArr : [null], }); + find.orWhere('a.userId = :userId', { userId: this.ctx.admin.userId }); + } find.addOrderBy('a.orderNum', 'ASC'); const departments: BaseSysDepartmentEntity[] = await find.getMany(); diff --git a/src/modules/base/service/sys/user.ts b/src/modules/base/service/sys/user.ts index a242b02..086a2d2 100644 --- a/src/modules/base/service/sys/user.ts +++ b/src/modules/base/service/sys/user.ts @@ -40,8 +40,9 @@ export class BaseSysUserService extends BaseService { */ async page(query) { const { keyWord, status, departmentIds = [] } = query; + const userId = this.ctx.admin.userId; const permsDepartmentArr = await this.baseSysPermsService.departmentIds( - this.ctx.admin.userId + userId ); // 部门权限 const sql = ` SELECT @@ -64,7 +65,7 @@ export class BaseSysUserService extends BaseService { ${this.setSql(true, 'and a.username != ?', ['admin'])} ${this.setSql( this.ctx.admin.username !== 'admin', - 'and a.departmentId in (?)', + `and (a.departmentId in (?) or a.userId = ${userId})`, [!_.isEmpty(permsDepartmentArr) ? permsDepartmentArr : [null]] )} `; const result = await this.sqlRenderPage(sql, query);