交换修改
This commit is contained in:
parent
c3051968fe
commit
bf2da0c6d2
|
|
@ -23,7 +23,7 @@ const ENV = {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 当前环境 - 开发时使用 development,打包时改为 production
|
// 当前环境 - 开发时使用 development,打包时改为 production
|
||||||
const CURRENT_ENV = 'development'
|
const CURRENT_ENV = 'production'
|
||||||
|
|
||||||
// 导出配置
|
// 导出配置
|
||||||
export const config = {
|
export const config = {
|
||||||
|
|
|
||||||
|
|
@ -1102,13 +1102,52 @@ onMounted(async () => {
|
||||||
const handleReceiveMessage = (message) => {
|
const handleReceiveMessage = (message) => {
|
||||||
console.log('[Chat] 收到新消息:', 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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查是否是当前会话的消息
|
// 处理交换结果消息(5=交换微信结果,7=交换照片结果)
|
||||||
if (message.sessionId !== sessionId.value) {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -255,8 +255,25 @@ public class ChatController : ControllerBase
|
||||||
var userId = GetCurrentUserId();
|
var userId = GetCurrentUserId();
|
||||||
var result = await _chatService.RespondExchangeAsync(userId, request);
|
var result = await _chatService.RespondExchangeAsync(userId, request);
|
||||||
|
|
||||||
_logger.LogInformation("交换响应已处理: ResultMessageId={ResultMessageId}, IsAgreed={IsAgreed}",
|
// 通过 SignalR 推送交换响应结果给会话组(双方都能收到)
|
||||||
result.ResultMessageId, request.IsAgreed);
|
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);
|
return ApiResponse<ExchangeRespondResponse>.Success(result);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -163,6 +163,26 @@ public class ExchangeRespondResponse
|
||||||
/// 交换的数据(微信号或照片列表JSON)
|
/// 交换的数据(微信号或照片列表JSON)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? ExchangedData { get; set; }
|
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>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -586,7 +586,11 @@ public class ChatService : IChatService
|
||||||
{
|
{
|
||||||
ResultMessageId = createdResultMessage.Id,
|
ResultMessageId = createdResultMessage.Id,
|
||||||
IsAgreed = request.IsAgreed,
|
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