import 'package:dating_touchme_app/controller/global.dart'; import 'package:dating_touchme_app/model/mine/rose_data.dart'; import 'package:dating_touchme_app/network/user_api.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:fluwx/fluwx.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; class SpreadController extends GetxController with WidgetsBindingObserver { // UserApi实例 late UserApi _userApi; final roseList = [].obs; final roseNum = 0.obs; final payChecked = true.obs; final activePay = 0.obs; final enableIndex = (-1).obs; final Fluwx fluwx = Fluwx(); final matchmakerFlag = false.obs; final button = '去相亲'.obs; changePayActive(int index){ if(index < enableIndex.value && enableIndex.value >= 0){ return; } activePay.value = index; if(matchmakerFlag.value){ if(activePay.value > enableIndex.value){ button.value = '立即升级'; } else { button.value = '立即续费'; } } else if(activePay.value == 0){ button.value = '去相亲'; } else { button.value = '立即加入'; } } List list2 = [ {'title': '邀请注册', 'unit': '10%', 'desc': '分佣', 'enable': 1, 'value': 111, 'icon': 'icon-right1'}, {'title': '发布悬赏', 'unit': '10%', 'desc': '分佣', 'enable': 1, 'value': 112, 'icon': 'icon-right2'}, {'title': '匹配悬赏', 'unit': '10%', 'desc': '分佣', 'enable': 0, 'value': 113, 'icon': 'icon-right41'}, {'title': '推荐红娘', 'unit': '10%', 'desc': '分佣', 'enable': 1, 'value': 114, 'icon': 'icon-right3'}, {'title': '免费升级', 'desc': '门店合伙人', 'enable': 0, 'value': 0, 'icon': 'icon-right51'}, {'title': '资源共享', 'desc': '所有资料', 'enable': 1, 'value': 0, 'icon': 'icon-right6'}, {'title': '业绩奖励', 'unit': '5%', 'desc': '奖励', 'enable': 1, 'value': 0, 'icon': 'icon-right71'}, {'title': '次年续签', 'unit': '90%', 'desc': '减免', 'enable': 1, 'value': 0, 'icon': 'icon-right8'} ].obs; // 倒计时秒数 final countdownSeconds = 0.obs; @override void onInit() { super.onInit(); WidgetsBinding.instance.addObserver(this); _userApi = Get.find(); if(GlobalData().userData!.matchmakerFlag != null && GlobalData().userData!.matchmakerFlag!){ matchmakerFlag.value = true; } getRoseList(); } @override void didChangeAppLifecycleState(AppLifecycleState state) { if(state == AppLifecycleState.resumed){ if (countdownSeconds.value > 0) { startCountdown(); } } } // 开始倒计时 void startCountdown() async { try{ final response = await _userApi.getAuditMatchmaker(); if (response.data.isSuccess && response.data.data != null) { bool audit = response.data.data['needAudit']; if(audit){ Future.delayed(const Duration(milliseconds: 300), () { if (countdownSeconds.value > 0) { countdownSeconds.value--; startCountdown(); } }); } else { countdownSeconds.value = 0; GlobalData().userData!.matchmakerFlag = true; Get.back(result: 1); } } } catch (e) { print('87$e'); } } @override void onClose() { WidgetsBinding.instance.removeObserver(this); super.onClose(); } getRoseList() async { try{ final response = await _userApi.getMatchmakerFee(); if (response.data.isSuccess && response.data.data != null) { final data = response.data.data!.records; roseList.addAll(data.toList()); if(matchmakerFlag.value){ final index = roseList.indexWhere((item) => item.subCategory == GlobalData().userData!.matchmakerType!); enableIndex.value = index >= 0 ? index : 0; changePayActive(enableIndex.value); } } print('rose>>>${roseList.length}'); } catch (e) { print('玫瑰列表获取失败: $e'); rethrow; } } submitOrder() async { if(activePay.value == 0){ Get.back(); return; } try { final response = await _userApi.submitOrder({ "productSpecId": roseList[activePay.value].productSpecId }); if (response.data.isSuccess && response.data.data != null) { final data = response.data.data; fluwx.open(target: MiniProgram( username: 'gh_9ea8d46add6f', path: "pages/index/index?amount=${roseList[activePay.value].unitSellingPrice}&paymentOrderId=${data!.paymentOrderId}&url=match-fee", miniProgramType: WXMiniProgramType.preview )); countdownSeconds.value = 3; SmartDialog.showToast('开始支付'); } else { // 响应失败,抛出异常 throw Exception(response.data.message ?? '获取数据失败'); } } catch (e) { print('玫瑰列表获取失败: $e'); SmartDialog.showToast('下单失败'); rethrow; } } }