From fac3c060e612704ba286dfa99eb6b12bc32d24fa Mon Sep 17 00:00:00 2001 From: liyi Date: Sat, 6 Sep 2025 14:50:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E8=93=9D=E7=89=99?= =?UTF-8?q?=E5=BC=80=E9=94=81=E5=90=8E=E5=90=8C=E6=AD=A5=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E3=80=81=E5=8D=A1=E3=80=81=E6=8C=87=E7=BA=B9=E3=80=81=E4=BA=BA?= =?UTF-8?q?=E8=84=B8=E3=80=81=E9=81=A5=E6=8E=A7=E7=9A=84=E9=92=A5=E5=8C=99?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lockDetail/lockDetail_logic.dart | 989 ++++++++++++++---- .../lockDetail/lockDetail_state.dart | 26 +- .../lockSet/uploadData/uploadData_logic.dart | 155 +-- 3 files changed, 885 insertions(+), 285 deletions(-) diff --git a/lib/main/lockDetail/lockDetail/lockDetail_logic.dart b/lib/main/lockDetail/lockDetail/lockDetail_logic.dart index 2d930e9a..4f480b09 100755 --- a/lib/main/lockDetail/lockDetail/lockDetail_logic.dart +++ b/lib/main/lockDetail/lockDetail/lockDetail_logic.dart @@ -8,6 +8,12 @@ import 'package:intl/intl.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:star_lock/apm/apm_helper.dart'; import 'package:star_lock/appRouters.dart'; +import 'package:star_lock/blue/io_protocol/io_updataLockCardList.dart'; +import 'package:star_lock/blue/io_protocol/io_updataLockFaceList.dart'; +import 'package:star_lock/blue/io_protocol/io_updataLockFingerprintList.dart'; +import 'package:star_lock/blue/io_protocol/io_updataLockPalmVeinList.dart'; +import 'package:star_lock/blue/io_protocol/io_updataLockPasswordList.dart'; +import 'package:star_lock/blue/io_protocol/io_updataLockRemoteControlList.dart'; import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart'; import 'package:star_lock/login/login/entity/LoginEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart'; @@ -46,23 +52,50 @@ class LockDetailLogic extends BaseGetXController { final LockDetailState state = LockDetailState(); //节流器,用来限制开锁按钮的触发频率 - FunctionBlocker functionBlocker = - FunctionBlocker(duration: const Duration(seconds: 2)); + FunctionBlocker functionBlocker = FunctionBlocker(duration: const Duration(seconds: 2)); // 监听设备返回的数据 void initReplySubscription() { - state.replySubscription = - EventBusManager().eventBus!.on().listen((Reply reply) async { + state.replySubscription = EventBusManager().eventBus!.on().listen((Reply reply) async { // 开门 if (reply is OpenDoorReply) { _replyOpenLock(reply); } // 开完锁之后上传记录 - if (reply is SenderReferEventRecordTimeReply && - state.ifCurrentScreen.value == true) { + if (reply is SenderReferEventRecordTimeReply && state.ifCurrentScreen.value == true) { await _replyReferEventRecordTime(reply); } + + // 上传数据获取锁密码列表 + if (reply is UpdataLockPasswordListReply && (state.ifCurrentScreen.value == true)) { + _replyUpdataLockPasswordListReply(reply); + } + + // 上传数据获取锁卡列表 + if (reply is UpdataLockCardListReply && (state.ifCurrentScreen.value == true)) { + _replyUpdataLockCardListReply(reply); + } + + // 上传数据获取锁指纹列表 + if (reply is UpdataLockFingerprintListReply && (state.ifCurrentScreen.value == true)) { + _replyUpdataLockFingerprintListReply(reply); + } + + // 上传数据获取锁人脸列表 + if (reply is UpdataLockFaceListReply && (state.ifCurrentScreen.value == true)) { + _replyUpdataLockFaceListReply(reply); + } + + // 上传数据获取锁掌静脉列表 + if (reply is UpdataLockPalmVeinListReply && (state.ifCurrentScreen.value == true)) { + _replyUpdataLockPalmVeinListReply(reply); + } + + // 上传数据获取锁遥控 + if (reply is UpdataLockRemoteControlListReply && (state.ifCurrentScreen.value == true)) { + _replyUpdataLockRemoteControlListReply(reply); + } }); } @@ -70,17 +103,13 @@ class LockDetailLogic extends BaseGetXController { Future _replyOpenLock(Reply reply) async { final int status = reply.data[6]; - BuglyTool.uploadException( - message: '开锁结果,解析数据', - detail: '开锁结果,解析数据 _replyOpenLock:${reply.data}', - upload: true); + BuglyTool.uploadException(message: '开锁结果,解析数据', detail: '开锁结果,解析数据 _replyOpenLock:${reply.data}', upload: true); if (status != 6) { final String getMobile = (await Storage.getMobile())!; ApmHelper.instance.trackEvent('open_lock', { 'lock_name': state.keyInfos.value.lockName!, - 'account': - getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'account': getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, 'date': DateTool().getNowDateWithType(1), 'open_lock_result': '${reply.data}', }); @@ -95,8 +124,7 @@ class LockDetailLogic extends BaseGetXController { state.closedUnlockSuccessfulTimer?.cancel(); EasyLoading.dismiss(); // 如果没有点击关闭弹窗,3秒后自动关闭 - state.closedUnlockSuccessfulTimer = - Timer.periodic(3.seconds, (Timer timer) { + state.closedUnlockSuccessfulTimer = Timer.periodic(3.seconds, (Timer timer) { state.iSClosedUnlockSuccessfulPopup.value = false; timer.cancel(); eventBus.fire(RefreshLockDetailInfoDataEvent()); @@ -122,31 +150,26 @@ class LockDetailLogic extends BaseGetXController { getLockRecordLastUploadDataTime(); AppLog.log('开锁成功,结束同步所记录:getLockRecordLastUploadDataTime'); // 只有接听状态时才可以重发开门指令 - if (StartChartManage().talkStatus.status == - TalkStatus.answeredSuccessfully) { + if (StartChartManage().talkStatus.status == TalkStatus.answeredSuccessfully) { showToast('开锁成功'.tr); } // 如果是单次钥匙,则开锁成功之后调用删除 if (state.keyInfos.value.keyType == 3) { final LockListInfoEntity entity = await ApiRepository.to - .deletOwnerKeyData( - lockId: state.keyInfos.value.lockId.toString(), - keyId: state.keyInfos.value!.keyId.toString(), - includeUnderlings: 0); + .deletOwnerKeyData(lockId: state.keyInfos.value.lockId.toString(), keyId: state.keyInfos.value!.keyId.toString(), includeUnderlings: 0); if (entity.errorCode!.codeIsSuccessful) { AppLog.log("删除成功"); } } + + _handleSynchronizeUploadLockData(); break; case 0x06: //无权限 - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); - final List getPrivateKeyList = - changeStringListToIntList(privateKey!); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); - final List? signKey = - await Storage.getStringList(saveBlueSignKey); + final List? signKey = await Storage.getStringList(saveBlueSignKey); final List signKeyDataList = changeStringListToIntList(signKey!); final List tokenData = reply.data.sublist(2, 6); @@ -165,8 +188,7 @@ class LockDetailLogic extends BaseGetXController { privateKey: getPrivateKeyList, ); // 只有接听状态时才可以重发开门指令 - if (StartChartManage().talkStatus.status == - TalkStatus.answeredSuccessfully) { + if (StartChartManage().talkStatus.status == TalkStatus.answeredSuccessfully) { sendStarChartOpenLockMessage(reply); } @@ -228,8 +250,7 @@ class LockDetailLogic extends BaseGetXController { /// 发送星图的开门蓝牙透传命令 void sendStarChartOpenLockMessage(Reply reply) async { /// 无权限开门时,重新发送一个带token信息的开门信息 - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); final List getPrivateKeyList = changeStringListToIntList(privateKey!); final List? signKey = await Storage.getStringList(saveBlueSignKey); @@ -252,9 +273,7 @@ class LockDetailLogic extends BaseGetXController { ); final messageDetail = openLockCommand.packageData(); // 将 List 转换为十六进制字符串 - String hexString = messageDetail - .map((byte) => byte.toRadixString(16).padLeft(2, '0')) - .join(' '); + String hexString = messageDetail.map((byte) => byte.toRadixString(16).padLeft(2, '0')).join(' '); // 发送远程开门消息 StartChartManage().sendRemoteUnLockMessage( bluetoothDeviceName: BlueManage().connectDeviceName, @@ -262,9 +281,7 @@ class LockDetailLogic extends BaseGetXController { ); } - Future loadData( - {required LockListInfoItemEntity lockListInfoItemEntity, - required bool isOnlyOneData}) async { + Future loadData({required LockListInfoItemEntity lockListInfoItemEntity, required bool isOnlyOneData}) async { state.keyInfos.value = lockListInfoItemEntity; CommonDataManage().currentLockUserNo = state.keyInfos.value.lockUserNo!; CommonDataManage().initUserNo = state.keyInfos.value.initUserNo!; @@ -272,8 +289,7 @@ class LockDetailLogic extends BaseGetXController { state.lockUserNo = state.keyInfos.value.lockUserNo!; - if (state.keyInfos.value.keyStatus == - XSConstantMacro.keyStatusWaitIneffective || + if (state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusWaitIneffective || state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusFrozen || state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusExpired || state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusDeleted || @@ -288,40 +304,32 @@ class LockDetailLogic extends BaseGetXController { state.isOnlyOneData = isOnlyOneData; state.senderUserId = state.keyInfos.value.senderUserId!; state.isAttendance.value = state.keyInfos.value.lockSetting!.attendance!; - state.isOpenLockNeedOnline.value = - state.keyInfos.value.lockSetting!.appUnlockOnline!; + state.isOpenLockNeedOnline.value = state.keyInfos.value.lockSetting!.appUnlockOnline!; state.electricQuantity.value = state.keyInfos.value.electricQuantity!; state.isOpenPassageMode.value = state.keyInfos.value.passageMode!; state.lockAlias.value = state.keyInfos.value.lockAlias!; - state.electricQuantityStandby.value = - state.keyInfos.value.electricQuantityStandby ?? 0; + state.electricQuantityStandby.value = state.keyInfos.value.electricQuantityStandby ?? 0; Storage.setString(saveLockAlias, state.lockAlias.value); - BlueManage().connectDeviceName = - state.keyInfos.value.bluetooth!.bluetoothDeviceName!; + BlueManage().connectDeviceName = state.keyInfos.value.bluetooth!.bluetoothDeviceName!; - final List publicKeyData = - state.keyInfos.value.bluetooth!.publicKey!.cast(); + final List publicKeyData = state.keyInfos.value.bluetooth!.publicKey!.cast(); final List saveStrList = changeIntListToStringList(publicKeyData); await Storage.setStringList(saveBluePublicKey, saveStrList); // 私钥 - final List privateKeyData = - state.keyInfos.value.bluetooth!.privateKey!.cast(); - final List savePrivateKeyList = - changeIntListToStringList(privateKeyData); + final List privateKeyData = state.keyInfos.value.bluetooth!.privateKey!.cast(); + final List savePrivateKeyList = changeIntListToStringList(privateKeyData); await Storage.setStringList(saveBluePrivateKey, savePrivateKeyList); // signKey - final List signKeyData = - state.keyInfos.value.bluetooth!.signKey!.cast(); + final List signKeyData = state.keyInfos.value.bluetooth!.signKey!.cast(); final List saveSignKeyList = changeIntListToStringList(signKeyData); await Storage.setStringList(saveBlueSignKey, saveSignKeyList); final bool ifHaveKey = await Storage.ifHaveKey(saveBlueToken); if (!ifHaveKey) { - final List saveTokenList = - changeIntListToStringList([0, 0, 0, 0]); + final List saveTokenList = changeIntListToStringList([0, 0, 0, 0]); Storage.setStringList(saveBlueToken, saveTokenList); } } @@ -373,8 +381,7 @@ class LockDetailLogic extends BaseGetXController { // AppLog.log('userNouserNouserNouserNo:$userNo'); if (userNo == 0xFFFF) { // 离线密码情况:16进制格式,去除结束符F(0x1F)及其之后的内容 - final List passwordData = - indexList.sublist(7, 17); // 取10个字节 + final List passwordData = indexList.sublist(7, 17); // 取10个字节 // 找到结束符F(0x1F)的位置 int endIndex = passwordData.indexOf(0x1F); if (endIndex == -1) { @@ -382,12 +389,9 @@ class LockDetailLogic extends BaseGetXController { endIndex = passwordData.length; } // 只取结束符前的部分(不包括结束符) - final List actualPasswordData = - passwordData.sublist(0, endIndex); + final List actualPasswordData = passwordData.sublist(0, endIndex); // 转换为十六进制字符串 - String passwordHex = actualPasswordData - .map((byte) => byte.toRadixString(16).padLeft(2, '0')) - .join(); + String passwordHex = actualPasswordData.map((byte) => byte.toRadixString(16).padLeft(2, '0')).join(); // 过滤掉字母部分 passwordHex = passwordHex.replaceAll(RegExp(r'[^0-9]'), ''); @@ -404,14 +408,9 @@ class LockDetailLogic extends BaseGetXController { indexMap['success'] = '1'; - final int time = (0xff & indexList[3]) << 24 | - (0xff & indexList[4]) << 16 | - (0xff & indexList[5]) << 8 | - (0xFF & indexList[6]); + final int time = (0xff & indexList[3]) << 24 | (0xff & indexList[4]) << 16 | (0xff & indexList[5]) << 8 | (0xFF & indexList[6]); int operateDate = time * 1000; - if (DateTime.fromMillisecondsSinceEpoch(operateDate).isAfter( - DateTime.fromMillisecondsSinceEpoch( - getUTCNetTime() * 1000))) { + if (DateTime.fromMillisecondsSinceEpoch(operateDate).isAfter(DateTime.fromMillisecondsSinceEpoch(getUTCNetTime() * 1000))) { continue; } @@ -449,8 +448,7 @@ class LockDetailLogic extends BaseGetXController { // 点击开门事件 Future openDoorAction() async { - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); final List getPrivateKeyList = changeStringListToIntList(privateKey!); final List? signKey = await Storage.getStringList(saveBlueSignKey); @@ -478,29 +476,20 @@ class LockDetailLogic extends BaseGetXController { final String getMobile = (await Storage.getMobile())!; ApmHelper.instance.trackEvent('open_lock', { 'lock_name': state.keyInfos.value.lockName!, - 'account': - getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'account': getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, 'date': DateTool().getNowDateWithType(1), 'open_lock_result': '超时', }); resetOpenDoorState(); blueManageDisconnect(); - BuglyTool.uploadException( - message: '开门超时处理-开锁失败', - detail: '开门超时,断开连接,开锁失败--OpenLockCommand:$command', - upload: true); + BuglyTool.uploadException(message: '开门超时处理-开锁失败', detail: '开门超时,断开连接,开锁失败--OpenLockCommand:$command', upload: true); }, ); - BlueManage() - .blueSendData(state.keyInfos.value.bluetooth!.bluetoothDeviceName!, - (BluetoothConnectionState deviceConnectionState) async { + BlueManage().blueSendData(state.keyInfos.value.bluetooth!.bluetoothDeviceName!, (BluetoothConnectionState deviceConnectionState) async { if (deviceConnectionState == BluetoothConnectionState.connected) { - BuglyTool.uploadException( - message: '蓝牙连接成功', - detail: '蓝牙连接成功,发送开锁指令--OpenLockCommand:$command', - upload: false); + BuglyTool.uploadException(message: '蓝牙连接成功', detail: '蓝牙连接成功,发送开锁指令--OpenLockCommand:$command', upload: false); // FlutterBuglyPlugin.reportException(exceptionName: '蓝牙连接成功', reason: '蓝牙连接成功,发送开锁指令'); IoSenderManage.senderOpenLock( lockID: BlueManage().connectDeviceName, @@ -513,18 +502,13 @@ class LockDetailLogic extends BaseGetXController { signKey: signKeyDataList, privateKey: getPrivateKeyList, ); - } else if (deviceConnectionState == - BluetoothConnectionState.disconnected) { + } else if (deviceConnectionState == BluetoothConnectionState.disconnected) { cancelBlueConnetctToastTimer(); - BuglyTool.uploadException( - message: '蓝牙连接失败-开锁失败', - detail: '蓝牙连接失败,断开连接, 开锁失败--OpenLockCommand:$command', - upload: true); + BuglyTool.uploadException(message: '蓝牙连接失败-开锁失败', detail: '蓝牙连接失败,断开连接, 开锁失败--OpenLockCommand:$command', upload: true); final String getMobile = (await Storage.getMobile())!; ApmHelper.instance.trackEvent('open_lock', { 'lock_name': state.keyInfos.value.lockName!, - 'account': - getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'account': getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, 'date': DateTool().getNowDateWithType(1), 'open_lock_result': '断开连接', }); @@ -552,23 +536,17 @@ class LockDetailLogic extends BaseGetXController { action: () { blueManageDisconnect(); }); - BlueManage().blueSendData(BlueManage().connectDeviceName, - (BluetoothConnectionState connectionState) async { - AppLog.log( - '开始发送同步锁记录命令,蓝牙状态是否链接:${connectionState == BluetoothConnectionState.connected}'); + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + AppLog.log('开始发送同步锁记录命令,蓝牙状态是否链接:${connectionState == BluetoothConnectionState.connected}'); if (connectionState == BluetoothConnectionState.connected) { - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); - final List getPrivateKeyList = - changeStringListToIntList(privateKey!); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); final List? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); - final List? publicKey = - await Storage.getStringList(saveBluePublicKey); - final List getPublicKeyList = - changeStringListToIntList(publicKey!); + final List? publicKey = await Storage.getStringList(saveBluePublicKey); + final List getPublicKeyList = changeStringListToIntList(publicKey!); AppLog.log('发送同步锁记录命令:${BlueManage().connectDeviceName}'); IoSenderManage.senderReferEventRecordTimeCommand( @@ -589,11 +567,9 @@ class LockDetailLogic extends BaseGetXController { // 从服务器获取锁的时间 开锁时传入 Future getServerDatetime() async { - final GetServerDatetimeEntity entity = - await ApiRepository.to.getServerDatetimeData(isUnShowLoading: true); + final GetServerDatetimeEntity entity = await ApiRepository.to.getServerDatetimeData(isUnShowLoading: true); if (entity.errorCode!.codeIsSuccessful) { - state.differentialTime = entity.data!.date! ~/ 1000 - - DateTime.now().millisecondsSinceEpoch ~/ 1000; + state.differentialTime = entity.data!.date! ~/ 1000 - DateTime.now().millisecondsSinceEpoch ~/ 1000; } else { state.isHaveNetwork = false; } @@ -601,8 +577,7 @@ class LockDetailLogic extends BaseGetXController { int getUTCNetTime() { if (state.isHaveNetwork) { - return DateTime.now().millisecondsSinceEpoch ~/ 1000 + - state.differentialTime; + return DateTime.now().millisecondsSinceEpoch ~/ 1000 + state.differentialTime; } else { return 0; } @@ -610,15 +585,13 @@ class LockDetailLogic extends BaseGetXController { // 获取手机联网token,根据锁设置里面获取的开锁时是否联网来判断是否调用这个接口 Future getLockNetToken() async { - final LockNetTokenEntity entity = await ApiRepository.to - .getLockNetToken(lockId: state.keyInfos.value.lockId!); + final LockNetTokenEntity entity = await ApiRepository.to.getLockNetToken(lockId: state.keyInfos.value.lockId!); if (entity.errorCode!.codeIsSuccessful) { state.lockNetToken = entity.data!.token!.toString(); // AppLog.log('从服务器获取联网token:${state.lockNetToken}'); openDoorAction(); } else { - BuglyTool.uploadException( - message: '点击了需要联网开锁', detail: '点击了需要联网开锁 获取连网token失败', upload: true); + BuglyTool.uploadException(message: '点击了需要联网开锁', detail: '点击了需要联网开锁 获取连网token失败', upload: true); showToast('网络访问失败,请检查网络是否正常'.tr, something: () { resetOpenDoorState(); cancelBlueConnetctToastTimer(); @@ -630,13 +603,11 @@ class LockDetailLogic extends BaseGetXController { //电量更新请求 Future uploadElectricQuantityRequest() async { - final UploadElectricQuantityEntity entity = await ApiRepository.to - .uploadElectricQuantity( - electricQuantity: state.electricQuantity.value.toString(), - electricQuantityStandby: - state.electricQuantityStandby.value.toString(), - lockId: state.keyInfos.value.lockId.toString(), - isUnShowLoading: true); + final UploadElectricQuantityEntity entity = await ApiRepository.to.uploadElectricQuantity( + electricQuantity: state.electricQuantity.value.toString(), + electricQuantityStandby: state.electricQuantityStandby.value.toString(), + lockId: state.keyInfos.value.lockId.toString(), + isUnShowLoading: true); if (entity.errorCode!.codeIsSuccessful) { SchedulerBinding.instance.addPostFrameCallback((_) { eventBus.fire(RefreshLockListInfoDataEvent(isUnShowLoading: true)); @@ -647,8 +618,7 @@ class LockDetailLogic extends BaseGetXController { // 查询锁记录最后时间 Future getLockRecordLastUploadDataTime() async { final LockOperatingRecordGetLastRecordTimeEntity entity = - await ApiRepository.to.getLockRecordLastUploadDataTime( - lockId: state.keyInfos.value.lockId.toString()); + await ApiRepository.to.getLockRecordLastUploadDataTime(lockId: state.keyInfos.value.lockId.toString()); AppLog.log('开始获取服务端所记录更新时间:${entity}'); if (entity.errorCode!.codeIsSuccessful) { state.operateDate = entity.data!.operateDate! ~/ 1000; @@ -664,13 +634,11 @@ class LockDetailLogic extends BaseGetXController { if (list.isEmpty) { return; } - final KeyOperationRecordEntity entity = await ApiRepository.to - .lockRecordUploadData( - lockId: state.keyInfos.value.lockId.toString(), records: list); + final KeyOperationRecordEntity entity = + await ApiRepository.to.lockRecordUploadData(lockId: state.keyInfos.value.lockId.toString(), records: list); if (entity.errorCode!.codeIsSuccessful) { // mockNetworkDataRequest(); - AppLog.log( - 'state.keyInfos.value.keyType:${state.keyInfos.value.keyType}'); + AppLog.log('state.keyInfos.value.keyType:${state.keyInfos.value.keyType}'); if (state.keyInfos.value.keyType == XSConstantMacro.keyTypeOnce) { // 单次删除 deletKeyData(); @@ -680,9 +648,8 @@ class LockDetailLogic extends BaseGetXController { // 普通用户或者授权管理员删除钥匙 Future deletKeyData() async { - final ElectronicKeyListEntity entity = await ApiRepository.to - .deleteElectronicKey( - keyId: state.keyInfos.value.keyId.toString(), includeUnderlings: 0); + final ElectronicKeyListEntity entity = + await ApiRepository.to.deleteElectronicKey(keyId: state.keyInfos.value.keyId.toString(), includeUnderlings: 0); if (entity.errorCode!.codeIsSuccessful) { BlueManage().connectDeviceMacAddress = ''; SchedulerBinding.instance.addPostFrameCallback((_) { @@ -696,8 +663,7 @@ class LockDetailLogic extends BaseGetXController { Future remoteOpenLock() async { final catEyeConfig = state.keyInfos.value.lockSetting?.catEyeConfig ?? []; // 支持猫眼功能时,才需要判断是否是省电模式 - if (state.keyInfos.value.lockFeature?.isSupportCatEye == 1 && - catEyeConfig[0].catEyeMode == 0) { + if (state.keyInfos.value.lockFeature?.isSupportCatEye == 1 && catEyeConfig[0].catEyeMode == 0) { showToast('猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式'.tr); return; } @@ -714,19 +680,15 @@ class LockDetailLogic extends BaseGetXController { void initLockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceAction() { // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus state.lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent = - eventBus - .on() - .listen((LockSetChangeSetRefreshLockDetailWithType event) { + eventBus.on().listen((LockSetChangeSetRefreshLockDetailWithType event) { if (event.type == 0) { // 0考勤 state.isAttendance.value = int.parse(event.setResult); - state.keyInfos.value.lockSetting!.attendance = - int.parse(event.setResult); + state.keyInfos.value.lockSetting!.attendance = int.parse(event.setResult); } else if (event.type == 1) { // 1 开锁时是否需联网 state.isOpenLockNeedOnline.value = int.parse(event.setResult); - state.keyInfos.value.lockSetting!.appUnlockOnline = - int.parse(event.setResult); + state.keyInfos.value.lockSetting!.appUnlockOnline = int.parse(event.setResult); state.lockNetToken = ''; // 改变开锁时是否联网状态的时候清空token } else if (event.type == 2) { // 2 常开模式 @@ -741,16 +703,13 @@ class LockDetailLogic extends BaseGetXController { // 4 更新了电量 // state.electricQuantity.value = int.parse(event.setResult); // state.keyInfos.value.electricQuantity = int.parse(event.setResult); - final int electricQuantity = - int.tryParse(event.setResult['electricQuantity']) ?? 0; + final int electricQuantity = int.tryParse(event.setResult['electricQuantity']) ?? 0; state.electricQuantity.value = electricQuantity; state.keyInfos.value.electricQuantity = electricQuantity; - state.keyInfos.value.electricQuantityDate = - event.setResult['uploadElectricQuantityDate']; + state.keyInfos.value.electricQuantityDate = event.setResult['uploadElectricQuantityDate']; } else if (event.type == 5) { // 5 远程开锁 - state.keyInfos.value.lockSetting!.remoteUnlock = - int.parse(event.setResult); + state.keyInfos.value.lockSetting!.remoteUnlock = int.parse(event.setResult); } CommonDataManage().currentKeyInfo = state.keyInfos.value; eventBus.fire(RefreshLockDetailInfoDataEvent()); @@ -759,18 +718,14 @@ class LockDetailLogic extends BaseGetXController { String getKeyStatusTextAndShow() { String text = ''; - if (state.keyInfos.value.keyStatus == - XSConstantMacro.keyStatusWaitIneffective || + if (state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusWaitIneffective || state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusFrozen || state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusExpired || state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusDeleted || state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusReset) { - text = - "${"你的钥匙".tr}${XSConstantMacro.getKeyStatusStr(state.keyInfos.value.keyStatus!)}"; + text = "${"你的钥匙".tr}${XSConstantMacro.getKeyStatusStr(state.keyInfos.value.keyStatus!)}"; } else { - text = state.isOpenPassageMode.value == 1 - ? '常开模式启动!长按闭锁'.tr - : '点击开锁,长按闭锁'.tr; + text = state.isOpenPassageMode.value == 1 ? '常开模式启动!长按闭锁'.tr : '点击开锁,长按闭锁'.tr; } return text; } @@ -813,9 +768,7 @@ class LockDetailLogic extends BaseGetXController { void sendMonitorMessage() async { final catEyeConfig = state.keyInfos.value.lockSetting?.catEyeConfig ?? []; final network = state.keyInfos.value.network; - if (catEyeConfig.isNotEmpty && - catEyeConfig.length > 0 && - catEyeConfig[0].catEyeMode != 0) { + if (catEyeConfig.isNotEmpty && catEyeConfig.length > 0 && catEyeConfig[0].catEyeMode != 0) { if (network == null || network?.peerId == null || network?.peerId == '') { showToast('设备未配网'.tr); return; @@ -823,8 +776,7 @@ class LockDetailLogic extends BaseGetXController { // 重置丢包率监控 // PacketLossStatistics().reset(); // 发送监控id - StartChartManage() - .startCallRequestMessageTimer(ToPeerId: network!.peerId ?? ''); + StartChartManage().startCallRequestMessageTimer(ToPeerId: network!.peerId ?? ''); } else { showToast('猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式'.tr); } @@ -843,30 +795,24 @@ class LockDetailLogic extends BaseGetXController { void onInit() { super.onInit(); - state.LockSetChangeSetRefreshLockDetailWithTypeSubscription = eventBus - .on() - .listen((LockSetChangeSetRefreshLockDetailWithType event) { + state.LockSetChangeSetRefreshLockDetailWithTypeSubscription = + eventBus.on().listen((LockSetChangeSetRefreshLockDetailWithType event) { //更新 开锁时是否需联网 状态 if (event.type == 1) { state.isOpenLockNeedOnline.value = int.parse(event.setResult); - state.keyInfos.value.lockSetting!.appUnlockOnline = - int.parse(event.setResult); + state.keyInfos.value.lockSetting!.appUnlockOnline = int.parse(event.setResult); state.isOpenLockNeedOnline.refresh(); } if (event.type == 4) { - final int electricQuantity = - int.tryParse(event.setResult['electricQuantity']) ?? 0; + final int electricQuantity = int.tryParse(event.setResult['electricQuantity']) ?? 0; state.electricQuantity.value = electricQuantity; state.keyInfos.value.electricQuantity = electricQuantity; - state.keyInfos.value.electricQuantityDate = - event.setResult['uploadElectricQuantityDate'] ?? 0; + state.keyInfos.value.electricQuantityDate = event.setResult['uploadElectricQuantityDate'] ?? 0; state.keyInfos.refresh(); } }); - state.DetailLockInfo = eventBus - .on() - .listen((PassCurrentLockInformationEvent event) { + state.DetailLockInfo = eventBus.on().listen((PassCurrentLockInformationEvent event) { // 提取重复表达式为局部变量,避免多次解包 final lockSettingInfo = event.lockSetInfoData.lockSettingInfo; final lockBasicInfo = event.lockSetInfoData.lockBasicInfo; @@ -879,12 +825,9 @@ class LockDetailLogic extends BaseGetXController { } // 检查前置条件:事件数据有效且 catEyeConfig 非空且非空列表 - if (lockSettingInfo != null && - targetCatEyeConfig != null && - targetCatEyeConfig.isNotEmpty) { + if (lockSettingInfo != null && targetCatEyeConfig != null && targetCatEyeConfig.isNotEmpty) { // 当前状态的 catEyeConfig - final stateCatEyeConfig = - state.keyInfos.value.lockSetting?.catEyeConfig; + final stateCatEyeConfig = state.keyInfos.value.lockSetting?.catEyeConfig; // 如果状态中的 catEyeConfig 为空或空列表,则初始化默认配置 if (stateCatEyeConfig == null || stateCatEyeConfig.isEmpty) { @@ -905,8 +848,7 @@ class LockDetailLogic extends BaseGetXController { } // 更新 catEyeMode,使用空值合并提供默认值 1 - state.keyInfos.value.lockSetting!.catEyeConfig![0].catEyeMode = - targetCatEyeConfig[0].catEyeMode ?? 1; + state.keyInfos.value.lockSetting!.catEyeConfig![0].catEyeMode = targetCatEyeConfig[0].catEyeMode ?? 1; // 刷新状态 state.keyInfos.refresh(); @@ -920,4 +862,699 @@ class LockDetailLogic extends BaseGetXController { // requestDeviceNetworkInfo(); // }); } + + // 锁数据上传服务器 + Future _lockDataUpload({required int uploadType, required int recordType, required List records}) async { + if (records.length == 0) return; + final LoginEntity entity = await ApiRepository.to.lockDataUpload( + lockId: CommonDataManage().currentKeyInfo.lockId!, + uploadType: uploadType, + recordType: recordType, + records: records, + isUnShowLoading: true, + ); + if (entity.errorCode!.codeIsSuccessful) { + if (uploadType == 1) { + // 1设置 + state.indexCount.value = 0; + } else { + // 2开门方式 + switch (recordType) { + case 2: + // 密码上传成功之后,获取卡列表 + _handleGetLockCardData(); + break; + case 3: + // IC卡上传成功,获取指纹列表 + _handleGetLockFingerprintData(); + break; + case 4: + // 指纹上传成功,获取人脸列表 + _handleGetLockFaceData(); + break; + case 5: + // 人脸上传成功,获取掌静脉列表 + _handleGetLockPalmVeinData(); + break; + case 6: + // 掌静脉上传成功,获取锁遥控 + _handleGetLockRemoteControlData(); + break; + default: + break; + } + } + } else { + if (uploadType == 1) { + // 1设置 + // state.indexCount.value = 0; + // state.sureBtnState.value = 0; + // showToast('上传成功'.tr); + } else { + // 2开门方式 + switch (recordType) { + case 2: + // 密码上传成功之后,获取卡列表 + _handleGetLockCardData(); + break; + case 3: + // IC卡上传成功,获取指纹列表 + _handleGetLockFingerprintData(); + break; + case 4: + // 指纹上传成功,获取人脸列表 + _handleGetLockFaceData(); + break; + case 5: + // 人脸上传成功,获取掌静脉列表 + _handleGetLockPalmVeinData(); + break; + case 6: + // 掌静脉上传成功,获取锁遥控 + _handleGetLockRemoteControlData(); + break; + default: + break; + } + } + state.indexCount.value = 0; + } + } + + void _handleSynchronizeUploadLockData() { + // 从获取密码开始,获取密码成功后,在成功处再次获取卡片 + _handleGetLockPasswordData(); + } + + void _handleGetLockPasswordData() { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); + + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockPasswordListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadPasswordPage, + countReq: state.countReq, + token: getTokenList, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList); + } + }); + } + + // 上传数据获取锁密码列表 + Future _replyUpdataLockPasswordListReply(Reply reply) async { + final int status = reply.data[2]; + switch (status) { + case 0x00: + final int dataLength = reply.data[8]; + state.uploadPasswordDataList.addAll(reply.data.sublist(9, reply.data.length)); + if (dataLength == 10) { + // 当数据是10的时候继续请求 + state.uploadPasswordPage = state.uploadPasswordPage + 1; + final List token = reply.data.sublist(3, 7); + showEasyLoading(); + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + IoSenderManage.updataLockPasswordListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadPasswordPage, + countReq: state.countReq, + token: token, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + } else { + state.indexCount.value = state.indexCount.value + 1; + // 保存到服务器 + _lockDataUpload( + uploadType: 2, + recordType: 2, + records: state.uploadPasswordDataList, + ); + } + break; + case 0x06: + //无权限 + final List token = reply.data.sublist(3, 7); + final List saveStrList = changeIntListToStringList(token); + Storage.setStringList(saveBlueToken, saveStrList); + + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + IoSenderManage.updataLockPasswordListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadPasswordPage, + countReq: state.countReq, + token: token, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + break; + default: + dismissEasyLoading(); + state.indexCount.value = 0; + cancelBlueConnetctToastTimer(); + break; + } + } + + void _handleGetLockCardData() { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); + + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockCardListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadCardPage, + countReq: state.countReq, + token: getTokenList, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + } + + // 上传数据获取锁卡列表 + Future _replyUpdataLockCardListReply(Reply reply) async { + final int status = reply.data[2]; + switch (status) { + case 0x00: + //成功 + cancelBlueConnetctToastTimer(); + + final int dataLength = reply.data[8]; + state.uploadCardDataList.addAll(reply.data.sublist(9, reply.data.length)); + if (dataLength == 10) { + // 当数据是10的时候继续请求 + state.uploadCardPage = state.uploadCardPage + 1; + + final List token = reply.data.sublist(3, 7); + + showEasyLoading(); + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockCardListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadCardPage, + countReq: state.countReq, + token: token, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + } else { + state.indexCount.value = state.indexCount.value + 1; + _lockDataUpload(uploadType: 2, recordType: 3, records: state.uploadCardDataList); + } + break; + case 0x06: + //无权限 + final List token = reply.data.sublist(3, 7); + final List saveStrList = changeIntListToStringList(token); + Storage.setStringList(saveBlueToken, saveStrList); + + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockCardListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadCardPage, + countReq: state.countReq, + token: token, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + break; + default: + dismissEasyLoading(); + state.indexCount.value = 0; + cancelBlueConnetctToastTimer(); + break; + } + } + + void _handleGetLockFingerprintData() { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); + + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockFingerprintListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadFingerprintPage, + countReq: state.countReq, + token: getTokenList, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + } + + // 上传数据获取锁指纹列表 + Future _replyUpdataLockFingerprintListReply(Reply reply) async { + final int status = reply.data[2]; + switch (status) { + case 0x00: + //成功 + cancelBlueConnetctToastTimer(); + + final int dataLength = reply.data[8]; + state.uploadFingerprintDataList.addAll(reply.data.sublist(9, reply.data.length)); + if (dataLength == 10) { + // 当数据是10的时候继续请求 + state.uploadFingerprintPage = state.uploadFingerprintPage + 1; + + final List token = reply.data.sublist(3, 7); + + showEasyLoading(); + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockFingerprintListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadFingerprintPage, + countReq: state.countReq, + token: token, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + } else { + state.indexCount.value = state.indexCount.value + 1; + _lockDataUpload(uploadType: 2, recordType: 4, records: state.uploadFingerprintDataList); + } + break; + case 0x06: + //无权限 + final List token = reply.data.sublist(3, 7); + final List saveStrList = changeIntListToStringList(token); + Storage.setStringList(saveBlueToken, saveStrList); + + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockFingerprintListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadFingerprintPage, + countReq: state.countReq, + token: token, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + break; + default: + dismissEasyLoading(); + state.indexCount.value = 0; + cancelBlueConnetctToastTimer(); + break; + } + } + + void _handleGetLockFaceData() { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); + + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockFaceListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadFacePage, + countReq: state.countReq, + token: getTokenList, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + } + + void _handleGetLockPalmVeinData() { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); + + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockPalmVeinListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadPalmVeinPage, + countReq: state.countReq, + token: getTokenList, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + } + + void _handleGetLockRemoteControlData() { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); + + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockRemoteControlListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadRemoteControlPage, + countReq: state.countReq, + token: getTokenList, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + } + + Future _replyUpdataLockFaceListReply(Reply reply) async { + final int status = reply.data[2]; + switch (status) { + case 0x00: + //成功 + cancelBlueConnetctToastTimer(); + + final int dataLength = reply.data[8]; + state.uploadFaceDataList.addAll(reply.data.sublist(9, reply.data.length)); + if (dataLength == 10) { + // 当数据是10的时候继续请求 + state.uploadFacePage = state.uploadFacePage + 1; + + final List token = reply.data.sublist(3, 7); + + showEasyLoading(); + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockFaceListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadFacePage, + countReq: state.countReq, + token: token, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + } else { + state.indexCount.value = state.indexCount.value + 1; + _lockDataUpload(uploadType: 2, recordType: 5, records: state.uploadFaceDataList); + } + break; + case 0x06: + //无权限 + final List token = reply.data.sublist(3, 7); + final List saveStrList = changeIntListToStringList(token); + Storage.setStringList(saveBlueToken, saveStrList); + + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockFaceListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadFacePage, + countReq: state.countReq, + token: token, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + break; + default: + dismissEasyLoading(); + state.indexCount.value = 0; + cancelBlueConnetctToastTimer(); + break; + } + } + + // 上传数据获取锁掌静脉列表解析 + Future _replyUpdataLockPalmVeinListReply(Reply reply) async { + final int status = reply.data[2]; + switch (status) { + case 0x00: + //成功 + cancelBlueConnetctToastTimer(); + + final int dataLength = reply.data[8]; + state.uploadPalmVeinDataList.addAll(reply.data.sublist(9, reply.data.length)); + if (dataLength == 10) { + // 当数据是10的时候继续请求 + state.uploadPalmVeinPage = state.uploadPalmVeinPage + 1; + + final List token = reply.data.sublist(3, 7); + + showEasyLoading(); + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockPalmVeinListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadPalmVeinPage, + countReq: state.countReq, + token: token, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + } else { + state.indexCount.value = state.indexCount.value + 1; + _lockDataUpload(uploadType: 2, recordType: 6, records: state.uploadPalmVeinDataList); + } + break; + case 0x06: + //无权限 + final List token = reply.data.sublist(3, 7); + final List saveStrList = changeIntListToStringList(token); + Storage.setStringList(saveBlueToken, saveStrList); + + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockPalmVeinListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadPalmVeinPage, + countReq: state.countReq, + token: token, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + break; + default: + dismissEasyLoading(); + state.indexCount.value = 0; + cancelBlueConnetctToastTimer(); + break; + } + } + + // 上传数据获取锁遥控列表解析 + Future _replyUpdataLockRemoteControlListReply(Reply reply) async { + final int status = reply.data[2]; + switch (status) { + case 0x00: + //成功 + cancelBlueConnetctToastTimer(); + + final int dataLength = reply.data[8]; + state.uploadRemoteControlDataList.addAll(reply.data.sublist(9, reply.data.length)); + if (dataLength == 10) { + // 当数据是10的时候继续请求 + state.uploadRemoteControlPage = state.uploadRemoteControlPage + 1; + + final List token = reply.data.sublist(3, 7); + + showEasyLoading(); + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockRemoteControlListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadRemoteControlPage, + countReq: state.countReq, + token: token, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + } else { + state.indexCount.value = state.indexCount.value + 1; + _lockDataUpload(uploadType: 2, recordType: 7, records: state.uploadRemoteControlDataList); + } + break; + case 0x06: + //无权限 + final List token = reply.data.sublist(3, 7); + final List saveStrList = changeIntListToStringList(token); + Storage.setStringList(saveBlueToken, saveStrList); + + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockRemoteControlListCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + page: state.uploadRemoteControlPage, + countReq: state.countReq, + token: token, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + ); + } + }); + break; + default: + dismissEasyLoading(); + state.indexCount.value = 0; + cancelBlueConnetctToastTimer(); + break; + } + } } diff --git a/lib/main/lockDetail/lockDetail/lockDetail_state.dart b/lib/main/lockDetail/lockDetail/lockDetail_state.dart index 44efb77d..eb4b6d30 100755 --- a/lib/main/lockDetail/lockDetail/lockDetail_state.dart +++ b/lib/main/lockDetail/lockDetail/lockDetail_state.dart @@ -58,8 +58,26 @@ class LockDetailState { int logCountPage = 10; // 蓝牙记录一页多少个 RxInt nextAuthTime = 0.obs; // 下次认证时间 - // LockDetailState() { - // Map map = Get.arguments; - // lockCount = map["lockCount"]; - // } + int countReq = 10;// 每次请求的数量 + RxInt indexCount = 0.obs;// 用来显示按钮的索引 0/5 + + int uploadPasswordPage = 0;// 上传密码的页数 + List uploadPasswordDataList = [];// 上传密码的数据 + + int uploadCardPage = 0;// 上传卡片的页数 + List uploadCardDataList = [];// 上传卡片的数据 + + int uploadFingerprintPage = 0;// 上传指纹的页数 + List uploadFingerprintDataList = [];// 上传指纹的数据 + + int uploadFacePage = 0;// 上传人脸的页数 + List uploadFaceDataList = [];// 上传人脸的数据 + + int uploadPalmVeinPage = 0;// 上传掌静脉的页数 + List uploadPalmVeinDataList = [];// 上传掌静脉的数据 + + int uploadRemoteControlPage = 0;// 上传遥控的页数 + List uploadRemoteControlDataList = [];// 上传遥控的数据 + + List uploadLockSetDataList = [];// 上传锁设置数据 } diff --git a/lib/main/lockDetail/lockSet/uploadData/uploadData_logic.dart b/lib/main/lockDetail/lockSet/uploadData/uploadData_logic.dart index e1046768..826547cf 100644 --- a/lib/main/lockDetail/lockSet/uploadData/uploadData_logic.dart +++ b/lib/main/lockDetail/lockSet/uploadData/uploadData_logic.dart @@ -29,49 +29,41 @@ class UploadDataLogic extends BaseGetXController { // 监听蓝牙协议返回结果 late StreamSubscription _replySubscription; + void _initReplySubscription() { - _replySubscription = - EventBusManager().eventBus!.on().listen((Reply reply) async { + _replySubscription = EventBusManager().eventBus!.on().listen((Reply reply) async { // 上传数据获取锁密码列表 - if (reply is UpdataLockPasswordListReply && - (state.ifCurrentScreen.value == true)) { + if (reply is UpdataLockPasswordListReply && (state.ifCurrentScreen.value == true)) { _replyUpdataLockPasswordListReply(reply); } // 上传数据获取锁卡列表 - if (reply is UpdataLockCardListReply && - (state.ifCurrentScreen.value == true)) { + if (reply is UpdataLockCardListReply && (state.ifCurrentScreen.value == true)) { _replyUpdataLockCardListReply(reply); } // 上传数据获取锁指纹列表 - if (reply is UpdataLockFingerprintListReply && - (state.ifCurrentScreen.value == true)) { + if (reply is UpdataLockFingerprintListReply && (state.ifCurrentScreen.value == true)) { _replyUpdataLockFingerprintListReply(reply); } // 上传数据获取锁人脸列表 - if (reply is UpdataLockFaceListReply && - (state.ifCurrentScreen.value == true)) { + if (reply is UpdataLockFaceListReply && (state.ifCurrentScreen.value == true)) { _replyUpdataLockFaceListReply(reply); } // 上传数据获取锁掌静脉列表 - if (reply is UpdataLockPalmVeinListReply && - (state.ifCurrentScreen.value == true)) { + if (reply is UpdataLockPalmVeinListReply && (state.ifCurrentScreen.value == true)) { _replyUpdataLockPalmVeinListReply(reply); } // 上传数据获取锁遥控 - if (reply is UpdataLockRemoteControlListReply && - (state.ifCurrentScreen.value == true)) { + if (reply is UpdataLockRemoteControlListReply && (state.ifCurrentScreen.value == true)) { _replyUpdataLockRemoteControlListReply(reply); } // 上传数据获取锁设置 - if (reply is UpdataLockSetReply && - (state.ifCurrentScreen.value == true) && - (state.ifSeletUpdataBtnState == true)) { + if (reply is UpdataLockSetReply && (state.ifCurrentScreen.value == true) && (state.ifSeletUpdataBtnState == true)) { _replyUpdataLockSetReply(reply); } }); @@ -86,8 +78,7 @@ class UploadDataLogic extends BaseGetXController { cancelBlueConnetctToastTimer(); final int dataLength = reply.data[8]; - state.uploadPasswordDataList - .addAll(reply.data.sublist(9, reply.data.length)); + state.uploadPasswordDataList.addAll(reply.data.sublist(9, reply.data.length)); if (dataLength == 10) { // 当数据是10的时候继续请求 state.uploadPasswordPage = state.uploadPasswordPage + 1; @@ -105,10 +96,7 @@ class UploadDataLogic extends BaseGetXController { // }else{ // // 如果不是空的解析数据上传 state.indexCount.value = state.indexCount.value + 1; - _lockDataUpload( - uploadType: 2, - recordType: 2, - records: state.uploadPasswordDataList); + _lockDataUpload(uploadType: 2, recordType: 2, records: state.uploadPasswordDataList); // } } break; @@ -139,8 +127,7 @@ class UploadDataLogic extends BaseGetXController { cancelBlueConnetctToastTimer(); final int dataLength = reply.data[8]; - state.uploadCardDataList - .addAll(reply.data.sublist(9, reply.data.length)); + state.uploadCardDataList.addAll(reply.data.sublist(9, reply.data.length)); if (dataLength == 10) { // 当数据是10的时候继续请求 state.uploadCardPage = state.uploadCardPage + 1; @@ -157,8 +144,7 @@ class UploadDataLogic extends BaseGetXController { // }else{ // // 如果不是空的解析数据上传 state.indexCount.value = state.indexCount.value + 1; - _lockDataUpload( - uploadType: 2, recordType: 3, records: state.uploadCardDataList); + _lockDataUpload(uploadType: 2, recordType: 3, records: state.uploadCardDataList); // } } break; @@ -188,8 +174,7 @@ class UploadDataLogic extends BaseGetXController { cancelBlueConnetctToastTimer(); final int dataLength = reply.data[8]; - state.uploadFingerprintDataList - .addAll(reply.data.sublist(9, reply.data.length)); + state.uploadFingerprintDataList.addAll(reply.data.sublist(9, reply.data.length)); if (dataLength == 10) { // 当数据是10的时候继续请求 state.uploadFingerprintPage = state.uploadFingerprintPage + 1; @@ -206,10 +191,7 @@ class UploadDataLogic extends BaseGetXController { // }else{ // // 如果不是空的解析数据上传 state.indexCount.value = state.indexCount.value + 1; - _lockDataUpload( - uploadType: 2, - recordType: 4, - records: state.uploadFingerprintDataList); + _lockDataUpload(uploadType: 2, recordType: 4, records: state.uploadFingerprintDataList); // } } break; @@ -239,8 +221,7 @@ class UploadDataLogic extends BaseGetXController { cancelBlueConnetctToastTimer(); final int dataLength = reply.data[8]; - state.uploadFaceDataList - .addAll(reply.data.sublist(9, reply.data.length)); + state.uploadFaceDataList.addAll(reply.data.sublist(9, reply.data.length)); if (dataLength == 10) { // 当数据是10的时候继续请求 state.uploadFacePage = state.uploadFacePage + 1; @@ -257,8 +238,7 @@ class UploadDataLogic extends BaseGetXController { // }else{ // 如果不是空的解析数据上传 state.indexCount.value = state.indexCount.value + 1; - _lockDataUpload( - uploadType: 2, recordType: 5, records: state.uploadFaceDataList); + _lockDataUpload(uploadType: 2, recordType: 5, records: state.uploadFaceDataList); // } } break; @@ -288,8 +268,7 @@ class UploadDataLogic extends BaseGetXController { cancelBlueConnetctToastTimer(); final int dataLength = reply.data[8]; - state.uploadPalmVeinDataList - .addAll(reply.data.sublist(9, reply.data.length)); + state.uploadPalmVeinDataList.addAll(reply.data.sublist(9, reply.data.length)); if (dataLength == 10) { // 当数据是10的时候继续请求 state.uploadPalmVeinPage = state.uploadPalmVeinPage + 1; @@ -306,10 +285,7 @@ class UploadDataLogic extends BaseGetXController { // }else{ // // 如果不是空的解析数据上传 state.indexCount.value = state.indexCount.value + 1; - _lockDataUpload( - uploadType: 2, - recordType: 6, - records: state.uploadPalmVeinDataList); + _lockDataUpload(uploadType: 2, recordType: 6, records: state.uploadPalmVeinDataList); // } } break; @@ -339,8 +315,7 @@ class UploadDataLogic extends BaseGetXController { cancelBlueConnetctToastTimer(); final int dataLength = reply.data[8]; - state.uploadRemoteControlDataList - .addAll(reply.data.sublist(9, reply.data.length)); + state.uploadRemoteControlDataList.addAll(reply.data.sublist(9, reply.data.length)); if (dataLength == 10) { // 当数据是10的时候继续请求 state.uploadRemoteControlPage = state.uploadRemoteControlPage + 1; @@ -357,10 +332,7 @@ class UploadDataLogic extends BaseGetXController { // }else{ // // 如果不是空的解析数据上传 state.indexCount.value = state.indexCount.value + 1; - _lockDataUpload( - uploadType: 2, - recordType: 7, - records: state.uploadRemoteControlDataList); + _lockDataUpload(uploadType: 2, recordType: 7, records: state.uploadRemoteControlDataList); // } } break; @@ -390,10 +362,8 @@ class UploadDataLogic extends BaseGetXController { state.indexCount.value = state.indexCount.value + 1; cancelBlueConnetctToastTimer(); - state.uploadLockSetDataList - .addAll(reply.data.sublist(7, reply.data.length)); - _lockDataUpload( - uploadType: 1, recordType: 0, records: state.uploadLockSetDataList); + state.uploadLockSetDataList.addAll(reply.data.sublist(7, reply.data.length)); + _lockDataUpload(uploadType: 1, recordType: 0, records: state.uploadLockSetDataList); break; case 0x06: //无权限 @@ -418,22 +388,18 @@ class UploadDataLogic extends BaseGetXController { return; } state.sureBtnState.value = 1; - showEasyLoading(); showBlueConnetctToastTimer(action: () { dismissEasyLoading(); - AppLog.log('上传密码列表获取超时 关闭加载菊花'); state.sureBtnState.value = 0; }); - BlueManage().blueSendData(BlueManage().connectDeviceName, - (BluetoothConnectionState connectionState) async { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { if (connectionState == BluetoothConnectionState.connected) { final List? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); updataLockPasswordList(getTokenList, state.uploadPasswordPage); } else if (connectionState == BluetoothConnectionState.disconnected) { - AppLog.log('上传密码列表连接失败 关闭加载菊花'); dismissEasyLoading(); cancelBlueConnetctToastTimer(); state.sureBtnState.value = 0; @@ -446,8 +412,7 @@ class UploadDataLogic extends BaseGetXController { // 公共的获取密码列表 Future updataLockPasswordList(List token, int page) async { - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); final List getPrivateKeyList = changeStringListToIntList(privateKey!); final List? signKey = await Storage.getStringList(saveBlueSignKey); @@ -472,8 +437,7 @@ class UploadDataLogic extends BaseGetXController { state.indexCount.value = 0; state.sureBtnState.value = 0; }); - BlueManage().blueSendData(BlueManage().connectDeviceName, - (BluetoothConnectionState connectionState) async { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { if (connectionState == BluetoothConnectionState.connected) { final List? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); @@ -493,8 +457,7 @@ class UploadDataLogic extends BaseGetXController { // 公共的获取Card列表 Future updataLockCardList(List token, int page) async { - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); final List getPrivateKeyList = changeStringListToIntList(privateKey!); final List? signKey = await Storage.getStringList(saveBlueSignKey); @@ -519,8 +482,7 @@ class UploadDataLogic extends BaseGetXController { state.indexCount.value = 0; state.sureBtnState.value = 0; }); - BlueManage().blueSendData(BlueManage().connectDeviceName, - (BluetoothConnectionState connectionState) async { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { if (connectionState == BluetoothConnectionState.connected) { final List? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); @@ -540,8 +502,7 @@ class UploadDataLogic extends BaseGetXController { // 公共的获取指纹列表 Future updataLockFingerprintList(List token, int page) async { - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); final List getPrivateKeyList = changeStringListToIntList(privateKey!); final List? signKey = await Storage.getStringList(saveBlueSignKey); @@ -566,8 +527,7 @@ class UploadDataLogic extends BaseGetXController { state.indexCount.value = 0; state.sureBtnState.value = 0; }); - BlueManage().blueSendData(BlueManage().connectDeviceName, - (BluetoothConnectionState connectionState) async { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { if (connectionState == BluetoothConnectionState.connected) { final List? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); @@ -587,8 +547,7 @@ class UploadDataLogic extends BaseGetXController { // 公共的获取人脸列表 Future updataLockFaceList(List token, int page) async { - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); final List getPrivateKeyList = changeStringListToIntList(privateKey!); final List? signKey = await Storage.getStringList(saveBlueSignKey); @@ -613,8 +572,7 @@ class UploadDataLogic extends BaseGetXController { state.indexCount.value = 0; state.sureBtnState.value = 0; }); - BlueManage().blueSendData(BlueManage().connectDeviceName, - (BluetoothConnectionState connectionState) async { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { if (connectionState == BluetoothConnectionState.connected) { final List? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); @@ -634,8 +592,7 @@ class UploadDataLogic extends BaseGetXController { // 公共的获取掌静脉列表 Future updataLockPalmVeinList(List token, int page) async { - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); final List getPrivateKeyList = changeStringListToIntList(privateKey!); final List? signKey = await Storage.getStringList(saveBlueSignKey); @@ -660,14 +617,12 @@ class UploadDataLogic extends BaseGetXController { state.indexCount.value = 0; state.sureBtnState.value = 0; }); - BlueManage().blueSendData(BlueManage().connectDeviceName, - (BluetoothConnectionState connectionState) async { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { if (connectionState == BluetoothConnectionState.connected) { final List? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); - updataLockRemoteControlList( - getTokenList, state.uploadRemoteControlPage); + updataLockRemoteControlList(getTokenList, state.uploadRemoteControlPage); } else if (connectionState == BluetoothConnectionState.disconnected) { dismissEasyLoading(); cancelBlueConnetctToastTimer(); @@ -682,8 +637,7 @@ class UploadDataLogic extends BaseGetXController { // 公共的获取遥控列表 Future updataLockRemoteControlList(List token, int page) async { - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); final List getPrivateKeyList = changeStringListToIntList(privateKey!); final List? signKey = await Storage.getStringList(saveBlueSignKey); @@ -708,8 +662,7 @@ class UploadDataLogic extends BaseGetXController { state.indexCount.value = 0; state.sureBtnState.value = 0; }); - BlueManage().blueSendData(BlueManage().connectDeviceName, - (BluetoothConnectionState connectionState) async { + BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { if (connectionState == BluetoothConnectionState.connected) { final List? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); @@ -729,8 +682,7 @@ class UploadDataLogic extends BaseGetXController { // 公共的上传锁设置 Future updataLockSet(List token) async { - final List? privateKey = - await Storage.getStringList(saveBluePrivateKey); + final List? privateKey = await Storage.getStringList(saveBluePrivateKey); final List getPrivateKeyList = changeStringListToIntList(privateKey!); final List? signKey = await Storage.getStringList(saveBlueSignKey); @@ -746,16 +698,9 @@ class UploadDataLogic extends BaseGetXController { } // 锁数据上传服务器 - Future _lockDataUpload( - {required int uploadType, - required int recordType, - required List records}) async { + Future _lockDataUpload({required int uploadType, required int recordType, required List records}) async { final LoginEntity entity = await ApiRepository.to.lockDataUpload( - lockId: CommonDataManage().currentKeyInfo.lockId!, - uploadType: uploadType, - recordType: recordType, - records: records, - isUnShowLoading: false); + lockId: CommonDataManage().currentKeyInfo.lockId!, uploadType: uploadType, recordType: recordType, records: records, isUnShowLoading: false); if (entity.errorCode!.codeIsSuccessful) { if (uploadType == 1) { // 1设置 @@ -806,32 +751,32 @@ class UploadDataLogic extends BaseGetXController { } else { // 2开门方式 switch (recordType) { - // case 1: - // // 电子钥匙 - // - // break; + // case 1: + // // 电子钥匙 + // + // break; case 2: - // 密码上传成功之后,获取卡列表 + // 密码上传成功之后,获取卡列表 getUpdataLockCardList(); break; case 3: - // IC卡上传成功,获取指纹列表 + // IC卡上传成功,获取指纹列表 getUpdataLockFingerprintList(); break; case 4: - // 指纹上传成功,获取人脸列表 + // 指纹上传成功,获取人脸列表 getUpdataLockFaceList(); break; case 5: - // 人脸上传成功,获取掌静脉列表 + // 人脸上传成功,获取掌静脉列表 getUpdataLockPalmVeinList(); break; case 6: - // 掌静脉上传成功,获取锁遥控 + // 掌静脉上传成功,获取锁遥控 getUpdataLockRemoteControlList(); break; case 7: - // 遥控上传成功,获取锁设置 + // 遥控上传成功,获取锁设置 getUpdataLockSet(); break; default: