已完成用户APP首期功能开发

交付用户端首期页面、配套接口、后台资源及测试文档。用户APP构建、静态分析和三个管理后台构建通过;完整测试仍有2项失败,后端模型注释检查未通过,详见交付记录。
This commit is contained in:
czl231
2026-09-13 00:57:32 +08:00
parent a0a4bb1218
commit 3ef33b531d
793 changed files with 40959 additions and 1204 deletions

View File

@@ -0,0 +1,54 @@
// 功能描述:解析消息中心真实业务消息及分类计数;版本:1.0.0。
class UserMessage {
const UserMessage({
required this.key,
required this.category,
required this.title,
required this.summary,
required this.statusText,
required this.target,
required this.targetIdentity,
required this.occurredAt,
required this.read,
});
factory UserMessage.fromJson(Map<String, dynamic> json) => UserMessage(
key: json['key']?.toString() ?? '',
category: json['category']?.toString() ?? '',
title: json['title']?.toString() ?? '',
summary: json['summary']?.toString() ?? '',
statusText: json['status_text']?.toString() ?? '',
target: json['target']?.toString() ?? '',
targetIdentity: json['target_identity']?.toString() ?? '',
occurredAt:
DateTime.tryParse(json['occurred_at']?.toString() ?? '') ??
DateTime.fromMillisecondsSinceEpoch(0),
read: json['read'] == true,
);
final String key, category, title, summary, statusText, target, targetIdentity;
final DateTime occurredAt;
final bool read;
}
class MessageCenterData {
const MessageCenterData({required this.items, required this.counts});
factory MessageCenterData.fromJson(Map<String, dynamic> json) {
final rawItems = json['items'] is List ? json['items'] as List<dynamic> : const <dynamic>[];
final rawCounts = json['counts'] is Map
? Map<String, dynamic>.from(json['counts'] as Map<dynamic, dynamic>)
: const <String, dynamic>{};
return MessageCenterData(
items: List.unmodifiable(
rawItems.whereType<Map<dynamic, dynamic>>().map(
(item) => UserMessage.fromJson(Map<String, dynamic>.from(item)),
),
),
counts: Map.unmodifiable(
rawCounts.map((key, value) => MapEntry(key, value is num ? value.toInt() : 0)),
),
);
}
final List<UserMessage> items;
final Map<String, int> counts;
}