交换修改
This commit is contained in:
parent
c3051968fe
commit
bf2da0c6d2
|
|
@ -23,7 +23,7 @@ const ENV = {
|
|||
}
|
||||
|
||||
// 当前环境 - 开发时使用 development,打包时改为 production
|
||||
const CURRENT_ENV = 'development'
|
||||
const CURRENT_ENV = 'production'
|
||||
|
||||
// 导出配置
|
||||
export const config = {
|
||||
|
|
|
|||
|
|
@ -1102,13 +1102,52 @@ onMounted(async () => {
|
|||
const handleReceiveMessage = (message) => {
|
||||
console.log('[Chat] 收到新消息:', message)
|
||||
|
||||
// 过滤掉结果类型的消息(5=交换微信结果,7=交换照片结果)
|
||||
if (message.messageType === MessageType.EXCHANGE_WECHAT_RESULT || message.messageType === MessageType.EXCHANGE_PHOTO_RESULT) {
|
||||
// 检查是否是当前会话的消息
|
||||
if (message.sessionId !== sessionId.value) {
|
||||
return
|
||||
}
|
||||
|
||||
// 检查是否是当前会话的消息
|
||||
if (message.sessionId !== sessionId.value) {
|
||||
// 处理交换结果消息(5=交换微信结果,7=交换照片结果)
|
||||
if (message.messageType === MessageType.EXCHANGE_WECHAT_RESULT || message.messageType === MessageType.EXCHANGE_PHOTO_RESULT) {
|
||||
// 更新原始请求消息的状态
|
||||
if (message.extraData) {
|
||||
try {
|
||||
const extraData = typeof message.extraData === 'string' ? JSON.parse(message.extraData) : message.extraData
|
||||
// 根据结果消息类型找到对应的请求消息类型
|
||||
const requestType = message.messageType === MessageType.EXCHANGE_WECHAT_RESULT
|
||||
? MessageType.EXCHANGE_WECHAT
|
||||
: MessageType.EXCHANGE_PHOTO
|
||||
|
||||
// 找到原始请求消息(我发起的,状态为待处理)
|
||||
const requestMsg = messages.value.find(m =>
|
||||
m.messageType === requestType &&
|
||||
m.isMine &&
|
||||
m.status === ExchangeStatus.PENDING
|
||||
)
|
||||
|
||||
if (requestMsg) {
|
||||
// 根据响应内容判断是同意还是拒绝
|
||||
const isAgreed = message.content === '已同意交换'
|
||||
requestMsg.status = isAgreed ? ExchangeStatus.ACCEPTED : ExchangeStatus.REJECTED
|
||||
|
||||
if (isAgreed) {
|
||||
// 更新交换的数据
|
||||
if (requestMsg.messageType === MessageType.EXCHANGE_WECHAT) {
|
||||
// 我是发起方,获取对方(接收者)的微信号
|
||||
requestMsg.exchangedContent = extraData.ReceiverWeChat || extraData.receiverWeChat
|
||||
} else if (requestMsg.messageType === MessageType.EXCHANGE_PHOTO) {
|
||||
// 我是发起方,获取对方(接收者)的照片
|
||||
const photos = extraData.ReceiverPhotos || extraData.receiverPhotos || []
|
||||
requestMsg.photos = photos
|
||||
requestMsg.photoCount = photos.length
|
||||
}
|
||||
}
|
||||
console.log('[Chat] 已更新交换请求状态:', requestMsg)
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('[Chat] 解析交换结果数据失败:', e)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -255,8 +255,25 @@ public class ChatController : ControllerBase
|
|||
var userId = GetCurrentUserId();
|
||||
var result = await _chatService.RespondExchangeAsync(userId, request);
|
||||
|
||||
_logger.LogInformation("交换响应已处理: ResultMessageId={ResultMessageId}, IsAgreed={IsAgreed}",
|
||||
result.ResultMessageId, request.IsAgreed);
|
||||
// 通过 SignalR 推送交换响应结果给会话组(双方都能收到)
|
||||
var resultMessageType = result.RequestMessageType == 4 ? 5 : 7; // 4=ExchangeWeChatRequest->5=Result, 6=ExchangePhotoRequest->7=Result
|
||||
var messageResponse = new ChatMessageResponse
|
||||
{
|
||||
MessageId = result.ResultMessageId,
|
||||
SessionId = result.SessionId,
|
||||
SenderId = userId,
|
||||
ReceiverId = result.RequesterId,
|
||||
MessageType = resultMessageType,
|
||||
Content = result.IsAgreed ? "已同意交换" : "已拒绝交换",
|
||||
ExtraData = result.ExchangedData,
|
||||
IsRead = false,
|
||||
CreateTime = DateTime.Now,
|
||||
IsSelf = false
|
||||
};
|
||||
|
||||
await _hubContext.SendMessageToSessionAsync(result.SessionId, messageResponse);
|
||||
_logger.LogInformation("交换响应已通过SignalR推送到会话组: ResultMessageId={ResultMessageId}, SessionId={SessionId}, IsAgreed={IsAgreed}",
|
||||
result.ResultMessageId, result.SessionId, result.IsAgreed);
|
||||
|
||||
return ApiResponse<ExchangeRespondResponse>.Success(result);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -163,6 +163,26 @@ public class ExchangeRespondResponse
|
|||
/// 交换的数据(微信号或照片列表JSON)
|
||||
/// </summary>
|
||||
public string? ExchangedData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 会话ID
|
||||
/// </summary>
|
||||
public long SessionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 原始请求发送者ID
|
||||
/// </summary>
|
||||
public long RequesterId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 原始请求消息类型
|
||||
/// </summary>
|
||||
public int RequestMessageType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 原始请求消息ID
|
||||
/// </summary>
|
||||
public long RequestMessageId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -586,7 +586,11 @@ public class ChatService : IChatService
|
|||
{
|
||||
ResultMessageId = createdResultMessage.Id,
|
||||
IsAgreed = request.IsAgreed,
|
||||
ExchangedData = exchangedData
|
||||
ExchangedData = exchangedData,
|
||||
SessionId = requestMessage.SessionId,
|
||||
RequesterId = requestMessage.SenderId,
|
||||
RequestMessageType = requestMessage.MessageType,
|
||||
RequestMessageId = request.RequestMessageId
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user