Browse Source

feat(meeting): 支持多语言会议模板筛选

添加语言字段至数据库表,根据用户设备语言自动筛选对应模板
weicu
lxm 8 months ago
parent
commit
14ad58b374
  1. 6
      lib/data/services/db/database_helper.dart
  2. 58
      lib/data/services/db/sqflite_api.dart
  3. 13
      lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart

6
lib/data/services/db/database_helper.dart

@ -94,7 +94,8 @@ class DatabaseHelper {
batch.execute('''
CREATE TABLE IF NOT EXISTS meetingcategorytemplate (
id INTEGER PRIMARY KEY,
name TEXT
name TEXT,
language TEXT
)
''');
// 商务会议助手模版
@ -107,7 +108,8 @@ class DatabaseHelper {
tag TEXT,
desc TEXT,
outline TEXT,
prompt TEXT
prompt TEXT,
language TEXT
)
''');
batch.insert('user', {

58
lib/data/services/db/sqflite_api.dart

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '/core/utils/logger.dart';
import 'database_helper.dart';
@ -182,6 +183,42 @@ class SqfliteApi {
});
}
static String _getMeetingTemplateLanguageCode() {
final locale = Get.locale ?? Get.deviceLocale;
if (locale == null) {
return 'en-US';
}
final code = locale.languageCode.toLowerCase();
switch (code) {
case 'zh':
return 'zh-CN';
case 'en':
return 'en-US';
case 'ja':
return 'ja-JP';
case 'ko':
return 'ko-KR';
case 'fr':
return 'fr-FR';
case 'de':
return 'de-DE';
case 'es':
return 'es-ES';
case 'it':
return 'it-IT';
case 'pt':
return 'pt-BR';
case 'ru':
return 'ru-RU';
case 'ar':
return 'ar-SA';
case 'hi':
return 'hi-IN';
default:
return 'en-US';
}
}
// 获取商务会议助手Ask AI列表
static Future getMeetingAiList(int id) async {
final db = await DatabaseHelper().database;
@ -223,6 +260,7 @@ class SqfliteApi {
'desc': item['description'],
'outline': item['outline'],
'prompt': item['template'],
'language': item['language'],
};
if (result != null) {
result['templates'].add(template);
@ -230,6 +268,7 @@ class SqfliteApi {
categoryList.add({
'name': item['ttype'],
'templates': [template],
'language': item['language'],
});
}
}
@ -252,6 +291,7 @@ class SqfliteApi {
await txn.insert('meetingcategorytemplate', {
'id': categoryId,
'name': item['name'],
'language': item['language'],
});
for (var j = 0; j < item['templates'].length; j++) {
Map template = item['templates'][j];
@ -264,6 +304,7 @@ class SqfliteApi {
'desc': template['desc'],
'outline': template['outline'],
'prompt': template['prompt'],
'language': template['language'],
});
}
}
@ -272,15 +313,22 @@ class SqfliteApi {
// 获取商务会议助手所有分类模版列表
static Future getMeetingCategoryTemplateList() async {
final language = _getMeetingTemplateLanguageCode();
Logger.info('language: $language');
final db = await DatabaseHelper().database;
List categorytemplateList = await db.query('meetingcategorytemplate');
List categorytemplateList = await db.query(
'meetingcategorytemplate',
where: '(language = ? OR language IS NULL OR language = "")',
whereArgs: [language],
);
Logger.info('categorytemplateList: $categorytemplateList');
final dataList =
categorytemplateList.map((item) => Map.from(item)).toList();
for (var element in dataList) {
final List templateList = await db.query(
'meetingtemplate',
limit: 4,
where: 'categoryid = ?',
where: 'categoryid = ? ',
whereArgs: [element['id']],
orderBy: 'id ${element['name'] == '自定义' ? 'DESC' : 'ASC'}',
);
@ -296,11 +344,13 @@ class SqfliteApi {
// 获取商务会议助手模版列表
static Future getMeetingTemplateList(int id, {bool isCustom = false}) async {
final language = _getMeetingTemplateLanguageCode();
Logger.info('language: $language');
final db = await DatabaseHelper().database;
return await db.query(
'meetingtemplate',
where: 'categoryid = ?',
whereArgs: [id],
where: 'categoryid = ? AND language = ?',
whereArgs: [id, language],
orderBy: 'id ${isCustom ? 'DESC' : 'ASC'}',
);
}

13
lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart

@ -176,8 +176,8 @@ class _GenerateBottomSheetState extends State<GenerateBottomSheet> {
if (result != null) {
_scrollController.jumpTo(0);
List list = List.from(_originalTemplate);
int index = list
.indexWhere((element) => element['id'] == result['id']);
int index = list.indexWhere(
(element) => element['id'] == result['id']);
if (index != -1) {
Map itemToMove = list.removeAt(index);
list.insert(0, itemToMove);
@ -199,9 +199,12 @@ class _GenerateBottomSheetState extends State<GenerateBottomSheet> {
editMap['desc'] = _controller.editTemplate['desc'];
editMap['prompt'] = _controller.editTemplate['prompt'];
}
if (_controller.editTemplate['id'] == _templateData['id']) {
_templateData['name'] = _controller.editTemplate['name'];
_templateData['desc'] = _controller.editTemplate['desc'];
if (_controller.editTemplate['id'] ==
_templateData['id']) {
_templateData['name'] =
_controller.editTemplate['name'];
_templateData['desc'] =
_controller.editTemplate['desc'];
_templateData['prompt'] =
_controller.editTemplate['prompt'];
}

Loading…
Cancel
Save