Initial commit: 91dj android client dev_1.0.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
谢宇宁
2026-10-08 11:37:25 +07:00
co-authored by Claude Opus 5.5
commit 97dd6a739a
1262 changed files with 119813 additions and 0 deletions
+130
View File
@@ -0,0 +1,130 @@
import 'package:analytics_sdk/const/event_type.dart';
import 'package:analytics_sdk/manager/sdk_context.dart';
import 'package:analytics_sdk/enum/read_behavior_enum.dart';
/// 漫画事件
class ComicEvent {
final String event = EventType.comicEvent.event;
late final String eventId;
/// 漫画 id
final String comicId;
/// 漫画标题
final String comicTitle;
/// 分类ID
final String comicTypeId;
/// 分类名称
final String comicTypeName;
/// 标签KEY, 多个标签使用英文逗号分隔
final String comicTagKey;
/// 标签名称,多个标签使用英文逗号分隔
final String comicTagName;
/// 推荐引擎的trace_id,未接推荐引擎传空字符串
final String recommendTraceId;
/// 阅读进度百分比(0-100)
final int readProgress;
/// 当前阅读第几页(从1开始)
final int pageNo;
/// 行为标识:view(展示), page_next(下一页), page_prev(上一页), complete(读完) 等
final ReadBehaviorEnum comicBehavior;
/// 章节ID,没有章节上报空字符串,没有对接搜索推荐引擎的上报空字符串
final String chapterId;
/// 章节名称,没有章节上报空字符串,没有对接搜索推荐引擎的上报空字符串
final String chapterName;
/// 老司机媒体资源ID,如未使用老司机库资源可传空字符串
final String mediaId;
late final Map<String, dynamic> _commonFields;
ComicEvent({
required this.comicId,
required this.comicTitle,
required this.comicTypeId,
required this.comicTypeName,
required this.comicTagKey,
required this.comicTagName,
required this.readProgress,
required this.pageNo,
required this.comicBehavior,
this.recommendTraceId = '',
this.mediaId = '',
this.chapterId = '',
this.chapterName = '',
}) {
_commonFields = SdkContext.generateCommonFields(event);
eventId = SdkContext.generateEventIdFromCommonFields(_commonFields, [
comicId,
comicTitle,
comicTypeId,
comicTypeName,
comicTagKey,
comicTagName,
readProgress.toString(),
pageNo.toString(),
comicBehavior.key,
comicBehavior.name,
recommendTraceId,
mediaId,
chapterId,
chapterName,
]);
}
Map<String, dynamic> toJson() {
Map<String, dynamic> payload = {
'comic_id': comicId,
'comic_title': comicTitle,
'comic_type_id': comicTypeId,
'comic_type_name': comicTypeName,
'comic_tag_key': comicTagKey,
'comic_tag_name': comicTagName,
'recommend_trace_id': recommendTraceId,
'read_progress': readProgress,
'page_no': pageNo,
'comic_behavior_key': comicBehavior.key,
'comic_behavior_name': comicBehavior.name,
'media_id': mediaId,
'chapter_id': chapterId,
'chapter_name': chapterName,
};
return {..._commonFields, 'event_id': eventId, "payload": payload};
}
factory ComicEvent.fromJson(Map<String, dynamic> json) {
final behaviorKey = json['comic_behavior_key'] as String? ?? '';
final behaviorName = json['comic_behavior_name'] as String? ?? '';
final behavior = ReadBehaviorEnum(
behaviorKey.isNotEmpty ? behaviorKey : ReadBehaviorEnum.VIEW.key,
behaviorName.isNotEmpty ? behaviorName : ReadBehaviorEnum.VIEW.name,
);
return ComicEvent(
comicId: json['comic_id'] as String,
comicTitle: json['comic_title'] as String,
comicTypeId: json['comic_type_id'] as String,
comicTypeName: json['comic_type_name'] as String,
comicTagKey: json['comic_tag_key'] as String,
comicTagName: json['comic_tag_name'] as String,
readProgress: json['read_progress'] as int,
pageNo: json['page_no'] as int,
comicBehavior: behavior,
recommendTraceId: json['recommend_trace_id'] as String? ?? '',
mediaId: json['media_id'] as String? ?? '',
chapterId: json['chapter_id'] as String? ?? '',
chapterName: json['chapter_name'] as String? ?? '',
);
}
}