123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <?php
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- namespace app\common\logic;
-
- use app\common\basics\Logic;
- use app\common\enum\NoticeEnum;
- use app\common\model\SmsLog;
-
-
- class SmsLogic extends Logic
- {
- protected static $expire_time = 300;
- protected static $check_num = 5;
-
-
-
-
- public static function send($mobile, $scene, $user_id = 0)
- {
- try {
- $code = create_sms_code(4);
- $send_data = [
- 'scene' => NoticeEnum::SMS_SCENE[$scene],
- 'mobile' => $mobile,
- 'params' => ['code' => $code]
- ];
-
- if (!empty($user_id)) {
- $send_data['user_id'] = $user_id;
- }
- $res = event('Notice', $send_data);
- if (false === $res) {
- throw new \Exception('发送失败');
- }
- return true;
- } catch (\Exception $e) {
- return $e->getMessage();
- }
- }
-
-
-
- public static function check($message_key, $mobile, $code = 0)
- {
- $log = SmsLog::where([
- 'mobile' => $mobile,
- 'message_key' => $message_key,
- 'is_verify' => 0
- ])->order('id desc')->find();
-
- if (empty($log)) {
- self::$error = '验证码错误';
- return false;
- }
-
- $diff_time = time() - ($log->getData('create_time'));
-
- if ($diff_time < self::$expire_time && $log['check_num'] <= self::$check_num) {
- $check_num = $log['check_num'] + 1;
- if ($log['code'] == $code) {
- SmsLog::where(['id' => $log['id']])->update([
- 'is_verify' => 1,
- 'check_num' => $check_num,
- 'update_time' => time()
- ]);
- return true;
- }
- SmsLog::where(['id' => $log['id']])->update([
- 'check_num' => $check_num,
- 'update_time' => time()
- ]);
- self::$error = '验证码错误!';
- return false;
- }
-
- self::$error = '验证码错误或失败次数过多';
- return false;
- }
- }
|