123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- <?php
- // +----------------------------------------------------------------------
- // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
- // +----------------------------------------------------------------------
- // | Author: CRMEB Team <admin@crmeb.com>
- // +----------------------------------------------------------------------
- namespace crmeb\services\sms\storage;
- use crmeb\basic\BaseSmss;
- use crmeb\services\HttpService;
- use think\exception\ValidateException;
- use think\facade\Config;
- /**
- * Class Yunxin
- * @package crmeb\services\sms\storage
- */
- class Yunxin extends BaseSmss
- {
- /**
- * 开通
- */
- const SMS_OPEN = 'sms_v2/open';
- /**
- * 修改签名
- */
- const SMS_MODIFY = 'sms_v2/modify';
- /**
- * 用户信息
- */
- const SMS_INFO = 'sms_v2/info';
- /**
- * 发送短信
- */
- const SMS_SEND = 'sms_v2/send';
- /**
- * 短信模板
- */
- const SMS_TEMPS = 'sms_v2/temps';
- /**
- * 申请模板
- */
- const SMS_APPLY = 'sms_v2/apply';
- /**
- * 模板记录
- */
- const SMS_APPLYS = 'sms_v2/applys';
- /**
- * 发送记录
- */
- const SMS_RECORD = 'sms_v2/record';
- /**
- * 获取短信发送状态
- */
- const SMS_STSTUS = 'sms/status';
- /**
- * 短信签名
- * @var string
- */
- protected $sign = '';
- /**
- * 模板id
- * @var array
- */
- protected $templateIds = [];
- /** 初始化
- * @param array $config
- */
- protected function initialize(array $config = [])
- {
- parent::initialize($config);
- $this->templateIds = Config::get($this->configFile . '.stores.' . $this->name . '.template_id', []);
- }
- /**
- * 提取模板code
- * @param string $templateId
- * @return null
- */
- protected function getTemplateCode(string $templateId)
- {
- return $this->templateIds[$templateId] ?? null;
- }
- /**
- * 设置签名
- * @param $sign
- * @return $this
- */
- public function setSign($sign)
- {
- $this->sign = $sign;
- return $this;
- }
- /**
- * 获取验证码
- * @param string $phone
- * @return array|mixed
- */
- public function captcha(string $phone)
- {
- $params = [
- 'phone' => $phone
- ];
- return $this->accessToken->httpRequest('sms/captcha', $params, 'GET', false);
- }
- /**
- * 开通服务
- * @return array|bool|mixed
- */
- public function open()
- {
- $param = [
- 'sign' => $this->sign
- ];
- return $this->accessToken->httpRequest(self::SMS_OPEN, $param);
- }
- /**
- * 修改签名
- * @param string $sign
- * @return array|bool|mixed
- */
- public function modify(string $sign = null, string $phone, string $code)
- {
- $param = [
- 'sign' => $sign ?: $this->sign,
- 'verify_code' => $code,
- 'phone' => $phone
- ];
- return $this->accessToken->httpRequest(self::SMS_MODIFY, $param);
- }
- /**
- * 获取用户信息
- * @return array|bool|mixed
- */
- public function info()
- {
- return $this->accessToken->httpRequest(self::SMS_INFO, []);
- }
- /**
- * 获取短信模板
- * @param int $page
- * @param int $limit
- * @param int $type
- * @return array|mixed
- */
- public function temps(int $page = 0, int $limit = 10, int $type = 1)
- {
- $param = [
- 'page' => $page,
- 'limit' => $limit,
- 'temp_type' => $type
- ];
- return $this->accessToken->httpRequest(self::SMS_TEMPS, $param);
- }
- /**
- * 申请模版
- * @param $title
- * @param $content
- * @param $type
- * @return array|bool|mixed
- */
- public function apply(string $title, string $content, int $type)
- {
- $param = [
- 'title' => $title,
- 'content' => $content,
- 'type' => $type
- ];
- return $this->accessToken->httpRequest(self::SMS_APPLY, $param);
- }
- /**
- * 申请记录
- * @param $temp_type
- * @param int $page
- * @param int $limit
- * @return array|bool|mixed
- */
- public function applys(int $tempType, int $page, int $limit)
- {
- $param = [
- 'temp_type' => $tempType,
- 'page' => $page,
- 'limit' => $limit
- ];
- return $this->accessToken->httpRequest(self::SMS_APPLYS, $param);
- }
- /**
- * 发送短信
- * @param $phone
- * @param $template
- * @param $param
- * @return bool|string
- */
- public function send(string $phone, string $templateId, array $data = [])
- {
- if (!$phone) {
- throw new ValidateException('手机号不能为空');
- }
- $param = [
- 'phone' => $phone,
- 'host' => request()->host()
- ];
- $param['temp_id'] = $this->getTemplateCode($templateId);
- if (is_null($param['temp_id'])) {
- throw new ValidateException('模版ID不存在');
- }
- $param['param'] = json_encode($data);
- return $this->accessToken->httpRequest(self::SMS_SEND, $param);
- }
- /**
- * 发送记录
- * @param $record_id
- * @return array|bool|mixed
- */
- public function record($record_id)
- {
- $param = [
- 'record_id' => $record_id
- ];
- return $this->accessToken->httpRequest(self::SMS_RECORD, $param);
- }
- /**
- * 获取发送状态
- * @param array $recordIds
- * @return array|mixed
- */
- public function getStatus(array $recordIds)
- {
- $data['record_id'] = json_encode($recordIds);
- return $this->accessToken->httpRequest(self::SMS_STSTUS, $data, 'POST', false);
- }
- }
|