hy-farm/muchang/common/services/MessageServices.php
2026-05-29 19:54:56 +08:00

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);
}
}