修改卡、指纹模块bug

This commit is contained in:
魏少阳 2023-12-13 17:38:50 +08:00
parent aa3fb31311
commit b57c18a9c0
19 changed files with 167 additions and 77 deletions

View File

@ -18,6 +18,7 @@ class SenderAddStressFingerprintCommand extends SenderProtocol {
String? keyID;
String? userID;
int? fingerNo;
int? fingerType;
int? useCountLimit;
List<int>? token;
int? startTime;
@ -25,11 +26,13 @@ class SenderAddStressFingerprintCommand extends SenderProtocol {
int? needAuthor;
List<int>? publicKey;
List<int>? privateKey;
List<int>? signKey;
SenderAddStressFingerprintCommand({
this.keyID,
this.userID,
this.fingerNo,
this.fingerType,
this.useCountLimit,
this.token,
this.startTime,
@ -37,6 +40,7 @@ class SenderAddStressFingerprintCommand extends SenderProtocol {
this.needAuthor,
this.publicKey,
this.privateKey,
this.signKey
}) : super(CommandType.generalExtendedCommond);
@override
@ -71,8 +75,11 @@ class SenderAddStressFingerprintCommand extends SenderProtocol {
// PwdNo
subData.add(fingerNo!);
// fingerType
subData.add(fingerType!);
// UseCountLimit
subData.add(0xff);
subData.add(255);
// token
subData.addAll(token!);
@ -104,13 +111,12 @@ class SenderAddStressFingerprintCommand extends SenderProtocol {
//token 4 Token 0
authCodeData.addAll(token!);
authCodeData.addAll(publicKey!);
authCodeData.addAll(signKey!);
print("${commandType!.typeValue}-authCodeData:$authCodeData");
// KeyIDauthUserIDmd5加密之后就是authCode
var authCode = crypto.md5.convert(authCodeData);
subData.add(authCode.bytes.length);
subData.addAll(authCode.bytes);
}

View File

@ -18,6 +18,7 @@ class SenderAddStressICCardCommand extends SenderProtocol {
String? keyID;
String? userID;
int? icCardNo;
int? cardType;
int? useCountLimit;
List<int>? token;
int? startTime;
@ -30,6 +31,7 @@ class SenderAddStressICCardCommand extends SenderProtocol {
this.keyID,
this.userID,
this.icCardNo,
this.cardType,
this.useCountLimit,
this.token,
this.startTime,
@ -68,9 +70,12 @@ class SenderAddStressICCardCommand extends SenderProtocol {
subData.addAll(utf8.encode(userID!));
subData = getFixedLengthList(subData, 20 - userIDLength);
// PwdNo
// icCardNo
subData.add(icCardNo!);
// cardType
subData.add(cardType!);
// UseCountLimit
subData.add(0xff);

View File

@ -544,6 +544,7 @@ class IoSenderManage {
required String? keyID,
required String? userID,
required int? fingerNo,
required int? fingerType,
required int? useCountLimit,
required List<int>? token,
required int? startTime,
@ -551,12 +552,14 @@ class IoSenderManage {
required int? needAuthor,
required List<int>? publicKey,
required List<int>? privateKey,
required List<int>? signKey,
CommandSendCallBack? callBack}) {
CommandSenderManager().managerSendData(
command: SenderAddStressFingerprintCommand(
keyID: keyID,
userID: userID,
fingerNo: fingerNo,
fingerType: fingerType,
useCountLimit: useCountLimit,
token: token,
startTime: startTime,
@ -564,6 +567,7 @@ class IoSenderManage {
needAuthor: needAuthor,
publicKey: publicKey,
privateKey: privateKey,
signKey: signKey
), callBack:callBack);
}
@ -572,6 +576,7 @@ class IoSenderManage {
required String? keyID,
required String? userID,
required int? icCardNo,
required int? cardType,
required int? useCountLimit,
required List<int>? token,
required int? startTime,
@ -585,6 +590,7 @@ class IoSenderManage {
keyID: keyID,
userID: userID,
icCardNo: icCardNo,
cardType: cardType,
useCountLimit: useCountLimit,
token: token,
startTime: startTime,

View File

@ -45,7 +45,7 @@ class AddICCardLogic extends BaseGetXController{
}
Future<void> _replyAddICCardBegin(Reply reply) async {
var token = reply.data.sublist(2, 6);
var token = reply.data.sublist(5, 9);
var saveStrList = changeIntListToStringList(token);
print("_replyAddFingerprintReplyToken:$token");
Storage.setStringList(saveBlueToken, saveStrList);
@ -74,8 +74,8 @@ class AddICCardLogic extends BaseGetXController{
userID:await Storage.getUid(),
fingerNo:1,
useCountLimit:0xff,
startTime:0x11223344,
endTime:0x11223344,
startTime:int.parse(state.startDate.value)~/1000,
endTime:int.parse(state.endDate.value)~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
privateKey:getPrivateKeyList,
@ -114,7 +114,7 @@ class AddICCardLogic extends BaseGetXController{
//
print("${reply.commandType!.typeValue} 数据解析成功");
// print("添加指纹确认成功,调用添加指纹接口");
if(state.isCoerced.value == "2"){
if(state.isCoerced.value == "1"){
//
int addResultStatus = reply.data[5];
if(addResultStatus == 0){
@ -169,8 +169,26 @@ class AddICCardLogic extends BaseGetXController{
addICCardData();
break;
case 0x06:
//
//
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
IoSenderManage.senderAddStressICCardCommand(
keyID:"1",
userID:await Storage.getUid(),
icCardNo:1,
cardType:1,
useCountLimit:1,
startTime:0x11223344,
endTime:0x11223344,
needAuthor:1,
publicKey:publicKeyDataList,
privateKey:getPrivateKeyList,
token: token,
);
break;
case 0x07:
//
@ -192,8 +210,8 @@ class AddICCardLogic extends BaseGetXController{
//
Future<void> senderAddICCard() async {
BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, (DeviceConnectionState state) async {
if (state == DeviceConnectionState.connected){
BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, (DeviceConnectionState deviceConnectionState) async {
if (deviceConnectionState == DeviceConnectionState.connected){
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
@ -222,8 +240,8 @@ class AddICCardLogic extends BaseGetXController{
//
Future<void> senderAddStressICCard() async {
BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, (DeviceConnectionState state) async {
if (state == DeviceConnectionState.connected){
BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, (DeviceConnectionState deviceConnectionState) async {
if (deviceConnectionState == DeviceConnectionState.connected){
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
@ -238,9 +256,10 @@ class AddICCardLogic extends BaseGetXController{
keyID:"1",
userID:await Storage.getUid(),
icCardNo:1,
cardType:1,
useCountLimit:1,
startTime:0x11223344,
endTime:0x11223344,
startTime:int.parse(state.startDate.value)~/1000,
endTime:int.parse(state.endDate.value)~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
privateKey:getPrivateKeyList,

View File

@ -34,7 +34,7 @@ class CardDetailState{
keyType.value = fingerprintItemData.value.cardType!;
adder.value = fingerprintItemData.value.senderUsername!;
addTime.value = fingerprintItemData.value.createDate!;
isStressFingerprint.value = fingerprintItemData.value.isCoerced! == 2 ? true : false;
isStressFingerprint.value = fingerprintItemData.value.isCoerced! == 1 ? true : false;
weekDay.value = fingerprintItemData.value.weekDay!;
}
}

View File

@ -19,6 +19,7 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
endDate: state.endTimeTimestamp.value.toString(),
isCoerced: state.fingerprintItemData.value.isCoerced == 1 ? "2" : "1",
fingerprintName: state.fingerprintItemData.value.fingerprintName!,
changeType: "1",
);
if(entity.errorCode!.codeIsSuccessful){
Toast.show(msg: "修改成功");

View File

@ -20,6 +20,7 @@ class OtherTypeKeyChangeValidityDateLogic extends BaseGetXController{
endDate: state.endTimeTimestamp.value.toString(),
isCoerced: state.fingerprintItemData.value.isCoerced == 1 ? "2" : "1",
fingerprintName: state.fingerprintItemData.value.fingerprintName!,
changeType: "1",
);
if(entity.errorCode!.codeIsSuccessful){
Toast.show(msg: "修改成功");

View File

@ -51,11 +51,6 @@ class AddFingerprintLogic extends BaseGetXController {
}
Future<void> _replyAddFingerprintBegin(Reply reply) async {
// var token = reply.data.sublist(2, 6);
// var saveStrList = changeIntListToStringList(token);
// print("_replyAddFingerprintReplyToken:$token");
// Storage.setStringList(saveBlueToken, saveStrList);
int status = reply.data[2];
print("status:$status");
@ -75,20 +70,24 @@ class AddFingerprintLogic extends BaseGetXController {
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
var token = reply.data.sublist(5, 9);
var saveStrList = changeIntListToStringList(token);
print("_replyAddFingerprintReplyToken:$token");
Storage.setStringList(saveBlueToken, saveStrList);
IoSenderManage.senderAddFingerprintCommand(
keyID:"1",
userID:await Storage.getUid(),
fingerNo:1,
useCountLimit:0xff,
startTime:0x11223344,
endTime:0x11223344,
// startTime:0x11223344,
// endTime:0x11223344,
startTime:int.parse(state.startDate.value)~/1000,
endTime:int.parse(state.endDate.value)~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
token: token,
);
break;
case 0x07:
@ -110,11 +109,6 @@ class AddFingerprintLogic extends BaseGetXController {
}
Future<void> _replyAddFingerprintProcess(Reply reply) async {
var token = reply.data.sublist(2, 6);
var saveStrList = changeIntListToStringList(token);
print("_replyAddFingerprintReplyToken:$token");
Storage.setStringList(saveBlueToken, saveStrList);
int status = reply.data[2];
print("33 status:$status");
@ -134,7 +128,31 @@ class AddFingerprintLogic extends BaseGetXController {
break;
case 0x06:
//
// var token = reply.data.sublist(5, 9);
// var saveStrList = changeIntListToStringList(token);
// print("_replyAddFingerprintReplyToken:$token");
// Storage.setStringList(saveBlueToken, saveStrList);
//
// var privateKey = await Storage.getStringList(saveBluePrivateKey);
// List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
//
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
//
// IoSenderManage.senderAddStressFingerprintCommand(
// keyID:"1",
// userID:await Storage.getUid(),
// fingerNo:1,
// useCountLimit:1,
// // startTime:0x11223344,
// // endTime:0x11223344,
// startTime:int.parse(state.startDate.value)~/1000,
// endTime:int.parse(state.endDate.value)~/1000,
// needAuthor:1,
// publicKey:publicKeyDataList,
// privateKey:getPrivateKeyList,
// token: token,
// );
break;
case 0x07:
//
@ -155,11 +173,6 @@ class AddFingerprintLogic extends BaseGetXController {
}
Future<void> _replyAddFingerprintConfirmation(Reply reply) async {
// var token = reply.data.sublist(2, 6);
// var saveStrList = changeIntListToStringList(token);
// print("_replyAddFingerprintReplyToken:$token");
// Storage.setStringList(saveBlueToken, saveStrList);
int status = reply.data[2];
print("status:$status");
@ -168,13 +181,13 @@ class AddFingerprintLogic extends BaseGetXController {
//
print("${reply.commandType!.typeValue} 数据解析成功");
// print("添加指纹确认成功,调用添加指纹接口");
if(state.isCoerced.value == "2"){
// if(state.isCoerced.value == "1"){
//
addFingerprintsData(reply.data[6].toString());
}else{
//
senderAddStressFingerprint();
}
// }else{
// //
// senderAddStressFingerprint();
// }
break;
case 0x06:
//
@ -199,11 +212,6 @@ class AddFingerprintLogic extends BaseGetXController {
}
Future<void> _replyAddStressFingerprint(Reply reply) async {
// var token = reply.data.sublist(2, 6);
// var saveStrList = changeIntListToStringList(token);
// print("_replyAddFingerprintReplyToken:$token");
// Storage.setStringList(saveBlueToken, saveStrList);
int status = reply.data[2];
print("status:$status");
@ -217,6 +225,36 @@ class AddFingerprintLogic extends BaseGetXController {
case 0x06:
//
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> getSignKeyList = changeStringListToIntList(signKey!);
var token = reply.data.sublist(5, 9);
var saveStrList = changeIntListToStringList(token);
print("_replyAddFingerprintReplyToken:$token");
Storage.setStringList(saveBlueToken, saveStrList);
IoSenderManage.senderAddStressFingerprintCommand(
keyID:"1",
userID:await Storage.getUid(),
fingerNo:1,
fingerType:1,
useCountLimit:1,
// startTime:0x11223344,
// endTime:0x11223344,
startTime:int.parse(state.startDate.value)~/1000,
endTime:int.parse(state.endDate.value)~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
privateKey:getPrivateKeyList,
token: token,
signKey: getSignKeyList
);
break;
case 0x07:
//
@ -255,10 +293,10 @@ class AddFingerprintLogic extends BaseGetXController {
userID:await Storage.getUid(),
fingerNo:1,
useCountLimit:0xff,
startTime:0x11223344,
endTime:0x11223344,
// startTime:int.parse(state.startDate.value)~/1000,
// endTime:int.parse(state.endDate.value)~/1000,
// startTime:0x11223344,
// endTime:0x11223344,
startTime:int.parse(state.startDate.value)~/1000,
endTime:int.parse(state.endDate.value)~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
privateKey:getPrivateKeyList,
@ -278,23 +316,28 @@ class AddFingerprintLogic extends BaseGetXController {
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> getSignKeyList = changeStringListToIntList(signKey!);
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
print("openDoorTokenPubToken:$getTokenList");
print("StressFingerprintToken:$getTokenList");
IoSenderManage.senderAddStressFingerprintCommand(
keyID:"1",
userID:await Storage.getUid(),
fingerNo:1,
fingerType:1,
useCountLimit:1,
startTime:0x11223344,
endTime:0x11223344,
// startTime:int.parse(state.startDate.value)~/1000,
// endTime:int.parse(state.endDate.value)~/1000,
// startTime:0x11223344,
// endTime:0x11223344,
startTime:int.parse(state.startDate.value)~/1000,
endTime:int.parse(state.endDate.value)~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
signKey: getSignKeyList
);
}
});
@ -307,14 +350,14 @@ class AddFingerprintLogic extends BaseGetXController {
endDate: state.endDate.value,
addType:state.addType.value,
fingerprintName: state.fingerprintName.value,
fingerprintNumber: "123456",
fingerprintNumber: fingerprintUserNo,
fingerprintType: state.fingerprintType.value,
isCoerced: state.isCoerced.value,
startDate: state.startDate.value,
weekDay: state.weekDay.value,
);
if(entity.errorCode!.codeIsSuccessful){
Toast.show(msg: "添加成功");
// Toast.show(msg: "添加成功");
updateFingerprintUserNoLoadData(entity.data!.fingerprintId.toString(), fingerprintUserNo);
}
}

View File

@ -26,7 +26,7 @@ class _AddFingerprintPageState extends State<AddFingerprintPage> {
return Scaffold(
backgroundColor: Colors.white,
appBar: TitleAppBar(
barTitle: TranslationLoader.lanKeys!.addLock!.tr,
barTitle: "${TranslationLoader.lanKeys!.addTip!.tr}${TranslationLoader.lanKeys!.fingerprint!.tr}",
haveBack: true,
backgroundColor: AppColors.mainColor),
body: ListView(

View File

@ -24,6 +24,7 @@ class AddFingerprintState{
fingerprintNumber.value = map["fingerprintNumber"];
fingerprintType.value = map["fingerprintType"];
isCoerced.value = map["isCoerced"];
print("isCoerced.valueisCoerced.value:${isCoerced.value}");
startDate.value = map["startDate"];
lockId.value = map["lockId"];
weekDay.value = map["weekDay"];

View File

@ -31,7 +31,7 @@ class _AddFingerprintTypeManagePageState extends State<AddFingerprintTypeManageP
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
barTitle:
"${TranslationLoader.lanKeys!.addTip!.tr}${TranslationLoader.lanKeys!.card!.tr}",
"${TranslationLoader.lanKeys!.addTip!.tr}${TranslationLoader.lanKeys!.fingerprint!.tr}",
haveBack: true,
backgroundColor: AppColors.mainColor),
body: Column(

View File

@ -15,6 +15,8 @@ class AddFingerprintTypeLogic extends BaseGetXController{
var endDate = "";
if (state.seletType.value == "0") {
fingerprintType = 1;
startDate = "0";
endDate = "0";
} else if (state.seletType.value == "1") {
fingerprintType = 2;
if (state.beginTimeTimestamp.value.isEmpty) {
@ -68,7 +70,8 @@ class AddFingerprintTypeLogic extends BaseGetXController{
fingerprintType = 4;
}
print("addOtherType startDate:$startDate endDate:$endDate");
var isCoerced = state.isStressFingerprint.value == false ? "1" : "2"; // 1: 2:
print("addOtherType startDate:$startDate endDate:$endDate isCoerced:$isCoerced");
//
Get.toNamed(Routers.addFingerprintPage, arguments: {
"lockId": state.lockId.value,
@ -77,7 +80,7 @@ class AddFingerprintTypeLogic extends BaseGetXController{
"fingerprintName": state.nameController.text,
"fingerprintNumber": "123456",
"fingerprintType": fingerprintType.toString(),
"isCoerced": state.isStressFingerprint.value ? "1" : "2",
"isCoerced": isCoerced, // 1: 2:
"startDate": startDate,
"weekDay": state.weekdaysList.value,
"fromType": state.fromType.value,

View File

@ -87,7 +87,7 @@ class FingerprintDetailLogic extends BaseGetXController{
}
//
Future<void> senderAddFingerprint(String keyId, String userID, int cardNo) async {
Future<void> senderAddFingerprint() async {
BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, (DeviceConnectionState deviceConnectionState) async {
if (deviceConnectionState == DeviceConnectionState.connected){
var publicKey = await Storage.getStringList(saveBluePublicKey);
@ -99,13 +99,15 @@ class FingerprintDetailLogic extends BaseGetXController{
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
String? userID = await Storage.getUid();
IoSenderManage.senderAddFingerprintCommand(
keyID:keyId,
keyID:state.keyId.value.toString(),
userID:userID,
fingerNo:cardNo,
fingerNo:1,
useCountLimit:0,
startTime:0x11223344,
endTime:0x11223344,
startTime:state.effectiveDateTime.value,
endTime:state.failureDateTime.value,
needAuthor:1,
publicKey:publicKeyDataList,
privateKey:getPrivateKeyList,
@ -115,7 +117,6 @@ class FingerprintDetailLogic extends BaseGetXController{
});
}
//
void editFingerprintsData() async{
var entity = await ApiRepository.to.editFingerprintsData(
@ -126,6 +127,7 @@ class FingerprintDetailLogic extends BaseGetXController{
endDate: state.failureDateTime.value.toString(),
isCoerced: state.isStressFingerprint.value ? "2" : "1",
fingerprintName: state.changeNameController.text,
changeType: "1",
);
if(entity.errorCode!.codeIsSuccessful){
Toast.show(msg: "修改成功");

View File

@ -311,7 +311,7 @@ class _FingerprintDetailPageState extends State<FingerprintDetailPage> {
sureClick: () {
Get.back();
//
logic.deletFingerprintsData();
logic.senderAddFingerprint();
},
cancelClick: () {
Get.back();

View File

@ -137,8 +137,7 @@ class _FingerprintListPageState extends State<FingerprintListPage> {
key: Key(fingerprintItemData.fingerprintName!),
actionsWidth: 60,
actions: [
_buildDeleteBtn(
fingerprintItemData.fingerprintId.toString()),
_buildDeleteBtn(fingerprintItemData.fingerprintId.toString()),
],
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(1)),

View File

@ -7,8 +7,9 @@ import 'fingerprintListData_entity.dart';
class FingerprintListState{
final lockId = 0.obs;
//
var isDeletFingerprintData = false;
var isDeletICCardData = false;
var isDeletAll = false;
final fingerprintItemListData = <FingerprintItemData>[].obs;
final TextEditingController searchController = TextEditingController();

View File

@ -458,7 +458,7 @@ class LockDetailLogic extends BaseGetXController{
BlueManage().connectDeviceMacAddress = v[knownDeviceIndex].id;
connectBlue(v[knownDeviceIndex].id, state.keyInfos.value.bluetooth!.bluetoothDeviceName!);
eventBus.fire(ScanAllDeviceFindCurrentDeviceConnectedEvent(v[knownDeviceIndex].serviceUuids[0].toString()));
// BlueManage().stopScan();
BlueManage().stopScan();
}
});
}

View File

@ -958,7 +958,8 @@ class ApiProvider extends BaseProvider {
String startDate,
String endDate,
String isCoerced,
String fingerprintName) =>
String fingerprintName,
String changeType) =>
post(
editFingerprintURL.toUrl,
jsonEncode({
@ -968,7 +969,8 @@ class ApiProvider extends BaseProvider {
'startDate': startDate,
'endDate': endDate,
'isCoerced': isCoerced,
'fingerprintName': fingerprintName
'fingerprintName': fingerprintName,
'changeType': changeType
}));
//

View File

@ -1115,9 +1115,10 @@ class ApiRepository {
required String startDate,
required String endDate,
required String isCoerced,
required String fingerprintName}) async {
required String fingerprintName,
required String changeType}) async {
final res = await apiProvider.editFingerprintsData(fingerprintId, lockId,
weekDay, startDate, endDate, isCoerced, fingerprintName);
weekDay, startDate, endDate, isCoerced, fingerprintName, changeType);
return LoginEntity.fromJson(res.body);
}