Sms.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\model\message;
  11. use app\model\BaseModel;
  12. use overtrue\EasySms\Strategies\OrderStrategy;
  13. /**
  14. * 短信管理类
  15. */
  16. class Sms extends BaseModel
  17. {
  18. public $config = [
  19. // HTTP 请求的超时时间(秒)
  20. 'timeout' => 5.0,
  21. // 默认发送配置
  22. 'default' => [
  23. // 网关调用策略,默认:顺序调用
  24. 'strategy' => OrderStrategy::class,
  25. 'gateways' => [],
  26. ],
  27. ];
  28. /********************************************************************* 短信类型 start *********************************************************************************/
  29. /**
  30. * 获取短信类型
  31. * @return array
  32. */
  33. public function getSmsType($site_id = 1)
  34. {
  35. $res = event('SmsType', ['site_id' => $site_id]);
  36. return $this->success($res);
  37. }
  38. /**
  39. * 获取短信编辑地址
  40. * @return array
  41. */
  42. public function doEditSmsMessage()
  43. {
  44. $res = event('DoEditSmsMessage', []);
  45. return $this->success($res);
  46. }
  47. /********************************************************************* 短信类型 end *********************************************************************************/
  48. /********************************************************************* 短信发送记录 start *********************************************************************************/
  49. /**
  50. * 添加短信记录
  51. * @param $data
  52. * @return array|int|string
  53. */
  54. public function addSmsRecords($data)
  55. {
  56. $res = model("message_sms_records")->add($data);
  57. if ($res === false) {
  58. return $this->error('', 'UNKNOW_ERROR');
  59. }
  60. return $res;
  61. }
  62. /**
  63. * 短信记录编辑
  64. * @param $data
  65. * @param $condition
  66. * @return array|int
  67. */
  68. public function editSmsRecords($data, $condition)
  69. {
  70. $res = model("message_sms_records")->update($data, $condition);
  71. if ($res === false) {
  72. return $this->error('', 'UNKNOW_ERROR');
  73. }
  74. return $res;
  75. }
  76. /*
  77. * 删除短信记录
  78. */
  79. public function deleteSmsRecords($condition)
  80. {
  81. $res = model("message_sms_records")->delete($condition);
  82. if ($res === false) {
  83. return $this->error('', 'UNKNOW_ERROR');
  84. }
  85. return $res;
  86. }
  87. /**
  88. * 短信记录分页列表
  89. * @param array $condition
  90. * @param int $page
  91. * @param int $page_size
  92. * @param string $order
  93. * @param string $field
  94. * @return array
  95. */
  96. public function getSmsRecordsPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'create_time desc', $field = '*')
  97. {
  98. $list = model('message_sms_records')->pageList($condition, $field, $order, $page, $page_size);
  99. return $this->success($list);
  100. }
  101. /********************************************************************* 短信发送记录 end *********************************************************************************/
  102. /**
  103. * 短信发送
  104. * @param array $param
  105. * @return array|mixed|void
  106. */
  107. public function sendMessage($param = [])
  108. {
  109. try {
  110. $support_type = $param["support_type"] ?? [];//支持的消息发送方式,优先级最高
  111. //验证是否支持短信发送
  112. if (!empty($support_type) && !in_array("sms", $support_type))
  113. return $this->success();
  114. $message_info = $param["message_info"];
  115. //短信是否开启
  116. if ($message_info["sms_is_open"] == 0) return $this->error('', '商家未启用该短信');
  117. //手机号是否为空
  118. if (empty($param["sms_account"])) return $this->error('', '手机号不能为空');
  119. $result = event("SendSms", $param, true);
  120. if (empty($result)) {
  121. $result = $this->error([], "EMPTY_SMS_TYPE");
  122. }
  123. //增加短信记录
  124. $status = $result["code"] >= 0 ? 1 : 0;
  125. $send_time = '';
  126. $message_result = "发送成功";
  127. $addon_name = "";
  128. $addon = "";
  129. if ($result["code"] >= 0) {
  130. $send_time = time();
  131. $addon = $result["data"]["addon"];
  132. $addon_name = $result["data"]["addon_name"];
  133. $return_result = $this->success([], "SMS_SUCCESS");
  134. } else {
  135. $message_result = $result["message"] ?? '';
  136. $return_result = $this->error([], $message_result);
  137. }
  138. if (!empty($result["data"])) {
  139. $content = $result["data"]["content"] ?? '';
  140. } else {
  141. $content = '';
  142. }
  143. $var_parse = $param["var_parse"];
  144. $records_data = [
  145. "account" => $param["sms_account"],
  146. "status" => $status,
  147. "addon" => $addon,
  148. "addon_name" => $addon_name,
  149. "content" => $content,
  150. "var_parse" => json_encode($var_parse),
  151. "keywords" => $param["keywords"],
  152. "create_time" => time(),
  153. "send_time" => $send_time,
  154. "result" => $message_result,
  155. "keywords_name" => $message_info["title"],
  156. "site_id" => $param['site_id'],
  157. "sys_uid" => $param['site_info']['sys_uid'] ?? 0,
  158. 'site_name' => $param['site_info']['site_name'] ?? ''
  159. ];
  160. $this->addSmsRecords($records_data);
  161. return $return_result;
  162. } catch (\Exception $e) {
  163. return $this->error('', "SMS_FAIL");
  164. }
  165. }
  166. }