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; //
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<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;
void _initReplySubscription() {
_replySubscription =
EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
_replySubscription = EventBusManager().eventBus!.on<Reply>().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<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> 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<void> updataLockPasswordList(List<int> token, int page) async {
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? 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<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
@ -493,8 +457,7 @@ class UploadDataLogic extends BaseGetXController {
// Card列表
Future<void> updataLockCardList(List<int> token, int page) async {
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? 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<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
@ -540,8 +502,7 @@ class UploadDataLogic extends BaseGetXController {
//
Future<void> updataLockFingerprintList(List<int> token, int page) async {
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? 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<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
@ -587,8 +547,7 @@ class UploadDataLogic extends BaseGetXController {
//
Future<void> updataLockFaceList(List<int> token, int page) async {
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? 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<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
@ -634,8 +592,7 @@ class UploadDataLogic extends BaseGetXController {
//
Future<void> updataLockPalmVeinList(List<int> token, int page) async {
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? 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<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> 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<void> updataLockRemoteControlList(List<int> token, int page) async {
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? 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<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
@ -729,8 +682,7 @@ class UploadDataLogic extends BaseGetXController {
//
Future<void> updataLockSet(List<int> token) async {
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -746,16 +698,9 @@ class UploadDataLogic extends BaseGetXController {
}
//
Future<void> _lockDataUpload(
{required int uploadType,
required int recordType,
required List records}) async {
Future<void> _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: