import 'package:common_utils/common_utils.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_subscreen_plugin/flutter_subscreen_plugin.dart'; import 'package:get/get.dart'; import 'package:pj_supermarket_cloud/common/index.dart'; class TakeFoodController extends GetxController { final appC = Get.find(); Rxn payUser = Rxn(ServiceUser()); RxList carList = [].obs; OrderPayType orderPayType = OrderPayType.RESERVE_QR_CODE; OrderType orderType = OrderType.RESERVE; int totalPrice = 0; String? orderId; ServiceQRCode? globalQrCode; _initData() { update(["take_food"]); } @override void onInit() { super.onInit(); SubScreenPlugin.doubleScreenShow(); SubScreenPlugin.sendMsgToViceScreen(SubScreenAction.jumpSubPage.name); // 开启扫码功能 startQrcode(); } @override void onReady() { super.onReady(); _initData(); } @override void onClose() { super.onClose(); BarcodeScanManage.instance.dispose(); } doCancelPay() { orderId = null; globalQrCode = null; payUser.value = ServiceUser(); payUser.refresh(); carList.value = []; } doPay() async { await orderQrCodeCancel(); } /// 获取订单详情 Future getOrderDetail() async { if (ObjectUtil.isEmpty(orderId)) return; final pa = {"id": orderId}; try { final data = await HardApi.getOrder(pa); if (data == null) throw Error(); if (ObjectUtil.isEmpty(data)) return; payUser.value?.username = data.username; payUser.value?.userId = globalQrCode?.userId; payUser.value?.userAvatar = data.userAvatar; payUser.refresh(); await getCarList(); } catch (e) { logger.e("获取订单详情错误error:|$e|"); await TtsManage.speak("订单不存在"); } } /// 获取购物车详情 Future getCarList() async { if (ObjectUtil.isEmpty(orderId)) return; final pa = {"orderId": orderId}; try { final data = await HardApi.getCarByOrderId(pa); if (data == null) throw Error(); carList.value = data; senSubScreen(); } catch (e, stack) { logger.e("获取购物车详情错误error:|$e|stack:|$stack|"); } } /// 开启扫码 Future startQrcode() async { try { // 监听二维码测试 BarcodeScanManage.instance.startListening(); BarcodeScanManage.instance.scanStream.listen((event) async { final serviceCode = await BarcodeScanManage.instance.getCodeInfo(event); if (serviceCode == null) return; if (serviceCode.payType != OrderPayType.RESERVE_QR_CODE) { await TtsManage.speak("请出示线上订餐二维码"); return; } globalQrCode = serviceCode; orderId = serviceCode.id; await getOrderDetail(); }); } catch (e) { doCancelPay(); logger.e("开启扫码错误error:|$e|"); } } /// 订单核销 Future orderQrCodeCancel() async { if (ObjectUtil.isEmpty(orderId)) { Toast.error(msg: "请前往设置绑定设备"); return; } final appSetting = await AppSettingTool.getSysSetting(); final serviceId = appSetting.serviceId; if (ObjectUtil.isEmpty(serviceId)) { Toast.error(msg: "订单不存在"); return; } final pa = { "orderId": orderId, "hardwareId": serviceId, }; try { EasyLoading.show( status: '核销中...', maskType: EasyLoadingMaskType.black, ); final flag = await HardApi.cancelQrCode(pa); if (flag == false) throw Error(); EasyLoading.dismiss(); Toast.error(msg: "核销成功"); TtsManage.speak("核销成功"); doCancelPay(); } catch (e, stack) { logger.e("获取订单详情错误error:|$e|stack:|$stack|"); EasyLoading.dismiss(); } } /// 发送给父屏订单信息 void senSubScreen() { if (ObjectUtil.isEmpty(carList)) return; } }