第一次打开:
App启动 → 设备登录 → 保存Token → 进入主页
后续打开:
App启动 → 检测本地Token → Token有效 → 自动登录 → 进入主页
↓
Token失效/无效 → 自动设备登录 → 更新Token → 进入主页
This commit is contained in:
parent
06a198a975
commit
a3b7c418b1
@ -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<String, dynamic>) {
|
||||
description = KRDescription.fromJson(descriptionJson);
|
||||
|
||||
@ -622,11 +622,12 @@ class KRLoginView extends GetView<KRLoginController> {
|
||||
/// 显示悬浮框
|
||||
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,
|
||||
|
||||
@ -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<void> 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,
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user