UNPKG

@opentiny/tiny-toolkit-pro

Version:

TinyPro Vue:开箱即用、前后端分离的 Vue 后台管理模板

78 lines (76 loc) 2.48 kB
import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; import { CreatePermissionDto } from './dto/create-permission.dto'; import { UpdatePermissionDto } from './dto/update-permission.dto'; import { InjectRepository } from '@nestjs/typeorm'; import { Permission } from '@app/models'; import { Like, Repository } from 'typeorm'; import { I18nTranslations } from '../.generate/i18n.generated'; import { I18nContext, I18nService } from 'nestjs-i18n'; import { paginate } from 'nestjs-typeorm-paginate'; @Injectable() export class PermissionService { constructor( @InjectRepository(Permission) private permission: Repository<Permission>, private readonly i18n: I18nService<I18nTranslations> ) {} async create(createPermissionDto: CreatePermissionDto, isInit: boolean) { const { name, desc } = createPermissionDto; const permissionInfo = this.permission.findOne({ where: { name }, }); if (isInit == true && (await permissionInfo)) { return permissionInfo; } if ((await permissionInfo) && isInit == false) { throw new HttpException( this.i18n.t('exception.permission.exists', { args: { name }, lang: I18nContext.current().lang, }), HttpStatus.BAD_REQUEST ); } const permission = await this.permission.save({ name, desc }); return permission; } async updatePermission(dto: UpdatePermissionDto) { const { name, desc, id } = dto; const permissionInfo = await this.permission.findOne({ where: { id }, }); if (!permissionInfo) { throw new HttpException( this.i18n.t('exception.permission.notExists', { lang: I18nContext.current().lang, }), HttpStatus.NOT_FOUND ); } return this.permission.update(id, { name, desc }); } async findPermission(page?: number, limit?: number, name?: string) { if (!limit) { return this.permission.find(); } const count = await this.permission.count(); return paginate( this.permission, { limit: limit ? limit : count, page, }, { where: { name: name ? Like(name) : undefined, }, } ); } async delPermission(id: number) { const permissionInfo = await this.permission.findOne({ where: { id }, }); return this.permission.remove(permissionInfo); } }