139 lines
3.6 KiB
PHP
139 lines
3.6 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: zn
|
|
* Date: 2017/6/15
|
|
* Time: 10:11
|
|
*/
|
|
|
|
namespace common\services;
|
|
|
|
|
|
use common\models\Deal;
|
|
use common\models\Message;
|
|
use common\utils\EnumUtil;
|
|
use common\utils\RedisKeyUtil;
|
|
use Yii;
|
|
use yii\base\Object;
|
|
|
|
/**
|
|
* 消息
|
|
* Class MessageServices
|
|
* @package common\services
|
|
*/
|
|
class MessageServices extends Object
|
|
{
|
|
/**
|
|
* 交易消息
|
|
* @param $beUserID
|
|
* @param $dealID
|
|
*/
|
|
public static function addDealMessage($beUserID, $dealID, $type)
|
|
{
|
|
//保存数据库
|
|
$message = new Message();
|
|
$message->be_user_id = $beUserID;
|
|
$message->type = $type;
|
|
|
|
$data['deal_id'] = $dealID;
|
|
$message->data = json_encode($data);
|
|
$message->save();
|
|
|
|
//保存到消息队列
|
|
$messageJson = self::createShowReadMessage($message);
|
|
Yii::$app->redis->lpush(RedisKeyUtil::clientMessageList(), $messageJson);
|
|
}
|
|
|
|
/**请求加好友
|
|
* @param $beUserID
|
|
* @param $id :好友数据库请求记录ID
|
|
*/
|
|
public static function addFriendMessage($beUserID, $id)
|
|
{
|
|
//保存数据库
|
|
$message = new Message();
|
|
$message->be_user_id = $beUserID;
|
|
$message->type = EnumUtil::MESSAGE_ADD_FRIEND;
|
|
|
|
$data['friend_db_id'] = $id;
|
|
$message->data = json_encode($data);
|
|
$message->save();
|
|
|
|
//保存到消息队列
|
|
$messageJson = self::createShowReadMessage($message);
|
|
Yii::$app->redis->lpush(RedisKeyUtil::clientMessageList(), $messageJson);
|
|
}
|
|
|
|
/**请求加好友回复
|
|
* @param $beUserID
|
|
* @param $id
|
|
* @param $operation :操作类型,同意还是不同意
|
|
*/
|
|
public static function addFriendResponseMessage($beUserID, $id, $operation)
|
|
{
|
|
//保存数据库
|
|
$message = new Message();
|
|
$message->be_user_id = $beUserID;
|
|
$message->type = EnumUtil::MESSAGE_ADD_FRIEND_RESPONSE;
|
|
|
|
$data['friend_db_id'] = $id;
|
|
$data['operation'] = $operation;
|
|
$message->data = json_encode($data);
|
|
$message->save();
|
|
|
|
//保存到消息队列
|
|
$messageJson = self::createShowReadMessage($message);
|
|
Yii::$app->redis->lpush(RedisKeyUtil::clientMessageList(), $messageJson);
|
|
}
|
|
|
|
/**消息已读
|
|
* @param $messageID
|
|
*/
|
|
public static function messageReaded($messageID)
|
|
{
|
|
$messageDbData = Message::findByID($messageID);
|
|
if (!$messageDbData) return;
|
|
|
|
$messageDbData->readed = EnumUtil::READED;
|
|
$messageDbData->save();
|
|
}
|
|
|
|
/**
|
|
* 组织成方便阅读的消息
|
|
* @param Message $message
|
|
* @return string
|
|
*/
|
|
public static function createShowReadMessage(Message $message)
|
|
{
|
|
$messageData = json_decode($message->data, true);
|
|
if (empty($messageData)) return '';
|
|
|
|
$detailData = [];
|
|
|
|
if (in_array($message->type, EnumUtil::MESSAGE_DEAL_LIST)) {
|
|
//确认交易;
|
|
$dealID = $messageData['deal_id'];
|
|
|
|
$dealDbData = Deal::findByID($dealID);
|
|
$detailData = $dealDbData->genClientData();
|
|
}
|
|
|
|
$returnData = $message->genClientData();
|
|
$returnData['detail_data'] = $detailData;
|
|
|
|
return json_encode($returnData);
|
|
}
|
|
|
|
|
|
/**添加广播消息
|
|
* @param $commandID
|
|
* @param $data
|
|
*/
|
|
public static function addBroadcaseMessage($commandID, $data)
|
|
{
|
|
$returnData['command_id'] = $commandID;
|
|
$returnData['data'] = $data;
|
|
$jsonStr = json_encode($returnData);
|
|
Yii::$app->redis->lpush(RedisKeyUtil::broadcaseMessageList(), $jsonStr);
|
|
}
|
|
} |