sms.service.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { Injectable } from '@nestjs/common'
  2. import { InjectRepository } from '@nestjs/typeorm'
  3. import { AliyunService } from '../aliyun/aliyun.service'
  4. import { SmsRecord } from './entities/sms.entity'
  5. import { Repository } from 'typeorm'
  6. import { SendCodeDto } from './dto/sms.dto'
  7. @Injectable()
  8. export class SmsService {
  9. constructor(
  10. private readonly aliyunService: AliyunService,
  11. @InjectRepository(SmsRecord)
  12. private readonly smsRecordRepo: Repository<SmsRecord>
  13. ) {}
  14. public async sendVerify(data: SendCodeDto) {
  15. let res = await this.aliyunService.sendCode(data)
  16. const smsRecord = new SmsRecord()
  17. smsRecord.phone = data.phone
  18. smsRecord.code = res.code
  19. smsRecord.expireAt = new Date(Date.now() + 5 * 60 * 1000)
  20. await this.smsRecordRepo.save(smsRecord)
  21. }
  22. public async verify(phone: string, code: string) {
  23. const smsRecord = await this.smsRecordRepo.findOneBy({
  24. phone: phone,
  25. code: code
  26. })
  27. if (!smsRecord) {
  28. return false
  29. }
  30. if (smsRecord.expireAt < new Date()) {
  31. return false
  32. }
  33. return true
  34. }
  35. }