flutter/lib/utils/parse_message_summary.dart
2025-08-27 23:26:29 +08:00

183 lines
6.7 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'dart:convert';
import 'package:loopin/IM/push_service.dart';
import 'package:loopin/models/notify_message.type.dart';
import 'package:loopin/models/summary_type.dart';
import 'package:tencent_cloud_chat_sdk/enum/message_elem_type.dart';
import 'package:tencent_cloud_chat_sdk/models/v2_tim_message.dart';
String parseMessageSummary(V2TimMessage msg) {
switch (msg.elemType) {
case MessageElemType.V2TIM_ELEM_TYPE_TEXT:
return msg.textElem?.text ?? '[文本消息]';
case MessageElemType.V2TIM_ELEM_TYPE_IMAGE:
return '[图片]';
case MessageElemType.V2TIM_ELEM_TYPE_SOUND:
return '[语音]';
case MessageElemType.V2TIM_ELEM_TYPE_VIDEO:
return '[视频]';
case MessageElemType.V2TIM_ELEM_TYPE_FILE:
return '[文件]'; // 先不做
case MessageElemType.V2TIM_ELEM_TYPE_LOCATION:
return '[位置]'; // 先不做
case MessageElemType.V2TIM_ELEM_TYPE_FACE:
return '[表情]';
case MessageElemType.V2TIM_ELEM_TYPE_CUSTOM:
return _parseCustomMessage(msg);
case MessageElemType.V2TIM_ELEM_TYPE_MERGER:
return '[合并转发消息]';
case MessageElemType.V2TIM_ELEM_TYPE_GROUP_TIPS:
return '[群提示]';
default:
return '[未知消息类型1]';
}
}
// newFoucs, //新的关注
// systemNotify, // 系统->通知
// systemReport, // 系统->举报下架(视频,视频评论)
// systemCheck, // 系统->审核结果(复审,驳回 ,通过)
// systemPush, //系统->推广类的
// interactionComment, //互动->评论
// interactionAt, //互动->视频评论中的@
// interactionLike, //互动->点赞
// interactionReply, //互动->评论回复
// orderRecharge, //订单->充值 online
// orderPay, //订单->订单交易成功通知 online
// orderRefund, //订单->退款结果通知
// groupNotifyCheck, //群通知->进群申请 online
// groupNotifyAccpet, // 群通知->进群审核审核通过 online
// groupNotifyFail, // 群通知->进群审核审核拒绝 online
// groupNotifyLeaveUp, // 群通知->群升级为达人群通知
String _parseCustomMessage(V2TimMessage? msg) {
if (msg == null) return '[null]';
final sum = msg.cloudCustomData;
final elment = msg.customElem; // 所有服务端发送的通知消息都走【自定义消息类型】
logger.w('解析自定义消息:${msg.toJson()}');
logger.w('解析element${elment?.desc ?? 'summary_error'}');
try {
switch (sum) {
case SummaryType.hongbao:
final hbData = jsonDecode(msg.customElem!.data!);
return '[红包]${hbData['remark']}';
case SummaryType.shareTuangou:
return '[分享商品]';
case SummaryType.shareVideo:
return '[分享视频]';
// 解析服务端通知类的
/// [des]显示的文本内容
/// [data] json数据
/// 名称firstFrameImg先取cover如果没有在取firstFrameImg
case NotifyMessageTypeConstants.newFoucs:
// 关注
///发起关注人的[userID],
///发起关注人的昵称[nickName],
///发起关注人的头像地址[faceUrl],
///------
///客户端检测发起关注人与本人的关注关系
return elment!.desc!;
case NotifyMessageTypeConstants.systemNotify:
///系统级别的没有就先不做
return elment!.desc!;
case NotifyMessageTypeConstants.systemReport:
// 视频举报
///先只处理视频,评论的先不管
///被举报的视频[vlogID],
///被举报的视频标题[title],
///被举报的视频首帧图[firstFrameImg]
return elment!.desc!;
case NotifyMessageTypeConstants.systemCheck:
// 视频审核
///视频审核结果通知 通过还是驳回
///被审核的视频[vlogID]
///被审核的视频标题[title],
///被审核的视频首帧图[firstFrameImg]
return elment!.desc!;
case NotifyMessageTypeConstants.systemPush:
///系统推广类的先不管了
return elment!.desc!;
case NotifyMessageTypeConstants.interactionComment:
// 评论视频
/// 发起评论人的[userID]
/// 发起评论人的头像[faceUrl]
/// 发起评论人的[nickName]
/// 评论的内容[comment]
/// 评论的id[commentID]
/// 被评论的视频[vlogID]
/// 被评论的视频首帧图[firstFrameImg]
return elment!.desc!;
case NotifyMessageTypeConstants.interactionAt:
// 视频评论中@互关好友
/// 发起@人的[userID]
/// 发起@人的[nickName]
/// 发起@人的头像[faceUrl]
/// 关联视频的首帧图[firstFrameImg]
/// 关联视频的[vlogID]
/// 评论的id[commentID]
return elment!.desc!;
case NotifyMessageTypeConstants.interactionLike:
// 点赞
/// 发起点赞人的[userID]
/// 发起点赞人的头像[faceUrl]
/// 发起点赞人的[nickName]
/// 被点赞视频的[vlogID]
/// 被点赞视频的封面图[firstFrameImg]
return elment!.desc!;
case NotifyMessageTypeConstants.interactionReply:
// 回复评论
/// 回复人的[userID]
/// 回复人的[faceUrl]
/// 回复人的[nickName]
/// 关联视频的[vlogID]
/// 关联视频的首帧图[firstFrameImg]
/// 被回复评论的[commentID]
/// 回复的评论内容[comment]
return elment!.desc!;
case NotifyMessageTypeConstants.orderRecharge:
// 充值成功通知
/// 订单编号[orderID]
/// 充值金额[amount]
/// 充值后帐户余额[totalAmount]
return elment!.desc!;
case NotifyMessageTypeConstants.orderPay:
// 订单交易结果通知(商品购买成功后)
/// 订单编号[orderID]
/// 订单金额[amount]
/// 商品名称[name]
/// 商品描述[describe]
/// 商品价格[price]
/// 商品主图[pic]
return elment!.desc!;
case NotifyMessageTypeConstants.orderRefund:
// 订单退款通知
/// 订单编号[orderID]
/// 订单金额[amount]
/// 商品名称[name]
/// 商品描述[describe]
/// 商品价格[price]
/// 商品主图[pic]
return elment!.desc!;
case NotifyMessageTypeConstants.groupNotifyCheck:
return elment!.desc!;
case NotifyMessageTypeConstants.groupNotifyAccpet:
return elment!.desc!;
case NotifyMessageTypeConstants.groupNotifyFail:
return elment!.desc!;
case NotifyMessageTypeConstants.groupNotifyLeaveUp:
return elment!.desc!;
default:
return '[未知消息类型2]';
}
} catch (_) {
return '[未知消息类型3]';
}
}