229 lines
7.4 KiB
PHP
229 lines
7.4 KiB
PHP
![]() |
<?php
|
|||
|
/**
|
|||
|
* tpshop
|
|||
|
* ============================================================================
|
|||
|
* 版权所有 2015-2027 深圳搜豹网络科技有限公司,并保留所有权利。
|
|||
|
* 网站地址: http://www.tp-shop.cn
|
|||
|
* ----------------------------------------------------------------------------
|
|||
|
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
|
|||
|
* 不允许对程序代码以任何形式任何目的的再发布。
|
|||
|
* ============================================================================
|
|||
|
* Author: IT宇宙人
|
|||
|
* Date: 2015-09-09
|
|||
|
*/
|
|||
|
|
|||
|
namespace app\common\logic;
|
|||
|
|
|||
|
use think\Model;
|
|||
|
use think\db;
|
|||
|
|
|||
|
/**
|
|||
|
* 消息基础
|
|||
|
* Class CatsLogic
|
|||
|
* @package admin\Logic
|
|||
|
*/
|
|||
|
class MessageBase extends Model
|
|||
|
{
|
|||
|
protected $message;//消息模型
|
|||
|
|
|||
|
public function __construct($message=[])
|
|||
|
{
|
|||
|
parent::__construct();
|
|||
|
$this->message = $message;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 重新设置发送的消息内容
|
|||
|
* @param array $send_data
|
|||
|
*/
|
|||
|
public function setSendData($send_data=[])
|
|||
|
{
|
|||
|
if (!empty($send_data)) {
|
|||
|
$this->message = array_merge($this->message, $send_data);
|
|||
|
if(!empty($send_data['users'])){
|
|||
|
$this->message['users'] = $send_data['users'];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 发消息,
|
|||
|
*/
|
|||
|
public function sendMessage()
|
|||
|
{
|
|||
|
$data = $this->message;
|
|||
|
$arr = db('user_msg_tpl')->where('mmt_code', $data['mmt_code'])->find();
|
|||
|
if (isset($data['mmt_message_switch']))
|
|||
|
$arr['mmt_message_switch'] = $data['mmt_message_switch'];
|
|||
|
if (isset($data['mmt_short_switch']))
|
|||
|
$arr['mmt_short_switch'] = $data['mmt_short_switch'];
|
|||
|
if (isset($data['mmt_mail_switch']))
|
|||
|
$arr['mmt_mail_switch'] = $data['mmt_mail_switch'];
|
|||
|
|
|||
|
// 站内信
|
|||
|
if ($arr['mmt_message_switch'] == 1) {
|
|||
|
if ($data['mmt_code'] == $arr['mmt_code'] && empty($data['message_content'])) {
|
|||
|
$data['message_content'] = $this->getContent($data['message_val'], $arr['mmt_message_content']);
|
|||
|
}
|
|||
|
if ($data['mmt_code'] == $arr['mmt_code'] && empty($data['message_title'])) {
|
|||
|
$data['message_title'] = $this->getContent($data['message_val'], $arr['mmt_name']);
|
|||
|
}
|
|||
|
if (!isset($data['send_time'])) {
|
|||
|
$data['send_time'] = time();
|
|||
|
}
|
|||
|
$this->message = $data;
|
|||
|
if (isset($this->message['message_id'])){
|
|||
|
unset($this->message['message_id']);
|
|||
|
}
|
|||
|
$this->addMessage();
|
|||
|
$this->sendUserMessage();
|
|||
|
}
|
|||
|
// 短信
|
|||
|
if ($arr['mmt_short_switch'] == 1) {
|
|||
|
$this->sendShort($data, $arr);
|
|||
|
}
|
|||
|
// 邮件
|
|||
|
if ($arr['mmt_mail_switch'] == 1) {
|
|||
|
$this->sendMail($data, $arr);
|
|||
|
}
|
|||
|
}
|
|||
|
/**
|
|||
|
* 添加一条消息,不同类型消息表不同
|
|||
|
*/
|
|||
|
public function addMessage(){
|
|||
|
db('message_notice')->insert($this->message);
|
|||
|
$message_id = db('message_notice')->getLastInsID();
|
|||
|
if($message_id) {
|
|||
|
$this->message['message_id'] = $message_id;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 发短信
|
|||
|
* @param $data |发送内容
|
|||
|
* @param $arr |模板内容
|
|||
|
* @return bool
|
|||
|
*/
|
|||
|
public function sendShort($data, $arr)
|
|||
|
{
|
|||
|
if (empty($data['sender'])) {
|
|||
|
return false;
|
|||
|
}
|
|||
|
$msg = $this->getContent($data['message_val'], $arr['mmt_short_content']);
|
|||
|
$params = array_merge($data, $arr);
|
|||
|
//提取发送短信内容
|
|||
|
$params['msg'] = $msg;
|
|||
|
|
|||
|
$code = !empty($params['code']) ? $params['code'] : false;
|
|||
|
$phone = !empty($params['phone']) ? $params['phone'] : false;
|
|||
|
$order_id = !empty($params['order_id']) ? $params['order_id'] : false;
|
|||
|
$user_name = !empty($params['user_name']) ? $params['user_name'] : false;
|
|||
|
$consignee = !empty($params['consignee']) ? $params['consignee'] : false;
|
|||
|
|
|||
|
$smsParams = [ // 短信模板中字段的值
|
|||
|
1 => ['code'=>$code], //1. 用户注册 (验证码类型短信只能有一个变量)
|
|||
|
2 => ['code'=>$code], //2. 用户找回密码 (验证码类型短信只能有一个变量)
|
|||
|
3 => ['consignee'=>$consignee ,'phone'=>$phone], //3. 客户下单
|
|||
|
4 => ['orderId'=>$order_id], //4. 客户支付
|
|||
|
5 => ['userName'=>$user_name, 'consignee'=>$consignee], //5. 商家发货
|
|||
|
6 => ['code'=>$code],
|
|||
|
'arrival_notice' => ['consignee'=>$consignee ,'phone'=>$phone],
|
|||
|
'4163' => ['consignee'=>$consignee ,'phone'=>$phone],
|
|||
|
];
|
|||
|
|
|||
|
if (isset($params['scene'])) {
|
|||
|
$params['mmt_code'] = $params['scene'];
|
|||
|
}
|
|||
|
$scene = $params['mmt_code']; // 为兼容以前,把sms_log表的scene字段改为varchar 50长度
|
|||
|
$params['smsParams'] = $smsParams[$scene];
|
|||
|
$smsLogic = new SmsLogic();
|
|||
|
if (is_array($data['sender'])) {
|
|||
|
foreach ($data['sender'] as $sender) {
|
|||
|
$params['sender'] = $sender;
|
|||
|
$smsLogic->sendMsg($params);
|
|||
|
}
|
|||
|
}else{
|
|||
|
$smsLogic->sendMsg($params);
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 发邮件
|
|||
|
* @param $data |发送内容
|
|||
|
* @param $arr |模板内容
|
|||
|
* @return bool
|
|||
|
*/
|
|||
|
public function sendMail($data, $arr)
|
|||
|
{
|
|||
|
if (empty($data['email'])) {
|
|||
|
return false;
|
|||
|
}
|
|||
|
$subject = $this->getContent($data['message_val'], $arr['mmt_mail_subject']);
|
|||
|
$content = $this->getContent($data['message_val'], $arr['mmt_mail_content']);
|
|||
|
return send_email($data['email'], $subject, htmlspecialchars_decode($content));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 把消息发送给用户,站内信通用
|
|||
|
*/
|
|||
|
protected function sendUserMessage()
|
|||
|
{
|
|||
|
$data = $this->message;
|
|||
|
if (!empty($data['users']) && !empty($data['message_id'])) {
|
|||
|
foreach ($data['users'] as $key) {
|
|||
|
db('user_message')->insert(array('user_id' => $key, 'message_id' => $data['message_id'], 'category' => $data['category']));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 模板内容处理
|
|||
|
* @param $data |发送内容变量值
|
|||
|
* @param $str |模板内容支持变量 {$name} or ${name}
|
|||
|
* @return mixed
|
|||
|
*/
|
|||
|
protected function getContent($data, $str)
|
|||
|
{
|
|||
|
foreach ($data as $k => $v) {
|
|||
|
$str = str_replace('{$' . $k . '}', $v, $str);
|
|||
|
$str = str_replace('${' . $k . '}', $v, $str);
|
|||
|
}
|
|||
|
return $str;
|
|||
|
}
|
|||
|
/**
|
|||
|
* 必填
|
|||
|
* @param $value
|
|||
|
*/
|
|||
|
public function setMessageTitle($value){
|
|||
|
$this->message['message_title'] = $value;
|
|||
|
}
|
|||
|
/**
|
|||
|
* 可空
|
|||
|
* @param $value
|
|||
|
*/
|
|||
|
public function setMessageContent($value){
|
|||
|
$this->message['message_content'] = $value;
|
|||
|
}
|
|||
|
/**
|
|||
|
* 必填
|
|||
|
* @param $value
|
|||
|
*/
|
|||
|
public function setSendTime($value){
|
|||
|
$this->message['send_time'] = $value;
|
|||
|
}
|
|||
|
/**
|
|||
|
* 向用户发消息,可以空
|
|||
|
* @param $array | [1,2,3]
|
|||
|
*/
|
|||
|
public function setUsers($array){
|
|||
|
$this->message['users'] = $array;
|
|||
|
}
|
|||
|
/**
|
|||
|
* 模板变量名和值,可以空
|
|||
|
* @param $array |['name'=>'value']
|
|||
|
*/
|
|||
|
public function setMessageVal($array){
|
|||
|
$this->message['message_val'] = $array;
|
|||
|
}
|
|||
|
}
|