diff --git a/star_lock/images/lan/lan_en.json b/star_lock/images/lan/lan_en.json index f56c79b8..bc32e41e 100644 --- a/star_lock/images/lan/lan_en.json +++ b/star_lock/images/lan/lan_en.json @@ -794,6 +794,19 @@ "实名认证":"Real-name authentication", "当前剩余数量":"Current surplus quantity", "购买":"Buy", - "实名认证为付费功能,请购买后再使用":"Real-name authentication is a paid function, please use it after purchase" + "实名认证为付费功能,请购买后再使用":"Real-name authentication is a paid function, please use it after purchase", "密码不一致哦":"The passwords are inconsistent", + + "退出添加":"Quit adding", + "管理员已满":"Admin full", + "用户已满": "The user is full", + "锁上面添加指纹已满": "Add fingerprint on lock is full", + "指纹已存在": "The fingerprint already exists.", + "锁上面添加人脸已满": "Lock above add face is full", + "人脸已存在": "The face already exists", + "锁上面添加卡已满":"Lock above add card is full", + "卡已存在": "Card already exists", + "锁上面添加密码已满": "Lock above add password is full", + "密码已存在": "Password already exists", + "请输入密码": "Please enter password" } diff --git a/star_lock/images/lan/lan_keys.json b/star_lock/images/lan/lan_keys.json index 64c7c078..593d4274 100644 --- a/star_lock/images/lan/lan_keys.json +++ b/star_lock/images/lan/lan_keys.json @@ -822,5 +822,18 @@ "实名认证":"实名认证", "当前剩余数量":"当前剩余数量", "购买":"购买", - "实名认证为付费功能,请购买后再使用":"实名认证为付费功能,请购买后再使用" + "实名认证为付费功能,请购买后再使用":"实名认证为付费功能,请购买后再使用", + + "退出添加":"退出添加", + "管理员已满":"管理员已满", + "用户已满": "用户已满", + "锁上面添加指纹已满": "锁上面添加指纹已满", + "指纹已存在": "指纹已存在", + "锁上面添加人脸已满": "锁上面添加人脸已满", + "人脸已存在": "人脸已存在", + "锁上面添加卡已满":"锁上面添加卡已满", + "卡已存在": "卡已存在", + "锁上面添加密码已满": "锁上面添加密码已满", + "密码已存在": "密码已存在", + "请输入密码": "请输入密码" } diff --git a/star_lock/images/lan/lan_zh.json b/star_lock/images/lan/lan_zh.json index 11104186..7865985a 100644 --- a/star_lock/images/lan/lan_zh.json +++ b/star_lock/images/lan/lan_zh.json @@ -825,5 +825,18 @@ "实名认证":"实名认证", "当前剩余数量":"当前剩余数量", "购买":"购买", - "实名认证为付费功能,请购买后再使用":"实名认证为付费功能,请购买后再使用" + "实名认证为付费功能,请购买后再使用":"实名认证为付费功能,请购买后再使用", + + "退出添加":"退出添加", + "管理员已满":"管理员已满", + "用户已满": "用户已满", + "锁上面添加指纹已满": "锁上面添加指纹已满", + "指纹已存在": "指纹已存在", + "锁上面添加人脸已满": "锁上面添加人脸已满", + "人脸已存在": "人脸已存在", + "锁上面添加卡已满":"锁上面添加卡已满", + "卡已存在": "卡已存在", + "锁上面添加密码已满": "锁上面添加密码已满", + "密码已存在": "密码已存在", + "请输入密码": "请输入密码" } diff --git a/star_lock/lib/blue/blue_manage.dart b/star_lock/lib/blue/blue_manage.dart index 0c34dd25..1d662772 100644 --- a/star_lock/lib/blue/blue_manage.dart +++ b/star_lock/lib/blue/blue_manage.dart @@ -492,7 +492,7 @@ class BlueManage { // 当包没有头时 是分包的包 直接添加 allData.addAll(data); // var len = allData[8] * 256 + allData[9]; - // AppLog.log("dataLen3333:$dataLen allData.length:${allData.length} allData:$allData"); + AppLog.log("dataLen3333:$dataLen allData.length:${allData.length} allData:$allData"); if ((dataLen! + 14) <= allData.length) { // 当长度小于等于当前包的数据时 直接解析数据 CommandReciverManager.appDataReceive(allData); diff --git a/star_lock/lib/blue/io_protocol/io_addCardCancel.dart b/star_lock/lib/blue/io_protocol/io_addCardCancel.dart new file mode 100644 index 00000000..e26c7fb1 --- /dev/null +++ b/star_lock/lib/blue/io_protocol/io_addCardCancel.dart @@ -0,0 +1,98 @@ + +import 'dart:convert'; + +import 'package:star_lock/tools/dateTool.dart'; + +import '../../app_settings/app_settings.dart'; +import '../io_tool/io_tool.dart'; +import '../sm4Encipher/sm4.dart'; +import '../io_reply.dart'; +import '../io_sender.dart'; +import '../io_type.dart'; +import 'package:crypto/crypto.dart' as crypto; + +///TODO:取消添加指纹 +class SenderCancelAddCardCommand extends SenderProtocol { + String? keyID; + String? userID; + List? token; + int? needAuthor; + List? signKey; + List? privateKey; + + SenderCancelAddCardCommand({ + this.keyID, + this.userID, + this.token, + this.needAuthor, + this.signKey, + this.privateKey, + }) : super(CommandType.generalExtendedCommond); + + @override + String toString() { + return 'SenderAddFingerprintWithTimeCycleCoercionCommand{keyID: $keyID, ' + 'userID: $userID, token: $token, needAuthor: $needAuthor, signKey: $signKey, privateKey: $privateKey}'; + } + + @override + List messageDetail() { + List data = []; + List subData = []; + List ebcData = []; + + // 指令类型 + data.addAll(intChangList(commandType!.typeValue)); + + // 子命令类型 + data.add(25); + + // keyID 40 + int keyIDLength = utf8.encode(keyID!).length; + subData.addAll(utf8.encode(keyID!)); + subData = getFixedLengthList(subData, 40 - keyIDLength); + + //userID 20 + int userIDLength = utf8.encode(userID!).length; + subData.addAll(utf8.encode(userID!)); + subData = getFixedLengthList(subData, 20 - userIDLength); + + if(needAuthor == 0){ + //AuthCodeLen 1 + subData.add(0); + } else { + List authCodeData = []; + //KeyID + authCodeData.addAll(utf8.encode(keyID!)); + + //authUserID + authCodeData.addAll(utf8.encode(userID!)); + + //token 4 首次请求 Token 填 0,如果锁需要鉴权操作者身份,则会分配动态口令并在应答消息中返回,二次请求时带上。 + authCodeData.addAll(token!); + + authCodeData.addAll(signKey!); + + // 把KeyID、authUserID、时间戳、公钥通过md5加密之后就是authCode + var authCode = crypto.md5.convert(authCodeData); + + subData.add(authCode.bytes.length); + subData.addAll(authCode.bytes); + } + + data.add(subData.length); + data.addAll(subData); + + if ((data.length % 16) != 0) { + int add = (16 - data.length % 16); + for (int i = 0; i < add; i++) { + data.add(0); + } + } + + printLog(data); + // 拿到数据之后通过LockId进行SM4 ECB加密 key:544d485f633335373034383064613864 + ebcData = SM4.encrypt(data, key: privateKey, mode: SM4CryptoMode.ECB); + return ebcData; + } +} diff --git a/star_lock/lib/blue/io_protocol/io_addFace.dart b/star_lock/lib/blue/io_protocol/io_addFace.dart index e4eac68d..24d2bf76 100644 --- a/star_lock/lib/blue/io_protocol/io_addFace.dart +++ b/star_lock/lib/blue/io_protocol/io_addFace.dart @@ -65,8 +65,8 @@ class SenderAddFaceCommand extends SenderProtocol { 'weekRound: $weekRound, ' 'startDate: ${DateTool().dateIntToYMDHNString(startDate)}, ' 'endDate: ${DateTool().dateIntToYMDHNString(endDate)}, ' - 'startTime: ${DateTool().dateToYMDHNString(startTime)}, ' - 'endTime: ${DateTool().dateToYMDHNString(endTime)}, ' + 'startTime: $startTime, ' + 'endTime: $startTime, ' 'needAuthor: $needAuthor, signKey: $signKey, privateKey: $privateKey}'; } @@ -77,13 +77,8 @@ class SenderAddFaceCommand extends SenderProtocol { List ebcData = []; // 指令类型 - // int type = commandType!.typeValue; - // double typeDouble = type / 256; - // int type1 = typeDouble.toInt(); - // int type2 = type % 256; - // data.add(type1); - // data.add(type2); data.addAll(intChangList(commandType!.typeValue)); + // AppLog.log("intChangList(commandType!.typeValue):${intChangList(commandType!.typeValue)}"); // 子命令类型 data.add(81); @@ -92,38 +87,45 @@ class SenderAddFaceCommand extends SenderProtocol { int keyIDLength = utf8.encode(keyID!).length; subData.addAll(utf8.encode(keyID!)); subData = getFixedLengthList(subData, 40 - keyIDLength); + // AppLog.log("keyID:$keyID utf8.encode(keyID!):${utf8.encode(keyID!)}"); //userID 20 int userIDLength = utf8.encode(userID!).length; subData.addAll(utf8.encode(userID!)); subData = getFixedLengthList(subData, 20 - userIDLength); + // AppLog.log("userID:$userID utf8.encode(userID!):${utf8.encode(userID!)}"); // faceNo subData.addAll(intChangList(faceNo!)); - AppLog.log("faceNo:$faceNo intChangList(faceNo!):${intChangList(faceNo!)}"); + // AppLog.log("faceNo:$faceNo intChangList(faceNo!):${intChangList(faceNo!)}"); // UseCountLimit subData.addAll(intChangList(useCountLimit!)); + // AppLog.log("useCountLimit:$useCountLimit intChangList(useCountLimit!):${intChangList(useCountLimit!)}"); // Operate 0:注册 1:修改 2:删除 3:删除全部 subData.add(operate!); - AppLog.log("addFingerprint operate:$operate"); + // AppLog.log("addFingerprint operate:$operate"); // isAdmin subData.add(isAdmin!); - AppLog.log("addFingerprint isAdmin:$isAdmin"); + // AppLog.log("addFingerprint isAdmin:$isAdmin"); // isForce subData.add(isForce!); + // AppLog.log("addFingerprint isForce:$isForce"); // token subData.addAll(token!); + // AppLog.log("addFingerprint token:$token"); // isRound subData.add(isRound!); + // AppLog.log("addFingerprint isRound:$isRound"); // weekRound subData.add(weekRound!); + // AppLog.log("addFingerprint weekRound:$weekRound"); // startDate 4 subData.add((startDate! & 0xff000000) >> 24); @@ -136,7 +138,7 @@ class SenderAddFaceCommand extends SenderProtocol { subData.add((endDate! & 0xff0000) >> 16); subData.add((endDate! & 0xff00) >> 8); subData.add((endDate! & 0xff)); - AppLog.log("addFingerprint startDate:${DateTool().dateToYMDHNString(startDate.toString())} endDate:${DateTool().dateToYMDHNString(endDate.toString())}"); + // AppLog.log("addFingerprint startDate:${DateTool().dateToYMDHNString(startDate.toString())} endDate:${DateTool().dateToYMDHNString(endDate.toString())}"); // startTime 4 List startTimeList = [0,0,0,0]; diff --git a/star_lock/lib/blue/io_protocol/io_addFaceCancel.dart b/star_lock/lib/blue/io_protocol/io_addFaceCancel.dart new file mode 100644 index 00000000..45007715 --- /dev/null +++ b/star_lock/lib/blue/io_protocol/io_addFaceCancel.dart @@ -0,0 +1,98 @@ + +import 'dart:convert'; + +import 'package:star_lock/tools/dateTool.dart'; + +import '../../app_settings/app_settings.dart'; +import '../io_tool/io_tool.dart'; +import '../sm4Encipher/sm4.dart'; +import '../io_reply.dart'; +import '../io_sender.dart'; +import '../io_type.dart'; +import 'package:crypto/crypto.dart' as crypto; + +///TODO:取消添加人脸 +class SenderCancelAddFaceCommand extends SenderProtocol { + String? keyID; + String? userID; + List? token; + int? needAuthor; + List? signKey; + List? privateKey; + + SenderCancelAddFaceCommand({ + this.keyID, + this.userID, + this.token, + this.needAuthor, + this.signKey, + this.privateKey, + }) : super(CommandType.generalExtendedCommond); + + @override + String toString() { + return 'SenderAddFingerprintWithTimeCycleCoercionCommand{keyID: $keyID, ' + 'userID: $userID, token: $token, needAuthor: $needAuthor, signKey: $signKey, privateKey: $privateKey}'; + } + + @override + List messageDetail() { + List data = []; + List subData = []; + List ebcData = []; + + // 指令类型 + data.addAll(intChangList(commandType!.typeValue)); + + // 子命令类型 + data.add(86); + + // keyID 40 + int keyIDLength = utf8.encode(keyID!).length; + subData.addAll(utf8.encode(keyID!)); + subData = getFixedLengthList(subData, 40 - keyIDLength); + + //userID 20 + int userIDLength = utf8.encode(userID!).length; + subData.addAll(utf8.encode(userID!)); + subData = getFixedLengthList(subData, 20 - userIDLength); + + if(needAuthor == 0){ + //AuthCodeLen 1 + subData.add(0); + } else { + List authCodeData = []; + //KeyID + authCodeData.addAll(utf8.encode(keyID!)); + + //authUserID + authCodeData.addAll(utf8.encode(userID!)); + + //token 4 首次请求 Token 填 0,如果锁需要鉴权操作者身份,则会分配动态口令并在应答消息中返回,二次请求时带上。 + authCodeData.addAll(token!); + + authCodeData.addAll(signKey!); + + // 把KeyID、authUserID、时间戳、公钥通过md5加密之后就是authCode + var authCode = crypto.md5.convert(authCodeData); + + subData.add(authCode.bytes.length); + subData.addAll(authCode.bytes); + } + + data.add(subData.length); + data.addAll(subData); + + if ((data.length % 16) != 0) { + int add = (16 - data.length % 16); + for (int i = 0; i < add; i++) { + data.add(0); + } + } + + printLog(data); + // 拿到数据之后通过LockId进行SM4 ECB加密 key:544d485f633335373034383064613864 + ebcData = SM4.encrypt(data, key: privateKey, mode: SM4CryptoMode.ECB); + return ebcData; + } +} diff --git a/star_lock/lib/blue/io_protocol/io_addFingerprintCancel.dart b/star_lock/lib/blue/io_protocol/io_addFingerprintCancel.dart new file mode 100644 index 00000000..7ab344cc --- /dev/null +++ b/star_lock/lib/blue/io_protocol/io_addFingerprintCancel.dart @@ -0,0 +1,98 @@ + +import 'dart:convert'; + +import 'package:star_lock/tools/dateTool.dart'; + +import '../../app_settings/app_settings.dart'; +import '../io_tool/io_tool.dart'; +import '../sm4Encipher/sm4.dart'; +import '../io_reply.dart'; +import '../io_sender.dart'; +import '../io_type.dart'; +import 'package:crypto/crypto.dart' as crypto; + +///TODO:取消添加指纹 +class SenderCancelAddFingerprintCommand extends SenderProtocol { + String? keyID; + String? userID; + List? token; + int? needAuthor; + List? signKey; + List? privateKey; + + SenderCancelAddFingerprintCommand({ + this.keyID, + this.userID, + this.token, + this.needAuthor, + this.signKey, + this.privateKey, + }) : super(CommandType.generalExtendedCommond); + + @override + String toString() { + return 'SenderAddFingerprintWithTimeCycleCoercionCommand{keyID: $keyID, ' + 'userID: $userID, token: $token, needAuthor: $needAuthor, signKey: $signKey, privateKey: $privateKey}'; + } + + @override + List messageDetail() { + List data = []; + List subData = []; + List ebcData = []; + + // 指令类型 + data.addAll(intChangList(commandType!.typeValue)); + + // 子命令类型 + data.add(37); + + // keyID 40 + int keyIDLength = utf8.encode(keyID!).length; + subData.addAll(utf8.encode(keyID!)); + subData = getFixedLengthList(subData, 40 - keyIDLength); + + //userID 20 + int userIDLength = utf8.encode(userID!).length; + subData.addAll(utf8.encode(userID!)); + subData = getFixedLengthList(subData, 20 - userIDLength); + + if(needAuthor == 0){ + //AuthCodeLen 1 + subData.add(0); + } else { + List authCodeData = []; + //KeyID + authCodeData.addAll(utf8.encode(keyID!)); + + //authUserID + authCodeData.addAll(utf8.encode(userID!)); + + //token 4 首次请求 Token 填 0,如果锁需要鉴权操作者身份,则会分配动态口令并在应答消息中返回,二次请求时带上。 + authCodeData.addAll(token!); + + authCodeData.addAll(signKey!); + + // 把KeyID、authUserID、时间戳、公钥通过md5加密之后就是authCode + var authCode = crypto.md5.convert(authCodeData); + + subData.add(authCode.bytes.length); + subData.addAll(authCode.bytes); + } + + data.add(subData.length); + data.addAll(subData); + + if ((data.length % 16) != 0) { + int add = (16 - data.length % 16); + for (int i = 0; i < add; i++) { + data.add(0); + } + } + + printLog(data); + // 拿到数据之后通过LockId进行SM4 ECB加密 key:544d485f633335373034383064613864 + ebcData = SM4.encrypt(data, key: privateKey, mode: SM4CryptoMode.ECB); + return ebcData; + } +} diff --git a/star_lock/lib/blue/io_protocol/io_addFingerprintWithTimeCycleCoercion.dart b/star_lock/lib/blue/io_protocol/io_addFingerprintWithTimeCycleCoercion.dart index f57f0822..e22a4126 100644 --- a/star_lock/lib/blue/io_protocol/io_addFingerprintWithTimeCycleCoercion.dart +++ b/star_lock/lib/blue/io_protocol/io_addFingerprintWithTimeCycleCoercion.dart @@ -56,7 +56,6 @@ class SenderAddFingerprintWithTimeCycleCoercionCommand extends SenderProtocol { this.privateKey, }) : super(CommandType.generalExtendedCommond); - @override String toString() { return 'SenderAddFingerprintWithTimeCycleCoercionCommand{keyID: $keyID, ' @@ -65,8 +64,8 @@ class SenderAddFingerprintWithTimeCycleCoercionCommand extends SenderProtocol { 'weekRound: $weekRound, ' 'startDate:${DateTool().dateIntToYMDHNString(startDate)}, ' 'endDate: ${DateTool().dateIntToYMDHNString(endDate)}, ' - 'startTime: ${DateTool().dateToYMDHNString(startTime)}, ' - 'endTime: ${DateTool().dateToYMDHNString(endTime)}, ' + 'startTime: $startTime, ' + 'endTime: $endTime, ' 'needAuthor: $needAuthor, signKey: $signKey, privateKey: $privateKey}'; } @@ -77,12 +76,6 @@ class SenderAddFingerprintWithTimeCycleCoercionCommand extends SenderProtocol { List ebcData = []; // 指令类型 - // int type = commandType!.typeValue; - // double typeDouble = type / 256; - // int type1 = typeDouble.toInt(); - // int type2 = type % 256; - // data.add(type1); - // data.add(type2); data.addAll(intChangList(commandType!.typeValue)); // 子命令类型 @@ -100,18 +93,18 @@ class SenderAddFingerprintWithTimeCycleCoercionCommand extends SenderProtocol { // fingerNo subData.addAll(intChangList(fingerNo!)); - AppLog.log("fingerNo:$fingerNo intChangList(fingerNo!):${intChangList(fingerNo!)}"); + // AppLog.log("fingerNo:$fingerNo intChangList(fingerNo!):${intChangList(fingerNo!)}"); // UseCountLimit subData.addAll(intChangList(useCountLimit!)); // Operate 0:注册 1:修改 2:删除 3:删除全部 subData.add(operate!); - AppLog.log("addFingerprint operate:$operate"); + // AppLog.log("addFingerprint operate:$operate"); // isAdmin subData.add(isAdmin!); - AppLog.log("addFingerprint isAdmin:$isAdmin"); + // AppLog.log("addFingerprint isAdmin:$isAdmin"); // isForce subData.add(isForce!); diff --git a/star_lock/lib/blue/io_protocol/io_addICCardWithTimeCycleCoercion.dart b/star_lock/lib/blue/io_protocol/io_addICCardWithTimeCycleCoercion.dart index 6fd9ba5c..dbf72707 100644 --- a/star_lock/lib/blue/io_protocol/io_addICCardWithTimeCycleCoercion.dart +++ b/star_lock/lib/blue/io_protocol/io_addICCardWithTimeCycleCoercion.dart @@ -65,8 +65,8 @@ class SenderAddICCardWithTimeCycleCoercionCommand extends SenderProtocol { 'weekRound: $weekRound, ' 'startDate: ${DateTool().dateIntToYMDHNString(startDate)}, ' 'endDate: ${DateTool().dateIntToYMDHNString(endDate)}, ' - 'startTime: ${DateTool().dateToYMDHNString(startTime)}, ' - 'endTime: ${DateTool().dateToYMDHNString(endTime)}, ' + 'startTime: $startTime,' + 'endTime: $endTime, ' 'needAuthor: $needAuthor, signKey: $signKey, privateKey: $privateKey}'; } @@ -77,12 +77,6 @@ class SenderAddICCardWithTimeCycleCoercionCommand extends SenderProtocol { List ebcData = []; // 指令类型 - // int type = commandType!.typeValue; - // double typeDouble = type / 256; - // int type1 = typeDouble.toInt(); - // int type2 = type % 256; - // data.add(type1); - // data.add(type2); data.addAll(intChangList(commandType!.typeValue)); // 子命令类型 @@ -106,15 +100,15 @@ class SenderAddICCardWithTimeCycleCoercionCommand extends SenderProtocol { // Operate 0:注册 1:修改 2:删除 3:删除全部 subData.add(operate!); - AppLog.log("addCard operate:$operate"); + // AppLog.log("addCard operate:$operate"); // isAdmin subData.add(isAdmin!); - AppLog.log("addCard isAdmin:$isAdmin"); + // AppLog.log("addCard isAdmin:$isAdmin"); // isForce subData.add(isForce!); - AppLog.log("addCard isForce:$isForce"); + // AppLog.log("addCard isForce:$isForce"); // token subData.addAll(token!); diff --git a/star_lock/lib/blue/sender_beforeDataManage.dart b/star_lock/lib/blue/sender_beforeDataManage.dart index 5517c707..ebed1de5 100644 --- a/star_lock/lib/blue/sender_beforeDataManage.dart +++ b/star_lock/lib/blue/sender_beforeDataManage.dart @@ -7,6 +7,7 @@ import 'package:star_lock/blue/sender_manage.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/eventBusEventManage.dart'; +import '../app_settings/app_settings.dart'; import '../main/lockDetail/lockDetail/lockNetToken_entity.dart'; import '../network/api_repository.dart'; import '../tools/commonDataManage.dart'; @@ -83,6 +84,8 @@ class SenderBeforeDataManage { // publicKey: publicKeyDataList, // privateKey: getPrivateKeyList, // token: token); + AppLog.log("startDate111:${CommonDataManage().currentKeyInfo.startDate} endDate:${CommonDataManage().currentKeyInfo.endDate}"); + var addUserData = AddUserCommand( lockID: BlueManage().connectDeviceName, authUserID: CommonDataManage().currentKeyInfo.senderUserId!.toString(), @@ -90,8 +93,8 @@ class SenderBeforeDataManage { userID: await Storage.getUid(), openMode: 1, keyType: 0, - startDate: CommonDataManage().currentKeyInfo.startDate!~/10000, - expireDate: CommonDataManage().currentKeyInfo.endDate!~/10000, + startDate: CommonDataManage().currentKeyInfo.startDate!~/1000, + expireDate: CommonDataManage().currentKeyInfo.endDate!~/1000, role: CommonDataManage().currentKeyInfo.keyRight == 1 ? 1 : 0, password: "123456", needAuthor: 1, @@ -123,8 +126,8 @@ class SenderBeforeDataManage { userID: await Storage.getUid(), openMode: 1, keyType: 0, - startDate: CommonDataManage().currentKeyInfo.startDate!~/10000, - expireDate: CommonDataManage().currentKeyInfo.endDate!~/10000, + startDate: CommonDataManage().currentKeyInfo.startDate!~/1000, + expireDate: CommonDataManage().currentKeyInfo.endDate!~/1000, role: CommonDataManage().currentKeyInfo.keyRight == 1 ? 1 : 0, password: "123456", needAuthor: 1, diff --git a/star_lock/lib/blue/sender_manage.dart b/star_lock/lib/blue/sender_manage.dart index ce6b7c1e..09b035bb 100644 --- a/star_lock/lib/blue/sender_manage.dart +++ b/star_lock/lib/blue/sender_manage.dart @@ -10,6 +10,9 @@ import 'package:star_lock/blue/io_protocol/io_processOtaUpgrade.dart'; import 'package:star_lock/blue/io_protocol/io_queryingFaceStatus.dart'; import 'package:star_lock/blue/io_protocol/io_readAdminPassword.dart'; +import 'io_protocol/io_addCardCancel.dart'; +import 'io_protocol/io_addFaceCancel.dart'; +import 'io_protocol/io_addFingerprintCancel.dart'; import 'io_protocol/io_addFingerprintWithTimeCycleCoercion.dart'; import 'io_protocol/io_addICCardWithTimeCycleCoercion.dart'; import 'io_protocol/io_addStressFingerprint.dart'; @@ -417,6 +420,27 @@ class IoSenderManage { callBack: callBack); } + //todo:取消添加指纹 + static void senderCancelAddFingerprintCommand( + {required String? keyID, + required String? userID, + required List? token, + required int? needAuthor, + required List? signKey, + required List? privateKey, + CommandSendCallBack? callBack}) { + CommandSenderManager().managerSendData( + command: SenderCancelAddFingerprintCommand( + keyID: keyID, + userID: userID, + token: token, + needAuthor: needAuthor, + signKey: signKey, + privateKey: privateKey, + ), + callBack: callBack); + } + //todo:添加卡开始旧版 // static void senderAddICCardCommand( // {required String? keyID, @@ -489,6 +513,27 @@ class IoSenderManage { callBack: callBack); } + //todo:取消添加指纹 + static void senderCancelAddCardCommand( + {required String? keyID, + required String? userID, + required List? token, + required int? needAuthor, + required List? signKey, + required List? privateKey, + CommandSendCallBack? callBack}) { + CommandSenderManager().managerSendData( + command: SenderCancelAddCardCommand( + keyID: keyID, + userID: userID, + token: token, + needAuthor: needAuthor, + signKey: signKey, + privateKey: privateKey, + ), + callBack: callBack); + } + //todo:添加人脸开始 static void senderAddFaceCommand( {required String? keyID, @@ -532,6 +577,27 @@ class IoSenderManage { callBack: callBack); } + //todo:取消添加人脸 + static void senderCancelAddFaceCommand( + {required String? keyID, + required String? userID, + required List? token, + required int? needAuthor, + required List? signKey, + required List? privateKey, + CommandSendCallBack? callBack}) { + CommandSenderManager().managerSendData( + command: SenderCancelAddFaceCommand( + keyID: keyID, + userID: userID, + token: token, + needAuthor: needAuthor, + signKey: signKey, + privateKey: privateKey, + ), + callBack: callBack); + } + //todo:校验时间 static void senderTimingCommand( {required String? lockID, diff --git a/star_lock/lib/main/lockDetail/card/addCardType/addCardType_logic.dart b/star_lock/lib/main/lockDetail/card/addCardType/addCardType_logic.dart index d19f57fe..26d33526 100644 --- a/star_lock/lib/main/lockDetail/card/addCardType/addCardType_logic.dart +++ b/star_lock/lib/main/lockDetail/card/addCardType/addCardType_logic.dart @@ -49,8 +49,8 @@ class AddCardTypeLogic extends BaseGetXController{ showToast("失效时间要大于生效时间".tr); return; } - AppLog.log("state.timeLimitBeginTime.value:${state.timeLimitBeginTime.value} startDate:$startDate"); - AppLog.log("state.timeLimitEndTime.value:${state.timeLimitEndTime.value} endDate:$endDate"); + // AppLog.log("state.timeLimitBeginTime.value:${state.timeLimitBeginTime.value} startDate:$startDate"); + // AppLog.log("state.timeLimitEndTime.value:${state.timeLimitEndTime.value} endDate:$endDate"); } else if (state.selectType.value == "2") { if (state.cycleBeginTime.value.isEmpty) { showToast("请选择有效期".tr); diff --git a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_logic.dart b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_logic.dart index ac4b42a6..d35af8ef 100644 --- a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_logic.dart +++ b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_logic.dart @@ -36,11 +36,6 @@ class AddICCardLogic extends BaseGetXController{ if(reply is SenderAddICCardConfirmationReply) { _replyAddICCardConfirmation(reply); } - - // 添加胁迫卡 - // if(reply is SenderAddStressICCardReply) { - // _replyAddICStressCard(reply); - // } }); } @@ -55,6 +50,8 @@ class AddICCardLogic extends BaseGetXController{ // AppLog.log("添加卡号:$cardNumberList cardNumber:$cardNumber"); state.cardNumber.value = cardNumber.toString(); cancelBlueConnetctToastTimer(); + + state.ifAddState.value = true; state.ifConnectScuess.value = true; break; case 0x06: @@ -95,35 +92,49 @@ class AddICCardLogic extends BaseGetXController{ break; default: //失败 + state.ifAddState.value = false; break; } } Future _replyAddICCardConfirmation(Reply reply) async { int status = reply.data[2]; - + state.ifAddState.value = false; switch(status){ case 0x00: //成功 - // if(state.cardNumber.value == (reply.data[6]).toString()){ - // return; - // }else{ - // state.cardNumber.value = (reply.data[6]).toString(); - // } - // if(state.isCoerced.value == "1"){ - // 非胁迫 - int addResultStatus = reply.data[5]; - if(addResultStatus == 0){ - // 成功更新序列号 + //成功 + switch(reply.data[5]){ + case 0xff: + // 注册指纹失败 + showToast("退出添加".tr); + Get.close(1); + break; + case 0xFE: + // 管理员已满 + showToast("管理员已满".tr); + Get.close(1); + break; + case 0xFD: + // 用户已满 + showToast("用户已满".tr); + Get.close(1); + break; + case 0xFC: + // 指纹已满 + showToast("锁上面添加卡已满".tr); + Get.close(1); + break; + case 0xFB: + // 指纹已存在 + showToast("卡已存在".tr); + break; + default: + // 添加指纹中 + // 当前注册数 addICCardData(); - }else if(addResultStatus == 255){ - // 255 自动退出 - Get.close(2); - } - // }else{ - // // 如果是胁迫指纹在 添加完之后以后再调用添加胁迫指纹的 - // addICCardData(); - // } + break; + } break; default: //失败 @@ -131,63 +142,6 @@ class AddICCardLogic extends BaseGetXController{ } } - // Future _replyAddICStressCard(Reply reply) async { - // int status = reply.data[2]; - // - // switch(status){ - // case 0x00: - // //成功 - // AppLog.log("${reply.commandType!.typeValue} 数据解析成功"); - // addICCardData(); - // break; - // case 0x06: - // //无权限 - // var publicKey = await Storage.getStringList(saveBluePublicKey); - // List publicKeyDataList = changeStringListToIntList(publicKey!); - // - // var privateKey = await Storage.getStringList(saveBluePrivateKey); - // List getPrivateKeyList = changeStringListToIntList(privateKey!); - // - // var signKey = await Storage.getStringList(saveBlueSignKey); - // List getSignKeyList = changeStringListToIntList(signKey!); - // - // var token = reply.data.sublist(5, 9); - // var saveStrList = changeIntListToStringList(token); - // Storage.setStringList(saveBlueToken, saveStrList); - // - // AppLog.log("state.isAdministrator.value:${state.isAdministrator.value}"); - // IoSenderManage.senderAddStressICCardCommand( - // keyID:"1", - // userID:await Storage.getUid(), - // icCardNo:state.isAdministrator.value == "2" ? 254 : 1, - // cardType:1, - // useCountLimit:1, - // 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: - // //无权限 - // AppLog.log("${reply.commandType!.typeValue} 用户无权限"); - // - // break; - // case 0x09: - // // 权限校验错误 - // AppLog.log("${reply.commandType!.typeValue} 权限校验错误"); - // - // break; - // default: - // //失败 - // AppLog.log("${reply.commandType!.typeValue} 失败"); - // break; - // } - // } - // 添加卡片 Future senderAddICCard() async { showBlueConnetctToastTimer(action: (){ @@ -237,39 +191,36 @@ class AddICCardLogic extends BaseGetXController{ }); } - // 添加胁迫卡片 - // Future senderAddStressICCard() async { - // BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { - // if (deviceConnectionState == BluetoothConnectionState.connected){ - // var publicKey = await Storage.getStringList(saveBluePublicKey); - // List publicKeyDataList = changeStringListToIntList(publicKey!); - // - // var privateKey = await Storage.getStringList(saveBluePrivateKey); - // List getPrivateKeyList = changeStringListToIntList(privateKey!); - // - // var signKey = await Storage.getStringList(saveBlueSignKey); - // List getSignKeyList = changeStringListToIntList(signKey!); - // - // var token = await Storage.getStringList(saveBlueToken); - // List getTokenList = changeStringListToIntList(token!); - // - // IoSenderManage.senderAddStressICCardCommand( - // keyID:"1", - // userID:await Storage.getUid(), - // icCardNo:state.isAdministrator.value == "2" ? 254 : 1, - // cardType:1, - // useCountLimit:1, - // startTime:int.parse(state.startDate.value)~/1000, - // endTime:int.parse(state.endDate.value)~/1000, - // needAuthor:1, - // publicKey:publicKeyDataList, - // privateKey:getPrivateKeyList, - // token: getTokenList, - // signKey: getSignKeyList, - // ); - // } - // }); - // } + // 取消添加指纹 + Future senderCancelAddCardCommand() async { + BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { + if (deviceConnectionState == BluetoothConnectionState.connected){ + var privateKey = await Storage.getStringList(saveBluePrivateKey); + List getPrivateKeyList = changeStringListToIntList(privateKey!); + + var signKey = await Storage.getStringList(saveBlueSignKey); + List signKeyDataList = changeStringListToIntList(signKey!); + + var token = await Storage.getStringList(saveBlueToken); + List getTokenList = changeStringListToIntList(token!); + + IoSenderManage.senderCancelAddCardCommand( + keyID:"1", + userID:await Storage.getUid(), + needAuthor:1, + signKey:signKeyDataList, + privateKey:getPrivateKeyList, + token: getTokenList, + ); + }else if (deviceConnectionState == BluetoothConnectionState.disconnected){ + if(state.ifCurrentScreen.value == true){ + showBlueConnetctToast(); + } + cancelBlueConnetctToastTimer(); + Get.close(1); + } + }); + } void addICCardData() async { var entity = await ApiRepository.to.addICCardData( diff --git a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_page.dart b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_page.dart index d8e1bb31..bf4bddf1 100644 --- a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_page.dart +++ b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_page.dart @@ -100,6 +100,10 @@ class _AddICCardPageState extends State with RouteAware { super.didPop(); logic.cancelBlueConnetctToastTimer(); state.ifCurrentScreen.value = false; + + if(state.ifAddState.value){ + logic.senderCancelAddCardCommand(); + } } /// 从下级返回 当前界面即将出现 diff --git a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_state.dart b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_state.dart index 2243469b..2898303d 100644 --- a/star_lock/lib/main/lockDetail/card/addICCard/addICCard_state.dart +++ b/star_lock/lib/main/lockDetail/card/addICCard/addICCard_state.dart @@ -4,6 +4,7 @@ import 'package:get/get.dart'; class AddICCardState{ var ifConnectScuess = false.obs; var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + var ifAddState = false.obs;// 是否是添加状态,如果是添加状态,返回上级界面发送取消添加指令 var addFingerprintProcessNumber = 0.obs; final lockId = 0.obs; diff --git a/star_lock/lib/main/lockDetail/face/addFace/addFace_logic.dart b/star_lock/lib/main/lockDetail/face/addFace/addFace_logic.dart index efad5aa7..e133203f 100644 --- a/star_lock/lib/main/lockDetail/face/addFace/addFace_logic.dart +++ b/star_lock/lib/main/lockDetail/face/addFace/addFace_logic.dart @@ -47,6 +47,8 @@ class AddFaceLogic extends BaseGetXController { switch (status) { case 0x00: //成功 + state.ifAddState.value = true; + cancelBlueConnetctToastTimer(); // 最大图片数 state.maxRegCount.value = reply.data[11]; @@ -86,7 +88,10 @@ class AddFaceLogic extends BaseGetXController { break; default: //失败 - + state.ifAddState.value = false; + showToast("添加人脸失败", something: (){ + Get.back(); + }); break; } } @@ -96,24 +101,59 @@ class AddFaceLogic extends BaseGetXController { switch (status) { case 0x00: - //成功 - if (reply.data[5] == 255) { - // 注册人脸失败 - showToast("添加失败"); - Get.close(2); - } else { - // state.addFaceProcessNumber.value++; + switch(reply.data[5]){ + case 0xff: + // 注册人脸失败 + showToast("退出添加".tr); + state.ifAddState.value = false; + Get.close(1); + break; + case 0xFE: + // 管理员已满 + showToast("管理员已满".tr); + state.ifAddState.value = false; + Get.close(1); + break; + case 0xFD: + // 用户已满 + showToast("用户已满".tr); + state.ifAddState.value = false; + Get.close(1); + break; + case 0xFC: + // 指纹已满 + showToast("锁上面添加人脸已满".tr); + state.ifAddState.value = false; + Get.close(1); + break; + case 0xFB: + // 指纹已存在 + showToast("人脸已存在".tr); + state.ifAddState.value = false; + break; + default: + // 添加人脸中 // 当前注册数 - state.regIndex.value = reply.data[6]; - // AppLog.log("注册人脸过程state.regIndex.value:${state.regIndex.value}"); + state.regIndex.value = reply.data[6]; + // AppLog.log("注册人脸过程state.regIndex.value:${state.regIndex.value}"); + break; } - break; - case 0x06: - //需要权限 + //成功 + // if (reply.data[5] == 255) { + // // 注册人脸失败 + // showToast("添加失败"); + // Get.close(2); + // } else { + // // state.addFaceProcessNumber.value++; + // // 当前注册数 + // state.regIndex.value = reply.data[6]; + // // AppLog.log("注册人脸过程state.regIndex.value:${state.regIndex.value}"); + // } break; default: //失败 + state.ifAddState.value = false; break; } } @@ -132,14 +172,12 @@ class AddFaceLogic extends BaseGetXController { } else { state.faceNumber.value = faceNumber; } + state.ifAddState.value = false; addFaceData(); - break; - case 0x06: - //需要权限 - break; default: //失败 + state.ifAddState.value = false; break; } } @@ -192,6 +230,37 @@ class AddFaceLogic extends BaseGetXController { }); } + // 取消添加指纹 + Future senderCancelAddFaceCommand() async { + BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { + if (deviceConnectionState == BluetoothConnectionState.connected){ + var privateKey = await Storage.getStringList(saveBluePrivateKey); + List getPrivateKeyList = changeStringListToIntList(privateKey!); + + var signKey = await Storage.getStringList(saveBlueSignKey); + List signKeyDataList = changeStringListToIntList(signKey!); + + var token = await Storage.getStringList(saveBlueToken); + List getTokenList = changeStringListToIntList(token!); + + IoSenderManage.senderCancelAddFaceCommand( + keyID:"1", + userID:await Storage.getUid(), + needAuthor:1, + signKey:signKeyDataList, + privateKey:getPrivateKeyList, + token: getTokenList, + ); + }else if (deviceConnectionState == BluetoothConnectionState.disconnected){ + if(state.ifCurrentScreen.value == true){ + showBlueConnetctToast(); + } + cancelBlueConnetctToastTimer(); + Get.close(1); + } + }); + } + // 添加人脸 void addFaceData() async { var entity = await ApiRepository.to.addFaceData( diff --git a/star_lock/lib/main/lockDetail/face/addFace/addFace_page.dart b/star_lock/lib/main/lockDetail/face/addFace/addFace_page.dart index 024736d7..c46a14b6 100644 --- a/star_lock/lib/main/lockDetail/face/addFace/addFace_page.dart +++ b/star_lock/lib/main/lockDetail/face/addFace/addFace_page.dart @@ -126,6 +126,10 @@ class _AddFacePageState extends State with RouteAware { super.didPop(); logic.cancelBlueConnetctToastTimer(); state.ifCurrentScreen.value = false; + + if(state.ifAddState.value){ + logic.senderCancelAddFaceCommand(); + } } /// 从下级返回 当前界面即将出现 diff --git a/star_lock/lib/main/lockDetail/face/addFace/addFace_state.dart b/star_lock/lib/main/lockDetail/face/addFace/addFace_state.dart index 5183d2ac..ff19b918 100644 --- a/star_lock/lib/main/lockDetail/face/addFace/addFace_state.dart +++ b/star_lock/lib/main/lockDetail/face/addFace/addFace_state.dart @@ -2,6 +2,7 @@ import 'package:get/get.dart'; class AddFaceState { var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + var ifAddState = false.obs;// 是否是添加状态,如果是添加状态,返回上级界面发送取消添加指令 var ifConnectScuess = false.obs; var maxRegCount = 0.obs; // 最大注册次数 diff --git a/star_lock/lib/main/lockDetail/face/faceList/faceList_logic.dart b/star_lock/lib/main/lockDetail/face/faceList/faceList_logic.dart index c039f0b2..64a555e3 100644 --- a/star_lock/lib/main/lockDetail/face/faceList/faceList_logic.dart +++ b/star_lock/lib/main/lockDetail/face/faceList/faceList_logic.dart @@ -1,3 +1,4 @@ + import 'dart:async'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart index e6891d85..3f816d04 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart @@ -39,11 +39,6 @@ class AddFingerprintLogic extends BaseGetXController { if(reply is SenderAddFingerprintConfirmationReply) { _replyAddFingerprintConfirmation(reply); } - - // 添加胁迫指纹 - // if(reply is SenderAddStressFingerprintReply) { - // _replyAddStressFingerprint(reply); - // } }); } @@ -54,6 +49,8 @@ class AddFingerprintLogic extends BaseGetXController { case 0x00: //成功 state.ifConnectScuess.value = true; + state.ifAddState.value = true; + cancelBlueConnetctToastTimer(); // 最大图片数 state.maxRegCount.value = reply.data[11]; @@ -92,20 +89,9 @@ class AddFingerprintLogic extends BaseGetXController { token: token, ); break; - case 0x07: - //无权限 - showToast("添加指纹失败", something: (){ - Get.back(); - }); - break; - case 0x09: - // 权限校验错误 - showToast("添加指纹失败", something: (){ - Get.back(); - }); - break; default: //失败 + state.ifAddState.value = false; showToast("添加指纹失败", something: (){ Get.back(); }); @@ -119,23 +105,47 @@ class AddFingerprintLogic extends BaseGetXController { switch(status){ case 0x00: //成功 - if(reply.data[5] == 255){ - // 注册指纹失败 - showToast("添加失败"); - Get.close(2); - }else{ - // state.addFingerprintProcessNumber.value++; - - // 当前注册数 - state.regIndex.value = reply.data[6]; - AppLog.log("当前注册数 state.regIndex.value:${state.regIndex.value}"); + switch(reply.data[5]){ + case 0xff: + // 注册指纹失败 + showToast("退出添加".tr); + state.ifAddState.value = false; + Get.close(1); + break; + case 0xFE: + // 管理员已满 + showToast("管理员已满".tr); + state.ifAddState.value = false; + Get.close(1); + break; + case 0xFD: + // 用户已满 + showToast("用户已满".tr); + state.ifAddState.value = false; + Get.close(1); + break; + case 0xFC: + // 指纹已满 + showToast("锁上面添加指纹已满".tr); + state.ifAddState.value = false; + Get.close(1); + break; + case 0xFB: + // 指纹已存在 + showToast("指纹已存在".tr); + state.ifAddState.value = false; + break; + default: + // 添加指纹中 + // 当前注册数 + state.regIndex.value = reply.data[6]; + // AppLog.log("当前注册数 state.regIndex.value:${state.regIndex.value}"); + break; } break; - case 0x06: - //需要权限 - break; default: //失败 + state.ifAddState.value = false; break; } } @@ -156,71 +166,20 @@ class AddFingerprintLogic extends BaseGetXController { } // if(state.isCoerced.value == "1"){ // 调用添加指纹接口 - addFingerprintsData(); + state.ifAddState.value = false; + addFingerprintsData(); // }else{ // // 如果是胁迫指纹在 添加完之后以后再调用添加胁迫指纹的 // senderAddStressFingerprint(); // } break; - case 0x06: - //需要权限 - break; default: //失败 + state.ifAddState.value = false; break; } } - // Future _replyAddStressFingerprint(Reply reply) async { - // int status = reply.data[2]; - // - // switch(status){ - // case 0x00: - // //成功 - // addFingerprintsData(); - // break; - // case 0x06: - // //需要权限 - // var privateKey = await Storage.getStringList(saveBluePrivateKey); - // List getPrivateKeyList = changeStringListToIntList(privateKey!); - // - // var publicKey = await Storage.getStringList(saveBluePublicKey); - // List publicKeyDataList = changeStringListToIntList(publicKey!); - // - // var signKey = await Storage.getStringList(saveBlueSignKey); - // List getSignKeyList = changeStringListToIntList(signKey!); - // - // var token = reply.data.sublist(5, 9); - // var saveStrList = changeIntListToStringList(token); - // Storage.setStringList(saveBlueToken, saveStrList); - // - // IoSenderManage.senderAddStressFingerprintCommand( - // keyID:"1", - // userID:await Storage.getUid(), - // fingerNo:state.isAdministrator.value == "2" ? 254 : 1, - // fingerType:1, - // useCountLimit:1, - // 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: - // //无权限 - // break; - // case 0x09: - // // 权限校验错误 - // break; - // default: - // //失败 - // break; - // } - // } - // 添加指纹开始 Future senderAddFingerprint() async { showBlueConnetctToastTimer(action: (){ @@ -228,8 +187,6 @@ class AddFingerprintLogic extends BaseGetXController { }); BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { if (deviceConnectionState == BluetoothConnectionState.connected){ - cancelBlueConnetctToastTimer(); - var privateKey = await Storage.getStringList(saveBluePrivateKey); List getPrivateKeyList = changeStringListToIntList(privateKey!); @@ -266,79 +223,38 @@ class AddFingerprintLogic extends BaseGetXController { Get.close(1); } }); - - // BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { - // if (deviceConnectionState == BluetoothConnectionState.connected){ - // cancelBlueConnetctToastTimer(); - // // var publicKey = await Storage.getStringList(saveBluePublicKey); - // // List publicKeyDataList = changeStringListToIntList(publicKey!); - // - // var privateKey = await Storage.getStringList(saveBluePrivateKey); - // List getPrivateKeyList = changeStringListToIntList(privateKey!); - // - // var signKey = await Storage.getStringList(saveBlueSignKey); - // List signKeyDataList = changeStringListToIntList(signKey!); - // - // var token = await Storage.getStringList(saveBlueToken); - // List getTokenList = changeStringListToIntList(token!); - // - // IoSenderManage.senderAddFingerprintCommand( - // keyID:"1", - // userID:await Storage.getUid(), - // fingerNo:state.isAdministrator.value == "2" ? 254 : 1, - // useCountLimit:0xff, - // // startTime:0x11223344, - // // endTime:0x11223344, - // startTime:int.parse(state.startDate.value)~/1000, - // endTime:int.parse(state.endDate.value)~/1000, - // needAuthor:1, - // signKey:signKeyDataList, - // privateKey:getPrivateKeyList, - // token: getTokenList, - // ); - // }else if (deviceConnectionState == BluetoothConnectionState.disconnected){ - // if(state.ifCurrentScreen.value == true){ - // showBlueConnetctToast(); - // } - // cancelBlueConnetctToastTimer(); - // Get.close(1); - // } - // }); } - // 添加胁迫指纹 - // Future senderAddStressFingerprint() async { - // BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { - // if (deviceConnectionState == BluetoothConnectionState.connected){ - // var publicKey = await Storage.getStringList(saveBluePublicKey); - // List publicKeyDataList = changeStringListToIntList(publicKey!); - // - // var privateKey = await Storage.getStringList(saveBluePrivateKey); - // List getPrivateKeyList = changeStringListToIntList(privateKey!); - // - // var signKey = await Storage.getStringList(saveBlueSignKey); - // List getSignKeyList = changeStringListToIntList(signKey!); - // - // var token = await Storage.getStringList(saveBlueToken); - // List getTokenList = changeStringListToIntList(token!); - // - // IoSenderManage.senderAddStressFingerprintCommand( - // keyID:"1", - // userID:await Storage.getUid(), - // fingerNo:state.isAdministrator.value == "2" ? 254 : 1, - // fingerType:1, - // useCountLimit:1, - // startTime:int.parse(state.startDate.value)~/1000, - // endTime:int.parse(state.endDate.value)~/1000, - // needAuthor:1, - // publicKey:publicKeyDataList, - // privateKey:getPrivateKeyList, - // token: getTokenList, - // signKey: getSignKeyList - // ); - // } - // }); - // } + // 取消添加指纹 + Future senderCancelAddFingerprintCommand() async { + BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { + if (deviceConnectionState == BluetoothConnectionState.connected){ + var privateKey = await Storage.getStringList(saveBluePrivateKey); + List getPrivateKeyList = changeStringListToIntList(privateKey!); + + var signKey = await Storage.getStringList(saveBlueSignKey); + List signKeyDataList = changeStringListToIntList(signKey!); + + var token = await Storage.getStringList(saveBlueToken); + List getTokenList = changeStringListToIntList(token!); + + IoSenderManage.senderCancelAddFingerprintCommand( + keyID:"1", + userID:await Storage.getUid(), + needAuthor:1, + signKey:signKeyDataList, + privateKey:getPrivateKeyList, + token: getTokenList, + ); + }else if (deviceConnectionState == BluetoothConnectionState.disconnected){ + if(state.ifCurrentScreen.value == true){ + showBlueConnetctToast(); + } + cancelBlueConnetctToastTimer(); + Get.close(1); + } + }); + } // 添加指纹 void addFingerprintsData() async{ diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_page.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_page.dart index 74d970a0..b966d9df 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_page.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_page.dart @@ -171,6 +171,10 @@ class _AddFingerprintPageState extends State with RouteAware super.didPop(); logic.cancelBlueConnetctToastTimer(); state.ifCurrentScreen.value = false; + + if(state.ifAddState.value){ + logic.senderCancelAddFingerprintCommand(); + } } /// 从下级返回 当前界面即将出现 diff --git a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_state.dart b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_state.dart index 6a0e5f06..a6b5e492 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_state.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_state.dart @@ -3,6 +3,7 @@ import 'package:get/get.dart'; class AddFingerprintState{ var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 + var ifAddState = false.obs;// 是否是添加状态,如果是添加状态,返回上级界面发送取消添加指令 var ifConnectScuess = false.obs; var maxRegCount = 0.obs;// 最大注册次数 diff --git a/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart b/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart index 8642bafa..0ce9a349 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart @@ -142,7 +142,7 @@ class _FingerprintListPageState extends State with RouteAwa ShowTipView().showIosTipWithContentDialog("确定要删除吗?".tr, () async { state.isDeletAll = false; state.deletKeyID = fingerprintItemData.fingerprintId.toString(); - state.deletFingerNo = int.parse(fingerprintItemData.faceNumber!); + state.deletFingerNo = int.parse(fingerprintItemData.fingerprintNumber!); logic.senderAddFingerprint(); }); }, diff --git a/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart b/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart index 7fb4a80f..f2dff1ce 100644 --- a/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_logic.dart @@ -130,17 +130,11 @@ class LockSetLogic extends BaseGetXController { privateKey: getPrivateKeyList, token: getTokenList); break; - case 0x07: - //无权限 - dismissEasyLoading(); - break; - case 0x09: - // 权限校验错误 - dismissEasyLoading(); - break; default: //失败 dismissEasyLoading(); + cancelBlueConnetctToastTimer(); + showDeletAlertTipDialog(); break; } } diff --git a/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart b/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart index 793ff193..1362d523 100644 --- a/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart @@ -85,11 +85,14 @@ class RemoteUnlockingLogic extends BaseGetXController { dismissEasyLoading(); remoteUnlockingOpenOrClose(); break; - case 0x06: - //无权限 - - break; + // case 0x06: + // //无权限 + // + // break; default: + state.sureBtnState.value = 0; + cancelBlueConnetctToastTimer(); + dismissEasyLoading(); break; } } diff --git a/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart b/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart index bf2a84bc..a9fecb85 100644 --- a/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart +++ b/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart @@ -183,11 +183,11 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { Future checkKeyboardpwdNameRequest() async { if (state.nameController.text.isEmpty) { - showToast("请输入姓名"); + showToast("请输入姓名".tr); return; } if (state.pwdController.text.isEmpty) { - showToast("请输入密码"); + showToast("请输入密码".tr); return; } var entity = await ApiRepository.to.checkKeyboardpwdName( @@ -212,13 +212,46 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { switch (status) { case 0x00: //成功 + dismissEasyLoading(); + cancelBlueConnetctToastTimer(); + state.sureBtnState.value = 0; state.pwdNumber.value = listChangInt(reply.data.sublist(9, 11)); // AppLog.log("密码编号:${state.pwdNumber.value}"); - dismissEasyLoading(); - cancelBlueConnetctToastTimer(); - addKeyboardPwdRequest(); + switch(reply.data[11]){ + case 0: + // 成功 + addKeyboardPwdRequest(); + break; + case 0xff: + // 注册人脸失败 + showToast("退出添加".tr); + Get.close(1); + break; + case 0xFE: + // 管理员已满 + showToast("管理员已满".tr); + Get.close(1); + break; + case 0xFD: + // 用户已满 + showToast("用户已满".tr); + Get.close(1); + break; + case 0xFC: + // 指纹已满 + showToast("锁上面添加密码已满".tr); + Get.close(1); + break; + case 0xFB: + // 指纹已存在 + showToast("密码已存在".tr); + break; + default: + // 添加密码 + break; + } break; case 0x06: //无权限 @@ -276,12 +309,12 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { var endDate = DateTool().dateToTimestamp(state.customEndTime.value, 1); //非永久 须有时限 if (state.isPermanent.value == false) { - if (startDate < DateTool().dateToTimestamp(DateTool().getNowDateWithType(3), 1)) { - showToast("生效时间不能小于当前时间"); + if (startDate <= DateTool().dateToTimestamp(DateTool().getNowDateWithType(2), 1)) { + showToast("生效时间要大于当前时间"); return; } - if (endDate < startDate) { + if (endDate <= startDate) { showToast("失效时间需大于生效时间"); return; } diff --git a/star_lock/lib/mine/addLock/saveLock/saveLock_logic.dart b/star_lock/lib/mine/addLock/saveLock/saveLock_logic.dart index 45b0012d..77b63947 100644 --- a/star_lock/lib/mine/addLock/saveLock/saveLock_logic.dart +++ b/star_lock/lib/mine/addLock/saveLock/saveLock_logic.dart @@ -96,10 +96,6 @@ class SaveLockLogic extends BaseGetXController { // 添加管理员密码 Future _replySenderCustomPasswords(Reply reply) async { - var token = reply.data.sublist(5, 9); - var saveStrList = changeIntListToStringList(token); - Storage.setStringList(saveBlueToken, saveStrList); - int status = reply.data[2]; switch (status) { @@ -116,6 +112,10 @@ class SaveLockLogic extends BaseGetXController { var signKey = await Storage.getStringList(saveBlueSignKey); List signKeyDataList = changeStringListToIntList(signKey!); + var token = reply.data.sublist(5, 9); + var saveStrList = changeIntListToStringList(token); + Storage.setStringList(saveBlueToken, saveStrList); + IoSenderManage.senderCustomPasswordsCommand( keyID: "1", userID: await Storage.getUid(),