menu.service.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { BadRequestException, Injectable } from '@nestjs/common';
  2. import { InjectRepository } from '@nestjs/typeorm';
  3. import { Menu } from './menu.entity';
  4. import { Like, Repository } from 'typeorm';
  5. import { CreateMenuDto, GetMenuDto, QueryMenuDto, UpdateMenuDto } from './dto';
  6. import { MenuTranslation } from './menu.entity.translation';
  7. @Injectable()
  8. export class MenuService {
  9. constructor(
  10. @InjectRepository(Menu)
  11. private menuRepo: Repository<Menu>,
  12. @InjectRepository(MenuTranslation)
  13. private menuTranslation: Repository<MenuTranslation>,
  14. ) { }
  15. async create(createMenuDto: CreateMenuDto) {
  16. const menu = this.menuRepo.create(createMenuDto);
  17. // console.log('menu', menu);
  18. return this.menuRepo.save(menu);
  19. }
  20. async findPagination(query: QueryMenuDto) {
  21. const pageSize = query.pageSize || 10;
  22. const pageNo = query.pageNo || 1;
  23. const [data, total] = await this.menuRepo.findAndCount({
  24. where: {
  25. title: Like(`%${query.title || ''}%`),
  26. parentId: query.parentId || undefined,
  27. enable: query.enable || undefined,
  28. },
  29. relations: { user: true, category: true, translations: true },
  30. order: {
  31. // title: 'ASC',
  32. createTime: 'DESC',
  33. },
  34. take: pageSize,
  35. skip: (pageNo - 1) * pageSize,
  36. });
  37. const pageData = data.map((item) => {
  38. return { ...item };
  39. });
  40. return { pageData, total };
  41. }
  42. async remove(id: number) {
  43. await this.menuRepo.delete(id);
  44. return true;
  45. }
  46. async find(id: number) {
  47. return await this.menuRepo.findOne({ where: { id } });
  48. }
  49. async findWithChild(id: number) {
  50. return await this.menuRepo.findOne({
  51. where: { id },
  52. relations: { children: true, user: true, translations: true },
  53. });
  54. }
  55. async findAll(query: GetMenuDto) {
  56. return this.menuRepo.find({ where: query });
  57. }
  58. async findLevel(level: number) {
  59. return await this.menuRepo.find({
  60. where: { level },
  61. relations: { user: true, category: true, children: true },
  62. });
  63. }
  64. async update(id: number, updateMenuDto: UpdateMenuDto) {
  65. const menu = await this.menuRepo.findOne({ where: { id } });
  66. if (!menu) throw new BadRequestException('权限不存在或者已删除');
  67. const updateMenu = this.menuRepo.merge(menu, updateMenuDto);
  68. await this.menuRepo.save(updateMenu);
  69. return true;
  70. }
  71. }