From d38e56bd84b6fdb404d7fba96a1954dae6d151da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Thu, 9 May 2024 14:37:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B8=85=E9=99=A4=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/blue/sender_beforeDataManage.dart | 79 ++++++++++++++----- star_lock/lib/blue/sender_data.dart | 20 ++--- 2 files changed, 71 insertions(+), 28 deletions(-) diff --git a/star_lock/lib/blue/sender_beforeDataManage.dart b/star_lock/lib/blue/sender_beforeDataManage.dart index 7ddfe49c..ed927f13 100644 --- a/star_lock/lib/blue/sender_beforeDataManage.dart +++ b/star_lock/lib/blue/sender_beforeDataManage.dart @@ -20,6 +20,7 @@ import 'io_protocol/io_addUser.dart'; import 'io_reply.dart'; import 'io_tool/io_tool.dart'; import 'io_tool/manager_event_bus.dart'; +import 'sender_data.dart'; class SenderBeforeDataManage { static SenderBeforeDataManage? _manager; @@ -50,8 +51,9 @@ class SenderBeforeDataManage { if (reply is AddUserReply) { _replyAddUserKey(reply); } - if(reply is CleanUpUsersReply){ + if(reply is CleanUpUsersReply){ + _cleanUpUsersReply(reply); } }); } @@ -93,8 +95,7 @@ class SenderBeforeDataManage { // publicKey: publicKeyDataList, // privateKey: getPrivateKeyList, // token: token); - LockListInfoItemEntity currentKeyInfo = - CommonDataManage().currentKeyInfo; + LockListInfoItemEntity currentKeyInfo = CommonDataManage().currentKeyInfo; AppLog.log( "startDate111:${currentKeyInfo.startDate} endDate:${currentKeyInfo.endDate}"); DateTime startTime = DateTime.fromMillisecondsSinceEpoch( @@ -148,17 +149,30 @@ class SenderBeforeDataManage { List tokenList = changeStringListToIntList(tokenKey!); AppLog.log('---> ${entity.data?.userNos}'); - IoSenderManage.senderCleanUpUsersCommand( - lockID: BlueManage().connectDeviceName, - authUserID: - CommonDataManage().currentKeyInfo.senderUserId!.toString(), - keyID: CommonDataManage().currentKeyInfo.keyId.toString(), - userID: await Storage.getUid(), - userNoList: entity.data!.userNos!, - needAuthor: 1, - publicKey: publicKeyDataList, - privateKey: getPrivateKeyList, - token: tokenList); + var cleanUpUsersData = CleanUpUsersCommand( + lockID: BlueManage().connectDeviceName, + authUserID: CommonDataManage().currentKeyInfo.senderUserId!.toString(), + keyID: CommonDataManage().currentKeyInfo.keyId.toString(), + userID: await Storage.getUid(), + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, + userNoList: entity.data!.userNos!, + token: tokenList, + ).packageData(); + CommandSenderManager().sendNormalData(cleanUpUsersData); + + // IoSenderManage.senderCleanUpUsersCommand( + // lockID: BlueManage().connectDeviceName, + // authUserID: + // CommonDataManage().currentKeyInfo.senderUserId!.toString(), + // keyID: CommonDataManage().currentKeyInfo.keyId.toString(), + // userID: await Storage.getUid(), + // userNoList: entity.data!.userNos!, + // needAuthor: 1, + // publicKey: publicKeyDataList, + // privateKey: getPrivateKeyList, + // token: tokenList); break; default: @@ -167,18 +181,47 @@ class SenderBeforeDataManage { } } + // 清理用户 + Future _cleanUpUsersReply(Reply reply) async { + int status = reply.data[6]; + switch (status) { + case 0x00: + //成功 + + break; + case 0x06: + //无权限 + var privateKey = await Storage.getStringList(saveBluePrivateKey); + List getPrivateKeyList = changeStringListToIntList(privateKey!); + + var publicKey = await Storage.getStringList(saveBluePublicKey); + List publicKeyDataList = changeStringListToIntList(publicKey!); + + var token = reply.data.sublist(42, 46); + List strTokenList = changeIntListToStringList(token); + Storage.setStringList(saveBlueToken, strTokenList); + + + break; + default: + //失败 + break; + } + } + Future> getAddUserKeyData() async { var privateKey = await Storage.getStringList(saveBluePrivateKey); List getPrivateKeyList = changeStringListToIntList(privateKey!); + var publicKey = await Storage.getStringList(saveBluePublicKey); List publicKeyDataList = changeStringListToIntList(publicKey!); + var token = await Storage.getStringList(saveBlueToken); List getTokenList = changeStringListToIntList(token!); + LockListInfoItemEntity currentKeyInfo = CommonDataManage().currentKeyInfo; - DateTime startTime = - DateTime.fromMillisecondsSinceEpoch(currentKeyInfo.startDate! ~/ 1000); - DateTime endTime = - DateTime.fromMillisecondsSinceEpoch(currentKeyInfo.endDate! ~/ 1000); + DateTime startTime = DateTime.fromMillisecondsSinceEpoch(currentKeyInfo.startDate! ~/ 1000); + DateTime endTime = DateTime.fromMillisecondsSinceEpoch(currentKeyInfo.endDate! ~/ 1000); bool isRound = currentKeyInfo.keyType == 2; var addUserData = AddUserCommand( diff --git a/star_lock/lib/blue/sender_data.dart b/star_lock/lib/blue/sender_data.dart index 17ebfc90..4abc61e0 100644 --- a/star_lock/lib/blue/sender_data.dart +++ b/star_lock/lib/blue/sender_data.dart @@ -32,12 +32,11 @@ class CommandSenderManager { void initLockAddUserSucceedEvent() { // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus - _passCurrentLockInformationEvent = - eventBus.on().listen((event) { + _passCurrentLockInformationEvent = eventBus.on().listen((event) { if (event.type == 0) { - _sendNormalData(dataBeforeAddTheUser); + sendNormalData(dataBeforeAddTheUser); } else { - _sendNormalData(event.dataList); + sendNormalData(event.dataList); } }); } @@ -58,21 +57,22 @@ class CommandSenderManager { List value = command.packageData(); if (isBeforeAddUser == true) { - _sendNormalData(value); + // 如果是添加用户之前调用协议 直接发送 + sendNormalData(value); } else { + // 添加用户之后调用协议就要判断是否添加用户 if (CommonDataManage().currentLockUserNo == 0) { - // 先添加用户 + // 如果LockUserNo为0,先添加用户 var entity = await SenderBeforeDataManage().getAddUserKeyData(); - _sendNormalData(entity); + sendNormalData(entity); dataBeforeAddTheUser = value; - return; } else { - _sendNormalData(value); + sendNormalData(value); } } } - void _sendNormalData(List data) async { + void sendNormalData(List data) async { if (data.isNotEmpty) { EventBusManager().eventBusFir( EventSendModel(data: data, sendChannel: DataChannel.ble));