FastMovieAI AI短剧创作平台 二开基线
- 源码: xhadmincn/FastMovieAI (Apache 2.0) - 二开: Docker部署, Swoole改Select, route.php修复, 补update/VERSION - vendor/示例资源已gitignore
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace app\expose\helper;
|
||||
|
||||
use app\expose\enum\State;
|
||||
use app\expose\template\email\Vcode as EmailVcode;
|
||||
use app\expose\template\sms\Vcode as SmsVcode;
|
||||
use app\expose\utils\Email;
|
||||
use app\expose\utils\Sms;
|
||||
use app\expose\utils\Str;
|
||||
use support\Log;
|
||||
|
||||
class Vcode
|
||||
{
|
||||
public static function check($username, $vcode, $scene, $token = null)
|
||||
{
|
||||
$request = request();
|
||||
if (!empty($token)) {
|
||||
$request->sessionId($token);
|
||||
}
|
||||
$vcodeData = $request->session()->get('vcode:' . $scene . ':' . $username);
|
||||
if (empty($vcodeData)) {
|
||||
throw new \Exception('验证码不存在');
|
||||
}
|
||||
if ($vcodeData['vcode'] != $vcode) {
|
||||
throw new \Exception('验证码错误');
|
||||
}
|
||||
if ($vcodeData['expire'] < time()) {
|
||||
throw new \Exception('验证码已过期');
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public static function send($username, $scene, $token = null)
|
||||
{
|
||||
$request = request();
|
||||
if (!empty($token)) {
|
||||
$request->sessionId($token);
|
||||
}
|
||||
$vcode = Str::random(6, 1);
|
||||
if (filter_var($username, FILTER_VALIDATE_EMAIL)) {
|
||||
$Email = new Email;
|
||||
$Email->toemail = $username;
|
||||
$Email->setTemplate(EmailVcode::class);
|
||||
$Email->setData(['vcode' => $vcode]);
|
||||
$Email->send();
|
||||
} else {
|
||||
$request->session()->set('vcode:' . $scene . ':' . $username, [
|
||||
'vcode' => $vcode,
|
||||
'expire' => time() + 60 * 5
|
||||
]);
|
||||
$config = new ConfigGroup('sms', '');
|
||||
foreach ($config['channels'] as $channel) {
|
||||
$item = $config[$channel];
|
||||
if ($item['enable'] == State::NO['value']) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
if (empty($item['vcode_template_' . $scene])) {
|
||||
continue;
|
||||
}
|
||||
$SmsVcode = new SmsVcode();
|
||||
$SmsVcode->channel = $channel;
|
||||
$SmsVcode->config = $item;
|
||||
$SmsVcode->template_code = $item['vcode_template_' . $scene];
|
||||
$Sms = new Sms;
|
||||
$Sms->mobile = $username;
|
||||
$Sms->setTemplate($SmsVcode);
|
||||
$Sms->setData(['code' => $vcode]);
|
||||
$Sms->send();
|
||||
return true;
|
||||
} catch (\Throwable $th) {
|
||||
Log::error("发送短信失败:" . $th->getMessage(), $th->getTrace());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
throw new \Exception('发送失败');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user