SmsApi.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: leo
  5. * Date: 2018/5/22
  6. * Time: 上午9:39
  7. */
  8. namespace common\libs\api\sms;
  9. use common\helpers\Cache;
  10. use common\helpers\ocr\baidu\AipOcr;
  11. use common\helpers\Tool;
  12. use common\libs\api\sms\meilian\SmsSend;
  13. use yii\base\BaseObject;
  14. use yii\base\StaticInstanceTrait;
  15. class SmsApi extends BaseObject {
  16. use StaticInstanceTrait;
  17. const TYPE_MEILIAN = 'meilian';
  18. const MEILIAN_CONFIGS = [
  19. 'username' => 'string',
  20. 'password' => 'string',
  21. 'apikey' => 'string',
  22. ];
  23. private $_type;
  24. private $_typeClass;
  25. private $_smsApiObj;
  26. private $_errorCode;
  27. private $_error = [];
  28. /**
  29. * 初始化
  30. * @throws \yii\base\InvalidConfigException
  31. */
  32. public function init() {
  33. parent::init();
  34. // 获取当前使用的ocr识别接口
  35. $smsApiConfig = Cache::getSmsApiConfig();
  36. $this->_type = $smsApiConfig['API_NAME'];
  37. $this->_typeClass = null;
  38. $apiConfig = [];
  39. if ($smsApiConfig['API_NAME'] == self::TYPE_MEILIAN) {
  40. $this->_typeClass = SmsSend::class;
  41. foreach ($smsApiConfig['CONFIG'] as $value) {
  42. $apiConfig[] = $value;
  43. }
  44. }
  45. $this->_errorCode = require \Yii::getAlias('@common/libs/api/sms/meilian/') . 'errorCode.php';
  46. // 创建短信接口对象
  47. $this->_smsApiObj = \Yii::createObject($this->_typeClass, $apiConfig);
  48. }
  49. /**
  50. * 发送短信
  51. * @param array $params
  52. * [
  53. * 'mobiles' => '13903351111,13903352222',
  54. * 'content' => '测试短息,您好',
  55. * ]
  56. * @return bool
  57. */
  58. public function send(array $params = []) {
  59. if(!$this->_smsApiObj->send($params)){
  60. $this->_error[] = $this->_smsApiObj->getError();
  61. return false;
  62. }
  63. return true;
  64. }
  65. /**
  66. * 异步协程发送
  67. * @param array $params
  68. */
  69. public function goSend(array $params = []) {
  70. go(function() use($params){
  71. $this->send($params);
  72. });
  73. }
  74. /**
  75. * 获取错误
  76. * @return mixed
  77. */
  78. public function getError(){
  79. return $this->_error;
  80. }
  81. /**
  82. * 清空错误
  83. */
  84. public function clearError(){
  85. $this->_error = [];
  86. }
  87. /**
  88. * 获取api设置的字段
  89. * @param $apiName
  90. * @return array
  91. */
  92. public static function apiConfigs($apiName) {
  93. $allApiModelData = \common\models\SmsApi::getAllData();
  94. $result = [];
  95. if ($apiName == self::TYPE_MEILIAN) {
  96. $result = [
  97. 'username' => ['TITLE' => 'username', 'CONFIG_NAME' => 'username', 'INPUT_TYPE' => 1, 'OPTIONS' => null, 'VALUE' => $allApiModelData[self::TYPE_MEILIAN]['CONFIG']['username'] ?? null],
  98. 'password' => ['TITLE' => 'password', 'CONFIG_NAME' => 'password', 'INPUT_TYPE' => 1, 'OPTIONS' => null, 'VALUE' => $allApiModelData[self::TYPE_MEILIAN]['CONFIG']['password'] ?? null],
  99. 'apikey' => ['TITLE' => 'apikey', 'CONFIG_NAME' => 'apikey', 'INPUT_TYPE' => 1, 'OPTIONS' => null, 'VALUE' => $allApiModelData[self::TYPE_MEILIAN]['CONFIG']['apikey'] ?? null],
  100. ];
  101. }
  102. return $result;
  103. }
  104. }