You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
254 lines
6.8 KiB
254 lines
6.8 KiB
import 'dart:convert';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:get_storage/get_storage.dart';
|
|
|
|
import 'database_helper.dart';
|
|
|
|
class SqfliteApi {
|
|
static GetStorage storage = GetStorage();
|
|
static String userId = '';
|
|
|
|
// 保存操作记录
|
|
static Future saveMeetingOperationRecord(
|
|
String method,
|
|
dynamic params,
|
|
) async {
|
|
if (userId.isEmpty) {
|
|
Map userInfo = storage.read("user_info");
|
|
userId = userInfo['user']['uid'];
|
|
}
|
|
final db = await DatabaseHelper().database;
|
|
String data = '';
|
|
if (method == 'records') {
|
|
Map records = {
|
|
...params,
|
|
'id': '${userId}_${params['id']}',
|
|
'number': params['id'],
|
|
'uid': userId,
|
|
};
|
|
data = jsonEncode(records);
|
|
} else {
|
|
data = params;
|
|
}
|
|
db.insert('operationrecord', {
|
|
'method': method,
|
|
'data': data,
|
|
});
|
|
}
|
|
|
|
// 操作记录列表
|
|
static Future getMeetingOperationRecord() async {
|
|
final db = await DatabaseHelper().database;
|
|
return await db.query('operationrecord');
|
|
}
|
|
|
|
// 获取商务会议助手列表
|
|
static Future getMeetingList(int offset) async {
|
|
final db = await DatabaseHelper().database;
|
|
List<Map<String, dynamic>> dataList = [];
|
|
List meetingList = await db.query(
|
|
'meeting',
|
|
limit: 10,
|
|
offset: offset,
|
|
orderBy: 'creationtime DESC',
|
|
);
|
|
for (var element in meetingList) {
|
|
final List detailsList = await db.query(
|
|
'meetingdetails',
|
|
where: 'meetingid = ?',
|
|
whereArgs: [element['id']],
|
|
);
|
|
dataList.add({
|
|
...element,
|
|
'taskid': detailsList.first['taskid'],
|
|
});
|
|
}
|
|
return dataList;
|
|
}
|
|
|
|
// 获取商务会议助手详情
|
|
static Future getMeetingDetails(id) async {
|
|
final db = await DatabaseHelper().database;
|
|
List meetingList =
|
|
await db.query('meeting', where: 'id = ?', whereArgs: [id]);
|
|
List detailsList = await db.query(
|
|
'meetingdetails',
|
|
where: 'meetingid = ?',
|
|
whereArgs: [id],
|
|
);
|
|
return <String, dynamic>{
|
|
...meetingList.first,
|
|
'taskid': detailsList.first['taskid'],
|
|
'details': detailsList.first
|
|
};
|
|
}
|
|
|
|
// 获取商务会议助手转写内容
|
|
static Future getMeetingSpeaker(id) async {
|
|
final db = await DatabaseHelper().database;
|
|
return await db.query(
|
|
'meetingspeaker',
|
|
where: 'meetingid = ?',
|
|
whereArgs: [id],
|
|
);
|
|
}
|
|
|
|
// 插入商务会议助手
|
|
static Future insertMeeting(Map<String, Object?> meeting) async {
|
|
final db = await DatabaseHelper().database;
|
|
try {
|
|
int id = 0;
|
|
await db.transaction((txn) async {
|
|
id = await txn.insert('meeting', meeting);
|
|
await txn.insert('meetingdetails', {
|
|
'meetingid': id,
|
|
'address': '',
|
|
'personnel': '',
|
|
'taskid': '',
|
|
'tasktype': 0,
|
|
'overview': '',
|
|
'summary': '',
|
|
'mindmap': '',
|
|
});
|
|
});
|
|
return id;
|
|
} catch (e) {
|
|
Get.snackbar(
|
|
'error'.tr, // 错误
|
|
'unknownError'.tr,
|
|
snackPosition: SnackPosition.TOP,
|
|
backgroundColor: Colors.red.withOpacity(0.1),
|
|
colorText: Colors.red,
|
|
);
|
|
return;
|
|
}
|
|
}
|
|
|
|
// 修改商务会议助手详情内容
|
|
static Future editMeeting(id, Map<String, Object?> meeting) async {
|
|
final db = await DatabaseHelper().database;
|
|
try {
|
|
await db.update(
|
|
'meetingdetails',
|
|
meeting,
|
|
where: 'meetingid = ?',
|
|
whereArgs: [id],
|
|
);
|
|
return true;
|
|
} catch (e) {
|
|
Get.snackbar(
|
|
'error'.tr, // 错误
|
|
'unknownError'.tr,
|
|
snackPosition: SnackPosition.TOP,
|
|
backgroundColor: Colors.red.withOpacity(0.1),
|
|
colorText: Colors.red,
|
|
);
|
|
return;
|
|
}
|
|
}
|
|
|
|
// 插入商务会议助手转写内容
|
|
static Future insertMeetingSpeaker(List<Map<String, Object?>> data) async {
|
|
final db = await DatabaseHelper().database;
|
|
try {
|
|
final batch = db.batch();
|
|
for (var item in data) {
|
|
batch.insert('meetingspeaker', item);
|
|
}
|
|
await batch.commit();
|
|
return true;
|
|
} catch (e) {
|
|
Get.snackbar(
|
|
'error'.tr, // 错误
|
|
'unknownError'.tr,
|
|
snackPosition: SnackPosition.TOP,
|
|
backgroundColor: Colors.red.withOpacity(0.1),
|
|
colorText: Colors.red,
|
|
);
|
|
return;
|
|
}
|
|
}
|
|
|
|
// 修改商务会议助手转写内容
|
|
static Future editMeetingSpeaker(List data) async {
|
|
final db = await DatabaseHelper().database;
|
|
try {
|
|
final batch = db.batch();
|
|
for (var item in data) {
|
|
Map<String, Object?> values = item['content'] != null
|
|
? {'content': item['content']}
|
|
: {'speaker': item['speaker']};
|
|
batch.update(
|
|
'meetingspeaker',
|
|
values,
|
|
where: 'id = ?',
|
|
whereArgs: [item['id']],
|
|
);
|
|
}
|
|
await batch.commit();
|
|
return true;
|
|
} catch (e) {
|
|
Get.snackbar(
|
|
'error'.tr, // 错误
|
|
'unknownError'.tr,
|
|
snackPosition: SnackPosition.TOP,
|
|
backgroundColor: Colors.red.withOpacity(0.1),
|
|
colorText: Colors.red,
|
|
);
|
|
return;
|
|
}
|
|
}
|
|
|
|
// 修改商务会议助手标题
|
|
static Future editMeetingTitle(id, Map<String, Object?> meeting) async {
|
|
final db = await DatabaseHelper().database;
|
|
await db.update('meeting', meeting, where: 'id = ?', whereArgs: [id]);
|
|
}
|
|
|
|
// 删除商务会议助手
|
|
static Future deleteMeeting(id) async {
|
|
final db = await DatabaseHelper().database;
|
|
await db.transaction((txn) async {
|
|
await txn.delete('meeting', where: 'id = ?', whereArgs: [id]);
|
|
await txn
|
|
.delete('meetingdetails', where: 'meetingid = ?', whereArgs: [id]);
|
|
await txn
|
|
.delete('meetingspeaker', where: 'meetingid = ?', whereArgs: [id]);
|
|
});
|
|
}
|
|
|
|
// 获取商务会议助手所有分类模版列表
|
|
static Future getMeetingCategoryTemplateList() async {
|
|
final db = await DatabaseHelper().database;
|
|
List categorytemplateList = await db.query('meetingcategorytemplate');
|
|
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 = ?',
|
|
whereArgs: [element['id']],
|
|
);
|
|
element['template'] = templateList
|
|
.map((item) => {
|
|
...Map.from(item),
|
|
'tag': item['tag'].isNotEmpty ? item['tag'].split(',') : [],
|
|
})
|
|
.toList();
|
|
}
|
|
return dataList;
|
|
}
|
|
|
|
// 获取商务会议助手模版列表
|
|
static Future getMeetingTemplateList(int id) async {
|
|
final db = await DatabaseHelper().database;
|
|
return await db.query(
|
|
'meetingtemplate',
|
|
where: 'categoryid = ?',
|
|
whereArgs: [id],
|
|
);
|
|
}
|
|
}
|
|
|