1、添加卡跟指纹循环、胁迫、限时协议。2、添加配网成功后返回锁设置功能
This commit is contained in:
parent
408b516106
commit
e55e3482bf
@ -23,7 +23,7 @@ class SenderAddFingerprintCommand extends SenderProtocol {
|
|||||||
int? startTime;
|
int? startTime;
|
||||||
int? endTime;
|
int? endTime;
|
||||||
int? needAuthor;
|
int? needAuthor;
|
||||||
List<int>? publicKey;
|
List<int>? signKey;
|
||||||
List<int>? privateKey;
|
List<int>? privateKey;
|
||||||
|
|
||||||
SenderAddFingerprintCommand({
|
SenderAddFingerprintCommand({
|
||||||
@ -35,7 +35,7 @@ class SenderAddFingerprintCommand extends SenderProtocol {
|
|||||||
this.startTime,
|
this.startTime,
|
||||||
this.endTime,
|
this.endTime,
|
||||||
this.needAuthor,
|
this.needAuthor,
|
||||||
this.publicKey,
|
this.signKey,
|
||||||
this.privateKey,
|
this.privateKey,
|
||||||
}) : super(CommandType.generalExtendedCommond);
|
}) : super(CommandType.generalExtendedCommond);
|
||||||
|
|
||||||
@ -96,17 +96,16 @@ class SenderAddFingerprintCommand extends SenderProtocol {
|
|||||||
subData.add(0);
|
subData.add(0);
|
||||||
} else {
|
} else {
|
||||||
List<int> authCodeData = [];
|
List<int> authCodeData = [];
|
||||||
|
//KeyID
|
||||||
|
authCodeData.addAll(utf8.encode(keyID!));
|
||||||
|
|
||||||
//authUserID
|
//authUserID
|
||||||
authCodeData.addAll(utf8.encode(userID!));
|
authCodeData.addAll(utf8.encode(userID!));
|
||||||
|
|
||||||
//KeyID
|
|
||||||
authCodeData.addAll(utf8.encode(keyID!));
|
|
||||||
|
|
||||||
//token 4 首次请求 Token 填 0,如果锁需要鉴权操作者身份,则会分配动态口令并在应答消息中返回,二次请求时带上。
|
//token 4 首次请求 Token 填 0,如果锁需要鉴权操作者身份,则会分配动态口令并在应答消息中返回,二次请求时带上。
|
||||||
authCodeData.addAll(token!);
|
authCodeData.addAll(token!);
|
||||||
|
|
||||||
authCodeData.addAll(publicKey!);
|
authCodeData.addAll(signKey!);
|
||||||
|
|
||||||
print("${commandType!.typeValue}-authCodeData:$authCodeData");
|
print("${commandType!.typeValue}-authCodeData:$authCodeData");
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,185 @@
|
|||||||
|
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
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:添加指纹
|
||||||
|
/*
|
||||||
|
备注:
|
||||||
|
删除单个指纹规则:UseCountLimit 设置为 0。删除全部指纹规则: UseCountLimit 设置为 0,FingerNo 设置为 255,userId 设置为“Delete All !@#”,只有门锁管理员才有权限
|
||||||
|
**/
|
||||||
|
class SenderAddFingerprintWithTimeCycleCoercionCommand extends SenderProtocol {
|
||||||
|
|
||||||
|
String? keyID;
|
||||||
|
String? userID;
|
||||||
|
int? fingerNo;
|
||||||
|
int? useCountLimit;
|
||||||
|
int? isForce;
|
||||||
|
List<int>? token;
|
||||||
|
int? isRound;
|
||||||
|
int? weekRound;
|
||||||
|
int? startDate;
|
||||||
|
int? endDate;
|
||||||
|
int? startTime;
|
||||||
|
int? endTime;
|
||||||
|
int? needAuthor;
|
||||||
|
List<int>? signKey;
|
||||||
|
List<int>? privateKey;
|
||||||
|
|
||||||
|
SenderAddFingerprintWithTimeCycleCoercionCommand({
|
||||||
|
this.keyID,
|
||||||
|
this.userID,
|
||||||
|
this.fingerNo,
|
||||||
|
this.useCountLimit,
|
||||||
|
this.isForce,
|
||||||
|
this.token,
|
||||||
|
this.isRound,
|
||||||
|
this.weekRound,
|
||||||
|
this.startDate,
|
||||||
|
this.endDate,
|
||||||
|
this.startTime,
|
||||||
|
this.endTime,
|
||||||
|
this.needAuthor,
|
||||||
|
this.signKey,
|
||||||
|
this.privateKey,
|
||||||
|
}) : super(CommandType.generalExtendedCommond);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<int> messageDetail() {
|
||||||
|
List<int> data = [];
|
||||||
|
List<int> subData = [];
|
||||||
|
List<int> ebcData = [];
|
||||||
|
|
||||||
|
print("pwdNopwdNopwdNopwdNo:$fingerNo");
|
||||||
|
|
||||||
|
// 指令类型
|
||||||
|
int type = commandType!.typeValue;
|
||||||
|
double typeDouble = type / 256;
|
||||||
|
int type1 = typeDouble.toInt();
|
||||||
|
int type2 = type % 256;
|
||||||
|
data.add(type1);
|
||||||
|
data.add(type2);
|
||||||
|
|
||||||
|
// 子命令类型
|
||||||
|
data.add(36);
|
||||||
|
|
||||||
|
// keyID 40
|
||||||
|
int keyIDLength = utf8.encode(keyID!).length;
|
||||||
|
// print("${commandType!.typeValue}LockIDLength:$lockIDLength utf8.encode(lockID!)${utf8.encode(lockID!)}");
|
||||||
|
subData.addAll(utf8.encode(keyID!));
|
||||||
|
subData = getFixedLengthList(subData, 40 - keyIDLength);
|
||||||
|
|
||||||
|
//userID 20
|
||||||
|
int userIDLength = utf8.encode(userID!).length;
|
||||||
|
// print("${commandType!.typeValue}IDLength:$authUserIDLength utf8.encode(authUserID!)${utf8.encode(authUserID!)}");
|
||||||
|
subData.addAll(utf8.encode(userID!));
|
||||||
|
subData = getFixedLengthList(subData, 20 - userIDLength);
|
||||||
|
|
||||||
|
// fingerNo
|
||||||
|
subData.add(fingerNo!);
|
||||||
|
|
||||||
|
// UseCountLimit
|
||||||
|
subData.add(useCountLimit!);
|
||||||
|
|
||||||
|
// isForce
|
||||||
|
subData.add(isForce!);
|
||||||
|
|
||||||
|
// token
|
||||||
|
subData.addAll(token!);
|
||||||
|
|
||||||
|
// isRound
|
||||||
|
subData.add(isRound!);
|
||||||
|
|
||||||
|
// weekRound
|
||||||
|
subData.add(weekRound!);
|
||||||
|
|
||||||
|
// startDate 4
|
||||||
|
subData.add((startDate! & 0xff000000) >> 24);
|
||||||
|
subData.add((startDate! & 0xff0000) >> 16);
|
||||||
|
subData.add((startDate! & 0xff00) >> 8);
|
||||||
|
subData.add((startDate! & 0xff));
|
||||||
|
|
||||||
|
// endDate 4
|
||||||
|
subData.add((endDate! & 0xff000000) >> 24);
|
||||||
|
subData.add((endDate! & 0xff0000) >> 16);
|
||||||
|
subData.add((endDate! & 0xff00) >> 8);
|
||||||
|
subData.add((endDate! & 0xff));
|
||||||
|
|
||||||
|
// startTime 4
|
||||||
|
subData.add((startTime! & 0xff000000) >> 24);
|
||||||
|
subData.add((startTime! & 0xff0000) >> 16);
|
||||||
|
subData.add((startTime! & 0xff00) >> 8);
|
||||||
|
subData.add((startTime! & 0xff));
|
||||||
|
|
||||||
|
// endTime 4
|
||||||
|
subData.add((endTime! & 0xff000000) >> 24);
|
||||||
|
subData.add((endTime! & 0xff0000) >> 16);
|
||||||
|
subData.add((endTime! & 0xff00) >> 8);
|
||||||
|
subData.add((endTime! & 0xff));
|
||||||
|
|
||||||
|
if(needAuthor == 0){
|
||||||
|
//AuthCodeLen 1
|
||||||
|
subData.add(0);
|
||||||
|
} else {
|
||||||
|
List<int> authCodeData = [];
|
||||||
|
//KeyID
|
||||||
|
authCodeData.addAll(utf8.encode(keyID!));
|
||||||
|
|
||||||
|
//authUserID
|
||||||
|
authCodeData.addAll(utf8.encode(userID!));
|
||||||
|
|
||||||
|
//token 4 首次请求 Token 填 0,如果锁需要鉴权操作者身份,则会分配动态口令并在应答消息中返回,二次请求时带上。
|
||||||
|
authCodeData.addAll(token!);
|
||||||
|
|
||||||
|
authCodeData.addAll(signKey!);
|
||||||
|
|
||||||
|
print("${commandType!.typeValue}-authCodeData:$authCodeData");
|
||||||
|
|
||||||
|
// 把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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print("${commandType!.typeName} SM4Data:$data");
|
||||||
|
// 拿到数据之后通过LockId进行SM4 ECB加密 key:544d485f633335373034383064613864
|
||||||
|
ebcData = SM4.encrypt(data, key: privateKey, mode: SM4CryptoMode.ECB);
|
||||||
|
return ebcData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SenderAddFingerprintWithTimeCycleCoercionReply extends Reply {
|
||||||
|
SenderAddFingerprintWithTimeCycleCoercionReply.parseData(CommandType commandType, List<int> dataDetail)
|
||||||
|
: super.parseData(commandType, dataDetail) {
|
||||||
|
data = dataDetail;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SenderAddFingerprintProcessReply extends Reply {
|
||||||
|
SenderAddFingerprintProcessReply.parseData(CommandType commandType, List<int> dataDetail)
|
||||||
|
: super.parseData(commandType, dataDetail) {
|
||||||
|
data = dataDetail;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SenderAddFingerprintConfirmationReply extends Reply {
|
||||||
|
SenderAddFingerprintConfirmationReply.parseData(CommandType commandType, List<int> dataDetail)
|
||||||
|
: super.parseData(commandType, dataDetail) {
|
||||||
|
data = dataDetail;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -24,7 +24,7 @@ class SenderAddICCardCommand extends SenderProtocol {
|
|||||||
int? startTime;
|
int? startTime;
|
||||||
int? endTime;
|
int? endTime;
|
||||||
int? needAuthor;
|
int? needAuthor;
|
||||||
List<int>? publicKey;
|
List<int>? signKey;
|
||||||
List<int>? privateKey;
|
List<int>? privateKey;
|
||||||
|
|
||||||
SenderAddICCardCommand({
|
SenderAddICCardCommand({
|
||||||
@ -36,7 +36,7 @@ class SenderAddICCardCommand extends SenderProtocol {
|
|||||||
this.startTime,
|
this.startTime,
|
||||||
this.endTime,
|
this.endTime,
|
||||||
this.needAuthor,
|
this.needAuthor,
|
||||||
this.publicKey,
|
this.signKey,
|
||||||
this.privateKey,
|
this.privateKey,
|
||||||
}) : super(CommandType.generalExtendedCommond);
|
}) : super(CommandType.generalExtendedCommond);
|
||||||
|
|
||||||
@ -46,6 +46,8 @@ class SenderAddICCardCommand extends SenderProtocol {
|
|||||||
List<int> subData = [];
|
List<int> subData = [];
|
||||||
List<int> ebcData = [];
|
List<int> ebcData = [];
|
||||||
|
|
||||||
|
print("pwdNopwdNopwdNopwdNo:$cardNo");
|
||||||
|
|
||||||
// 指令类型
|
// 指令类型
|
||||||
int type = commandType!.typeValue;
|
int type = commandType!.typeValue;
|
||||||
double typeDouble = type / 256;
|
double typeDouble = type / 256;
|
||||||
@ -95,17 +97,16 @@ class SenderAddICCardCommand extends SenderProtocol {
|
|||||||
subData.add(0);
|
subData.add(0);
|
||||||
} else {
|
} else {
|
||||||
List<int> authCodeData = [];
|
List<int> authCodeData = [];
|
||||||
|
//KeyID
|
||||||
|
authCodeData.addAll(utf8.encode(keyID!));
|
||||||
|
|
||||||
//authUserID
|
//authUserID
|
||||||
authCodeData.addAll(utf8.encode(userID!));
|
authCodeData.addAll(utf8.encode(userID!));
|
||||||
|
|
||||||
//KeyID
|
|
||||||
authCodeData.addAll(utf8.encode(keyID!));
|
|
||||||
|
|
||||||
//token 4 首次请求 Token 填 0,如果锁需要鉴权操作者身份,则会分配动态口令并在应答消息中返回,二次请求时带上。
|
//token 4 首次请求 Token 填 0,如果锁需要鉴权操作者身份,则会分配动态口令并在应答消息中返回,二次请求时带上。
|
||||||
authCodeData.addAll(token!);
|
authCodeData.addAll(token!);
|
||||||
|
|
||||||
authCodeData.addAll(publicKey!);
|
authCodeData.addAll(signKey!);
|
||||||
|
|
||||||
print("${commandType!.typeValue}-authCodeData:$authCodeData");
|
print("${commandType!.typeValue}-authCodeData:$authCodeData");
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,178 @@
|
|||||||
|
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
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:添加指纹
|
||||||
|
/*
|
||||||
|
备注:
|
||||||
|
删除单个指纹规则:UseCountLimit 设置为 0。删除全部指纹规则: UseCountLimit 设置为 0,FingerNo 设置为 255,userId 设置为“Delete All !@#”,只有门锁管理员才有权限
|
||||||
|
**/
|
||||||
|
class SenderAddICCardWithTimeCycleCoercionCommand extends SenderProtocol {
|
||||||
|
|
||||||
|
String? keyID;
|
||||||
|
String? userID;
|
||||||
|
int? cardNo;
|
||||||
|
int? useCountLimit;
|
||||||
|
int? isForce;
|
||||||
|
List<int>? token;
|
||||||
|
int? isRound;
|
||||||
|
int? weekRound;
|
||||||
|
int? startDate;
|
||||||
|
int? endDate;
|
||||||
|
int? startTime;
|
||||||
|
int? endTime;
|
||||||
|
int? needAuthor;
|
||||||
|
List<int>? signKey;
|
||||||
|
List<int>? privateKey;
|
||||||
|
|
||||||
|
SenderAddICCardWithTimeCycleCoercionCommand({
|
||||||
|
this.keyID,
|
||||||
|
this.userID,
|
||||||
|
this.cardNo,
|
||||||
|
this.useCountLimit,
|
||||||
|
this.isForce,
|
||||||
|
this.token,
|
||||||
|
this.isRound,
|
||||||
|
this.weekRound,
|
||||||
|
this.startDate,
|
||||||
|
this.endDate,
|
||||||
|
this.startTime,
|
||||||
|
this.endTime,
|
||||||
|
this.needAuthor,
|
||||||
|
this.signKey,
|
||||||
|
this.privateKey,
|
||||||
|
}) : super(CommandType.generalExtendedCommond);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<int> messageDetail() {
|
||||||
|
List<int> data = [];
|
||||||
|
List<int> subData = [];
|
||||||
|
List<int> ebcData = [];
|
||||||
|
|
||||||
|
print("cardNocardNocardNocardNo:$cardNo");
|
||||||
|
|
||||||
|
// 指令类型
|
||||||
|
int type = commandType!.typeValue;
|
||||||
|
double typeDouble = type / 256;
|
||||||
|
int type1 = typeDouble.toInt();
|
||||||
|
int type2 = type % 256;
|
||||||
|
data.add(type1);
|
||||||
|
data.add(type2);
|
||||||
|
|
||||||
|
// 子命令类型
|
||||||
|
data.add(24);
|
||||||
|
|
||||||
|
// keyID 40
|
||||||
|
int keyIDLength = utf8.encode(keyID!).length;
|
||||||
|
// print("${commandType!.typeValue}LockIDLength:$lockIDLength utf8.encode(lockID!)${utf8.encode(lockID!)}");
|
||||||
|
subData.addAll(utf8.encode(keyID!));
|
||||||
|
subData = getFixedLengthList(subData, 40 - keyIDLength);
|
||||||
|
|
||||||
|
//userID 20
|
||||||
|
int userIDLength = utf8.encode(userID!).length;
|
||||||
|
// print("${commandType!.typeValue}IDLength:$authUserIDLength utf8.encode(authUserID!)${utf8.encode(authUserID!)}");
|
||||||
|
subData.addAll(utf8.encode(userID!));
|
||||||
|
subData = getFixedLengthList(subData, 20 - userIDLength);
|
||||||
|
|
||||||
|
// fingerNo
|
||||||
|
subData.add(cardNo!);
|
||||||
|
|
||||||
|
// UseCountLimit
|
||||||
|
subData.add(useCountLimit!);
|
||||||
|
|
||||||
|
// isForce
|
||||||
|
subData.add(isForce!);
|
||||||
|
|
||||||
|
// token
|
||||||
|
subData.addAll(token!);
|
||||||
|
|
||||||
|
// isRound
|
||||||
|
subData.add(isRound!);
|
||||||
|
|
||||||
|
// weekRound
|
||||||
|
subData.add(weekRound!);
|
||||||
|
|
||||||
|
// startDate 4
|
||||||
|
subData.add((startDate! & 0xff000000) >> 24);
|
||||||
|
subData.add((startDate! & 0xff0000) >> 16);
|
||||||
|
subData.add((startDate! & 0xff00) >> 8);
|
||||||
|
subData.add((startDate! & 0xff));
|
||||||
|
|
||||||
|
// endDate 4
|
||||||
|
subData.add((endDate! & 0xff000000) >> 24);
|
||||||
|
subData.add((endDate! & 0xff0000) >> 16);
|
||||||
|
subData.add((endDate! & 0xff00) >> 8);
|
||||||
|
subData.add((endDate! & 0xff));
|
||||||
|
|
||||||
|
// startTime 4
|
||||||
|
subData.add((startTime! & 0xff000000) >> 24);
|
||||||
|
subData.add((startTime! & 0xff0000) >> 16);
|
||||||
|
subData.add((startTime! & 0xff00) >> 8);
|
||||||
|
subData.add((startTime! & 0xff));
|
||||||
|
|
||||||
|
// endTime 4
|
||||||
|
subData.add((endTime! & 0xff000000) >> 24);
|
||||||
|
subData.add((endTime! & 0xff0000) >> 16);
|
||||||
|
subData.add((endTime! & 0xff00) >> 8);
|
||||||
|
subData.add((endTime! & 0xff));
|
||||||
|
|
||||||
|
if(needAuthor == 0){
|
||||||
|
//AuthCodeLen 1
|
||||||
|
subData.add(0);
|
||||||
|
} else {
|
||||||
|
List<int> authCodeData = [];
|
||||||
|
//KeyID
|
||||||
|
authCodeData.addAll(utf8.encode(keyID!));
|
||||||
|
|
||||||
|
//authUserID
|
||||||
|
authCodeData.addAll(utf8.encode(userID!));
|
||||||
|
|
||||||
|
//token 4 首次请求 Token 填 0,如果锁需要鉴权操作者身份,则会分配动态口令并在应答消息中返回,二次请求时带上。
|
||||||
|
authCodeData.addAll(token!);
|
||||||
|
|
||||||
|
authCodeData.addAll(signKey!);
|
||||||
|
|
||||||
|
print("${commandType!.typeValue}-authCodeData:$authCodeData");
|
||||||
|
|
||||||
|
// 把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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print("${commandType!.typeName} SM4Data:$data");
|
||||||
|
// 拿到数据之后通过LockId进行SM4 ECB加密 key:544d485f633335373034383064613864
|
||||||
|
ebcData = SM4.encrypt(data, key: privateKey, mode: SM4CryptoMode.ECB);
|
||||||
|
return ebcData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SenderAddICCardWithTimeCycleCoercionReply extends Reply {
|
||||||
|
SenderAddICCardWithTimeCycleCoercionReply.parseData(CommandType commandType, List<int> dataDetail)
|
||||||
|
: super.parseData(commandType, dataDetail) {
|
||||||
|
data = dataDetail;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SenderAddICCardConfirmationReply extends Reply {
|
||||||
|
SenderAddICCardConfirmationReply.parseData(CommandType commandType, List<int> dataDetail)
|
||||||
|
: super.parseData(commandType, dataDetail) {
|
||||||
|
data = dataDetail;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -46,7 +46,7 @@ class SenderCustomPasswordsCommand extends SenderProtocol {
|
|||||||
List<int> subData = [];
|
List<int> subData = [];
|
||||||
List<int> ebcData = [];
|
List<int> ebcData = [];
|
||||||
|
|
||||||
// print("pwdNopwdNopwdNopwdNo:$pwdNo");
|
print("pwdNopwdNopwdNopwdNo:$pwdNo");
|
||||||
|
|
||||||
// 指令类型
|
// 指令类型
|
||||||
int type = commandType!.typeValue;
|
int type = commandType!.typeValue;
|
||||||
|
|||||||
@ -20,8 +20,10 @@ import 'package:star_lock/blue/io_protocol/io_timing.dart';
|
|||||||
import 'package:star_lock/blue/io_protocol/io_transferPermissions.dart';
|
import 'package:star_lock/blue/io_protocol/io_transferPermissions.dart';
|
||||||
|
|
||||||
import '../tools/storage.dart';
|
import '../tools/storage.dart';
|
||||||
import 'io_protocol/io_addFingerprint.dart';
|
// import 'io_protocol/io_addFingerprint.dart';
|
||||||
import 'io_protocol/io_addICCard.dart';
|
import 'io_protocol/io_addFingerprintWithTimeCycleCoercion.dart';
|
||||||
|
// import 'io_protocol/io_addICCard.dart';
|
||||||
|
import 'io_protocol/io_addICCardWithTimeCycleCoercion.dart';
|
||||||
import 'io_protocol/io_addStressFingerprint.dart';
|
import 'io_protocol/io_addStressFingerprint.dart';
|
||||||
import 'io_protocol/io_addStressICCard.dart';
|
import 'io_protocol/io_addStressICCard.dart';
|
||||||
import 'io_protocol/io_addStressPassword.dart';
|
import 'io_protocol/io_addStressPassword.dart';
|
||||||
@ -225,12 +227,12 @@ class CommandReciverManager {
|
|||||||
commandType, data);
|
commandType, data);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 21:
|
// case 21:
|
||||||
{
|
// {
|
||||||
// 注册卡片开始
|
// // 注册卡片开始
|
||||||
reply = SenderAddICCardReply.parseData(commandType, data);
|
// reply = SenderAddICCardReply.parseData(commandType, data);
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
case 22:
|
case 22:
|
||||||
{
|
{
|
||||||
// 注册卡片确认
|
// 注册卡片确认
|
||||||
@ -238,6 +240,13 @@ class CommandReciverManager {
|
|||||||
commandType, data);
|
commandType, data);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 24:
|
||||||
|
{
|
||||||
|
// 注册卡片开始
|
||||||
|
reply = SenderAddICCardWithTimeCycleCoercionReply.parseData(
|
||||||
|
commandType, data);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 30:
|
case 30:
|
||||||
{
|
{
|
||||||
// 查询指纹状态
|
// 查询指纹状态
|
||||||
@ -245,13 +254,13 @@ class CommandReciverManager {
|
|||||||
commandType, data);
|
commandType, data);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 31:
|
// case 31:
|
||||||
{
|
// {
|
||||||
// 注册指纹开始
|
// // 注册指纹开始
|
||||||
reply =
|
// reply =
|
||||||
SenderAddFingerprintReply.parseData(commandType, data);
|
// SenderAddFingerprintReply.parseData(commandType, data);
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
case 32:
|
case 32:
|
||||||
{
|
{
|
||||||
// 注册指纹确认
|
// 注册指纹确认
|
||||||
@ -266,6 +275,13 @@ class CommandReciverManager {
|
|||||||
commandType, data);
|
commandType, data);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 36:
|
||||||
|
{
|
||||||
|
// 注册指纹开始(带限时、循环、胁迫...)
|
||||||
|
reply = SenderAddFingerprintWithTimeCycleCoercionReply.parseData(
|
||||||
|
commandType, data);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 40:
|
case 40:
|
||||||
{
|
{
|
||||||
// 事件查询记录
|
// 事件查询记录
|
||||||
|
|||||||
@ -8,6 +8,8 @@ import 'package:star_lock/blue/io_protocol/io_queryingFaceStatus.dart';
|
|||||||
import 'package:star_lock/blue/io_protocol/io_readAdminPassword.dart';
|
import 'package:star_lock/blue/io_protocol/io_readAdminPassword.dart';
|
||||||
|
|
||||||
import 'io_protocol/io_addFingerprint.dart';
|
import 'io_protocol/io_addFingerprint.dart';
|
||||||
|
import 'io_protocol/io_addFingerprintWithTimeCycleCoercion.dart';
|
||||||
|
import 'io_protocol/io_addICCardWithTimeCycleCoercion.dart';
|
||||||
import 'io_protocol/io_addStressFingerprint.dart';
|
import 'io_protocol/io_addStressFingerprint.dart';
|
||||||
import 'io_protocol/io_addStressPassword.dart';
|
import 'io_protocol/io_addStressPassword.dart';
|
||||||
import 'io_protocol/io_addUser.dart';
|
import 'io_protocol/io_addUser.dart';
|
||||||
@ -338,7 +340,7 @@ class IoSenderManage {
|
|||||||
required int? startTime,
|
required int? startTime,
|
||||||
required int? endTime,
|
required int? endTime,
|
||||||
required int? needAuthor,
|
required int? needAuthor,
|
||||||
required List<int>? publicKey,
|
required List<int>? signKey,
|
||||||
required List<int>? privateKey,
|
required List<int>? privateKey,
|
||||||
CommandSendCallBack? callBack}) {
|
CommandSendCallBack? callBack}) {
|
||||||
CommandSenderManager().managerSendData(
|
CommandSenderManager().managerSendData(
|
||||||
@ -351,7 +353,47 @@ class IoSenderManage {
|
|||||||
startTime: startTime,
|
startTime: startTime,
|
||||||
endTime: endTime,
|
endTime: endTime,
|
||||||
needAuthor: needAuthor,
|
needAuthor: needAuthor,
|
||||||
publicKey: publicKey,
|
signKey: signKey,
|
||||||
|
privateKey: privateKey,
|
||||||
|
),
|
||||||
|
callBack: callBack);
|
||||||
|
}
|
||||||
|
|
||||||
|
//todo:添加指纹开始(带限时、循环、胁迫...)
|
||||||
|
static void senderAddFingerprintWithTimeCycleCoercionCommand(
|
||||||
|
{
|
||||||
|
required String? keyID,
|
||||||
|
required String? userID,
|
||||||
|
required int? fingerNo,
|
||||||
|
required int? useCountLimit,
|
||||||
|
required int? isForce,
|
||||||
|
required List<int>? token,
|
||||||
|
required int? isRound,
|
||||||
|
required int? weekRound,
|
||||||
|
required int? startDate,
|
||||||
|
required int? endDate,
|
||||||
|
required int? startTime,
|
||||||
|
required int? endTime,
|
||||||
|
required int? needAuthor,
|
||||||
|
required List<int>? signKey,
|
||||||
|
required List<int>? privateKey,
|
||||||
|
CommandSendCallBack? callBack}) {
|
||||||
|
CommandSenderManager().managerSendData(
|
||||||
|
command: SenderAddFingerprintWithTimeCycleCoercionCommand(
|
||||||
|
keyID: keyID,
|
||||||
|
userID: userID,
|
||||||
|
fingerNo: fingerNo,
|
||||||
|
useCountLimit: useCountLimit,
|
||||||
|
isForce: isForce,
|
||||||
|
token: token,
|
||||||
|
isRound: isRound,
|
||||||
|
weekRound: weekRound,
|
||||||
|
startDate: startDate,
|
||||||
|
endDate: endDate,
|
||||||
|
startTime: startTime,
|
||||||
|
endTime: endTime,
|
||||||
|
needAuthor: needAuthor,
|
||||||
|
signKey: signKey,
|
||||||
privateKey: privateKey,
|
privateKey: privateKey,
|
||||||
),
|
),
|
||||||
callBack: callBack);
|
callBack: callBack);
|
||||||
@ -367,7 +409,7 @@ class IoSenderManage {
|
|||||||
required int? startTime,
|
required int? startTime,
|
||||||
required int? endTime,
|
required int? endTime,
|
||||||
required int? needAuthor,
|
required int? needAuthor,
|
||||||
required List<int>? publicKey,
|
required List<int>? signKey,
|
||||||
required List<int>? privateKey,
|
required List<int>? privateKey,
|
||||||
CommandSendCallBack? callBack}) {
|
CommandSendCallBack? callBack}) {
|
||||||
CommandSenderManager().managerSendData(
|
CommandSenderManager().managerSendData(
|
||||||
@ -380,7 +422,47 @@ class IoSenderManage {
|
|||||||
startTime: startTime,
|
startTime: startTime,
|
||||||
endTime: endTime,
|
endTime: endTime,
|
||||||
needAuthor: needAuthor,
|
needAuthor: needAuthor,
|
||||||
publicKey: publicKey,
|
signKey: signKey,
|
||||||
|
privateKey: privateKey,
|
||||||
|
),
|
||||||
|
callBack: callBack);
|
||||||
|
}
|
||||||
|
|
||||||
|
//todo:添加卡开始(带限时、循环、胁迫...)
|
||||||
|
static void senderAddCardWithTimeCycleCoercionCommand(
|
||||||
|
{
|
||||||
|
required String? keyID,
|
||||||
|
required String? userID,
|
||||||
|
required int? cardNo,
|
||||||
|
required int? useCountLimit,
|
||||||
|
required int? isForce,
|
||||||
|
required List<int>? token,
|
||||||
|
required int? isRound,
|
||||||
|
required int? weekRound,
|
||||||
|
required int? startDate,
|
||||||
|
required int? endDate,
|
||||||
|
required int? startTime,
|
||||||
|
required int? endTime,
|
||||||
|
required int? needAuthor,
|
||||||
|
required List<int>? signKey,
|
||||||
|
required List<int>? privateKey,
|
||||||
|
CommandSendCallBack? callBack}) {
|
||||||
|
CommandSenderManager().managerSendData(
|
||||||
|
command: SenderAddICCardWithTimeCycleCoercionCommand(
|
||||||
|
keyID: keyID,
|
||||||
|
userID: userID,
|
||||||
|
cardNo: cardNo,
|
||||||
|
useCountLimit: useCountLimit,
|
||||||
|
isForce: isForce,
|
||||||
|
token: token,
|
||||||
|
isRound: isRound,
|
||||||
|
weekRound: weekRound,
|
||||||
|
startDate: startDate,
|
||||||
|
endDate: endDate,
|
||||||
|
startTime: startTime,
|
||||||
|
endTime: endTime,
|
||||||
|
needAuthor: needAuthor,
|
||||||
|
signKey: signKey,
|
||||||
privateKey: privateKey,
|
privateKey: privateKey,
|
||||||
),
|
),
|
||||||
callBack: callBack);
|
callBack: callBack);
|
||||||
|
|||||||
@ -23,9 +23,6 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
|
|||||||
final logic = Get.put(StarLockRegisterLogic());
|
final logic = Get.put(StarLockRegisterLogic());
|
||||||
final state = Get.find<StarLockRegisterLogic>().state;
|
final state = Get.find<StarLockRegisterLogic>().state;
|
||||||
|
|
||||||
// late Timer _timer;
|
|
||||||
// final int _seconds = 60;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
|
|||||||
@ -75,6 +75,7 @@ class AddCardTypeLogic extends BaseGetXController{
|
|||||||
"isAdministrator": state.isAdministrator.value == false ? "1" : "2", // 1:不是管理员 2:是管理员
|
"isAdministrator": state.isAdministrator.value == false ? "1" : "2", // 1:不是管理员 2:是管理员
|
||||||
"effectiveTime": startTime,
|
"effectiveTime": startTime,
|
||||||
"failureTime": endTime,
|
"failureTime": endTime,
|
||||||
|
"selectType": state.selectType.value,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,15 +1,13 @@
|
|||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
// import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
|
|
||||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/blue/io_type.dart';
|
import 'package:star_lock/blue/io_type.dart';
|
||||||
import 'package:star_lock/tools/baseGetXController.dart';
|
import 'package:star_lock/tools/baseGetXController.dart';
|
||||||
import 'package:star_lock/tools/dateTool.dart';
|
|
||||||
|
|
||||||
import '../../../../blue/blue_manage.dart';
|
import '../../../../blue/blue_manage.dart';
|
||||||
import '../../../../blue/io_protocol/io_addICCard.dart';
|
import '../../../../blue/io_protocol/io_addICCardWithTimeCycleCoercion.dart';
|
||||||
import '../../../../blue/io_protocol/io_addStressICCard.dart';
|
import '../../../../blue/io_protocol/io_addStressICCard.dart';
|
||||||
import '../../../../blue/io_reply.dart';
|
import '../../../../blue/io_reply.dart';
|
||||||
import '../../../../blue/io_tool/io_tool.dart';
|
import '../../../../blue/io_tool/io_tool.dart';
|
||||||
@ -28,7 +26,7 @@ class AddICCardLogic extends BaseGetXController{
|
|||||||
void _initReplySubscription() {
|
void _initReplySubscription() {
|
||||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
|
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
|
||||||
// 添加IC卡开始
|
// 添加IC卡开始
|
||||||
if(reply is SenderAddICCardReply) {
|
if(reply is SenderAddICCardWithTimeCycleCoercionReply) {
|
||||||
_replyAddICCardBegin(reply);
|
_replyAddICCardBegin(reply);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,22 +57,25 @@ class AddICCardLogic extends BaseGetXController{
|
|||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
var token = reply.data.sublist(5, 9);
|
var token = reply.data.sublist(5, 9);
|
||||||
var saveStrList = changeIntListToStringList(token);
|
var saveStrList = changeIntListToStringList(token);
|
||||||
Storage.setStringList(saveBlueToken, saveStrList);
|
Storage.setStringList(saveBlueToken, saveStrList);
|
||||||
|
|
||||||
IoSenderManage.senderAddFingerprintCommand(
|
IoSenderManage.senderAddICCardCommand(
|
||||||
keyID:"1",
|
keyID:"1",
|
||||||
userID:await Storage.getUid(),
|
userID:await Storage.getUid(),
|
||||||
fingerNo:1,
|
cardNo:state.isAdministrator.value == "2" ? 254 : 1,
|
||||||
useCountLimit:0xff,
|
useCountLimit:0xff,
|
||||||
startTime:int.parse(state.startDate.value)~/1000,
|
startTime:int.parse(state.startDate.value)~/1000,
|
||||||
endTime:int.parse(state.endDate.value)~/1000,
|
endTime:int.parse(state.endDate.value)~/1000,
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: token,
|
token: token,
|
||||||
);
|
);
|
||||||
@ -166,6 +167,7 @@ class AddICCardLogic extends BaseGetXController{
|
|||||||
var saveStrList = changeIntListToStringList(token);
|
var saveStrList = changeIntListToStringList(token);
|
||||||
Storage.setStringList(saveBlueToken, saveStrList);
|
Storage.setStringList(saveBlueToken, saveStrList);
|
||||||
|
|
||||||
|
Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
|
||||||
IoSenderManage.senderAddStressICCardCommand(
|
IoSenderManage.senderAddStressICCardCommand(
|
||||||
keyID:"1",
|
keyID:"1",
|
||||||
userID:await Storage.getUid(),
|
userID:await Storage.getUid(),
|
||||||
@ -206,8 +208,19 @@ class AddICCardLogic extends BaseGetXController{
|
|||||||
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||||
if (deviceConnectionState == BluetoothConnectionState.connected){
|
if (deviceConnectionState == BluetoothConnectionState.connected){
|
||||||
cancelBlueConnetctToastTimer();
|
cancelBlueConnetctToastTimer();
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
|
var weekStr = "00000000";
|
||||||
|
for (var day in state.weekDay.value) {
|
||||||
|
int index = day % 7; // 将周日的索引转换为 0
|
||||||
|
weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}';
|
||||||
|
}
|
||||||
|
// print("weekStrweekStrweekStr:$weekStr");
|
||||||
|
int weekRound = int.parse(weekStr, radix: 2);
|
||||||
|
|
||||||
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
@ -215,18 +228,37 @@ class AddICCardLogic extends BaseGetXController{
|
|||||||
var token = await Storage.getStringList(saveBlueToken);
|
var token = await Storage.getStringList(saveBlueToken);
|
||||||
List<int> getTokenList = changeStringListToIntList(token!);
|
List<int> getTokenList = changeStringListToIntList(token!);
|
||||||
|
|
||||||
IoSenderManage.senderAddICCardCommand(
|
Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
|
||||||
|
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
|
||||||
keyID:"1",
|
keyID:"1",
|
||||||
userID:await Storage.getUid(),
|
userID:await Storage.getUid(),
|
||||||
cardNo:state.isAdministrator.value == "2" ? 254 : 1,
|
fingerNo:state.isAdministrator.value == "2" ? 254 : 1,
|
||||||
useCountLimit:0xff,
|
useCountLimit:0xff,
|
||||||
startTime:int.parse(state.startDate.value)~/1000,
|
isForce:state.isCoerced.value == "1" ? 0 : 1, // 是否是胁迫
|
||||||
endTime:int.parse(state.endDate.value)~/1000,
|
isRound:state.selectType.value == "2" ? 1: 0, // 是否是循环
|
||||||
|
weekRound:weekRound, // 周循环
|
||||||
|
startDate: int.parse(state.startDate.value)~/1000,
|
||||||
|
endDate: int.parse(state.endDate.value)~/1000,
|
||||||
|
startTime:int.parse(state.effectiveDateTime.value)~/1000,
|
||||||
|
endTime:int.parse(state.failureDateTime.value)~/1000,
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// IoSenderManage.senderAddICCardCommand(
|
||||||
|
// keyID:"1",
|
||||||
|
// userID:await Storage.getUid(),
|
||||||
|
// cardNo:state.isAdministrator.value == "2" ? 254 : 1,
|
||||||
|
// useCountLimit:0xff,
|
||||||
|
// 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){
|
} else if (deviceConnectionState == BluetoothConnectionState.disconnected){
|
||||||
if(state.ifCurrentScreen.value == true){
|
if(state.ifCurrentScreen.value == true){
|
||||||
showBlueConnetctToast();
|
showBlueConnetctToast();
|
||||||
|
|||||||
@ -27,8 +27,7 @@ class _AddICCardPageState extends State<AddICCardPage> with RouteAware {
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: AppColors.mainBackgroundColor,
|
backgroundColor: AppColors.mainBackgroundColor,
|
||||||
appBar: TitleAppBar(
|
appBar: TitleAppBar(
|
||||||
barTitle:
|
barTitle: "${TranslationLoader.lanKeys!.add!.tr}${TranslationLoader.lanKeys!.card!.tr}",
|
||||||
"${TranslationLoader.lanKeys!.add!.tr}${TranslationLoader.lanKeys!.card!.tr}",
|
|
||||||
haveBack: true,
|
haveBack: true,
|
||||||
backgroundColor: AppColors.mainColor,
|
backgroundColor: AppColors.mainColor,
|
||||||
),
|
),
|
||||||
|
|||||||
@ -19,6 +19,7 @@ class AddICCardState{
|
|||||||
final fromType = 0.obs;
|
final fromType = 0.obs;
|
||||||
final effectiveDateTime = "".obs;// 生效时间
|
final effectiveDateTime = "".obs;// 生效时间
|
||||||
final failureDateTime = "".obs;// 失效时间
|
final failureDateTime = "".obs;// 失效时间
|
||||||
|
final selectType = "0".obs;// 0永久 1显示 2循环
|
||||||
|
|
||||||
AddICCardState() {
|
AddICCardState() {
|
||||||
Map map = Get.arguments;
|
Map map = Get.arguments;
|
||||||
@ -37,5 +38,6 @@ class AddICCardState{
|
|||||||
fromType.value = map["fromType"];
|
fromType.value = map["fromType"];
|
||||||
effectiveDateTime.value = map["effectiveTime"];
|
effectiveDateTime.value = map["effectiveTime"];
|
||||||
failureDateTime.value = map["failureTime"];
|
failureDateTime.value = map["failureTime"];
|
||||||
|
selectType.value = map["selectType"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -51,6 +51,9 @@ class CardDetailLogic extends BaseGetXController{
|
|||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
@ -66,7 +69,7 @@ class CardDetailLogic extends BaseGetXController{
|
|||||||
startTime:int.parse(state.starDate.value),
|
startTime:int.parse(state.starDate.value),
|
||||||
endTime:int.parse(state.endDate.value),
|
endTime:int.parse(state.endDate.value),
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
@ -100,8 +103,11 @@ class CardDetailLogic extends BaseGetXController{
|
|||||||
});
|
});
|
||||||
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||||
if (deviceConnectionState == BluetoothConnectionState.connected){
|
if (deviceConnectionState == BluetoothConnectionState.connected){
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
@ -118,7 +124,7 @@ class CardDetailLogic extends BaseGetXController{
|
|||||||
startTime:int.parse(state.starDate.value),
|
startTime:int.parse(state.starDate.value),
|
||||||
endTime:int.parse(state.endDate.value),
|
endTime:int.parse(state.endDate.value),
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -62,8 +62,11 @@ class CardListLogic extends BaseGetXController {
|
|||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
var token = await Storage.getStringList(saveBlueToken);
|
var token = await Storage.getStringList(saveBlueToken);
|
||||||
List<int> getTokenList = changeStringListToIntList(token!);
|
List<int> getTokenList = changeStringListToIntList(token!);
|
||||||
@ -76,7 +79,7 @@ class CardListLogic extends BaseGetXController {
|
|||||||
startTime:0x11223344,
|
startTime:0x11223344,
|
||||||
endTime:0x11223344,
|
endTime:0x11223344,
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
@ -258,8 +261,11 @@ class CardListLogic extends BaseGetXController {
|
|||||||
});
|
});
|
||||||
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||||
if (deviceConnectionState == BluetoothConnectionState.connected){
|
if (deviceConnectionState == BluetoothConnectionState.connected){
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
@ -275,7 +281,7 @@ class CardListLogic extends BaseGetXController {
|
|||||||
startTime:0x11223344,
|
startTime:0x11223344,
|
||||||
endTime:0x11223344,
|
endTime:0x11223344,
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -100,8 +100,7 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
|
|||||||
SizedBox(height: 20.h),
|
SizedBox(height: 20.h),
|
||||||
Expanded(child: _buildMainUI()),
|
Expanded(child: _buildMainUI()),
|
||||||
AddBottomWhiteBtn(
|
AddBottomWhiteBtn(
|
||||||
btnName:
|
btnName: '${TranslationLoader.lanKeys!.add!.tr}${TranslationLoader.lanKeys!.card!.tr}',
|
||||||
'${TranslationLoader.lanKeys!.add!.tr}${TranslationLoader.lanKeys!.card!.tr}',
|
|
||||||
onClick: () async {
|
onClick: () async {
|
||||||
var data = await Get.toNamed(Routers.addCardTypeManagePage, arguments: {
|
var data = await Get.toNamed(Routers.addCardTypeManagePage, arguments: {
|
||||||
"lockId": state.lockId.value,
|
"lockId": state.lockId.value,
|
||||||
@ -179,8 +178,7 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
|
|||||||
) : NoData(noDataHeight: 1.sh - ScreenUtil().statusBarHeight - ScreenUtil().bottomBarHeight - 190.h - 64.h));
|
) : NoData(noDataHeight: 1.sh - ScreenUtil().statusBarHeight - ScreenUtil().bottomBarHeight - 190.h - 64.h));
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _keyItem(String lockTypeIcon, String lockTypeTitle, String ifInvalidation, String showTime,
|
Widget _keyItem(String lockTypeIcon, String lockTypeTitle, String ifInvalidation, String showTime, Function() action) {
|
||||||
Function() action) {
|
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: action,
|
onTap: action,
|
||||||
child: Container(
|
child: Container(
|
||||||
|
|||||||
@ -116,9 +116,9 @@ class SendElectronicKeyLogic extends BaseGetXController {
|
|||||||
//用户未注册
|
//用户未注册
|
||||||
state.isCreateUser.value = true;
|
state.isCreateUser.value = true;
|
||||||
if (isPhoneNumber(state.emailOrPhoneController.text) == true) {
|
if (isPhoneNumber(state.emailOrPhoneController.text) == true) {
|
||||||
_showPhoneDialog(Get.context, '${entity.errorMsg}');
|
_showEmailDialog();
|
||||||
} else {
|
} else {
|
||||||
_showEmailDialog(Get.context);
|
_showEmailDialog();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -137,51 +137,51 @@ class SendElectronicKeyLogic extends BaseGetXController {
|
|||||||
return emailRegExp.hasMatch(input);
|
return emailRegExp.hasMatch(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
//用户未注册确认弹窗
|
// //用户未注册确认弹窗
|
||||||
void _showPhoneDialog(widgetContext, String errMsg) {
|
// void _showPhoneDialog(widgetContext, String errMsg) {
|
||||||
showCupertinoDialog(
|
// showCupertinoDialog(
|
||||||
context: widgetContext,
|
// context: widgetContext,
|
||||||
builder: (context) {
|
// builder: (context) {
|
||||||
return CupertinoAlertDialog(
|
// return CupertinoAlertDialog(
|
||||||
title: Text('接收者号码未注册,请重新发送'.tr),
|
// title: Text('接收者号码未注册,请重新发送'.tr),
|
||||||
actions: [
|
// actions: [
|
||||||
CupertinoDialogAction(
|
// CupertinoDialogAction(
|
||||||
child: Text(
|
// child: Text(
|
||||||
TranslationLoader.lanKeys!.cancel!.tr,
|
// TranslationLoader.lanKeys!.cancel!.tr,
|
||||||
style: TextStyle(color: AppColors.mainColor),
|
// style: TextStyle(color: AppColors.mainColor),
|
||||||
),
|
// ),
|
||||||
onPressed: () {
|
// onPressed: () {
|
||||||
Get.back();
|
// Get.back();
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
CupertinoDialogAction(
|
// CupertinoDialogAction(
|
||||||
child: Text(
|
// child: Text(
|
||||||
TranslationLoader.lanKeys!.sure!.tr,
|
// TranslationLoader.lanKeys!.sure!.tr,
|
||||||
style: TextStyle(color: AppColors.mainColor),
|
// style: TextStyle(color: AppColors.mainColor),
|
||||||
),
|
// ),
|
||||||
onPressed: () async {
|
// onPressed: () async {
|
||||||
//选择国家代码
|
// //选择国家代码
|
||||||
Get.back();
|
// Get.back();
|
||||||
|
//
|
||||||
// var result = await Get.toNamed(Routers.selectCountryRegionPage);
|
// // var result = await Get.toNamed(Routers.selectCountryRegionPage);
|
||||||
// if (result != null) {
|
// // if (result != null) {
|
||||||
// result as Map<String, dynamic>;
|
// // result as Map<String, dynamic>;
|
||||||
// state.countryCode.value = result['code'];
|
// // state.countryCode.value = result['code'];
|
||||||
// state.countryName.value = result['countryName'];
|
// // state.countryName.value = result['countryName'];
|
||||||
// }
|
// // }
|
||||||
sendElectronicKeyRequest();
|
// sendElectronicKeyRequest();
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
);
|
// );
|
||||||
},
|
// },
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
//用户未注册确认弹窗---邮箱
|
//用户未注册确认弹窗---邮箱
|
||||||
void _showEmailDialog(widgetContext) {
|
void _showEmailDialog() {
|
||||||
showCupertinoDialog(
|
showCupertinoDialog(
|
||||||
context: widgetContext,
|
context: Get.context!,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return CupertinoAlertDialog(
|
return CupertinoAlertDialog(
|
||||||
title: Text('${"是否发送电子钥匙给未注册账号".tr}\n${state.emailOrPhoneController.text}'),
|
title: Text('${"是否发送电子钥匙给未注册账号".tr}\n${state.emailOrPhoneController.text}'),
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import 'package:get/get.dart';
|
|||||||
import 'package:star_lock/blue/io_type.dart';
|
import 'package:star_lock/blue/io_type.dart';
|
||||||
|
|
||||||
import '../../../../../blue/blue_manage.dart';
|
import '../../../../../blue/blue_manage.dart';
|
||||||
import '../../../../../blue/io_protocol/io_addFingerprint.dart';
|
// import '../../../../../blue/io_protocol/io_addFingerprint.dart';
|
||||||
import '../../../../../blue/io_protocol/io_addStressFingerprint.dart';
|
import '../../../../../blue/io_protocol/io_addStressFingerprint.dart';
|
||||||
import '../../../../../blue/io_reply.dart';
|
import '../../../../../blue/io_reply.dart';
|
||||||
import '../../../../../blue/io_tool/io_tool.dart';
|
import '../../../../../blue/io_tool/io_tool.dart';
|
||||||
@ -17,6 +17,7 @@ import '../../../../../network/api_repository.dart';
|
|||||||
import '../../../../../tools/baseGetXController.dart';
|
import '../../../../../tools/baseGetXController.dart';
|
||||||
import '../../../../../tools/eventBusEventManage.dart';
|
import '../../../../../tools/eventBusEventManage.dart';
|
||||||
import '../../../../../tools/storage.dart';
|
import '../../../../../tools/storage.dart';
|
||||||
|
import '../../../../blue/io_protocol/io_addFingerprintWithTimeCycleCoercion.dart';
|
||||||
import 'addFingerprint_state.dart';
|
import 'addFingerprint_state.dart';
|
||||||
|
|
||||||
class AddFingerprintLogic extends BaseGetXController {
|
class AddFingerprintLogic extends BaseGetXController {
|
||||||
@ -27,7 +28,7 @@ class AddFingerprintLogic extends BaseGetXController {
|
|||||||
void _initReplySubscription() {
|
void _initReplySubscription() {
|
||||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
|
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
|
||||||
// 添加指纹开始
|
// 添加指纹开始
|
||||||
if(reply is SenderAddFingerprintReply) {
|
if(reply is SenderAddFingerprintWithTimeCycleCoercionReply) {
|
||||||
_replyAddFingerprintBegin(reply);
|
_replyAddFingerprintBegin(reply);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,22 +70,39 @@ class AddFingerprintLogic extends BaseGetXController {
|
|||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
var token = reply.data.sublist(5, 9);
|
var token = reply.data.sublist(5, 9);
|
||||||
|
print("tokentokentokentoken:$token");
|
||||||
var saveStrList = changeIntListToStringList(token);
|
var saveStrList = changeIntListToStringList(token);
|
||||||
Storage.setStringList(saveBlueToken, saveStrList);
|
Storage.setStringList(saveBlueToken, saveStrList);
|
||||||
|
|
||||||
IoSenderManage.senderAddFingerprintCommand(
|
var weekStr = "00000000";
|
||||||
|
for (var day in state.weekDay.value) {
|
||||||
|
int index = day % 7; // 将周日的索引转换为 0
|
||||||
|
weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}';
|
||||||
|
}
|
||||||
|
// print("weekStrweekStrweekStr:$weekStr");
|
||||||
|
int weekRound = int.parse(weekStr, radix: 2);
|
||||||
|
|
||||||
|
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
|
||||||
keyID:"1",
|
keyID:"1",
|
||||||
userID:await Storage.getUid(),
|
userID:await Storage.getUid(),
|
||||||
fingerNo:state.isAdministrator.value == "2" ? 254 : 1,
|
fingerNo:state.isAdministrator.value == "2" ? 254 : 1,
|
||||||
useCountLimit:0xff,
|
useCountLimit:0xff,
|
||||||
startTime:int.parse(state.startDate.value)~/1000,
|
isForce:state.isCoerced.value == "1" ? 1 : 0, // 是否是胁迫
|
||||||
endTime:int.parse(state.endDate.value)~/1000,
|
isRound:state.selectType.value == "2" ? 1: 0, // 是否是循环
|
||||||
|
weekRound:weekRound, // 周循环
|
||||||
|
startDate: int.parse(state.startDate.value)~/1000,
|
||||||
|
endDate: int.parse(state.endDate.value)~/1000,
|
||||||
|
startTime:int.parse(state.effectiveDateTime.value)~/1000,
|
||||||
|
endTime:int.parse(state.failureDateTime.value)~/1000,
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: token,
|
token: token,
|
||||||
);
|
);
|
||||||
@ -164,13 +182,13 @@ class AddFingerprintLogic extends BaseGetXController {
|
|||||||
}else{
|
}else{
|
||||||
state.fingerprintNumber.value = (reply.data[6]).toString();
|
state.fingerprintNumber.value = (reply.data[6]).toString();
|
||||||
}
|
}
|
||||||
if(state.isCoerced.value == "1"){
|
// if(state.isCoerced.value == "1"){
|
||||||
// 非胁迫指纹
|
// 非胁迫指纹
|
||||||
addFingerprintsData();
|
addFingerprintsData();
|
||||||
}else{
|
// }else{
|
||||||
// 如果是胁迫指纹在 添加完之后以后再调用添加胁迫指纹的
|
// // 如果是胁迫指纹在 添加完之后以后再调用添加胁迫指纹的
|
||||||
senderAddStressFingerprint();
|
// senderAddStressFingerprint();
|
||||||
}
|
// }
|
||||||
break;
|
break;
|
||||||
case 0x06:
|
case 0x06:
|
||||||
//需要权限
|
//需要权限
|
||||||
@ -254,27 +272,41 @@ class AddFingerprintLogic extends BaseGetXController {
|
|||||||
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||||
if (deviceConnectionState == BluetoothConnectionState.connected){
|
if (deviceConnectionState == BluetoothConnectionState.connected){
|
||||||
cancelBlueConnetctToastTimer();
|
cancelBlueConnetctToastTimer();
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
|
var weekStr = "00000000";
|
||||||
|
for (var day in state.weekDay.value) {
|
||||||
|
int index = day % 7; // 将周日的索引转换为 0
|
||||||
|
weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}';
|
||||||
|
}
|
||||||
|
// print("weekStrweekStrweekStr:$weekStr");
|
||||||
|
int weekRound = int.parse(weekStr, radix: 2);
|
||||||
|
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
var token = await Storage.getStringList(saveBlueToken);
|
var token = await Storage.getStringList(saveBlueToken);
|
||||||
List<int> getTokenList = changeStringListToIntList(token!);
|
List<int> getTokenList = changeStringListToIntList(token!);
|
||||||
|
|
||||||
Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
|
Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
|
||||||
IoSenderManage.senderAddFingerprintCommand(
|
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
|
||||||
keyID:"1",
|
keyID:"1",
|
||||||
userID:await Storage.getUid(),
|
userID:await Storage.getUid(),
|
||||||
fingerNo:state.isAdministrator.value == "2" ? 254 : 1,
|
fingerNo:state.isAdministrator.value == "2" ? 254 : 1,
|
||||||
useCountLimit:0xff,
|
useCountLimit:0xff,
|
||||||
// startTime:0x11223344,
|
isForce:state.isCoerced.value == "1" ? 0 : 1, // 是否是胁迫
|
||||||
// endTime:0x11223344,
|
isRound:state.selectType.value == "2" ? 1: 0, // 是否是循环
|
||||||
startTime:int.parse(state.startDate.value)~/1000,
|
weekRound:weekRound, // 周循环
|
||||||
endTime:int.parse(state.endDate.value)~/1000,
|
startDate: int.parse(state.startDate.value)~/1000,
|
||||||
|
endDate: int.parse(state.endDate.value)~/1000,
|
||||||
|
startTime:int.parse(state.effectiveDateTime.value)~/1000,
|
||||||
|
endTime:int.parse(state.failureDateTime.value)~/1000,
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
@ -286,6 +318,45 @@ class AddFingerprintLogic extends BaseGetXController {
|
|||||||
Get.close(1);
|
Get.close(1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||||
|
// if (deviceConnectionState == BluetoothConnectionState.connected){
|
||||||
|
// cancelBlueConnetctToastTimer();
|
||||||
|
// // var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
|
// // List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
//
|
||||||
|
// var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
|
// List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
//
|
||||||
|
// var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
// List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
//
|
||||||
|
// var token = await Storage.getStringList(saveBlueToken);
|
||||||
|
// List<int> getTokenList = changeStringListToIntList(token!);
|
||||||
|
//
|
||||||
|
// Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
|
||||||
|
// 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);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加胁迫指纹
|
// 添加胁迫指纹
|
||||||
|
|||||||
@ -22,6 +22,7 @@ class AddFingerprintState{
|
|||||||
final fromType = 1.obs;
|
final fromType = 1.obs;
|
||||||
final effectiveDateTime = "".obs;// 生效时间
|
final effectiveDateTime = "".obs;// 生效时间
|
||||||
final failureDateTime = "".obs;// 失效时间
|
final failureDateTime = "".obs;// 失效时间
|
||||||
|
final selectType = "0".obs;// 0永久 1显示 2循环
|
||||||
|
|
||||||
AddFingerprintState() {
|
AddFingerprintState() {
|
||||||
Map map = Get.arguments;
|
Map map = Get.arguments;
|
||||||
@ -40,5 +41,6 @@ class AddFingerprintState{
|
|||||||
fromType.value = map["fromType"];
|
fromType.value = map["fromType"];
|
||||||
effectiveDateTime.value = map["effectiveTime"];
|
effectiveDateTime.value = map["effectiveTime"];
|
||||||
failureDateTime.value = map["failureTime"];
|
failureDateTime.value = map["failureTime"];
|
||||||
|
selectType.value = map["selectType"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -77,6 +77,7 @@ class AddFingerprintTypeLogic extends BaseGetXController{
|
|||||||
"isAdministrator": state.isAdministrator.value == false ? "1" : "2", // 1:不是管理员 2:是管理员
|
"isAdministrator": state.isAdministrator.value == false ? "1" : "2", // 1:不是管理员 2:是管理员
|
||||||
"effectiveTime": startTime,
|
"effectiveTime": startTime,
|
||||||
"failureTime": endTime,
|
"failureTime": endTime,
|
||||||
|
"selectType": state.selectType.value,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -52,8 +52,11 @@ class FingerprintDetailLogic extends BaseGetXController{
|
|||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
var token = await Storage.getStringList(saveBlueToken);
|
var token = await Storage.getStringList(saveBlueToken);
|
||||||
List<int> getTokenList = changeStringListToIntList(token!);
|
List<int> getTokenList = changeStringListToIntList(token!);
|
||||||
@ -67,7 +70,7 @@ class FingerprintDetailLogic extends BaseGetXController{
|
|||||||
startTime:int.parse(state.starDate.value),
|
startTime:int.parse(state.starDate.value),
|
||||||
endTime:int.parse(state.endDate.value),
|
endTime:int.parse(state.endDate.value),
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
@ -101,8 +104,11 @@ class FingerprintDetailLogic extends BaseGetXController{
|
|||||||
});
|
});
|
||||||
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||||
if (deviceConnectionState == BluetoothConnectionState.connected){
|
if (deviceConnectionState == BluetoothConnectionState.connected){
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
@ -120,7 +126,7 @@ class FingerprintDetailLogic extends BaseGetXController{
|
|||||||
startTime:int.parse(state.starDate.value),
|
startTime:int.parse(state.starDate.value),
|
||||||
endTime:int.parse(state.endDate.value),
|
endTime:int.parse(state.endDate.value),
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -64,8 +64,11 @@ class FingerprintListLogic extends BaseGetXController{
|
|||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
var token = await Storage.getStringList(saveBlueToken);
|
var token = await Storage.getStringList(saveBlueToken);
|
||||||
List<int> getTokenList = changeStringListToIntList(token!);
|
List<int> getTokenList = changeStringListToIntList(token!);
|
||||||
@ -78,7 +81,7 @@ class FingerprintListLogic extends BaseGetXController{
|
|||||||
startTime:0x11223344,
|
startTime:0x11223344,
|
||||||
endTime:0x11223344,
|
endTime:0x11223344,
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
@ -299,8 +302,11 @@ class FingerprintListLogic extends BaseGetXController{
|
|||||||
});
|
});
|
||||||
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||||
if (deviceConnectionState == BluetoothConnectionState.connected){
|
if (deviceConnectionState == BluetoothConnectionState.connected){
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
@ -316,7 +322,7 @@ class FingerprintListLogic extends BaseGetXController{
|
|||||||
startTime:0x11223344,
|
startTime:0x11223344,
|
||||||
endTime:0x11223344,
|
endTime:0x11223344,
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -52,8 +52,11 @@ class IrisDetailLogic extends BaseGetXController {
|
|||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
var token = await Storage.getStringList(saveBlueToken);
|
var token = await Storage.getStringList(saveBlueToken);
|
||||||
List<int> getTokenList = changeStringListToIntList(token!);
|
List<int> getTokenList = changeStringListToIntList(token!);
|
||||||
@ -67,7 +70,7 @@ class IrisDetailLogic extends BaseGetXController {
|
|||||||
startTime: int.parse(state.starDate.value),
|
startTime: int.parse(state.starDate.value),
|
||||||
endTime: int.parse(state.endDate.value),
|
endTime: int.parse(state.endDate.value),
|
||||||
needAuthor: 1,
|
needAuthor: 1,
|
||||||
publicKey: publicKeyDataList,
|
signKey: signKeyDataList,
|
||||||
privateKey: getPrivateKeyList,
|
privateKey: getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
@ -105,8 +108,11 @@ class IrisDetailLogic extends BaseGetXController {
|
|||||||
BlueManage().bludSendData(BlueManage().connectDeviceName,
|
BlueManage().bludSendData(BlueManage().connectDeviceName,
|
||||||
(BluetoothConnectionState deviceConnectionState) async {
|
(BluetoothConnectionState deviceConnectionState) async {
|
||||||
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
@ -124,7 +130,7 @@ class IrisDetailLogic extends BaseGetXController {
|
|||||||
startTime: int.parse(state.starDate.value),
|
startTime: int.parse(state.starDate.value),
|
||||||
endTime: int.parse(state.endDate.value),
|
endTime: int.parse(state.endDate.value),
|
||||||
needAuthor: 1,
|
needAuthor: 1,
|
||||||
publicKey: publicKeyDataList,
|
signKey: signKeyDataList,
|
||||||
privateKey: getPrivateKeyList,
|
privateKey: getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import 'dart:io';
|
|||||||
|
|
||||||
// import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
|
// import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
|
||||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
import 'package:network_info_plus/network_info_plus.dart';
|
import 'package:network_info_plus/network_info_plus.dart';
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
import 'package:star_lock/tools/baseGetXController.dart';
|
import 'package:star_lock/tools/baseGetXController.dart';
|
||||||
@ -68,7 +69,9 @@ class ConfiguringWifiLogic extends BaseGetXController{
|
|||||||
state.sureBtnState.value = 0;
|
state.sureBtnState.value = 0;
|
||||||
cancelBlueConnetctToastTimer();
|
cancelBlueConnetctToastTimer();
|
||||||
dismissEasyLoading();
|
dismissEasyLoading();
|
||||||
showToast("配网成功");
|
showToast("配网成功", something:(){
|
||||||
|
Get.close(2);
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
case 0x06:
|
case 0x06:
|
||||||
//无权限
|
//无权限
|
||||||
|
|||||||
@ -1,15 +1,12 @@
|
|||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/cupertino.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter/scheduler.dart';
|
import 'package:flutter/scheduler.dart';
|
||||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/blue/io_type.dart';
|
import 'package:star_lock/blue/io_type.dart';
|
||||||
import 'package:star_lock/tools/showTipView.dart';
|
import 'package:star_lock/tools/showTipView.dart';
|
||||||
|
|
||||||
import '../../../../appRouters.dart';
|
|
||||||
import '../../../../blue/blue_manage.dart';
|
import '../../../../blue/blue_manage.dart';
|
||||||
import '../../../../blue/io_protocol/io_factoryDataReset.dart';
|
import '../../../../blue/io_protocol/io_factoryDataReset.dart';
|
||||||
import '../../../../blue/io_protocol/io_setSupportFunctionsNoParameters.dart';
|
import '../../../../blue/io_protocol/io_setSupportFunctionsNoParameters.dart';
|
||||||
@ -20,9 +17,7 @@ import '../../../../blue/sender_manage.dart';
|
|||||||
import '../../../../network/api_repository.dart';
|
import '../../../../network/api_repository.dart';
|
||||||
import '../../../../tools/baseGetXController.dart';
|
import '../../../../tools/baseGetXController.dart';
|
||||||
import '../../../../tools/eventBusEventManage.dart';
|
import '../../../../tools/eventBusEventManage.dart';
|
||||||
import '../../../../tools/showTFView.dart';
|
|
||||||
import '../../../../tools/storage.dart';
|
import '../../../../tools/storage.dart';
|
||||||
import '../../../../translations/trans_lib.dart';
|
|
||||||
import 'checkingInInfoData_entity.dart';
|
import 'checkingInInfoData_entity.dart';
|
||||||
import 'lockSetInfo_entity.dart';
|
import 'lockSetInfo_entity.dart';
|
||||||
import 'lockSet_state.dart';
|
import 'lockSet_state.dart';
|
||||||
|
|||||||
@ -51,8 +51,11 @@ class PalmDetailLogic extends BaseGetXController {
|
|||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
var token = await Storage.getStringList(saveBlueToken);
|
var token = await Storage.getStringList(saveBlueToken);
|
||||||
List<int> getTokenList = changeStringListToIntList(token!);
|
List<int> getTokenList = changeStringListToIntList(token!);
|
||||||
@ -66,7 +69,7 @@ class PalmDetailLogic extends BaseGetXController {
|
|||||||
startTime: int.parse(state.starDate.value),
|
startTime: int.parse(state.starDate.value),
|
||||||
endTime: int.parse(state.endDate.value),
|
endTime: int.parse(state.endDate.value),
|
||||||
needAuthor: 1,
|
needAuthor: 1,
|
||||||
publicKey: publicKeyDataList,
|
signKey: signKeyDataList,
|
||||||
privateKey: getPrivateKeyList,
|
privateKey: getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
@ -104,8 +107,11 @@ class PalmDetailLogic extends BaseGetXController {
|
|||||||
BlueManage().bludSendData(BlueManage().connectDeviceName,
|
BlueManage().bludSendData(BlueManage().connectDeviceName,
|
||||||
(BluetoothConnectionState deviceConnectionState) async {
|
(BluetoothConnectionState deviceConnectionState) async {
|
||||||
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
@ -123,7 +129,7 @@ class PalmDetailLogic extends BaseGetXController {
|
|||||||
startTime: int.parse(state.starDate.value),
|
startTime: int.parse(state.starDate.value),
|
||||||
endTime: int.parse(state.endDate.value),
|
endTime: int.parse(state.endDate.value),
|
||||||
needAuthor: 1,
|
needAuthor: 1,
|
||||||
publicKey: publicKeyDataList,
|
signKey: signKeyDataList,
|
||||||
privateKey: getPrivateKeyList,
|
privateKey: getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -308,7 +308,7 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
|||||||
var token = await Storage.getStringList(saveBlueToken);
|
var token = await Storage.getStringList(saveBlueToken);
|
||||||
List<int> getTokenList = changeStringListToIntList(token!);
|
List<int> getTokenList = changeStringListToIntList(token!);
|
||||||
|
|
||||||
// Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
|
Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
|
||||||
IoSenderManage.senderCustomPasswordsCommand(
|
IoSenderManage.senderCustomPasswordsCommand(
|
||||||
keyID: "1",
|
keyID: "1",
|
||||||
userID: await Storage.getUid(),
|
userID: await Storage.getUid(),
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||||
// import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/blue/io_protocol/io_changeAdministratorPassword.dart';
|
import 'package:star_lock/blue/io_protocol/io_changeAdministratorPassword.dart';
|
||||||
import 'package:star_lock/blue/io_protocol/io_senderCustomPasswords.dart';
|
import 'package:star_lock/blue/io_protocol/io_senderCustomPasswords.dart';
|
||||||
@ -48,21 +48,18 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
// 添加用户
|
// 添加用户
|
||||||
Future<void> _replyAddUserKey(Reply reply) async {
|
Future<void> _replyAddUserKey(Reply reply) async {
|
||||||
var lockId = reply.data.sublist(2, 42);
|
var lockId = reply.data.sublist(2, 42);
|
||||||
// print("lockId:$lockId");
|
|
||||||
|
|
||||||
var token = reply.data.sublist(42, 46);
|
var token = reply.data.sublist(42, 46);
|
||||||
List<String> strTokenList = changeIntListToStringList(token);
|
List<String> strTokenList = changeIntListToStringList(token);
|
||||||
Storage.setStringList(saveBlueToken, strTokenList);
|
Storage.setStringList(saveBlueToken, strTokenList);
|
||||||
// print("token:$token");
|
|
||||||
|
|
||||||
int status = reply.data[46];
|
int status = reply.data[46];
|
||||||
// print("status:$status reply.data:${reply.data}");
|
|
||||||
|
|
||||||
print("status:$status");
|
Get.log("status:$status");
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
//成功
|
//成功
|
||||||
print("添加用户数据解析成功");
|
Get.log("添加用户数据解析成功");
|
||||||
state.lockUserNo = reply.data[47];
|
state.lockUserNo = reply.data[47];
|
||||||
|
|
||||||
cancelBlueConnetctToastTimer();
|
cancelBlueConnetctToastTimer();
|
||||||
@ -70,7 +67,7 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
break;
|
break;
|
||||||
case 0x06:
|
case 0x06:
|
||||||
//无权限
|
//无权限
|
||||||
print("需要鉴权");
|
Get.log("需要鉴权");
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
@ -95,17 +92,17 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
break;
|
break;
|
||||||
case 0x07:
|
case 0x07:
|
||||||
//无权限
|
//无权限
|
||||||
print("用户无权限");
|
Get.log("用户无权限");
|
||||||
dismissEasyLoading();
|
dismissEasyLoading();
|
||||||
break;
|
break;
|
||||||
case 0x09:
|
case 0x09:
|
||||||
// 权限校验错误
|
// 权限校验错误
|
||||||
print("添加用户权限校验错误");
|
Get.log("添加用户权限校验错误");
|
||||||
dismissEasyLoading();
|
dismissEasyLoading();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
//失败
|
//失败
|
||||||
print("领锁失败");
|
Get.log("领锁失败");
|
||||||
dismissEasyLoading();
|
dismissEasyLoading();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -115,22 +112,21 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
Future<void> _replySenderCustomPasswords(Reply reply) async {
|
Future<void> _replySenderCustomPasswords(Reply reply) async {
|
||||||
var token = reply.data.sublist(5, 9);
|
var token = reply.data.sublist(5, 9);
|
||||||
var saveStrList = changeIntListToStringList(token);
|
var saveStrList = changeIntListToStringList(token);
|
||||||
print("_replyFactoryDataResetKeyToken:$token");
|
|
||||||
Storage.setStringList(saveBlueToken, saveStrList);
|
Storage.setStringList(saveBlueToken, saveStrList);
|
||||||
|
|
||||||
int status = reply.data[2];
|
int status = reply.data[2];
|
||||||
print("status:$status");
|
Get.log("status:$status");
|
||||||
|
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
//成功
|
//成功
|
||||||
print("${reply.commandType!.typeValue} 数据解析成功");
|
Get.log("${reply.commandType!.typeValue} 数据解析成功");
|
||||||
dismissEasyLoading();
|
dismissEasyLoading();
|
||||||
addLockAdminPassword(true);
|
addLockAdminPassword(true);
|
||||||
break;
|
break;
|
||||||
case 0x06:
|
case 0x06:
|
||||||
//无权限
|
//无权限
|
||||||
print("${reply.commandType!.typeValue} 需要鉴权");
|
Get.log("${reply.commandType!.typeValue} 需要鉴权");
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
@ -151,19 +147,16 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
token: token);
|
token: token);
|
||||||
break;
|
break;
|
||||||
case 0x07:
|
case 0x07:
|
||||||
//无权限
|
//无权限
|
||||||
print("${reply.commandType!.typeValue} 用户无权限");
|
Get.log("${reply.commandType!.typeValue} 用户无权限");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 0x09:
|
case 0x09:
|
||||||
// 权限校验错误
|
// 权限校验错误
|
||||||
print("${reply.commandType!.typeValue} 权限校验错误");
|
Get.log("${reply.commandType!.typeValue} 权限校验错误");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
//失败
|
//失败
|
||||||
print("${reply.commandType!.typeValue} 失败");
|
Get.log("${reply.commandType!.typeValue} 失败");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -172,22 +165,21 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
Future<void> _replyChangeAdministratorPassword(Reply reply) async {
|
Future<void> _replyChangeAdministratorPassword(Reply reply) async {
|
||||||
var token = reply.data.sublist(5, 9);
|
var token = reply.data.sublist(5, 9);
|
||||||
var saveStrList = changeIntListToStringList(token);
|
var saveStrList = changeIntListToStringList(token);
|
||||||
print("_replyFactoryDataResetKeyToken:$token");
|
|
||||||
Storage.setStringList(saveBlueToken, saveStrList);
|
Storage.setStringList(saveBlueToken, saveStrList);
|
||||||
|
|
||||||
int status = reply.data[2];
|
int status = reply.data[2];
|
||||||
print("status:$status");
|
Get.log("status:$status");
|
||||||
|
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
//成功
|
//成功
|
||||||
print("${reply.commandType!.typeValue} 数据解析成功");
|
Get.log("${reply.commandType!.typeValue} 数据解析成功");
|
||||||
cancelBlueConnetctToastTimer();
|
cancelBlueConnetctToastTimer();
|
||||||
addLockAdminPassword(false);
|
addLockAdminPassword(false);
|
||||||
break;
|
break;
|
||||||
case 0x06:
|
case 0x06:
|
||||||
//无权限
|
//无权限
|
||||||
print("${reply.commandType!.typeValue} 需要鉴权");
|
Get.log("${reply.commandType!.typeValue} 需要鉴权");
|
||||||
|
|
||||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
@ -209,26 +201,22 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
token: token);
|
token: token);
|
||||||
break;
|
break;
|
||||||
case 0x07:
|
case 0x07:
|
||||||
//无权限
|
// 无权限
|
||||||
print("${reply.commandType!.typeValue} 用户无权限");
|
Get.log("${reply.commandType!.typeValue} 用户无权限");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 0x09:
|
case 0x09:
|
||||||
// 权限校验错误
|
// 权限校验错误
|
||||||
print("${reply.commandType!.typeValue} 权限校验错误");
|
Get.log("${reply.commandType!.typeValue} 权限校验错误");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
//失败
|
// 失败
|
||||||
print("${reply.commandType!.typeValue} 失败");
|
Get.log("${reply.commandType!.typeValue} 失败");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加用户
|
// 添加用户
|
||||||
Future<void> addUserConnectBlue() async {
|
Future<void> addUserConnectBlue() async {
|
||||||
// print("111111");
|
|
||||||
// 进来之后首先连接
|
// 进来之后首先连接
|
||||||
showEasyLoading();
|
showEasyLoading();
|
||||||
showBlueConnetctToastTimer(action: (){
|
showBlueConnetctToastTimer(action: (){
|
||||||
@ -236,9 +224,7 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
state.saveBtnIsUsable.value = true;
|
state.saveBtnIsUsable.value = true;
|
||||||
});
|
});
|
||||||
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||||
// print("222222");
|
|
||||||
if (deviceConnectionState == BluetoothConnectionState.connected){
|
if (deviceConnectionState == BluetoothConnectionState.connected){
|
||||||
// print("333333");
|
|
||||||
// 私钥
|
// 私钥
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
@ -269,7 +255,6 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
token: getTokenList
|
token: getTokenList
|
||||||
);
|
);
|
||||||
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
|
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
|
||||||
print("444444");
|
|
||||||
dismissEasyLoading();
|
dismissEasyLoading();
|
||||||
cancelBlueConnetctToastTimer();
|
cancelBlueConnetctToastTimer();
|
||||||
state.saveBtnIsUsable.value = true;
|
state.saveBtnIsUsable.value = true;
|
||||||
@ -296,7 +281,6 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
|
|
||||||
var token = await Storage.getStringList(saveBlueToken);
|
var token = await Storage.getStringList(saveBlueToken);
|
||||||
List<int> getTokenList = changeStringListToIntList(token!);
|
List<int> getTokenList = changeStringListToIntList(token!);
|
||||||
print("openDoorTokenPubToken:$getTokenList");
|
|
||||||
|
|
||||||
IoSenderManage.senderCustomPasswordsCommand(
|
IoSenderManage.senderCustomPasswordsCommand(
|
||||||
keyID: "1",
|
keyID: "1",
|
||||||
@ -330,7 +314,7 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
|
|
||||||
var token = await Storage.getStringList(saveBlueToken);
|
var token = await Storage.getStringList(saveBlueToken);
|
||||||
List<int> getTokenList = changeStringListToIntList(token!);
|
List<int> getTokenList = changeStringListToIntList(token!);
|
||||||
print("openDoorTokenPubToken:$getTokenList");
|
Get.log("openDoorTokenPubToken:$getTokenList");
|
||||||
|
|
||||||
IoSenderManage.changeAdministratorPasswordCommand(
|
IoSenderManage.changeAdministratorPasswordCommand(
|
||||||
keyID: "1",
|
keyID: "1",
|
||||||
@ -345,7 +329,6 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
privateKey: getPrivateKeyList,
|
privateKey: getPrivateKeyList,
|
||||||
token: getTokenList);
|
token: getTokenList);
|
||||||
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
|
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
|
||||||
print("444444");
|
|
||||||
dismissEasyLoading();
|
dismissEasyLoading();
|
||||||
cancelBlueConnetctToastTimer();
|
cancelBlueConnetctToastTimer();
|
||||||
state.saveBtnIsUsable.value = true;
|
state.saveBtnIsUsable.value = true;
|
||||||
@ -357,7 +340,6 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void bindBlueAdmin() async{
|
void bindBlueAdmin() async{
|
||||||
// print("state.lockInfo:${state.lockInfo}");
|
|
||||||
|
|
||||||
var positionMap = {};
|
var positionMap = {};
|
||||||
positionMap['longitude'] = state.addressInfo["longitude"];
|
positionMap['longitude'] = state.addressInfo["longitude"];
|
||||||
@ -385,8 +367,6 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
bluetooth['signKey'] = signKeyDataList;
|
bluetooth['signKey'] = signKeyDataList;
|
||||||
|
|
||||||
// print("addUser:publicKeyDataList$publicKeyDataList getPrivateKeyList:$getPrivateKeyList signKeyDataList:$signKeyDataList");
|
|
||||||
|
|
||||||
var entity = await ApiRepository.to.bindingBlueAdmin(
|
var entity = await ApiRepository.to.bindingBlueAdmin(
|
||||||
lockAlias: state.aliName.value,
|
lockAlias: state.aliName.value,
|
||||||
position: positionMap,
|
position: positionMap,
|
||||||
@ -468,7 +448,6 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
void onReady() {
|
void onReady() {
|
||||||
// TODO: implement onReady
|
// TODO: implement onReady
|
||||||
super.onReady();
|
super.onReady();
|
||||||
print("onReady()");
|
|
||||||
|
|
||||||
_initReplySubscription();
|
_initReplySubscription();
|
||||||
}
|
}
|
||||||
@ -477,7 +456,7 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
void onInit() {
|
void onInit() {
|
||||||
// TODO: implement onInit
|
// TODO: implement onInit
|
||||||
super.onInit();
|
super.onInit();
|
||||||
print("onInit()");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -487,4 +466,5 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
BlueManage().stopScan();
|
BlueManage().stopScan();
|
||||||
super.onClose();
|
super.onClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,8 +52,11 @@ class ExpireCardLogic extends BaseGetXController {
|
|||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
var token = await Storage.getStringList(saveBlueToken);
|
var token = await Storage.getStringList(saveBlueToken);
|
||||||
List<int> getTokenList = changeStringListToIntList(token!);
|
List<int> getTokenList = changeStringListToIntList(token!);
|
||||||
@ -67,7 +70,7 @@ class ExpireCardLogic extends BaseGetXController {
|
|||||||
startTime:state.deletExpireCardItemEntity.startDate!~/1000,
|
startTime:state.deletExpireCardItemEntity.startDate!~/1000,
|
||||||
endTime:state.deletExpireCardItemEntity.endDate!~/1000,
|
endTime:state.deletExpireCardItemEntity.endDate!~/1000,
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
@ -104,8 +107,11 @@ class ExpireCardLogic extends BaseGetXController {
|
|||||||
});
|
});
|
||||||
BlueManage().bludSendData(state.deletExpireCardItemEntity.lockInfo!.btDeviceName!, (BluetoothConnectionState deviceConnectionState) async {
|
BlueManage().bludSendData(state.deletExpireCardItemEntity.lockInfo!.btDeviceName!, (BluetoothConnectionState deviceConnectionState) async {
|
||||||
if (deviceConnectionState == BluetoothConnectionState.connected){
|
if (deviceConnectionState == BluetoothConnectionState.connected){
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
@ -123,7 +129,7 @@ class ExpireCardLogic extends BaseGetXController {
|
|||||||
startTime:state.deletExpireCardItemEntity.startDate!~/1000,
|
startTime:state.deletExpireCardItemEntity.startDate!~/1000,
|
||||||
endTime:state.deletExpireCardItemEntity.endDate!~/1000,
|
endTime:state.deletExpireCardItemEntity.endDate!~/1000,
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -53,6 +53,9 @@ class ExpireFingerprintLogic extends BaseGetXController {
|
|||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
@ -68,7 +71,7 @@ class ExpireFingerprintLogic extends BaseGetXController {
|
|||||||
startTime:state.deletExpireFingerprintItemEntity.startDate!~/1000,
|
startTime:state.deletExpireFingerprintItemEntity.startDate!~/1000,
|
||||||
endTime:state.deletExpireFingerprintItemEntity.endDate!~/1000,
|
endTime:state.deletExpireFingerprintItemEntity.endDate!~/1000,
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
@ -105,8 +108,11 @@ class ExpireFingerprintLogic extends BaseGetXController {
|
|||||||
});
|
});
|
||||||
BlueManage().bludSendData(state.deletExpireFingerprintItemEntity.lockInfo!.btDeviceName!, (BluetoothConnectionState deviceConnectionState) async {
|
BlueManage().bludSendData(state.deletExpireFingerprintItemEntity.lockInfo!.btDeviceName!, (BluetoothConnectionState deviceConnectionState) async {
|
||||||
if (deviceConnectionState == BluetoothConnectionState.connected){
|
if (deviceConnectionState == BluetoothConnectionState.connected){
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
|
||||||
|
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||||
|
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||||
|
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
@ -124,7 +130,7 @@ class ExpireFingerprintLogic extends BaseGetXController {
|
|||||||
startTime:state.deletExpireFingerprintItemEntity.startDate!~/1000,
|
startTime:state.deletExpireFingerprintItemEntity.startDate!~/1000,
|
||||||
endTime:state.deletExpireFingerprintItemEntity.endDate!~/1000,
|
endTime:state.deletExpireFingerprintItemEntity.endDate!~/1000,
|
||||||
needAuthor:1,
|
needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
signKey:signKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
);
|
);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user