|
@@ -1,18 +1,67 @@
|
|
|
-import { Injectable } from '@nestjs/common';
|
|
|
+import { BadRequestException, Injectable } from '@nestjs/common';
|
|
|
import { InjectRepository } from '@nestjs/typeorm';
|
|
|
import { Menu } from './menu.entity';
|
|
|
-import { Repository } from 'typeorm';
|
|
|
-import { CreateMenuDto } from './dto';
|
|
|
+import { Like, Repository } from 'typeorm';
|
|
|
+import { CreateMenuDto, GetMenuDto, QueryMenuDto, UpdateMenuDto } from './dto';
|
|
|
|
|
|
@Injectable()
|
|
|
export class MenuService {
|
|
|
constructor(
|
|
|
@InjectRepository(Menu)
|
|
|
private menuRepo: Repository<Menu>,
|
|
|
- ) {}
|
|
|
+ ) { }
|
|
|
|
|
|
async create(createMenuDto: CreateMenuDto) {
|
|
|
const menu = this.menuRepo.create(createMenuDto);
|
|
|
return this.menuRepo.save(menu);
|
|
|
}
|
|
|
+
|
|
|
+ async findPagination(query: QueryMenuDto) {
|
|
|
+ const pageSize = query.pageSize || 10;
|
|
|
+ const pageNo = query.pageNo || 1;
|
|
|
+ const [data, total] = await this.menuRepo.findAndCount({
|
|
|
+ where: {
|
|
|
+ title: Like(`%${query.title || ''}%`),
|
|
|
+ enable: query.enable || undefined,
|
|
|
+ },
|
|
|
+ relations: { user: true, category: true },
|
|
|
+ order: {
|
|
|
+ // title: 'ASC',
|
|
|
+ createTime: 'DESC',
|
|
|
+ },
|
|
|
+ take: pageSize,
|
|
|
+ skip: (pageNo - 1) * pageSize,
|
|
|
+ });
|
|
|
+ const pageData = data.map((item) => {
|
|
|
+ return { ...item };
|
|
|
+ });
|
|
|
+ return { pageData, total };
|
|
|
+ }
|
|
|
+
|
|
|
+ async remove(id: number) {
|
|
|
+ await this.menuRepo.delete(id);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ async find(id: number) {
|
|
|
+ return await this.menuRepo.findOne({ where: { id } });
|
|
|
+ }
|
|
|
+
|
|
|
+ async findAll(query: GetMenuDto) {
|
|
|
+ return this.menuRepo.find({ where: query });
|
|
|
+ }
|
|
|
+
|
|
|
+ async findLevel(level: number) {
|
|
|
+ return await this.menuRepo.find({
|
|
|
+ where: { level },
|
|
|
+ relations: { user: true, category: true },
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ async update(id: number, updateMenuDto: UpdateMenuDto) {
|
|
|
+ const menu = await this.menuRepo.findOne({ where: { id } });
|
|
|
+ if (!menu) throw new BadRequestException('权限不存在或者已删除');
|
|
|
+ const updateMenu = this.menuRepo.merge(menu, updateMenuDto);
|
|
|
+ await this.menuRepo.save(updateMenu);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|