This commit is contained in:
sjk
2025-11-17 14:09:17 +08:00
commit 31e46c5bf6
479 changed files with 109324 additions and 0 deletions

View File

@@ -0,0 +1,660 @@
import '../models/vocabulary_book_model.dart';
import '../models/vocabulary_book_category.dart';
import '../models/word_model.dart';
/// 词书数据工厂类
class VocabularyBookFactory {
/// 创建所有系统词书
static List<VocabularyBook> createAllSystemBooks() {
final List<VocabularyBook> books = [];
// 学段基础词汇
books.addAll(_createAcademicStageBooks());
// 国内应试类词汇
books.addAll(_createDomesticTestBooks());
// 出国考试类词汇
books.addAll(_createInternationalTestBooks());
// 职业与专业类词汇
books.addAll(_createProfessionalBooks());
// 功能型词库
books.addAll(_createFunctionalBooks());
return books;
}
/// 创建学段基础词汇书
static List<VocabularyBook> _createAcademicStageBooks() {
final now = DateTime.now();
return [
VocabularyBook(
id: 'academic_primary_core',
name: '小学英语核心词汇',
description: '小学阶段必备的1000-1500个核心词汇涵盖基础场景和日常用语',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.beginner,
coverImageUrl: 'assets/images/vocabulary_books/primary_school.png',
totalWords: 1200,
isPublic: true,
tags: ['小学', '基础', '核心词汇', '日常用语'],
category: '学段基础词汇',
mainCategory: VocabularyBookMainCategory.academicStage,
subCategory: AcademicStageCategory.primarySchool.name,
targetLevels: ['小学1-6年级'],
estimatedDays: 60,
dailyWordCount: 20,
downloadCount: 15420,
rating: 4.8,
reviewCount: 2341,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'academic_junior_high',
name: '初中英语词汇',
description: '初中阶段1500-2500词结合教材要求为中考做准备',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.elementary,
coverImageUrl: 'assets/images/vocabulary_books/junior_high.png',
totalWords: 2000,
isPublic: true,
tags: ['初中', '中考', '教材配套'],
category: '学段基础词汇',
mainCategory: VocabularyBookMainCategory.academicStage,
subCategory: AcademicStageCategory.juniorHigh.name,
targetLevels: ['初中1-3年级'],
estimatedDays: 100,
dailyWordCount: 20,
downloadCount: 23156,
rating: 4.7,
reviewCount: 3892,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'academic_senior_high',
name: '高中英语词汇',
description: '高中阶段2500-3500词涵盖课标与高考高频词汇',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.intermediate,
coverImageUrl: 'assets/images/vocabulary_books/senior_high.png',
totalWords: 3200,
isPublic: true,
tags: ['高中', '高考', '课标词汇', '高频词'],
category: '学段基础词汇',
mainCategory: VocabularyBookMainCategory.academicStage,
subCategory: AcademicStageCategory.seniorHigh.name,
targetLevels: ['高中1-3年级'],
estimatedDays: 160,
dailyWordCount: 20,
downloadCount: 34782,
rating: 4.9,
reviewCount: 5673,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'academic_university',
name: '大学英语教材词汇',
description: '大学英语精读/泛读配套词汇,提升学术英语水平',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.advanced,
coverImageUrl: 'assets/images/vocabulary_books/university.png',
totalWords: 4500,
isPublic: true,
tags: ['大学', '学术英语', '精读', '泛读'],
category: '学段基础词汇',
mainCategory: VocabularyBookMainCategory.academicStage,
subCategory: AcademicStageCategory.university.name,
targetLevels: ['大学1-4年级'],
estimatedDays: 225,
dailyWordCount: 20,
downloadCount: 18934,
rating: 4.6,
reviewCount: 2847,
createdAt: now,
updatedAt: now,
),
];
}
/// 创建国内应试类词汇书
static List<VocabularyBook> _createDomesticTestBooks() {
final now = DateTime.now();
return [
VocabularyBook(
id: 'domestic_cet4',
name: '大学英语四级词汇',
description: 'CET-4核心词汇助力四级考试高分通过',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.intermediate,
coverImageUrl: 'assets/images/vocabulary_books/cet4.png',
totalWords: 4500,
isPublic: true,
tags: ['四级', 'CET-4', '考试必备'],
category: '国内应试类词汇',
mainCategory: VocabularyBookMainCategory.domesticTest,
subCategory: DomesticTestCategory.cet4.name,
targetLevels: ['大学生'],
estimatedDays: 90,
dailyWordCount: 50,
downloadCount: 89234,
rating: 4.8,
reviewCount: 12456,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'domestic_cet6',
name: '大学英语六级词汇',
description: 'CET-6核心词汇突破六级考试难关',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.advanced,
coverImageUrl: 'assets/images/vocabulary_books/cet6.png',
totalWords: 5500,
isPublic: true,
tags: ['六级', 'CET-6', '高级词汇'],
category: '国内应试类词汇',
mainCategory: VocabularyBookMainCategory.domesticTest,
subCategory: DomesticTestCategory.cet6.name,
targetLevels: ['大学生'],
estimatedDays: 110,
dailyWordCount: 50,
downloadCount: 67891,
rating: 4.7,
reviewCount: 9823,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'domestic_postgraduate',
name: '考研英语核心词汇',
description: '考研英语必备词汇,涵盖英语一和英语二',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.advanced,
coverImageUrl: 'assets/images/vocabulary_books/postgraduate.png',
totalWords: 5500,
isPublic: true,
tags: ['考研', '研究生', '英语一', '英语二'],
category: '国内应试类词汇',
mainCategory: VocabularyBookMainCategory.domesticTest,
subCategory: DomesticTestCategory.postgraduate.name,
targetLevels: ['本科生', '考研学生'],
estimatedDays: 120,
dailyWordCount: 45,
downloadCount: 45672,
rating: 4.9,
reviewCount: 7234,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'domestic_tem4',
name: '英语专业四级词汇',
description: 'TEM-4专业词汇英语专业学生必备',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.advanced,
coverImageUrl: 'assets/images/vocabulary_books/tem4.png',
totalWords: 6000,
isPublic: true,
tags: ['专四', 'TEM-4', '英语专业'],
category: '国内应试类词汇',
mainCategory: VocabularyBookMainCategory.domesticTest,
subCategory: DomesticTestCategory.tem4.name,
targetLevels: ['英语专业学生'],
estimatedDays: 100,
dailyWordCount: 60,
downloadCount: 23456,
rating: 4.6,
reviewCount: 3421,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'domestic_tem8',
name: '英语专业八级词汇',
description: 'TEM-8高级词汇英语专业最高水平认证',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.expert,
coverImageUrl: 'assets/images/vocabulary_books/tem8.png',
totalWords: 8000,
isPublic: true,
tags: ['专八', 'TEM-8', '高级词汇'],
category: '国内应试类词汇',
mainCategory: VocabularyBookMainCategory.domesticTest,
subCategory: DomesticTestCategory.tem8.name,
targetLevels: ['英语专业学生'],
estimatedDays: 160,
dailyWordCount: 50,
downloadCount: 18923,
rating: 4.8,
reviewCount: 2567,
createdAt: now,
updatedAt: now,
),
];
}
/// 创建出国考试类词汇书
static List<VocabularyBook> _createInternationalTestBooks() {
final now = DateTime.now();
return [
VocabularyBook(
id: 'international_ielts_academic',
name: '雅思学术类词汇',
description: 'IELTS Academic核心词汇助力雅思高分',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.advanced,
coverImageUrl: 'assets/images/vocabulary_books/ielts_academic.png',
totalWords: 6500,
isPublic: true,
tags: ['雅思', 'IELTS', '学术类', '出国留学'],
category: '出国考试类词汇',
mainCategory: VocabularyBookMainCategory.internationalTest,
subCategory: InternationalTestCategory.ieltsAcademic.name,
targetLevels: ['出国留学生'],
estimatedDays: 130,
dailyWordCount: 50,
downloadCount: 56789,
rating: 4.8,
reviewCount: 8934,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'international_ielts_general',
name: '雅思培训类词汇',
description: 'IELTS General Training词汇移民必备',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.intermediate,
coverImageUrl: 'assets/images/vocabulary_books/ielts_general.png',
totalWords: 5500,
isPublic: true,
tags: ['雅思', 'IELTS', '培训类', '移民'],
category: '出国考试类词汇',
mainCategory: VocabularyBookMainCategory.internationalTest,
subCategory: InternationalTestCategory.ieltsGeneral.name,
targetLevels: ['移民申请者'],
estimatedDays: 110,
dailyWordCount: 50,
downloadCount: 34567,
rating: 4.7,
reviewCount: 5432,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'international_toefl',
name: '托福词汇',
description: 'TOEFL iBT核心词汇美国留学必备',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.advanced,
coverImageUrl: 'assets/images/vocabulary_books/toefl.png',
totalWords: 7000,
isPublic: true,
tags: ['托福', 'TOEFL', 'iBT', '美国留学'],
category: '出国考试类词汇',
mainCategory: VocabularyBookMainCategory.internationalTest,
subCategory: InternationalTestCategory.toeflIbt.name,
targetLevels: ['美国留学生'],
estimatedDays: 140,
dailyWordCount: 50,
downloadCount: 67234,
rating: 4.9,
reviewCount: 9876,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'international_gre',
name: 'GRE词汇',
description: 'GRE核心词汇研究生申请必备',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.expert,
coverImageUrl: 'assets/images/vocabulary_books/gre.png',
totalWords: 8500,
isPublic: true,
tags: ['GRE', '研究生申请', '学术词汇'],
category: '出国考试类词汇',
mainCategory: VocabularyBookMainCategory.internationalTest,
subCategory: InternationalTestCategory.gre.name,
targetLevels: ['研究生申请者'],
estimatedDays: 170,
dailyWordCount: 50,
downloadCount: 43210,
rating: 4.7,
reviewCount: 6543,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'international_gmat',
name: 'GMAT词汇',
description: 'GMAT商科词汇MBA申请必备',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.expert,
coverImageUrl: 'assets/images/vocabulary_books/gmat.png',
totalWords: 7500,
isPublic: true,
tags: ['GMAT', 'MBA', '商科', '管理类'],
category: '出国考试类词汇',
mainCategory: VocabularyBookMainCategory.internationalTest,
subCategory: InternationalTestCategory.gmat.name,
targetLevels: ['MBA申请者'],
estimatedDays: 150,
dailyWordCount: 50,
downloadCount: 32109,
rating: 4.6,
reviewCount: 4321,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'international_sat',
name: 'SAT词汇',
description: 'SAT核心词汇美本申请必备',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.advanced,
coverImageUrl: 'assets/images/vocabulary_books/sat.png',
totalWords: 6000,
isPublic: true,
tags: ['SAT', '美本申请', '高中生'],
category: '出国考试类词汇',
mainCategory: VocabularyBookMainCategory.internationalTest,
subCategory: InternationalTestCategory.sat.name,
targetLevels: ['高中生', '美本申请者'],
estimatedDays: 120,
dailyWordCount: 50,
downloadCount: 28765,
rating: 4.8,
reviewCount: 3987,
createdAt: now,
updatedAt: now,
),
];
}
/// 创建职业与专业类词汇书
static List<VocabularyBook> _createProfessionalBooks() {
final now = DateTime.now();
return [
VocabularyBook(
id: 'professional_business',
name: '商务英语词汇',
description: '商务场景核心词汇,职场沟通必备',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.intermediate,
coverImageUrl: 'assets/images/vocabulary_books/business.png',
totalWords: 3500,
isPublic: true,
tags: ['商务英语', '职场', '商务沟通'],
category: '职业与专业类词汇',
mainCategory: VocabularyBookMainCategory.professional,
subCategory: ProfessionalCategory.businessEnglish.name,
targetLevels: ['职场人士'],
estimatedDays: 70,
dailyWordCount: 50,
downloadCount: 45678,
rating: 4.7,
reviewCount: 6789,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'professional_bec_higher',
name: 'BEC高级词汇',
description: 'BEC Higher商务英语高级词汇',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.advanced,
coverImageUrl: 'assets/images/vocabulary_books/bec_higher.png',
totalWords: 4500,
isPublic: true,
tags: ['BEC', '高级', '商务英语证书'],
category: '职业与专业类词汇',
mainCategory: VocabularyBookMainCategory.professional,
subCategory: ProfessionalCategory.becHigher.name,
targetLevels: ['商务人士'],
estimatedDays: 90,
dailyWordCount: 50,
downloadCount: 23456,
rating: 4.8,
reviewCount: 3456,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'professional_medical',
name: '医学英语词汇',
description: '医学专业词汇,医护人员必备',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.expert,
coverImageUrl: 'assets/images/vocabulary_books/medical.png',
totalWords: 5500,
isPublic: true,
tags: ['医学', '医护', '专业词汇'],
category: '职业与专业类词汇',
mainCategory: VocabularyBookMainCategory.professional,
subCategory: ProfessionalCategory.medical.name,
targetLevels: ['医护人员', '医学生'],
estimatedDays: 110,
dailyWordCount: 50,
downloadCount: 18765,
rating: 4.9,
reviewCount: 2345,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'professional_legal',
name: '法律英语词汇',
description: '法律专业词汇,法律从业者必备',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.expert,
coverImageUrl: 'assets/images/vocabulary_books/legal.png',
totalWords: 4800,
isPublic: true,
tags: ['法律', '法务', '专业词汇'],
category: '职业与专业类词汇',
mainCategory: VocabularyBookMainCategory.professional,
subCategory: ProfessionalCategory.legal.name,
targetLevels: ['法律从业者', '法学生'],
estimatedDays: 96,
dailyWordCount: 50,
downloadCount: 15432,
rating: 4.6,
reviewCount: 1987,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'professional_it',
name: 'IT英语词汇',
description: '计算机科学与软件工程词汇',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.advanced,
coverImageUrl: 'assets/images/vocabulary_books/it.png',
totalWords: 4200,
isPublic: true,
tags: ['IT', '计算机', '软件工程', '人工智能'],
category: '职业与专业类词汇',
mainCategory: VocabularyBookMainCategory.professional,
subCategory: ProfessionalCategory.computerScience.name,
targetLevels: ['程序员', 'IT从业者'],
estimatedDays: 84,
dailyWordCount: 50,
downloadCount: 34567,
rating: 4.8,
reviewCount: 5432,
createdAt: now,
updatedAt: now,
),
];
}
/// 创建功能型词库
static List<VocabularyBook> _createFunctionalBooks() {
final now = DateTime.now();
return [
VocabularyBook(
id: 'functional_roots_affixes',
name: '词根词缀词汇',
description: '通过词根词缀快速扩展词汇量,掌握记忆技巧',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.intermediate,
coverImageUrl: 'assets/images/vocabulary_books/roots_affixes.png',
totalWords: 3000,
isPublic: true,
tags: ['词根词缀', '记忆技巧', '词汇扩展'],
category: '功能型词库',
mainCategory: VocabularyBookMainCategory.functional,
subCategory: FunctionalCategory.rootsAffixes.name,
targetLevels: ['中级以上学习者'],
estimatedDays: 60,
dailyWordCount: 50,
downloadCount: 67890,
rating: 4.9,
reviewCount: 8765,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'functional_synonyms_antonyms',
name: '同义词反义词库',
description: '丰富表达方式,提升写作和口语水平',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.intermediate,
coverImageUrl: 'assets/images/vocabulary_books/synonyms.png',
totalWords: 2500,
isPublic: true,
tags: ['同义词', '反义词', '写作', '口语'],
category: '功能型词库',
mainCategory: VocabularyBookMainCategory.functional,
subCategory: FunctionalCategory.synonymsAntonyms.name,
targetLevels: ['中级以上学习者'],
estimatedDays: 50,
dailyWordCount: 50,
downloadCount: 45678,
rating: 4.7,
reviewCount: 6543,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'functional_academic_writing',
name: '学术写作搭配库',
description: '学术写作常用搭配,提升论文写作水平',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.advanced,
coverImageUrl: 'assets/images/vocabulary_books/academic_writing.png',
totalWords: 2000,
isPublic: true,
tags: ['学术写作', '搭配', '论文', 'Collocations'],
category: '功能型词库',
mainCategory: VocabularyBookMainCategory.functional,
subCategory: FunctionalCategory.academicWritingCollocations.name,
targetLevels: ['研究生', '学者'],
estimatedDays: 40,
dailyWordCount: 50,
downloadCount: 23456,
rating: 4.8,
reviewCount: 3210,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'functional_daily_spoken',
name: '日常口语搭配库',
description: '日常口语常用搭配,提升口语表达自然度',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.elementary,
coverImageUrl: 'assets/images/vocabulary_books/daily_spoken.png',
totalWords: 1800,
isPublic: true,
tags: ['日常口语', '搭配', '口语表达'],
category: '功能型词库',
mainCategory: VocabularyBookMainCategory.functional,
subCategory: FunctionalCategory.dailySpokenCollocations.name,
targetLevels: ['初级以上学习者'],
estimatedDays: 36,
dailyWordCount: 50,
downloadCount: 56789,
rating: 4.6,
reviewCount: 7654,
createdAt: now,
updatedAt: now,
),
VocabularyBook(
id: 'functional_daily_life',
name: '日常生活英语',
description: '旅游、点餐、购物、出行、租房等生活场景词汇',
type: VocabularyBookType.system,
difficulty: VocabularyBookDifficulty.elementary,
coverImageUrl: 'assets/images/vocabulary_books/daily_life.png',
totalWords: 2200,
isPublic: true,
tags: ['日常生活', '旅游', '购物', '出行', '租房'],
category: '功能型词库',
mainCategory: VocabularyBookMainCategory.functional,
subCategory: FunctionalCategory.dailyLifeEnglish.name,
targetLevels: ['生活英语学习者'],
estimatedDays: 44,
dailyWordCount: 50,
downloadCount: 78901,
rating: 4.8,
reviewCount: 9876,
createdAt: now,
updatedAt: now,
),
];
}
/// 根据主分类获取词书列表
static List<VocabularyBook> getBooksByMainCategory(VocabularyBookMainCategory category) {
final allBooks = createAllSystemBooks();
return allBooks.where((book) => book.mainCategory == category).toList();
}
/// 根据子分类获取词书列表
static List<VocabularyBook> getBooksBySubCategory(String subCategory) {
final allBooks = createAllSystemBooks();
return allBooks.where((book) => book.subCategory == subCategory).toList();
}
/// 获取推荐词书(基于下载量和评分)
static List<VocabularyBook> getRecommendedBooks({int limit = 10}) {
final allBooks = createAllSystemBooks();
allBooks.sort((a, b) {
// 综合评分下载量权重0.3评分权重0.7
final scoreA = (a.downloadCount / 100000) * 0.3 + a.rating * 0.7;
final scoreB = (b.downloadCount / 100000) * 0.3 + b.rating * 0.7;
return scoreB.compareTo(scoreA);
});
return allBooks.take(limit).toList();
}
/// 根据难度获取词书列表
static List<VocabularyBook> getBooksByDifficulty(VocabularyBookDifficulty difficulty) {
final allBooks = createAllSystemBooks();
return allBooks.where((book) => book.difficulty == difficulty).toList();
}
/// 搜索词书
static List<VocabularyBook> searchBooks(String query) {
final allBooks = createAllSystemBooks();
final lowerQuery = query.toLowerCase();
return allBooks.where((book) {
return book.name.toLowerCase().contains(lowerQuery) ||
(book.description?.toLowerCase().contains(lowerQuery) ?? false) ||
book.tags.any((tag) => tag.toLowerCase().contains(lowerQuery));
}).toList();
}
}