/** * @author songxiwen * @date 2020/09/09 13:35 */ import { Inject, Injectable } from '@nestjs/common'; import { Model } from 'mongoose'; import { InjectModel } from '@nestjs/mongoose'; import { v1 as uuidV1 } from 'uuid'; import { AdminToken } from '../../admin.auth/model/admin.token'; import { Admin } from '../model/admin'; import { BaseService } from '../../../base/base.service'; import { MongoDBCollection } from '../../../constant'; import { AdminAuthService } from '../../admin.auth/service/admin.auth.service'; @Injectable() export class AdminService extends BaseService { constructor( @InjectModel(MongoDBCollection.Admin) protected readonly model: Model, @Inject('AdminAuthService') private readonly adminAuthService: AdminAuthService ) { super(model); } async refreshAdminToken(adminId: string): Promise { let adminTokenModel = await this.adminAuthService.findOne({ adminId }); const expirationDate = new Date(); expirationDate.setDate(new Date().getDate() + 30); if (adminTokenModel) { adminTokenModel.expiration = expirationDate; adminTokenModel.value = uuidV1(); adminTokenModel = await adminTokenModel.save(); } else { adminTokenModel = await this.adminAuthService.create({ adminId, value: uuidV1(), expiration: expirationDate }); } return adminTokenModel; } }