From ef67e589dcd5532de123600f40bd9d76f0ab442d Mon Sep 17 00:00:00 2001 From: tanlongsheng <252620078@qq.com> Date: Fri, 20 Jun 2025 17:44:28 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/services/db/database_helper.dart | 8 -------- lib/data/services/db/sqflite_api.dart | 4 ++++ .../controllers/meeting_details_controller.dart | 9 +++++++++ .../meeting/views/speaker_all_bottom_sheet.dart | 7 +++++++ lib/modules/meeting/views/speaker_bottom_sheet.dart | 11 +++++++++++ 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/lib/data/services/db/database_helper.dart b/lib/data/services/db/database_helper.dart index 0773d9c12..0d6c3aa54 100644 --- a/lib/data/services/db/database_helper.dart +++ b/lib/data/services/db/database_helper.dart @@ -39,14 +39,6 @@ class DatabaseHelper { synctime INTEGER ) '''); - // 操作记录 - batch.execute(''' - CREATE TABLE IF NOT EXISTS operationrecord ( - id INTEGER PRIMARY KEY, - method TEXT, - data TEXT - ) - '''); // 商务会议助手列表 batch.execute(''' CREATE TABLE IF NOT EXISTS meeting ( diff --git a/lib/data/services/db/sqflite_api.dart b/lib/data/services/db/sqflite_api.dart index 001931360..5857b3a7a 100644 --- a/lib/data/services/db/sqflite_api.dart +++ b/lib/data/services/db/sqflite_api.dart @@ -101,6 +101,10 @@ class SqfliteApi { where: 'meetingid = ?', whereArgs: [id], ); + Synchrodata.saveOperationRecord('update', { + ...meeting, + 'id': id, + }); return true; } catch (e) { Get.snackbar( diff --git a/lib/modules/meeting/controllers/meeting_details_controller.dart b/lib/modules/meeting/controllers/meeting_details_controller.dart index 8577525ba..81c4c1841 100644 --- a/lib/modules/meeting/controllers/meeting_details_controller.dart +++ b/lib/modules/meeting/controllers/meeting_details_controller.dart @@ -10,6 +10,7 @@ import 'package:get_storage/get_storage.dart'; import 'package:http/http.dart' as http; import '../../../core/utils/logger.dart'; +import '../../../core/utils/synchrodata.dart'; import '../../../core/utils/upload_oss.dart'; import '../../../data/models/appconfig.dart'; import '../../../data/services/db/sqflite_api.dart'; @@ -208,6 +209,10 @@ class MeetingDetailsController extends GetxController textList[index] = dataMap; } } + Synchrodata.saveOperationRecord('update', { + 'original': jsonEncode(textList), + 'id': id, + }); isSpeakerText.value = false; editSpeakerTextId.value = 0; editSpeakerTextList = []; @@ -417,6 +422,10 @@ class MeetingDetailsController extends GetxController await SqfliteApi.editMeeting(id, {'tasktype': 2, 'personnel': personnel}); List speakerList = await SqfliteApi.getMeetingSpeaker(id); textList.value = List.from(speakerList); + Synchrodata.saveOperationRecord('update', { + 'original': jsonEncode(textList), + 'id': id, + }); meetingDetails.value.tasktype = 2; meetingDetails.value.personnel = personnel; meetingDetails.refresh(); diff --git a/lib/modules/meeting/views/speaker_all_bottom_sheet.dart b/lib/modules/meeting/views/speaker_all_bottom_sheet.dart index 93b89c0f3..1d7a7c03b 100644 --- a/lib/modules/meeting/views/speaker_all_bottom_sheet.dart +++ b/lib/modules/meeting/views/speaker_all_bottom_sheet.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; @@ -6,6 +8,7 @@ import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import 'package:lottie/lottie.dart'; +import '../../../core/utils/synchrodata.dart'; import '../../../data/services/db/sqflite_api.dart'; import '../controllers/meeting_details_controller.dart'; @@ -556,6 +559,10 @@ class _SpeakerAllBottomSheetState extends State { bool isEditSummary = false; String summaryText = _controller.meetingDetails.value.summary; _controller.textList.value = newTextList; + Synchrodata.saveOperationRecord('update', { + 'original': jsonEncode(_controller.textList), + 'id': _controller.meetingData.value.id, + }); for (var element in personnelList) { if (summaryText.contains('[${element['original']}]')) { summaryText = summaryText.replaceAll( diff --git a/lib/modules/meeting/views/speaker_bottom_sheet.dart b/lib/modules/meeting/views/speaker_bottom_sheet.dart index 0a0a40871..2e814e26f 100644 --- a/lib/modules/meeting/views/speaker_bottom_sheet.dart +++ b/lib/modules/meeting/views/speaker_bottom_sheet.dart @@ -1,9 +1,12 @@ +import 'dart:convert'; + import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; +import '../../../core/utils/synchrodata.dart'; import '../../../data/services/db/sqflite_api.dart'; import '../controllers/meeting_details_controller.dart'; @@ -331,6 +334,10 @@ class _SpeakerBottomSheetState extends State { dataMap['speaker'] = _speakerController.text; _controller.textList[index] = dataMap; } + Synchrodata.saveOperationRecord('update', { + 'original': jsonEncode(_controller.textList), + 'id': _controller.meetingData.value.id, + }); _addHistorySpeaker(); Get.back(); } @@ -361,6 +368,10 @@ class _SpeakerBottomSheetState extends State { var result = await SqfliteApi.editMeetingSpeaker(editSpeakerList); if (result != null) { _controller.textList.value = newTextList; + Synchrodata.saveOperationRecord('update', { + 'original': jsonEncode(_controller.textList), + 'id': _controller.meetingData.value.id, + }); if (_controller.meetingDetails.value.summary .contains('[${widget.speakerName}]')) { String summaryText = _controller.meetingDetails.value.summary From 2885d770b0c180d9a04bf4f641f9916a1449216d Mon Sep 17 00:00:00 2001 From: tanlongsheng <252620078@qq.com> Date: Fri, 20 Jun 2025 21:58:23 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BC=9A=E8=AE=AE?= =?UTF-8?q?=E5=8A=A9=E6=89=8B=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/core/utils/synchrodata.dart | 15 ++++++++++++++- lib/modules/meeting/views/share_bottom_sheet.dart | 12 +++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/core/utils/synchrodata.dart b/lib/core/utils/synchrodata.dart index f8dba5c87..860ff7d76 100644 --- a/lib/core/utils/synchrodata.dart +++ b/lib/core/utils/synchrodata.dart @@ -1,5 +1,6 @@ import 'package:get_storage/get_storage.dart'; +import '../../data/services/db/sqflite_api.dart'; import '../../data/services/network/api.dart'; class Synchrodata { @@ -43,6 +44,7 @@ class Synchrodata { foundElement.addAll({ ...params, 'id': id, + 'number': params['id'], }); } else { _records.add({ @@ -68,9 +70,20 @@ class Synchrodata { if (_isSynchro) return; _isSynchro = true; if (_records.isNotEmpty || _delids.isNotEmpty) { + // 获取需要修改的全部数据 + List putRecords = []; + for (var element in _records) { + final result = await SqfliteApi.getMeetingDetails(element['number']); + putRecords.add({ + ...result, + ...result['details'], + 'rtype': result['type'], + ...element, + }); + } var result = await Api.putOperationRecord({ 'delids': _delids, - 'records': _records, + 'records': putRecords, }); if (result != null) { _records = []; diff --git a/lib/modules/meeting/views/share_bottom_sheet.dart b/lib/modules/meeting/views/share_bottom_sheet.dart index 229d83501..42b377255 100644 --- a/lib/modules/meeting/views/share_bottom_sheet.dart +++ b/lib/modules/meeting/views/share_bottom_sheet.dart @@ -6,6 +6,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:get_storage/get_storage.dart'; import 'package:path_provider/path_provider.dart'; import 'package:share_plus/share_plus.dart'; @@ -71,7 +72,16 @@ class _ShareBottomSheetState extends State { child: Column( children: [ _box([ - _shareItem(Icons.link, '分享链接', isBorder: false), + _shareItem(Icons.link, '分享链接', isBorder: false, onTap: () { + final GetStorage storage = GetStorage(); + String token = storage.read("logintoken") ?? ''; + String userId = ''; + Map? userInfo = storage.read("user_info"); + if (userInfo != null) { + userId = userInfo['user']['uid']; + } + String id = '${userId}_${_controller.meetingData.value.id}'; + }), ]), _box([ _shareItem(Icons.copy, '复制转写', onTap: () { From 503b9114f97500278eb3840076cc74367e07e68f Mon Sep 17 00:00:00 2001 From: tanlongsheng <252620078@qq.com> Date: Fri, 20 Jun 2025 22:14:01 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BC=9A=E8=AE=AE?= =?UTF-8?q?=E5=8A=A9=E6=89=8B=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/core/utils/synchrodata.dart | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/core/utils/synchrodata.dart b/lib/core/utils/synchrodata.dart index 860ff7d76..4d8d2e3af 100644 --- a/lib/core/utils/synchrodata.dart +++ b/lib/core/utils/synchrodata.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:get_storage/get_storage.dart'; import '../../data/services/db/sqflite_api.dart'; @@ -74,10 +76,13 @@ class Synchrodata { List putRecords = []; for (var element in _records) { final result = await SqfliteApi.getMeetingDetails(element['number']); + final speakerList = + await SqfliteApi.getMeetingSpeaker(element['number']); putRecords.add({ ...result, ...result['details'], 'rtype': result['type'], + 'original': jsonEncode(speakerList), ...element, }); }