2023-06-25 15:30:18 +08:00
|
|
|
import { Rule, RuleType } from '@midwayjs/validate';
|
2024-11-28 17:36:45 +08:00
|
|
|
import { ALL, Body, Controller, Get, Inject, Post, Provide, Query } from '@midwayjs/core';
|
|
|
|
|
import { BaseController, Constants } from '@certd/lib-server';
|
2025-01-19 01:07:20 +08:00
|
|
|
import { CodeService } from '../../modules/basic/service/code-service.js';
|
|
|
|
|
import { EmailService } from '../../modules/basic/service/email-service.js';
|
2024-11-28 17:36:45 +08:00
|
|
|
|
2023-01-29 15:26:58 +08:00
|
|
|
export class SmsCodeReq {
|
2024-11-28 17:36:45 +08:00
|
|
|
@Rule(RuleType.string().required())
|
|
|
|
|
phoneCode: string;
|
2023-01-29 15:26:58 +08:00
|
|
|
|
|
|
|
|
@Rule(RuleType.string().required())
|
|
|
|
|
mobile: string;
|
|
|
|
|
|
|
|
|
|
@Rule(RuleType.string().required().max(10))
|
|
|
|
|
randomStr: string;
|
|
|
|
|
|
2024-11-28 17:36:45 +08:00
|
|
|
@Rule(RuleType.string().required().max(4))
|
|
|
|
|
imgCode: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export class EmailCodeReq {
|
|
|
|
|
@Rule(RuleType.string().required())
|
|
|
|
|
email: string;
|
|
|
|
|
|
|
|
|
|
@Rule(RuleType.string().required().max(10))
|
|
|
|
|
randomStr: string;
|
|
|
|
|
|
|
|
|
|
@Rule(RuleType.string().required().max(4))
|
2023-01-29 15:26:58 +08:00
|
|
|
imgCode: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*/
|
|
|
|
|
@Provide()
|
2023-06-25 15:30:18 +08:00
|
|
|
@Controller('/api/basic/code')
|
2023-01-29 15:26:58 +08:00
|
|
|
export class BasicController extends BaseController {
|
|
|
|
|
@Inject()
|
|
|
|
|
codeService: CodeService;
|
2023-06-25 15:30:18 +08:00
|
|
|
|
|
|
|
|
@Inject()
|
|
|
|
|
emailService: EmailService;
|
|
|
|
|
|
2023-06-27 09:29:43 +08:00
|
|
|
@Post('/sendSmsCode', { summary: Constants.per.guest })
|
2024-11-28 17:36:45 +08:00
|
|
|
public async sendSmsCode(
|
2023-01-29 15:26:58 +08:00
|
|
|
@Body(ALL)
|
|
|
|
|
body: SmsCodeReq
|
|
|
|
|
) {
|
2024-11-28 17:36:45 +08:00
|
|
|
await this.codeService.checkCaptcha(body.randomStr, body.imgCode);
|
|
|
|
|
await this.codeService.sendSmsCode(body.phoneCode, body.mobile, body.randomStr);
|
2023-01-29 15:26:58 +08:00
|
|
|
return this.ok(null);
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-28 17:36:45 +08:00
|
|
|
@Post('/sendEmailCode', { summary: Constants.per.guest })
|
|
|
|
|
public async sendEmailCode(
|
|
|
|
|
@Body(ALL)
|
|
|
|
|
body: EmailCodeReq
|
2023-01-29 15:26:58 +08:00
|
|
|
) {
|
2024-11-28 17:36:45 +08:00
|
|
|
await this.codeService.checkCaptcha(body.randomStr, body.imgCode);
|
|
|
|
|
await this.codeService.sendEmailCode(body.email, body.randomStr);
|
|
|
|
|
// 设置缓存内容
|
|
|
|
|
return this.ok(null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Get('/captcha', { summary: Constants.per.guest })
|
|
|
|
|
public async getCaptcha(@Query('randomStr') randomStr: any) {
|
2023-01-29 15:26:58 +08:00
|
|
|
const captcha = await this.codeService.generateCaptcha(randomStr);
|
2024-11-28 17:36:45 +08:00
|
|
|
this.ctx.res.setHeader('Content-Type', 'image/svg+xml');
|
|
|
|
|
return captcha.data;
|
2023-01-29 15:26:58 +08:00
|
|
|
}
|
|
|
|
|
}
|