Sms.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 山西牛酷信息科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com.cn
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace app\model\message;
  13. use app\model\BaseModel;
  14. use overtrue\EasySms\Strategies\OrderStrategy;
  15. /**
  16. * 短信管理类
  17. */
  18. class Sms extends BaseModel
  19. {
  20. public $config = [
  21. // HTTP 请求的超时时间(秒)
  22. 'timeout' => 5.0,
  23. // 默认发送配置
  24. 'default' => [
  25. // 网关调用策略,默认:顺序调用
  26. 'strategy' => OrderStrategy::class,
  27. 'gateways' => [],
  28. ],
  29. ];
  30. /********************************************************************* 短信类型 start *********************************************************************************/
  31. /**
  32. * 获取短信类型
  33. * @return array
  34. */
  35. public function getSmsType(){
  36. $res = event('SmsType', []);
  37. return $this->success($res);
  38. }
  39. /**
  40. * 获取短信编辑地址
  41. * @return array
  42. */
  43. public function doEditSmsMessage(){
  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. $res = model("message_sms_records")->add($data);
  56. if ($res === false) {
  57. return $this->error('', 'UNKNOW_ERROR');
  58. }
  59. return $res;
  60. }
  61. /**
  62. * 短信记录编辑
  63. * @param $data
  64. * @param $condition
  65. * @return array|int
  66. */
  67. public function editSmsRecords($data, $condition){
  68. $res = model("message_sms_records")->update($data, $condition);
  69. if ($res === false) {
  70. return $this->error('', 'UNKNOW_ERROR');
  71. }
  72. return $res;
  73. }
  74. /*
  75. * 删除短信记录
  76. */
  77. public function deleteSmsRecords($condition){
  78. $res = model("message_sms_records")->delete($condition);
  79. if ($res === false) {
  80. return $this->error('', 'UNKNOW_ERROR');
  81. }
  82. return $res;
  83. }
  84. /**
  85. * 短信记录分页列表
  86. * @param array $condition
  87. * @param int $page
  88. * @param int $page_size
  89. * @param string $order
  90. * @param string $field
  91. * @return array
  92. */
  93. public function getSmsRecordsPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'create_time desc', $field = '*')
  94. {
  95. $list = model('message_sms_records')->pageList($condition, $field, $order, $page, $page_size);
  96. return $this->success($list);
  97. }
  98. /********************************************************************* 短信发送记录 end *********************************************************************************/
  99. /**
  100. * 短信发送
  101. * @param array $param
  102. * @return array|mixed|void
  103. */
  104. public function sendMessage($param = []){
  105. $support_type = $param["support_type"] ?? [];//支持的消息发送方式,优先级最高
  106. //验证是否支持短信发送
  107. if(!empty($support_type) && !in_array("sms", $support_type))
  108. return $this->success();
  109. $message_info = $param["message_info"];
  110. //短信是否开启
  111. if($message_info["sms_is_open"] == 0) return $this->error();
  112. $result = event("SendSms", $param, true);
  113. if(empty($result)){
  114. $result = $this->error([], "EMPTY_SMS_TYPE");
  115. }
  116. //增加短信邮件记录
  117. $status = $result["code"] >= 0 ? 1 : 0;
  118. $send_time = '';
  119. $message_result = "发送成功";
  120. $addon_name = "";
  121. $addon = "";
  122. if($result["code"] >= 0){
  123. $send_time = time();
  124. $addon = $result["data"]["addon"];
  125. $addon_name = $result["data"]["addon_name"];
  126. $return_result = $this->success([], "SMS_SUCCESS");
  127. }else{
  128. $message_result = $result["message"] ?? '';
  129. $return_result = $this->error([], "SMS_FAIL");
  130. }
  131. if(!empty($result["data"])){
  132. $content = $result["data"]["content"] ?? '';
  133. }else{
  134. $content = '';
  135. }
  136. $var_parse = $param["var_parse"];
  137. $records_data = [
  138. "account" => $param["sms_account"],
  139. "status" => $status,
  140. "addon" => $addon,
  141. "addon_name" => $addon_name,
  142. "content" => $content,
  143. "var_parse" => json_encode($var_parse),
  144. "keywords" => $param["keywords"],
  145. "create_time" => time(),
  146. "send_time" => $send_time,
  147. "result" => $message_result,
  148. "keywords_name" => $message_info["title"],
  149. ];
  150. $this->addSmsRecords($records_data);
  151. return $return_result;
  152. }
  153. }