$convertName = [
'type' => '0',
'title' => '恭喜您'.'"' . $model->goodsname . '"商品兑换成功',
'content' => $messageData,
];
$messageUid = explode(',',$username->uid);
$messages = new Messages();
$messages->setDbTableName('{{messages}}', $eid);
$messagesID = $messages->addMessagesXMessagesAssign($eid,$convertName,$messageUid);
$openPlatform = $con->createCommand()->select('platform_flag')->from('{{openapi}}')->where('eid =:eid', ['eid' => $this->eid])->queryScalar();
$platform = ['jpush','wxwork',$openPlatform];
$messageOptions = [
'type' => 'messages',
'eid' => $eid,
'userid' => $messageUid,
'uid' => $messageUid,
'asid' => $messagesID,
'title' => $convertName['title'],
'content' => ArrayHelper::getValue($convertName, 'content', '点击查看详情'),
'url' => LinkUrlHelper::getUrl($eid, 'MESSAGE_LIST', $messagesID),
'jpush' => [
'extras' => ['id' => $messagesID, 'type' => 7, 'eid' => $eid],
'msgType' => 1
],
'uidCount' => count($messageUid),
'useridCount' => count($messageUid),
];
$result = Messages::pushMessage($messageOptions, $eid, join(',', $platform));
MessagesAssign::updateCache($eid);
public function addMessagesXMessagesAssign($eid, $message, $pushUIDs)
{
$sendPushMessage = Yii::app()->db->beginTransaction();
try {
$columns = [
'eid' => $eid,
'type' => 0,
'asid' => 0,
'image' => '',
'uid' => '',
'datetime' => time(),
];
$this->setAttributes($columns);
$this->title = $message['title'];
$this->content = $message['content'];
if(!$this->save())
throw new ErrorException(json_encode($this->getErrors(), JSON_UNESCAPED_UNICODE));
$this->asid = $this->id;
if(!$this->save())
throw new ErrorException(json_encode($this->getErrors(), JSON_UNESCAPED_UNICODE));
array_walk($pushUIDs, function ($uid) use ($eid) {
$this->addMessagesAssign($eid, $this->id, $uid);
});
$sendPushMessage->commit();
} catch (Exception $e) {
$sendPushMessage->rollBack();
throw new ErrorException($e->getMessage(), $eid);
}
return $this->id;
}
public function addMessagesAssign($eid, $messagesID, $uid)
{
$tableName = Yii::getTableByNum('{{messages_assign}}', $this->eid);
$columns = ['eid', 'asid', 'type', 'did', 'lid', 'uid', 'datetime', 'isrange'];
$columns = join(',', $columns);
$value = [
'eid' => $eid,
'asid' => $messagesID,
'type' => '0',
'did' => 0,
'lid' => 0,
'uid' => "'$uid'",
'datetime' => time(),
'isrange' => '0'
];
$values[] = '(' . join(',', array_values($value)) . ')';
$sql = "INSERT INTO $tableName ($columns) VALUES " . join(',', $values);
$messageRes = Yii::app()->db->createCommand($sql)->execute();
if(!$messageRes)
throw new ErrorException(json_encode($messageRes->getErrors()).' => '.__LINE__);
}
public static function pushMessage($data, $eid, $platform = null)
{
$asid = 'messages:send:' . $eid . ':' . UtilsHelper::uuid() . ':' . time();
$data = json_encode($data);
BaseRedis::set($asid, $data, 86400);
$result = CommandHelper::exec('messages/send', ['eid' => $eid, 'asid' => urlencode($asid), 'platform' => $platform], true);
return $result;
}
public static function pushMessage($data, $eid, $platform = null)
{
$asid = 'messages:send:' . $eid . ':' . UtilsHelper::uuid() . ':' . time();
$data = json_encode($data);
BaseRedis::set($asid, $data, 86400);
$result = CommandHelper::exec('messages/send', ['eid' => $eid, 'asid' => urlencode($asid), 'platform' => $platform], true);
return $result;
}
public static function uuid($prefix = '', $separator = '')
{
$chars = md5(uniqid(mt_rand(), true));
$uuid = substr($chars, 0, 8) . $separator;
$uuid .= substr($chars, 8, 4) . $separator;
$uuid .= substr($chars, 12, 4) . $separator;
$uuid .= substr($chars, 16, 4) . $separator;
$uuid .= substr($chars, 20, 12);
return $prefix . $uuid;
}
