fix: 增加蓝牙开锁后同步密码、卡、指纹、人脸、遥控的钥匙信息

This commit is contained in:
liyi 2025-09-06 14:50:32 +08:00
parent 694df0282f
commit fac3c060e6
3 changed files with 885 additions and 285 deletions

File diff suppressed because it is too large Load Diff

View File

@ -58,8 +58,26 @@ class LockDetailState {
int logCountPage = 10; // int logCountPage = 10; //
RxInt nextAuthTime = 0.obs; // RxInt nextAuthTime = 0.obs; //
// LockDetailState() { int countReq = 10;//
// Map map = Get.arguments; RxInt indexCount = 0.obs;// 0/5
// lockCount = map["lockCount"];
// } int uploadPasswordPage = 0;//
List<int> uploadPasswordDataList = <int>[];//
int uploadCardPage = 0;//
List<int> uploadCardDataList = <int>[];//
int uploadFingerprintPage = 0;//
List<int> uploadFingerprintDataList = <int>[];//
int uploadFacePage = 0;//
List<int> uploadFaceDataList = <int>[];//
int uploadPalmVeinPage = 0;//
List<int> uploadPalmVeinDataList = <int>[];//
int uploadRemoteControlPage = 0;//
List<int> uploadRemoteControlDataList = <int>[];//
List<int> uploadLockSetDataList = <int>[];//
} }

View File

@ -29,49 +29,41 @@ class UploadDataLogic extends BaseGetXController {
// //
late StreamSubscription<Reply> _replySubscription; late StreamSubscription<Reply> _replySubscription;
void _initReplySubscription() { void _initReplySubscription() {
_replySubscription = _replySubscription = EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
// //
if (reply is UpdataLockPasswordListReply && if (reply is UpdataLockPasswordListReply && (state.ifCurrentScreen.value == true)) {
(state.ifCurrentScreen.value == true)) {
_replyUpdataLockPasswordListReply(reply); _replyUpdataLockPasswordListReply(reply);
} }
// //
if (reply is UpdataLockCardListReply && if (reply is UpdataLockCardListReply && (state.ifCurrentScreen.value == true)) {
(state.ifCurrentScreen.value == true)) {
_replyUpdataLockCardListReply(reply); _replyUpdataLockCardListReply(reply);
} }
// //
if (reply is UpdataLockFingerprintListReply && if (reply is UpdataLockFingerprintListReply && (state.ifCurrentScreen.value == true)) {
(state.ifCurrentScreen.value == true)) {
_replyUpdataLockFingerprintListReply(reply); _replyUpdataLockFingerprintListReply(reply);
} }
// //
if (reply is UpdataLockFaceListReply && if (reply is UpdataLockFaceListReply && (state.ifCurrentScreen.value == true)) {
(state.ifCurrentScreen.value == true)) {
_replyUpdataLockFaceListReply(reply); _replyUpdataLockFaceListReply(reply);
} }
// //
if (reply is UpdataLockPalmVeinListReply && if (reply is UpdataLockPalmVeinListReply && (state.ifCurrentScreen.value == true)) {
(state.ifCurrentScreen.value == true)) {
_replyUpdataLockPalmVeinListReply(reply); _replyUpdataLockPalmVeinListReply(reply);
} }
// //
if (reply is UpdataLockRemoteControlListReply && if (reply is UpdataLockRemoteControlListReply && (state.ifCurrentScreen.value == true)) {
(state.ifCurrentScreen.value == true)) {
_replyUpdataLockRemoteControlListReply(reply); _replyUpdataLockRemoteControlListReply(reply);
} }
// //
if (reply is UpdataLockSetReply && if (reply is UpdataLockSetReply && (state.ifCurrentScreen.value == true) && (state.ifSeletUpdataBtnState == true)) {
(state.ifCurrentScreen.value == true) &&
(state.ifSeletUpdataBtnState == true)) {
_replyUpdataLockSetReply(reply); _replyUpdataLockSetReply(reply);
} }
}); });
@ -86,8 +78,7 @@ class UploadDataLogic extends BaseGetXController {
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
final int dataLength = reply.data[8]; final int dataLength = reply.data[8];
state.uploadPasswordDataList state.uploadPasswordDataList.addAll(reply.data.sublist(9, reply.data.length));
.addAll(reply.data.sublist(9, reply.data.length));
if (dataLength == 10) { if (dataLength == 10) {
// 10 // 10
state.uploadPasswordPage = state.uploadPasswordPage + 1; state.uploadPasswordPage = state.uploadPasswordPage + 1;
@ -105,10 +96,7 @@ class UploadDataLogic extends BaseGetXController {
// }else{ // }else{
// // // //
state.indexCount.value = state.indexCount.value + 1; state.indexCount.value = state.indexCount.value + 1;
_lockDataUpload( _lockDataUpload(uploadType: 2, recordType: 2, records: state.uploadPasswordDataList);
uploadType: 2,
recordType: 2,
records: state.uploadPasswordDataList);
// } // }
} }
break; break;
@ -139,8 +127,7 @@ class UploadDataLogic extends BaseGetXController {
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
final int dataLength = reply.data[8]; final int dataLength = reply.data[8];
state.uploadCardDataList state.uploadCardDataList.addAll(reply.data.sublist(9, reply.data.length));
.addAll(reply.data.sublist(9, reply.data.length));
if (dataLength == 10) { if (dataLength == 10) {
// 10 // 10
state.uploadCardPage = state.uploadCardPage + 1; state.uploadCardPage = state.uploadCardPage + 1;
@ -157,8 +144,7 @@ class UploadDataLogic extends BaseGetXController {
// }else{ // }else{
// // // //
state.indexCount.value = state.indexCount.value + 1; state.indexCount.value = state.indexCount.value + 1;
_lockDataUpload( _lockDataUpload(uploadType: 2, recordType: 3, records: state.uploadCardDataList);
uploadType: 2, recordType: 3, records: state.uploadCardDataList);
// } // }
} }
break; break;
@ -188,8 +174,7 @@ class UploadDataLogic extends BaseGetXController {
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
final int dataLength = reply.data[8]; final int dataLength = reply.data[8];
state.uploadFingerprintDataList state.uploadFingerprintDataList.addAll(reply.data.sublist(9, reply.data.length));
.addAll(reply.data.sublist(9, reply.data.length));
if (dataLength == 10) { if (dataLength == 10) {
// 10 // 10
state.uploadFingerprintPage = state.uploadFingerprintPage + 1; state.uploadFingerprintPage = state.uploadFingerprintPage + 1;
@ -206,10 +191,7 @@ class UploadDataLogic extends BaseGetXController {
// }else{ // }else{
// // // //
state.indexCount.value = state.indexCount.value + 1; state.indexCount.value = state.indexCount.value + 1;
_lockDataUpload( _lockDataUpload(uploadType: 2, recordType: 4, records: state.uploadFingerprintDataList);
uploadType: 2,
recordType: 4,
records: state.uploadFingerprintDataList);
// } // }
} }
break; break;
@ -239,8 +221,7 @@ class UploadDataLogic extends BaseGetXController {
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
final int dataLength = reply.data[8]; final int dataLength = reply.data[8];
state.uploadFaceDataList state.uploadFaceDataList.addAll(reply.data.sublist(9, reply.data.length));
.addAll(reply.data.sublist(9, reply.data.length));
if (dataLength == 10) { if (dataLength == 10) {
// 10 // 10
state.uploadFacePage = state.uploadFacePage + 1; state.uploadFacePage = state.uploadFacePage + 1;
@ -257,8 +238,7 @@ class UploadDataLogic extends BaseGetXController {
// }else{ // }else{
// //
state.indexCount.value = state.indexCount.value + 1; state.indexCount.value = state.indexCount.value + 1;
_lockDataUpload( _lockDataUpload(uploadType: 2, recordType: 5, records: state.uploadFaceDataList);
uploadType: 2, recordType: 5, records: state.uploadFaceDataList);
// } // }
} }
break; break;
@ -288,8 +268,7 @@ class UploadDataLogic extends BaseGetXController {
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
final int dataLength = reply.data[8]; final int dataLength = reply.data[8];
state.uploadPalmVeinDataList state.uploadPalmVeinDataList.addAll(reply.data.sublist(9, reply.data.length));
.addAll(reply.data.sublist(9, reply.data.length));
if (dataLength == 10) { if (dataLength == 10) {
// 10 // 10
state.uploadPalmVeinPage = state.uploadPalmVeinPage + 1; state.uploadPalmVeinPage = state.uploadPalmVeinPage + 1;
@ -306,10 +285,7 @@ class UploadDataLogic extends BaseGetXController {
// }else{ // }else{
// // // //
state.indexCount.value = state.indexCount.value + 1; state.indexCount.value = state.indexCount.value + 1;
_lockDataUpload( _lockDataUpload(uploadType: 2, recordType: 6, records: state.uploadPalmVeinDataList);
uploadType: 2,
recordType: 6,
records: state.uploadPalmVeinDataList);
// } // }
} }
break; break;
@ -339,8 +315,7 @@ class UploadDataLogic extends BaseGetXController {
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
final int dataLength = reply.data[8]; final int dataLength = reply.data[8];
state.uploadRemoteControlDataList state.uploadRemoteControlDataList.addAll(reply.data.sublist(9, reply.data.length));
.addAll(reply.data.sublist(9, reply.data.length));
if (dataLength == 10) { if (dataLength == 10) {
// 10 // 10
state.uploadRemoteControlPage = state.uploadRemoteControlPage + 1; state.uploadRemoteControlPage = state.uploadRemoteControlPage + 1;
@ -357,10 +332,7 @@ class UploadDataLogic extends BaseGetXController {
// }else{ // }else{
// // // //
state.indexCount.value = state.indexCount.value + 1; state.indexCount.value = state.indexCount.value + 1;
_lockDataUpload( _lockDataUpload(uploadType: 2, recordType: 7, records: state.uploadRemoteControlDataList);
uploadType: 2,
recordType: 7,
records: state.uploadRemoteControlDataList);
// } // }
} }
break; break;
@ -390,10 +362,8 @@ class UploadDataLogic extends BaseGetXController {
state.indexCount.value = state.indexCount.value + 1; state.indexCount.value = state.indexCount.value + 1;
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
state.uploadLockSetDataList state.uploadLockSetDataList.addAll(reply.data.sublist(7, reply.data.length));
.addAll(reply.data.sublist(7, reply.data.length)); _lockDataUpload(uploadType: 1, recordType: 0, records: state.uploadLockSetDataList);
_lockDataUpload(
uploadType: 1, recordType: 0, records: state.uploadLockSetDataList);
break; break;
case 0x06: case 0x06:
// //
@ -418,22 +388,18 @@ class UploadDataLogic extends BaseGetXController {
return; return;
} }
state.sureBtnState.value = 1; state.sureBtnState.value = 1;
showEasyLoading(); showEasyLoading();
showBlueConnetctToastTimer(action: () { showBlueConnetctToastTimer(action: () {
dismissEasyLoading(); dismissEasyLoading();
AppLog.log('上传密码列表获取超时 关闭加载菊花');
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
}); });
BlueManage().blueSendData(BlueManage().connectDeviceName, BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) { if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken); final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!); final List<int> getTokenList = changeStringListToIntList(token!);
updataLockPasswordList(getTokenList, state.uploadPasswordPage); updataLockPasswordList(getTokenList, state.uploadPasswordPage);
} else if (connectionState == BluetoothConnectionState.disconnected) { } else if (connectionState == BluetoothConnectionState.disconnected) {
AppLog.log('上传密码列表连接失败 关闭加载菊花');
dismissEasyLoading(); dismissEasyLoading();
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
@ -446,8 +412,7 @@ class UploadDataLogic extends BaseGetXController {
// //
Future<void> updataLockPasswordList(List<int> token, int page) async { Future<void> updataLockPasswordList(List<int> token, int page) async {
final List<String>? privateKey = final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!); final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey); final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -472,8 +437,7 @@ class UploadDataLogic extends BaseGetXController {
state.indexCount.value = 0; state.indexCount.value = 0;
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
}); });
BlueManage().blueSendData(BlueManage().connectDeviceName, BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) { if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken); final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!); final List<int> getTokenList = changeStringListToIntList(token!);
@ -493,8 +457,7 @@ class UploadDataLogic extends BaseGetXController {
// Card列表 // Card列表
Future<void> updataLockCardList(List<int> token, int page) async { Future<void> updataLockCardList(List<int> token, int page) async {
final List<String>? privateKey = final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!); final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey); final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -519,8 +482,7 @@ class UploadDataLogic extends BaseGetXController {
state.indexCount.value = 0; state.indexCount.value = 0;
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
}); });
BlueManage().blueSendData(BlueManage().connectDeviceName, BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) { if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken); final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!); final List<int> getTokenList = changeStringListToIntList(token!);
@ -540,8 +502,7 @@ class UploadDataLogic extends BaseGetXController {
// //
Future<void> updataLockFingerprintList(List<int> token, int page) async { Future<void> updataLockFingerprintList(List<int> token, int page) async {
final List<String>? privateKey = final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!); final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey); final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -566,8 +527,7 @@ class UploadDataLogic extends BaseGetXController {
state.indexCount.value = 0; state.indexCount.value = 0;
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
}); });
BlueManage().blueSendData(BlueManage().connectDeviceName, BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) { if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken); final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!); final List<int> getTokenList = changeStringListToIntList(token!);
@ -587,8 +547,7 @@ class UploadDataLogic extends BaseGetXController {
// //
Future<void> updataLockFaceList(List<int> token, int page) async { Future<void> updataLockFaceList(List<int> token, int page) async {
final List<String>? privateKey = final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!); final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey); final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -613,8 +572,7 @@ class UploadDataLogic extends BaseGetXController {
state.indexCount.value = 0; state.indexCount.value = 0;
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
}); });
BlueManage().blueSendData(BlueManage().connectDeviceName, BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) { if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken); final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!); final List<int> getTokenList = changeStringListToIntList(token!);
@ -634,8 +592,7 @@ class UploadDataLogic extends BaseGetXController {
// //
Future<void> updataLockPalmVeinList(List<int> token, int page) async { Future<void> updataLockPalmVeinList(List<int> token, int page) async {
final List<String>? privateKey = final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!); final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey); final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -660,14 +617,12 @@ class UploadDataLogic extends BaseGetXController {
state.indexCount.value = 0; state.indexCount.value = 0;
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
}); });
BlueManage().blueSendData(BlueManage().connectDeviceName, BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) { if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken); final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!); final List<int> getTokenList = changeStringListToIntList(token!);
updataLockRemoteControlList( updataLockRemoteControlList(getTokenList, state.uploadRemoteControlPage);
getTokenList, state.uploadRemoteControlPage);
} else if (connectionState == BluetoothConnectionState.disconnected) { } else if (connectionState == BluetoothConnectionState.disconnected) {
dismissEasyLoading(); dismissEasyLoading();
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
@ -682,8 +637,7 @@ class UploadDataLogic extends BaseGetXController {
// //
Future<void> updataLockRemoteControlList(List<int> token, int page) async { Future<void> updataLockRemoteControlList(List<int> token, int page) async {
final List<String>? privateKey = final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!); final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey); final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -708,8 +662,7 @@ class UploadDataLogic extends BaseGetXController {
state.indexCount.value = 0; state.indexCount.value = 0;
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
}); });
BlueManage().blueSendData(BlueManage().connectDeviceName, BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
(BluetoothConnectionState connectionState) async {
if (connectionState == BluetoothConnectionState.connected) { if (connectionState == BluetoothConnectionState.connected) {
final List<String>? token = await Storage.getStringList(saveBlueToken); final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!); final List<int> getTokenList = changeStringListToIntList(token!);
@ -729,8 +682,7 @@ class UploadDataLogic extends BaseGetXController {
// //
Future<void> updataLockSet(List<int> token) async { Future<void> updataLockSet(List<int> token) async {
final List<String>? privateKey = final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!); final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey); final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -746,16 +698,9 @@ class UploadDataLogic extends BaseGetXController {
} }
// //
Future<void> _lockDataUpload( Future<void> _lockDataUpload({required int uploadType, required int recordType, required List records}) async {
{required int uploadType,
required int recordType,
required List records}) async {
final LoginEntity entity = await ApiRepository.to.lockDataUpload( final LoginEntity entity = await ApiRepository.to.lockDataUpload(
lockId: CommonDataManage().currentKeyInfo.lockId!, lockId: CommonDataManage().currentKeyInfo.lockId!, uploadType: uploadType, recordType: recordType, records: records, isUnShowLoading: false);
uploadType: uploadType,
recordType: recordType,
records: records,
isUnShowLoading: false);
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
if (uploadType == 1) { if (uploadType == 1) {
// 1 // 1
@ -806,32 +751,32 @@ class UploadDataLogic extends BaseGetXController {
} else { } else {
// 2 // 2
switch (recordType) { switch (recordType) {
// case 1: // case 1:
// // // //
// //
// break; // break;
case 2: case 2:
// //
getUpdataLockCardList(); getUpdataLockCardList();
break; break;
case 3: case 3:
// IC卡上传成功 // IC卡上传成功
getUpdataLockFingerprintList(); getUpdataLockFingerprintList();
break; break;
case 4: case 4:
// //
getUpdataLockFaceList(); getUpdataLockFaceList();
break; break;
case 5: case 5:
// //
getUpdataLockPalmVeinList(); getUpdataLockPalmVeinList();
break; break;
case 6: case 6:
// //
getUpdataLockRemoteControlList(); getUpdataLockRemoteControlList();
break; break;
case 7: case 7:
// //
getUpdataLockSet(); getUpdataLockSet();
break; break;
default: default: