<?php
namespace app\store\service\wxapp;
use app\store\model\User as UserModel;
use app\store\model\Wxapp as WxappModel;
use app\common\library\wechat\WxTplMsg;
use app\common\service\wxapp\FormId as FormIdService;
class Message
{
const SEPARATOR = ',';
private $stateSet = [];
private $WxTplMsg;
public function __construct()
{
$config = WxappModel::getWxappCache();
$this->WxTplMsg = new WxTplMsg($config['app_id'], $config['app_secret']);
}
public function send($data)
{
$userIdsArr = !strstr($data['user_id'], self::SEPARATOR) ? [$data['user_id']]
: explode(self::SEPARATOR, $data['user_id']);
foreach ($userIdsArr as $userId) {
$this->sendTemplateMessage($userId, $data);
}
return true;
}
private function sendTemplateMessage($userId, $data)
{
if (!$formId = FormIdService::getAvailableFormId($userId)) {
$this->recordState("用户[ID:$userId] 无可用formid,无法发送模板消息!");
return false;
}
$user = UserModel::detail($data['user_id']);
$params = [
'touser' => $user['open_id'],
'template_id' => $data['template_id'],
'page' => $data['page'],
'form_id' => $formId['form_id'],
'data' => []
];
foreach (array_filter($data['content']) as $key => $item) {
$params['data']['keyword' . ($key + 1)] = $item;
}
if ($status = $this->WxTplMsg->sendTemplateMessage($params)) {
$this->recordState("用户[ID:$userId] 发送成功!");
}
FormIdService::setIsUsed($formId['id']);
return $status;
}
public function getStateSet()
{
return $this->stateSet;
}
private function recordState($content)
{
$this->stateSet[] = $content;
}
}