From f05e8fc81350437b1d3498b4af632b7e3714ab12 Mon Sep 17 00:00:00 2001 From: "sky.min" Date: Mon, 26 Jan 2026 11:56:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E6=B3=A8=E5=86=8C=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98=E5=AF=86=E7=A0=81--app=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E6=97=B6=E8=8E=B7=E5=8F=96=E7=AE=A1=E7=90=86=E5=91=98=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E6=9B=BF=E6=8D=A2=E6=88=90=E5=9F=BA=E6=9C=AC=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E7=9A=84=E7=AE=A1=E7=90=86=E5=91=98=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/mine/addLock/saveLock/saveLock_logic.dart | 105 +++++++++++++++++- lib/mine/addLock/saveLock/saveLock_state.dart | 14 ++- 2 files changed, 111 insertions(+), 8 deletions(-) diff --git a/lib/mine/addLock/saveLock/saveLock_logic.dart b/lib/mine/addLock/saveLock/saveLock_logic.dart index c7f4b6d8..6e10bf60 100755 --- a/lib/mine/addLock/saveLock/saveLock_logic.dart +++ b/lib/mine/addLock/saveLock/saveLock_logic.dart @@ -1,9 +1,11 @@ import 'dart:async'; +import 'dart:math'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:get/get.dart'; import 'package:star_lock/apm/apm_helper.dart'; import 'package:star_lock/appRouters.dart'; +import 'package:star_lock/blue/io_protocol/io_readAdminPassword.dart'; import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_logic.dart'; import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart'; @@ -18,7 +20,6 @@ import '../../../blue/io_tool/manager_event_bus.dart'; import '../../../blue/sender_manage.dart'; import '../../../network/api_repository.dart'; import '../../../tools/baseGetXController.dart'; -import '../../../tools/commonDataManage.dart'; import '../../../tools/dateTool.dart'; import '../../../tools/eventBusEventManage.dart'; import '../../../tools/storage.dart'; @@ -43,9 +44,108 @@ class SaveLockLogic extends BaseGetXController { // if (reply is ChangeAdministratorPasswordReply) { // _replyChangeAdministratorPassword(reply); // } + + // 新增----m 获取锁管理员密码 + if (reply is SenderReadAdminPasswordReply && (state.ifCurrentScreen.value == true)) { + _replySenderReadAdminPasswordReply(reply); + } }); } + // 新增----m 获取锁管理员密码 + Future _replySenderReadAdminPasswordReply(Reply reply) async { + AppLog.log('响应获取管理员密码: ${reply.data}'); + var token = reply.data.sublist(5, 9); + var saveStrList = changeIntListToStringList(token); + Storage.setStringList(saveBlueToken, saveStrList); + + int status = reply.data[2]; + switch (status) { + case 0x00: + //成功 + dismissEasyLoading(); + cancelBlueConnetctToastTimer(); + + if(reply.data[5] > 0){ + reply.data.removeRange(0, 6); + // 把得到的数据按8位分割成数组 然后塞进一个新的数组里面 + var getList = splitList(reply.data, 13); + for(int i = 0; i getPrivateKeyList = changeStringListToIntList(privateKey!); + + var token = await Storage.getStringList(saveBlueToken); + List getTokenList = changeStringListToIntList(token!); + + var publicKey = await Storage.getStringList(saveBluePublicKey); + List getPublicKeyList = changeStringListToIntList(publicKey!); + + IoSenderManage.senderReadAdminPasswordCommand( + keyID: state.lockSetInfoData.value.lockBasicInfo!.keyId.toString(), + userID: await Storage.getUid(), + role:0xff, + pwdNum:1, + pwdNo: 0, + token: getTokenList, + needAuthor: 1, + publicKey: getPublicKeyList, + privateKey: getPrivateKeyList + ); + break; + default: + //失败 + break; + } + } + + + void senderReadAdminPassword() async { + 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? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); + + final List? publicKey = await Storage.getStringList(saveBluePublicKey); + final List getPublicKeyList = changeStringListToIntList(publicKey!); + + AppLog.log('发送获取管理员密码指令:${BlueManage().connectDeviceName}'); + IoSenderManage.senderReadAdminPasswordCommand( + keyID: '1', + userID: await Storage.getUid(), + role:1, + pwdNum:1, + pwdNo: 0, + token: getTokenList, + needAuthor: 1, + publicKey: getPublicKeyList, + privateKey: getPrivateKeyList + ); + } + }); + } + // 添加用户 Future _replyAddUserKey(Reply reply) async { final List token = reply.data.sublist(42, 46); @@ -240,7 +340,7 @@ class SaveLockLogic extends BaseGetXController { startMin: 0, endHour: 0, endMin: 0, - role: 255, + role: state.role, password: state.adminPassword, needAuthor: 1, publicKey: publicKeyDataList, @@ -521,6 +621,7 @@ class SaveLockLogic extends BaseGetXController { super.onReady(); _initReplySubscription(); + senderReadAdminPassword(); } @override diff --git a/lib/mine/addLock/saveLock/saveLock_state.dart b/lib/mine/addLock/saveLock/saveLock_state.dart index dc929c5b..5d7bada9 100755 --- a/lib/mine/addLock/saveLock/saveLock_state.dart +++ b/lib/mine/addLock/saveLock/saveLock_state.dart @@ -12,7 +12,7 @@ class SaveLockState { SaveLockState() { aliName.value = BlueManage().connectDeviceName; aliNameController.text = aliName.value; - adminPassword = getAdminPassword(); + // adminPassword = getAdminPassword(); final Map map = Get.arguments; if (map['pwdTimestamp']!= null) { @@ -60,14 +60,16 @@ class SaveLockState { String adminPassword = ''; int lockId = 0; + int role = 255; + void onClose() { aliNameController.dispose(); } - String getAdminPassword(){ - final Random rng = Random(); - final int number = rng.nextInt(900000) + 100000; // 生成 100000 到 999999 之间的随机整数 - return number.toString(); - } + // String getAdminPassword(){ + // final Random rng = Random(); + // final int number = rng.nextInt(900000) + 100000; // 生成 100000 到 999999 之间的随机整数 + // return number.toString(); + // } }