253 lines
9.9 KiB
PHP
253 lines
9.9 KiB
PHP
<?php
|
|
/**
|
|
* ThinkShop商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 成都云之牛科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.cdcloudshop.com
|
|
* =========================================================
|
|
*/
|
|
|
|
namespace addon\system\Wechat\common\model;
|
|
|
|
use app\model\BaseModel;
|
|
|
|
/**
|
|
* 微信公众号模板消息配置
|
|
*/
|
|
class WechatMessage extends BaseModel
|
|
{
|
|
|
|
public $site_model;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->site_model = new Site();
|
|
}
|
|
|
|
/**
|
|
* 发送模板消息
|
|
* @param $data
|
|
*/
|
|
public function send($param)
|
|
{
|
|
$message_model = new Wechat();
|
|
$config_result = $message_model->getWechatConfigInfo($param["site_id"]);
|
|
$config_data = $config_result["data"]["value"];
|
|
$wechat_api = new Weixin('public');
|
|
$wechat_api->initWechatPublicAccount($config_data["appid"], $config_data["appsecret"]);
|
|
$data = array(
|
|
"open_id" => $param["open_id"],
|
|
"template_id" => $param["template_id"],
|
|
"url" => $param["url"],
|
|
"first" => $param["first"],
|
|
"remark" => $param["remark"],
|
|
"keyword" => $param["keyword"]
|
|
);
|
|
$res = $wechat_api->tmplmsgSend($data);
|
|
if ($res->errcode == 0) {
|
|
return $this->success($res);
|
|
} else {
|
|
return $this->error($res);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* 获取所有当前绑定微信公众号的模板消息
|
|
* @param $param
|
|
*/
|
|
public function getWechatTemplateList($param)
|
|
{
|
|
$config_result = $this->getWechatConfigInfo($param["site_id"]);
|
|
$config_data = $config_result["data"]["value"];
|
|
$wechat_api = new Weixin('public');
|
|
$wechat_api->initWechatPublicAccount($config_data["appid"], $config_data["appsecret"]);
|
|
|
|
$res = $wechat_api->getWechatTemplateList();//获取微信消息模板
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* 获取微信模板消息id
|
|
* @param $param
|
|
*/
|
|
public function getMessageTemolateId($param)
|
|
{
|
|
$wechat_model = new Wechat();
|
|
$config_result = $wechat_model->getWechatConfigInfo($param["site_id"]);
|
|
$config_data = $config_result["data"]["value"];
|
|
$wechat_api = new Weixin('public');
|
|
$wechat_api->initWechatPublicAccount($config_data["appid"], $config_data["appsecret"]);
|
|
$keyword = $param["keyword"];//消息管理关键标识
|
|
|
|
//微信消息模板
|
|
$message_model = new Message();
|
|
$message_info_result = $message_model->getSiteWechatMessageInfo(["keyword" => $keyword, "site_id" => $param["site_id"]]);
|
|
$message_info = $message_info_result["data"];
|
|
if (empty($message_info))
|
|
return $this->error([], "当前微信消息模板不存在!");
|
|
|
|
$message_type_model = new MessageModel();
|
|
$message_type_info_result = $message_type_model->getMessageTypeInfo(["keyword" => $keyword]);
|
|
$message_type_info = $message_type_info_result["data"];
|
|
if (empty($message_type_info["wechat_json"]))
|
|
return $this->error([], "当前微信消息模板不存在!");
|
|
|
|
$template_res = $wechat_api->getWechatTemplateId($message_type_info["wechat_json"]["template_no"]);
|
|
if ($template_res->errcode == 0) {
|
|
//设置模板编号
|
|
$res = $message_model->editSiteWechatMessage(["template_id" => $template_res->template_id], ["keyword" => $keyword, "site_id" => $param["site_id"]]);
|
|
return $res;
|
|
} else {
|
|
return $this->error($template_res, $template_res->errmsg);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* 重置模板消息
|
|
* @param $param
|
|
* @return mixed
|
|
*/
|
|
public function resetMessage($param)
|
|
{
|
|
$wechat_model = new Wechat();
|
|
$config_result = $wechat_model->getWechatConfigInfo($param["site_id"]);
|
|
$config_data = $config_result["data"]["value"];
|
|
$wechat_api = new Weixin('public');
|
|
$wechat_api->initWechatPublicAccount($config_data["appid"], $config_data["appsecret"]);
|
|
|
|
$res = $wechat_api->getWechatTemplateList();//获取微信消息模板
|
|
|
|
//申請微信模板消息
|
|
$message_model = new Message();
|
|
$list = $message_model->getSiteWechatMessageList(["site_id" => $param["site_id"]]);
|
|
$res = error();
|
|
if (!empty($list["data"])) {
|
|
foreach ($list["data"] as $k => $v) {
|
|
if (!empty($v["wechat_json"])) {
|
|
$temp_json = json_decode($v["wechat_json"], true);
|
|
if (!empty($temp_json["template_no"])) {
|
|
$res = $wechat_api->getWechatTemplateId($temp_json["template_no"]);
|
|
if ($res->errcode == 0) {
|
|
//设置模板编号
|
|
$message_model->editSiteWechatMessage(["template_id" => $res->template_id], ["keyword" => $v["keyword"], "site_id" => $param["site_id"]]);
|
|
} else {
|
|
return $this->error($res, $res->errmsg);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* 發送模板消息
|
|
* @param $param
|
|
*/
|
|
public function sendMessage($param)
|
|
{
|
|
$message_model = new SiteMessage();
|
|
$type_info = $message_model->getSiteMessageTypeViewInfo(["keyword" => $param["keyword"], "site_id" => $param["site_id"]]);
|
|
if (((!empty($param["support_type"]) && stripos($param["support_type"], "Wechat") !== false) || empty($param["support_type"])) && stripos($type_info["data"]["port"], "Wechat") !== false && $type_info["data"]["wechat_is_open"] == 1) {
|
|
$message_model = new Message();
|
|
$message_info = $message_model->getSiteWechatMessageInfo(["keyword" => $param["keyword"], "site_id" => $param["site_id"]]);
|
|
if (empty($message_info["data"]["template_id"]))
|
|
return $this->error();
|
|
|
|
if (empty($message_info["data"]["headtext"]))
|
|
return $this->error();
|
|
|
|
if (empty($message_info["data"]["bottomtext"]))
|
|
return $this->error();
|
|
|
|
//模板消息字段
|
|
if (empty($param["keyword_json"]))
|
|
return $this->error();
|
|
|
|
//发送的接收用户
|
|
if (empty($param["open_id"]))
|
|
return $this->error();
|
|
|
|
$url = empty($param["url"]) ? '' : $param["url"];
|
|
$data = array(
|
|
"open_id" => $param["open_id"],
|
|
"template_id" => $message_info["data"]["template_id"],
|
|
"url" => $url,
|
|
"first" => $message_info["data"]["headtext"],
|
|
"remark" => $message_info["data"]["bottomtext"],
|
|
"keyword" => $param["keyword_json"],
|
|
"site_id" => $param["site_id"],
|
|
);
|
|
//添加发送记录(未即时发送的记录 发送状态为为发送)
|
|
$message_records_model = new MessageRecords();
|
|
$records_data = array(
|
|
"site_id" => $param["site_id"],
|
|
"open_id" => $param["open_id"],
|
|
"keyword_json" => json_encode($param["keyword_json"]),
|
|
"keyword" => $param["keyword"],
|
|
"url" => $url,
|
|
"create_time" => time()
|
|
);
|
|
//是否即时发送
|
|
if ($type_info["data"]["is_instant"] == 1) {
|
|
$result = $this->send($data);
|
|
if ($result["code"] == 0) {
|
|
$status = 1;
|
|
$records_data["send_time"] = time();
|
|
} else {
|
|
$status = -1;
|
|
$records_data["result"] = $result["data"]->errmsg;
|
|
}
|
|
} else {
|
|
$status = 0;
|
|
}
|
|
$records_data["status"] = $status;
|
|
$result = $message_records_model->addWechatMessageRecords($records_data);
|
|
return $result;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 邮箱消息延时发送
|
|
* @param array $param
|
|
*/
|
|
public function cronMessageSend($param = [])
|
|
{
|
|
$message_records_model = new MessageRecords();
|
|
$message_records_list = $message_records_model->getWechatMessageRecordsList(["status" => 0]);
|
|
if (!empty($message_records_list["data"])) {
|
|
foreach ($message_records_list["data"] as $k => $v) {
|
|
$message_model = new Message();
|
|
$message_info = $message_model->getSiteWechatMessageInfo(["keyword" => $param["keyword"], "site_id" => $param["site_id"]]);
|
|
|
|
$params = array(
|
|
"site_id" => $v["site_id"],
|
|
"open_id" => $v["open_id"],
|
|
"keyword" => json_decode($v["keyword_json"], true),
|
|
"url" => $v["url"],
|
|
"template_id" => $message_info["data"]["template_id"],
|
|
"first" => $message_info["data"]["headtext"],
|
|
"remark" => $message_info["data"]["bottomtext"],
|
|
);
|
|
$result = $this->send($params);
|
|
|
|
$data = array();
|
|
$condition = array(
|
|
"id" => $v["id"],
|
|
"site_id" => $v["site_id"]
|
|
);
|
|
if ($result["code"] == 0) {
|
|
$data["send_time"] = time();
|
|
$data["status"] = 1;
|
|
} else {
|
|
$data["status"] = -1;
|
|
$data["result"] = $result["message"];
|
|
}
|
|
$message_records_model->editWechatMessageRecords($data, $condition);
|
|
}
|
|
}
|
|
}
|
|
} |