fix: 验证码发送失败,使captcha过期

This commit is contained in:
wkj 2025-12-05 19:05:53 +08:00
parent 24396a8782
commit 16eb5de960
1 changed files with 40 additions and 15 deletions

View File

@ -2858,9 +2858,11 @@ export async function sendCaptchaByMobile<ED extends EntityDict>(
dontCollect: true,
}
);
return code;
return {
code,
captchaId: id
};
}
let code = captcha?.code!;
if (captcha) {
const captchaDuration = process.env.NODE_ENV === 'development' ? 10 * 1000 : 60 * 1000;
if (now - (captcha.$$createAt$$! as number) < captchaDuration) {
@ -2881,10 +2883,8 @@ export async function sendCaptchaByMobile<ED extends EntityDict>(
},
{}
);
code = await getCode();
} else {
code = await getCode();
}
const { code, captchaId } = await getCode();
if (mockSend) {
closeRootMode();
return `验证码[${code}]已创建`;
@ -2904,6 +2904,20 @@ export async function sendCaptchaByMobile<ED extends EntityDict>(
if (result.success) {
return '验证码已发送';
}
await context.operate(
'captcha',
{
id: await generateNewIdAsync(),
action: 'update',
data: {
expired: true
},
filter: {
id: captchaId!
}
},
{}
);
console.error('短信发送失败,原因:\n', result?.res);
return '验证码发送失败';
}
@ -3013,10 +3027,6 @@ export async function sendCaptchaByEmail<ED extends EntityDict>(
const getCode = async () => {
let code: string;
// code = Math.floor(Math.random() * Math.random() * Math.pow(10, digit)).toString();
// while (code.length < digit) {
// code += '0';
// }
code = Array.from({ length: digit }, () => Math.floor(Math.random() * 10)).join('');
const id = await generateNewIdAsync();
const applicationId = context.getApplication()?.id!;
@ -3042,10 +3052,12 @@ export async function sendCaptchaByEmail<ED extends EntityDict>(
dontCollect: true,
}
);
return code;
return {
code,
captchaId: id
};
}
let code = captcha?.code!;
if (captcha) {
const captchaDuration = process.env.NODE_ENV === 'development' ? 10 * 1000 : 60 * 1000;
if (now - (captcha.$$createAt$$! as number) < captchaDuration) {
@ -3065,11 +3077,10 @@ export async function sendCaptchaByEmail<ED extends EntityDict>(
}
},
{}
);
code = await getCode();
} else {
code = await getCode();
);
}
const { code, captchaId } = await getCode();
if (mockSend) {
closeRootMode();
return `验证码[${code}]已创建`;
@ -3087,6 +3098,20 @@ export async function sendCaptchaByEmail<ED extends EntityDict>(
if (result.success) {
return '验证码已发送';
}
await context.operate(
'captcha',
{
id: await generateNewIdAsync(),
action: 'update',
data: {
expired: true
},
filter: {
id: captchaId!
}
},
{}
);
console.error('邮件发送失败,原因:\n', result?.error);
return '验证码发送失败';
}