2025-07-21 15:46:30 +08:00
|
|
|
|
import 'dart:convert';
|
|
|
|
|
|
2025-08-27 23:26:29 +08:00
|
|
|
|
import 'package:loopin/IM/push_service.dart';
|
2025-08-26 17:38:59 +08:00
|
|
|
|
import 'package:loopin/models/notify_message.type.dart';
|
2025-08-21 10:50:38 +08:00
|
|
|
|
import 'package:loopin/models/summary_type.dart';
|
2025-07-21 15:46:30 +08:00
|
|
|
|
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:
|
2025-08-21 10:50:38 +08:00
|
|
|
|
return '[文件]'; // 先不做
|
2025-07-21 15:46:30 +08:00
|
|
|
|
case MessageElemType.V2TIM_ELEM_TYPE_LOCATION:
|
2025-08-21 10:50:38 +08:00
|
|
|
|
return '[位置]'; // 先不做
|
2025-07-21 15:46:30 +08:00
|
|
|
|
case MessageElemType.V2TIM_ELEM_TYPE_FACE:
|
|
|
|
|
return '[表情]';
|
|
|
|
|
case MessageElemType.V2TIM_ELEM_TYPE_CUSTOM:
|
2025-08-21 10:50:38 +08:00
|
|
|
|
return _parseCustomMessage(msg);
|
2025-07-21 15:46:30 +08:00
|
|
|
|
case MessageElemType.V2TIM_ELEM_TYPE_MERGER:
|
|
|
|
|
return '[合并转发消息]';
|
|
|
|
|
case MessageElemType.V2TIM_ELEM_TYPE_GROUP_TIPS:
|
|
|
|
|
return '[群提示]';
|
|
|
|
|
default:
|
2025-08-21 10:50:38 +08:00
|
|
|
|
return '[未知消息类型1]';
|
2025-07-21 15:46:30 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-26 17:38:59 +08:00
|
|
|
|
// newFoucs, //新的关注
|
|
|
|
|
// systemNotify, // 系统->通知
|
|
|
|
|
// systemReport, // 系统->举报下架(视频,视频评论)
|
|
|
|
|
// systemCheck, // 系统->审核结果(复审,驳回 ,通过)
|
|
|
|
|
// systemPush, //系统->推广类的
|
|
|
|
|
// interactionComment, //互动->评论
|
|
|
|
|
// interactionAt, //互动->视频评论中的@
|
|
|
|
|
// interactionLike, //互动->点赞
|
|
|
|
|
// interactionReply, //互动->评论回复
|
|
|
|
|
// orderRecharge, //订单->充值 online
|
|
|
|
|
// orderPay, //订单->订单交易成功通知 online
|
|
|
|
|
// orderRefund, //订单->退款结果通知
|
|
|
|
|
// groupNotifyCheck, //群通知->进群申请 online
|
|
|
|
|
// groupNotifyAccpet, // 群通知->进群审核审核通过 online
|
|
|
|
|
// groupNotifyFail, // 群通知->进群审核审核拒绝 online
|
|
|
|
|
// groupNotifyLeaveUp, // 群通知->群升级为达人群通知
|
2025-08-21 10:50:38 +08:00
|
|
|
|
String _parseCustomMessage(V2TimMessage? msg) {
|
|
|
|
|
if (msg == null) return '[null]';
|
|
|
|
|
final sum = msg.cloudCustomData;
|
2025-08-26 17:38:59 +08:00
|
|
|
|
final elment = msg.customElem; // 所有服务端发送的通知消息都走【自定义消息类型】
|
2025-08-27 23:26:29 +08:00
|
|
|
|
logger.w('解析自定义消息:${msg.toJson()}');
|
|
|
|
|
logger.w('解析element:${elment?.desc ?? 'summary_error'}');
|
2025-07-21 15:46:30 +08:00
|
|
|
|
try {
|
2025-08-21 10:50:38 +08:00
|
|
|
|
switch (sum) {
|
|
|
|
|
case SummaryType.hongbao:
|
|
|
|
|
final hbData = jsonDecode(msg.customElem!.data!);
|
|
|
|
|
return '[红包]${hbData['remark']}';
|
|
|
|
|
case SummaryType.shareTuangou:
|
|
|
|
|
return '[分享商品]';
|
|
|
|
|
case SummaryType.shareVideo:
|
|
|
|
|
return '[分享视频]';
|
2025-08-26 17:38:59 +08:00
|
|
|
|
// 解析服务端通知类的
|
|
|
|
|
/// [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!;
|
2025-07-21 15:46:30 +08:00
|
|
|
|
default:
|
2025-08-21 10:50:38 +08:00
|
|
|
|
return '[未知消息类型2]';
|
2025-07-21 15:46:30 +08:00
|
|
|
|
}
|
|
|
|
|
} catch (_) {
|
2025-08-21 10:50:38 +08:00
|
|
|
|
return '[未知消息类型3]';
|
2025-07-21 15:46:30 +08:00
|
|
|
|
}
|
|
|
|
|
}
|