From a3b7c418b195ff24304a4cc57946ba44584a58c8 Mon Sep 17 00:00:00 2001 From: Rust Date: Sat, 18 Oct 2025 14:30:46 +0800 Subject: [PATCH] =?UTF-8?q?=20=20=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=89=93?= =?UTF-8?q?=E5=BC=80:=20=20=20App=E5=90=AF=E5=8A=A8=20=E2=86=92=20?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=99=BB=E5=BD=95=20=E2=86=92=20=E4=BF=9D?= =?UTF-8?q?=E5=AD=98Token=20=E2=86=92=20=E8=BF=9B=E5=85=A5=E4=B8=BB?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后续打开: App启动 → 检测本地Token → Token有效 → 自动登录 → 进入主页 ↓ Token失效/无效 → 自动设备登录 → 更新Token → 进入主页 --- lib/app/model/response/kr_package_list.dart | 13 ++++++--- .../modules/kr_login/views/kr_login_view.dart | 5 ++-- .../kr_purchase_membership_controller.dart | 29 ++++++++++++------- lib/app/network/http_util.dart | 10 ++++++- 4 files changed, 39 insertions(+), 18 deletions(-) diff --git a/lib/app/model/response/kr_package_list.dart b/lib/app/model/response/kr_package_list.dart index 10131e1..c382c13 100755 --- a/lib/app/model/response/kr_package_list.dart +++ b/lib/app/model/response/kr_package_list.dart @@ -193,11 +193,16 @@ class KRPackageListItem { final descriptionJson = json['description']; KRDescription description; if (descriptionJson is String) { - try { - description = KRDescription.fromJson(jsonDecode(descriptionJson)); - } catch (e) { - KRLogUtil.kr_e('解析描述信息失败: $e'); + // 如果是空字符串,直接返回空描述 + if (descriptionJson.isEmpty) { description = KRDescription(kr_features: []); + } else { + try { + description = KRDescription.fromJson(jsonDecode(descriptionJson)); + } catch (e) { + KRLogUtil.kr_e('解析描述信息失败: $e'); + description = KRDescription(kr_features: []); + } } } else if (descriptionJson is Map) { description = KRDescription.fromJson(descriptionJson); diff --git a/lib/app/modules/kr_login/views/kr_login_view.dart b/lib/app/modules/kr_login/views/kr_login_view.dart index 8fbe317..9995b6b 100755 --- a/lib/app/modules/kr_login/views/kr_login_view.dart +++ b/lib/app/modules/kr_login/views/kr_login_view.dart @@ -622,11 +622,12 @@ class KRLoginView extends GetView { /// 显示悬浮框 void _showDropdown(BuildContext context) { final theme = Theme.of(context); + final mediaQuery = MediaQuery.of(context); if (controller.isDropdownVisible) return; controller.overlayEntry = OverlayEntry( - builder: (_) => Positioned( - width: MediaQuery.of(context).size.width - 40.w, + builder: (BuildContext overlayContext) => Positioned( + width: mediaQuery.size.width - 40.w, child: CompositedTransformFollower( link: controller.kr_layerLink, showWhenUnlinked: false, diff --git a/lib/app/modules/kr_purchase_membership/controllers/kr_purchase_membership_controller.dart b/lib/app/modules/kr_purchase_membership/controllers/kr_purchase_membership_controller.dart index 5c3697c..c17f1ad 100755 --- a/lib/app/modules/kr_purchase_membership/controllers/kr_purchase_membership_controller.dart +++ b/lib/app/modules/kr_purchase_membership/controllers/kr_purchase_membership_controller.dart @@ -100,7 +100,7 @@ class KRPurchaseMembershipController extends GetxController { await _iniUserInfo(); await kr_getAlreadySubscribe(); await kr_fetchPackages(); - await kr_fetchPaymentMethods(); + // await kr_fetchPaymentMethods(); // ⚠️ 后端暂未实现 /v1/app/payment/methods 接口 // 根据套餐数量决定是否显示套餐选择器 kr_showPlanSelector.value = kr_plans.length > 1; @@ -300,11 +300,12 @@ class KRPurchaseMembershipController extends GetxController { return false; } - if (kr_selectedPaymentMethodIndex.value < 0 || - kr_selectedPaymentMethodIndex.value >= kr_paymentMethods.length) { - KRCommonUtil.kr_showToast('请选择支付方式'); - return false; - } + // ⚠️ 支付方式接口暂未实现,暂时跳过支付方式验证 + // if (kr_selectedPaymentMethodIndex.value < 0 || + // kr_selectedPaymentMethodIndex.value >= kr_paymentMethods.length) { + // KRCommonUtil.kr_showToast('请选择支付方式'); + // return false; + // } return true; } @@ -312,8 +313,14 @@ class KRPurchaseMembershipController extends GetxController { /// 处理购买和结账流程 Future kr_processPurchaseAndCheckout() async { final selectedPlan = kr_plans[kr_selectedPlanIndex.value]; - final selectedPaymentMethod = - kr_paymentMethods[kr_selectedPaymentMethodIndex.value]; + + // ⚠️ 支付方式接口暂未实现,使用默认支付方式 ID (1) 和平台 'alipay' + final paymentMethodId = kr_paymentMethods.isNotEmpty && kr_selectedPaymentMethodIndex.value >= 0 + ? kr_paymentMethods[kr_selectedPaymentMethodIndex.value].id + : 1; + final paymentPlatform = kr_paymentMethods.isNotEmpty && kr_selectedPaymentMethodIndex.value >= 0 + ? kr_paymentMethods[kr_selectedPaymentMethodIndex.value].platform + : 'alipay'; // 获取选中的数量 final quantity = kr_getSelectedQuantity(); @@ -334,13 +341,13 @@ class KRPurchaseMembershipController extends GetxController { ? await _kr_subscribeApi.kr_renewal( subscribeId, quantity, - selectedPaymentMethod.id, + paymentMethodId, '', ) : await _kr_subscribeApi.kr_purchase( selectedPlan.kr_id, quantity, - selectedPaymentMethod.id, + paymentMethodId, '', ); @@ -356,7 +363,7 @@ class KRPurchaseMembershipController extends GetxController { arguments: { 'url': uri, 'order': order, - 'payment_type': selectedPaymentMethod.platform, + 'payment_type': paymentPlatform, }, ), ); diff --git a/lib/app/network/http_util.dart b/lib/app/network/http_util.dart index 5c3e535..9b63be4 100755 --- a/lib/app/network/http_util.dart +++ b/lib/app/network/http_util.dart @@ -44,7 +44,7 @@ class HttpUtil { /// 对dio进行配置 void initDio() { - Loggy.initLoggy(logPrinter: PrettyPrinter()); + Loggy.initLoggy(logPrinter: _KRSimpleLogPrinter()); _dio.interceptors.add(LoggyDioInterceptor(requestBody: true)); _dio.options.baseUrl = AppConfig.getInstance().baseUrl; // 添加日志拦截器 @@ -290,3 +290,11 @@ class MyInterceptor extends Interceptor { handler.next(err); } } + +/// 自定义简洁日志打印机(无边框符号) +class _KRSimpleLogPrinter extends LoggyPrinter { + @override + void onLog(LogRecord record) { + print(record.message); + } +}