From c38e27c033f93e11ecfb62123434e539e1d70e39 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Thu, 13 Nov 2025 21:22:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=94=AF=E4=BB=98=E7=94=A8?= =?UTF-8?q?=E9=87=8F=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/models/user_Info.dart | 75 ++++++++++--------- .../agent/controllers/agent_controller.dart | 6 +- lib/modules/agent/views/agent_view.dart | 17 +++-- lib/modules/goods/views/goodsai_view.dart | 4 +- lib/modules/goods/views/goodsmeet_view.dart | 4 +- lib/modules/goods/views/goodstrade_view.dart | 4 +- 6 files changed, 58 insertions(+), 52 deletions(-) diff --git a/lib/data/models/user_Info.dart b/lib/data/models/user_Info.dart index 719bbfa07..861d1604a 100644 --- a/lib/data/models/user_Info.dart +++ b/lib/data/models/user_Info.dart @@ -46,12 +46,13 @@ class User { String password; int viplv = 0; //添加会员等级字段,0表示普通用户 int viptime = 0; // 会员到期/剩余时间(秒/毫秒,按后端定义) - int tradetotaltime = 0; // 翻译总时长 - int meettotaltime = 0; // 会议总时长 - int aichattotaltimer = 0; // 智能体总次数(兼容 aichattotaltime/aichattotaltimer) - int tradetime = 0; // 翻译剩余时长 - int meettime = 0; // 会议剩余时长 - int aichattimer = 0; // 智能体剩余次数 + int aichatintegral = 0; // ai聊天积分 + int aichattotalintegral = 0; // ai聊天总积分 + int tradeintegral = 0; // 翻译积分 + int tradetotalintegral = 0; // 翻译总积分 + int meetintegral = 0; // 会议积分 + int meettotalintegral = 0; // 会议总积分 + List devices; // 私有构造函数 @@ -67,12 +68,12 @@ class User { required this.password, required this.viplv, required this.viptime, - required this.aichattotaltimer, - required this.meettotaltime, - required this.tradetotaltime, - required this.aichattimer, - required this.meettime, - required this.tradetime, + required this.aichatintegral, + required this.aichattotalintegral, + required this.tradeintegral, + required this.tradetotalintegral, + required this.meetintegral, + required this.meettotalintegral, required this.devices, }); @@ -97,12 +98,12 @@ class User { viplv: (userData?['viplv'] as int?) ?? 0, // 提供默认值 viptime: (userData?['viptime'] as int?) ?? 0, // 提供默认值 - aichattotaltimer: (userData?['aichattotaltimer'] as int?) ?? 0, - meettotaltime: (userData?['meettotaltime'] as int?) ?? 0, - tradetotaltime: (userData?['tradetotaltime'] as int?) ?? 0, - aichattimer: (userData?['aichattimer'] as int?) ?? 0, - meettime: (userData?['meettime'] as int?) ?? 0, - tradetime: (userData?['tradetime'] as int?) ?? 0, + aichatintegral: (userData?['aichatintegral'] as int?) ?? 0, + aichattotalintegral: (userData?['aichattotalintegral'] as int?) ?? 0, + tradeintegral: (userData?['tradeintegral'] as int?) ?? 0, + tradetotalintegral: (userData?['tradetotalintegral'] as int?) ?? 0, + meetintegral: (userData?['meetintegral'] as int?) ?? 0, + meettotalintegral: (userData?['meettotalintegral'] as int?) ?? 0, devices: devicesData ?.map((e) => UserDevice.fromJson(e as Map)) @@ -130,12 +131,12 @@ class User { password: (userData?['password'] as String?) ?? '', viplv: (userData?['viplv'] as int?) ?? 0, // 提供默认值 viptime: (userData?['viptime'] as int?) ?? 0, // 提供默认值 - aichattotaltimer: (userData?['aichattotaltimer'] as int?) ?? 0, - meettotaltime: (userData?['meettotaltime'] as int?) ?? 0, - tradetotaltime: (userData?['tradetotaltime'] as int?) ?? 0, - aichattimer: (userData?['aichattimer'] as int?) ?? 0, - meettime: (userData?['meettime'] as int?) ?? 0, - tradetime: (userData?['tradetime'] as int?) ?? 0, + aichatintegral: (userData?['aichatintegral'] as int?) ?? 0, + aichattotalintegral: (userData?['aichattotalintegral'] as int?) ?? 0, + tradeintegral: (userData?['tradeintegral'] as int?) ?? 0, + tradetotalintegral: (userData?['tradetotalintegral'] as int?) ?? 0, + meetintegral: (userData?['meetintegral'] as int?) ?? 0, + meettotalintegral: (userData?['meettotalintegral'] as int?) ?? 0, devices: devicesData != null ? (devicesData) .map((e) => UserDevice.fromJson(e as Map)) @@ -156,12 +157,14 @@ class User { password = user['password'] as String? ?? password; viplv = user['viplv'] as int? ?? viplv; viptime = user['viptime'] as int? ?? viptime; - tradetotaltime = user['tradetotaltime'] as int? ?? tradetotaltime; - meettotaltime = user['meettotaltime'] as int? ?? meettotaltime; - aichattotaltimer = user['aichattotaltimer'] as int? ?? aichattotaltimer; - tradetime = user['tradetime'] as int? ?? tradetime; - meettime = user['meettime'] as int? ?? meettime; - aichattimer = user['aichattimer'] as int? ?? aichattimer; + aichatintegral = user['aichatintegral'] as int? ?? aichatintegral; + aichattotalintegral = + user['aichattotalintegral'] as int? ?? aichattotalintegral; + tradeintegral = user['tradeintegral'] as int? ?? tradeintegral; + tradetotalintegral = + user['tradetotalintegral'] as int? ?? tradetotalintegral; + meetintegral = user['meetintegral'] as int? ?? meetintegral; + meettotalintegral = user['meettotalintegral'] as int? ?? meettotalintegral; // 触发全局刷新信号,驱动依赖UI重建 refreshTick.value++; @@ -181,12 +184,12 @@ class User { 'password': password, 'viplv': viplv, 'viptime': viptime, - 'tradetotaltime': tradetotaltime, - 'meettotaltime': meettotaltime, - 'aichattotaltimer': aichattotaltimer, - 'tradetime': tradetime, - 'meettime': meettime, - 'aichattimer': aichattimer, + 'aichatintegral': aichatintegral, + 'aichattotalintegral': aichattotalintegral, + 'tradeintegral': tradeintegral, + 'tradetotalintegral': tradetotalintegral, + 'meetintegral': meetintegral, + 'meettotalintegral': meettotalintegral, 'devices': devices.map((device) => device.toJson()).toList(), }, }; diff --git a/lib/modules/agent/controllers/agent_controller.dart b/lib/modules/agent/controllers/agent_controller.dart index 959115f54..a1fe419fd 100644 --- a/lib/modules/agent/controllers/agent_controller.dart +++ b/lib/modules/agent/controllers/agent_controller.dart @@ -45,7 +45,7 @@ class AgentController extends GetxController with WidgetsBindingObserver { // 聊天消息列表 final messages = [].obs; final currsessionid = ''.obs; - + final aichatintegral = 0.obs; // UI控制器 final TextEditingController textController = TextEditingController(); final ScrollController scrollController = ScrollController(); @@ -165,6 +165,7 @@ class AgentController extends GetxController with WidgetsBindingObserver { @override void onInit() { super.onInit(); + aichatintegral.value = User.isLoggedIn() ? User.instance.aichatintegral : 0; _initAppDir(); _loadTtsPreference(); //加载TTS偏好设置 _loadTtsInterrupe(); //加载TTS播报打断偏好设置 @@ -1022,7 +1023,8 @@ class AgentController extends GetxController with WidgetsBindingObserver { case AgentServiceEventType.assistantUsages: final sessionid = event.data['sessionid'] ?? ''; final integral = event.data['integral'] ?? 0; - User.instance.aiIntegral = integral; + User.instance.aichatintegral = integral; + aichatintegral.value = integral; break; default: break; diff --git a/lib/modules/agent/views/agent_view.dart b/lib/modules/agent/views/agent_view.dart index 5aabbb9b1..b7484a4bc 100644 --- a/lib/modules/agent/views/agent_view.dart +++ b/lib/modules/agent/views/agent_view.dart @@ -6,6 +6,7 @@ import 'package:flutter_intro/flutter_intro.dart'; import 'package:get/get.dart'; import 'package:haptic_feedback/haptic_feedback.dart'; import '../../../core/widgets/intro_overlay_builder.dart'; +import '../../../data/models/user_Info.dart'; import '../controllers/agent_controller.dart'; import '../controllers/message_action_controller.dart'; import 'message_bubble.dart'; @@ -118,14 +119,14 @@ class _AgentViewState extends State with WidgetsBindingObserver { ), ), SizedBox(width: 4.w), - Text( - 'online'.tr, - style: TextStyle( - fontSize: 12.sp, - color: Colors.green, - fontWeight: FontWeight.w500, - ), - ), + Obx(() => Text( + '剩余积分: ${controller.aichatintegral.value}', + style: TextStyle( + fontSize: 12.sp, + color: Colors.green, + fontWeight: FontWeight.w500, + ), + )), ], ), ], diff --git a/lib/modules/goods/views/goodsai_view.dart b/lib/modules/goods/views/goodsai_view.dart index 913efb2ae..c53c9442c 100644 --- a/lib/modules/goods/views/goodsai_view.dart +++ b/lib/modules/goods/views/goodsai_view.dart @@ -141,8 +141,8 @@ class GoodsaiView extends GetView { int remainAi = 0; if (User.isLoggedIn()) { final u = User.instance; - totalAi = u.aichattotaltimer; - remainAi = u.aichattimer; + totalAi = u.aichattotalintegral; + remainAi = u.aichatintegral; } // 进度显示为“剩余额度比例”,remain/total: final progress = (totalAi > 0) ? (remainAi / totalAi).clamp(0.0, 1.0) : 0.0; diff --git a/lib/modules/goods/views/goodsmeet_view.dart b/lib/modules/goods/views/goodsmeet_view.dart index ff00908e0..2bedfd040 100644 --- a/lib/modules/goods/views/goodsmeet_view.dart +++ b/lib/modules/goods/views/goodsmeet_view.dart @@ -135,8 +135,8 @@ class GoodsmeetView extends GetView { int remainAi = 0; if (User.isLoggedIn()) { final u = User.instance; - totalAi = u.meettotaltime; - remainAi = u.meettime; + totalAi = u.meettotalintegral; + remainAi = u.meetintegral; } final progress = (totalAi > 0) ? (remainAi / totalAi).clamp(0.0, 1.0) : 0.0; diff --git a/lib/modules/goods/views/goodstrade_view.dart b/lib/modules/goods/views/goodstrade_view.dart index a2025f7be..e501aecaa 100644 --- a/lib/modules/goods/views/goodstrade_view.dart +++ b/lib/modules/goods/views/goodstrade_view.dart @@ -135,8 +135,8 @@ class GoodstradeView extends GetView { int remainAi = 0; if (User.isLoggedIn()) { final u = User.instance; - totalAi = u.tradetotaltime; - remainAi = u.tradetime; + totalAi = u.tradetotalintegral; + remainAi = u.tradeintegral; } final progress = (totalAi > 0) ? (remainAi / totalAi).clamp(0.0, 1.0) : 0.0;