2025-08-01 11:39:06 +08:00

80 lines
2.4 KiB
PHP

<?php
namespace addons\notice\library\server;
use addons\notice\library\ToData;
use hnh\custom\Log;
class Sms
{
// 获取通知数据
public function getNoticeData($event,$template, $params)
{
// 接收信息
$toData = [
'to_id' => [],
'email' => [],
// 默认字段
'default_field' => [],
// 接受消息手机号
'mobile' => [],
];
$toData = ToData::get($event, $template, $params);
$toData['mobile'] = $toData['mobile'] ?? [];
// 默认字段
$params = array_merge($params, $toData['default_field']);
$content = self::formatParams($template['content'], $params);
$templateData = $template['mptemplate_json'];
$templateData = json_decode($templateData, true) ?? [];
foreach ($templateData as $k=>$v) {
$v = self::formatParams($v, $params);
$templateData[$k] = $v;
}
$to_id = $toData['to_id'];
try{
// 发送短信通知
$is = \app\common\library\Sms::notice(implode(',', $toData['mobile']), $templateData, $template['mptemplate_id']);
if (!$is) {
// 记录日志
$logData = [
'name' => $event['name'].'-短信发送失败',
'event' => $event->toArray(),
'params' => $params,
'error' => '发送失败'
];
Log::error($logData);
}
}catch (\Exception $e) {
// 记录日志
$logData = [
'name' => $event['name'].'-短信发送失败',
'event' => $event->toArray(),
'params' => $params,
];
Log::catch('邮件发送失败', $e, $logData);
}
return [
'to_id' => $to_id,
'content' => $content,
];
}
// 格式化模板数据
public static function formatParams($content, $params) {
if (preg_match_all("/(?<=({{)).+?(?=}})/", $content, $matches)) {
foreach ($matches[0] as $k => $field) {
$fieldVal = $params[$field] ?? null;
if ($fieldVal !== null) {
$content = str_replace("{{" . $field . "}}", $fieldVal, $content);
}
}
}
return $content;
}
}