| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- <?php
- namespace app\extra\service\basic;
- use app\extra\basic\Service;
- use app\model\system\SystemUser;
- use Hzdad\Codecheck\Codecheck;
- use Overtrue\EasySms\EasySms;
- use support\think\Cache;
- class SmsService extends Service
- {
- /**
- * 发送短信
- * @param int $mobile
- * @param string $scene
- * @param bool $empty true 验证手机号是否注册
- * @return array
- */
- public function sendSceneSms(int $mobile,string $scene = "login",bool $empty = false): array
- {
- try {
- $mobileUser =(new SystemUser)->where("mobile",$mobile)->findOrEmpty();
- if (!$empty && $mobileUser->isEmpty()) return [0,trans("error.mobile-empty")];
- if ($empty && !$mobileUser->isEmpty()) return [0,trans("error.mobile-exist")];
- $cacheCode = Cache::get(KeyService::smsKey($mobile,$scene));
- if (!empty($cacheCode)) return [0,trans("error.sms-repeat")];
- $code = (new Codecheck)->mobile($mobile)->scene($scene)->create();
- if (!in_array($mobile,$this->mobileWhite)) {
- $smsConfig = $this->smsConfig();
- $resp = (new EasySms($smsConfig['config']))->send($mobile,[
- "template" => $smsConfig['template'],
- "data" => [
- "code" => $code
- ]
- ]);
- if (!isset($resp[$smsConfig['config']['default']['gateways']]['status'])) return [0,trans("error.sms")];
- $msg = trans("success.sms",['%mobile%' => hide_mobile($mobile)]);
- } else {
- $msg = "当前号码为测试号码,验证码为{$code}";
- }
- Cache::set(KeyService::smsKey($mobile,$scene),$code,60);
- return [1,$msg];
- } catch (\Throwable $throwable) {
- echo $throwable->getMessage()."\n";
- echo $throwable->getFile()."\n";
- echo $throwable->getLine()."\n";
- return [0,$throwable->getMessage()];
- }
- }
- }
|