123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Elton
- * Date: 2019/4/12
- * Time: 17:46
- */
- namespace app\common\service;
- use fast\Http;
- use think\Config;
- class ShortMessageService
- {
- const CODE_ERROR = 0;
- const CODE_SUCCESS = 1;
- const SEND_SUCCESS_CODE = 1000;
- protected static $instance;
- public static function instance(){
- if (is_null(self::$instance)) {
- self::$instance = new static();
- }
- return self::$instance;
- }
- /**
- * 发送单条短信
- * @param $content 短信内容
- * @param $mobi 手机号码
- * @return bool
- * @throws \think\exception\DbException
- */
- public function singleMsg($content, $mobi)
- {
- $content = trim($content);
- if (empty($content)) {
- return json_encode(['code'=> self::CODE_ERROR, 'msg'=>'发送内容不能为空']);
- }
- if (empty($mobi) || !preg_match("/^1[345789]\d{9}$/", $mobi)) {
- return json_encode(['code'=> self::CODE_ERROR, 'msg'=>'手机格式错误']);
- }
- $data = Http::post(
- Config::get('site.shortsms_url'),
- [
- 'sid' => Config::get('site.shortsms_sid'),
- 'mobi' => $mobi,
- 'sign' => md5(Config::get('site.shortsms_cpid') . Config::get('site.shortsms_key')),
- 'msg' => urlencode(base64_encode($content))
- ]
- );
- LogService::info('[ Shortmessage ] [ singleMsg ]' . $data);
- $ret = explode('|', $data);
- if ($ret[0] == self::SEND_SUCCESS_CODE) {
- LogService::info('[ Shortmessage ] [ singleMsg ] [ Success ]' . $content);
- return json_encode(['code' => self::CODE_SUCCESS, 'msg' => '发送成功']);
- } else {
- LogService::error('[ Shortmessage ] [ singleMsg ] [ Fail ]' . $data);
- LogService::error('[ Shortmessage ] [ singleMsg ] [ Fail ]' . $content);
- return json_encode(['code' => self::CODE_ERROR, 'msg' => '发送失败']);
- }
- }
- /**
- * 发送单条短信
- * @param $content 短信内容
- * @param $mobi 手机号码
- * @return bool
- * @throws \think\exception\DbException
- */
- public function singleShortMsg($content, $mobi)
- {
- $content = trim($content);
- if (empty($content)) {
- return ['code'=> self::CODE_ERROR, 'msg'=>'发送内容不能为空'];
- }
- if (empty($mobi) || !preg_match("/^1[345789]\d{9}$/", $mobi)) {
- return ['code'=> self::CODE_ERROR, 'msg'=>'手机格式错误'];
- }
- $data = Http::post(
- Config::get('site.shortsms_url'),
- [
- 'sid' => Config::get('site.shortsms_sid'),
- 'mobi' => $mobi,
- 'sign' => md5(Config::get('site.shortsms_cpid') . Config::get('site.shortsms_key')),
- 'msg' => urlencode(base64_encode($content))
- ]
- );
- LogService::info('[ Shortmessage ] [ singleMsg ]' . $data);
- $ret = explode('|', $data);
- if ($ret[0] == self::SEND_SUCCESS_CODE) {
- LogService::info('[ Shortmessage ] [ singleMsg ] [ Success ]' . $content);
- return ['code' => self::CODE_SUCCESS, 'msg' => '发送成功'];
- } else {
- LogService::error('[ Shortmessage ] [ singleMsg ] [ Fail ]' . $content);
- return ['code' => self::CODE_ERROR, 'msg' => '发送失败'];
- }
- }
- /**
- * 生成短信验证码
- * @param int $length
- * @return int
- */
- public function generateSMSCode($length = 4)
- {
- $min = pow(10, ($length - 1));
- $max = pow(10, $length) -1 ;
- return rand($min, $max);
- }
- }
|