Skip to content

Commit e33be85

Browse files
committed
feat: 父节点
1 parent 111337c commit e33be85

File tree

4 files changed

+30
-14
lines changed

4 files changed

+30
-14
lines changed

src/api/resources/dto/resources.dto.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { StatusEnum } from '@src/enums';
21
import { MethodEnum } from '@src/enums/method.enum';
32
import { IsIncludes } from '@src/validators';
43
import { Type } from 'class-transformer';
@@ -36,16 +35,11 @@ export class ResourcesDto {
3635
@Min(0, { message: '0目录,1菜单,2接口' })
3736
@IsInt({ message: '类型必须是数字' })
3837
@Type(() => Number)
38+
@IsNotEmpty({ message: '类型不能为空' })
3939
resourcesType!: number;
4040

4141
@IsInt({ message: '上一级id' })
4242
@Type(() => Number)
43+
@IsOptional({ message: '父级' })
4344
parentId!: number;
44-
45-
@Max(1, { message: '状态最大值为1' })
46-
@Min(0, { message: '状态最小值为0' })
47-
@IsInt({ message: '状态必须是数字' })
48-
@Type(() => Number)
49-
@IsNotEmpty({ message: '状态不能为空' })
50-
status!: StatusEnum;
5145
}

src/api/resources/dto/resources.query.dto.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { QueryOptionsDto } from '@src/shared/dto/query.options.dto';
22

33
export class QueryResourcesDto extends QueryOptionsDto {
44
readonly title!: string; // 接口标题,或菜单标题
5-
readonly type!: number; // 0目录,1菜单,2接口
5+
readonly resourcesType!: number; // 0目录,1菜单,2接口
66
readonly parentId!: number; // 上一级id
77
readonly status!: number; // 状态:0是正常,1是禁止
88
readonly isBtn!: number; // 是否为按钮:0表示不是,1表示是

src/api/resources/resources.service.ts

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export class ResourcesService {
7777
pageNumber = PageEnum.PAGE_NUMBER,
7878
pageSize = PageEnum.PAGE_SIZE,
7979
title,
80-
type,
80+
resourcesType,
8181
parentId,
8282
status,
8383
} = queryResourcesDto;
@@ -88,12 +88,14 @@ export class ResourcesService {
8888
if ([(StatusEnum.NORMAL, StatusEnum.FORBIDDEN)].includes(status)) {
8989
queryMap.set('status', Equal(status + ''));
9090
}
91-
if ([0, 1, 2].includes(type)) {
92-
queryMap.set('type', Equal(type + ''));
91+
if ([0, 1, 2].includes(resourcesType)) {
92+
queryMap.set('resourcesType', Equal(resourcesType + ''));
9393
}
9494

9595
if (parentId) {
9696
queryMap.set('parentId', Equal(parentId + ''));
97+
} else {
98+
queryMap.set('parentId', Equal('-1'));
9799
}
98100
const [data, total] = await this.resourcesRepository
99101
.createQueryBuilder()
@@ -103,8 +105,27 @@ export class ResourcesService {
103105
.printSql()
104106
.where(mapToObj(queryMap))
105107
.getManyAndCount();
108+
// 抽取全部的id
109+
const resourcesIdList = data.map((item) => item.id);
110+
const resourcesEntityList: Pick<ResourcesEntity, 'parentId'>[] =
111+
await this.resourcesRepository.find({
112+
where: { parentId: In(resourcesIdList) },
113+
select: ['parentId'],
114+
});
115+
// 组成map[parentId] = true
116+
const resourcesMap = new Map<number, boolean>();
117+
for (const item of resourcesEntityList) {
118+
resourcesMap.set(item.parentId, true);
119+
}
120+
const result: ResourcesVo[] = [];
121+
for (const item of data) {
122+
result.push({
123+
...item,
124+
hasChildren: resourcesMap.get(item.id),
125+
});
126+
}
106127
return {
107-
data,
128+
data: result,
108129
total,
109130
pageNumber: +pageNumber,
110131
pageSize: +pageSize,
@@ -115,7 +136,7 @@ export class ResourcesService {
115136
* @Author: 水痕
116137
* @Date: 2023-10-08 08:07:30
117138
* @LastEditors: 水痕
118-
* @Description: 根据资源目录
139+
* @Description: 根据资源模块
119140
* @return {*}
120141
*/
121142
async getResourceCatalogApi(): Promise<SimplenessResourceVo[]> {

src/api/resources/vo/resources.vo.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export class ResourcesVo extends QueryVo {
99
readonly resourcesType!: number; // 0目录,1菜单,2接口
1010
readonly parentId!: number; // 上一级id
1111
readonly status!: number; // 状态:0是正常,1是禁止
12+
readonly hasChildren?: boolean; // 是否有子节点
1213
}
1314

1415
export class ResourcesListVo extends QueryListVo {

0 commit comments

Comments
 (0)