Merge branch 'master' of gitee.com:starlock-cn/app-starlock

This commit is contained in:
Daisy 2024-04-20 18:13:21 +08:00
commit 48d6c32afd
21 changed files with 730 additions and 354 deletions

View File

@ -245,9 +245,9 @@ class BlueManage {
// if (scanResult.device.advName.isEmpty) { // if (scanResult.device.advName.isEmpty) {
// return; // return;
// } // }
// Get.log("scanResult.device.advName:${scanResult.device.advName}" Get.log("scanResult.device.advName:${scanResult.device.advName}"
// " scanResult.advertisementData.serviceUuids:${scanResult.advertisementData.serviceUuids}" " scanResult.advertisementData.serviceUuids:${scanResult.advertisementData.serviceUuids}"
// " rssi:${scanResult.rssi}"); " rssi:${scanResult.rssi}");
if (((scanResult.advertisementData.serviceUuids.isNotEmpty if (((scanResult.advertisementData.serviceUuids.isNotEmpty
? scanResult.advertisementData.serviceUuids[0] ? scanResult.advertisementData.serviceUuids[0]
: "") : "")
@ -328,6 +328,7 @@ class BlueManage {
// //
bool isExistDevice = scanDevices.any((element) => element.device.platformName == connectDeviceName || element.advertisementData.advName == connectDeviceName); bool isExistDevice = scanDevices.any((element) => element.device.platformName == connectDeviceName || element.advertisementData.advName == connectDeviceName);
if (isAddEquipment == false && isExistDevice == false) { if (isAddEquipment == false && isExistDevice == false) {
// startScan(10, (scanDevices){
startScanSingle(deviceName, 10, (List<ScanResult> scanDevices) { startScanSingle(deviceName, 10, (List<ScanResult> scanDevices) {
print("扫描到的设备:$scanDevices"); print("扫描到的设备:$scanDevices");
devicesList = scanDevices; devicesList = scanDevices;

View File

@ -19,11 +19,16 @@ class SenderAddFaceCommand extends SenderProtocol {
String? userID; String? userID;
int? faceNo; int? faceNo;
int? useCountLimit; int? useCountLimit;
int? isForce;
List<int>? token; List<int>? token;
int? startTime; int? isRound;
int? endTime; int? weekRound;
int? startDate;
int? endDate;
String? startTime;
String? endTime;
int? needAuthor; int? needAuthor;
List<int>? publicKey; List<int>? signKey;
List<int>? privateKey; List<int>? privateKey;
SenderAddFaceCommand({ SenderAddFaceCommand({
@ -31,11 +36,16 @@ class SenderAddFaceCommand extends SenderProtocol {
this.userID, this.userID,
this.faceNo, this.faceNo,
this.useCountLimit, this.useCountLimit,
this.isForce,
this.token, this.token,
this.isRound,
this.weekRound,
this.startDate,
this.endDate,
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);
@ -53,7 +63,7 @@ class SenderAddFaceCommand extends SenderProtocol {
data.add(type1); data.add(type1);
data.add(type2); data.add(type2);
// -- //
data.add(81); data.add(81);
// keyID 40 // keyID 40
@ -68,43 +78,69 @@ class SenderAddFaceCommand extends SenderProtocol {
subData.addAll(utf8.encode(userID!)); subData.addAll(utf8.encode(userID!));
subData = getFixedLengthList(subData, 20 - userIDLength); subData = getFixedLengthList(subData, 20 - userIDLength);
// PwdNo // fingerNo
subData.add(faceNo!); subData.add(faceNo!);
// UseCountLimit // UseCountLimit
subData.add(useCountLimit!); subData.add(useCountLimit!);
// isForce
subData.add(isForce!);
// token // token
subData.addAll(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 // startTime 4
subData.add((startTime! & 0xff000000) >> 24); List<int> startTimeList = [0,0,0,0];
subData.add((startTime! & 0xff0000) >> 16); if(startTime!.contains(":")){
subData.add((startTime! & 0xff00) >> 8); List<String> getStartTimeList = startTime!.split(":");
subData.add((startTime! & 0xff)); startTimeList[2] = int.parse(getStartTimeList[0]);
startTimeList[3] = int.parse(getStartTimeList[1]);
}
subData.addAll(startTimeList);
// endTime 4 // endTime 4
subData.add((endTime! & 0xff000000) >> 24); List<int> endTimeList = [0,0,0,0];
subData.add((endTime! & 0xff0000) >> 16); if(endTime!.contains(":")){
subData.add((endTime! & 0xff00) >> 8); List<String> getendTimeList = endTime!.split(":");
subData.add((endTime! & 0xff)); endTimeList[2] = int.parse(getendTimeList[0]);
endTimeList[3] = int.parse(getendTimeList[1]);
}
subData.addAll(endTimeList);
if(needAuthor == 0){ if(needAuthor == 0){
//AuthCodeLen 1 //AuthCodeLen 1
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!);
// KeyIDauthUserIDmd5加密之后就是authCode // KeyIDauthUserIDmd5加密之后就是authCode
var authCode = crypto.md5.convert(authCodeData); var authCode = crypto.md5.convert(authCodeData);

View File

@ -0,0 +1,188 @@
import '../io_sender.dart';
import '../io_type.dart';
///TODO:
/*
UseCountLimit 0 UseCountLimit 0FingerNo 255userId Delete All !@#
**/
// class SenderAddFaceWithTimeCycleCoercionCommand extends SenderProtocol {
//
// String? keyID;
// String? userID;
// int? fingerNo;
// int? useCountLimit;
// int? isForce;
// List<int>? token;
// int? isRound;
// int? weekRound;
// int? startDate;
// int? endDate;
// String? startTime;
// String? endTime;
// int? needAuthor;
// List<int>? signKey;
// List<int>? privateKey;
//
// SenderAddFaceWithTimeCycleCoercionCommand({
// 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 = [];
//
// //
// 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
// List<int> startTimeList = [0,0,0,0];
// if(startTime!.contains(":")){
// List<String> getStartTimeList = startTime!.split(":");
// startTimeList[2] = int.parse(getStartTimeList[0]);
// startTimeList[3] = int.parse(getStartTimeList[1]);
// }
// subData.addAll(startTimeList);
//
// // endTime 4
// List<int> endTimeList = [0,0,0,0];
// if(endTime!.contains(":")){
// List<String> getendTimeList = endTime!.split(":");
// endTimeList[2] = int.parse(getendTimeList[0]);
// endTimeList[3] = int.parse(getendTimeList[1]);
// }
// subData.addAll(endTimeList);
//
// 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!);
//
// // KeyIDauthUserIDmd5加密之后就是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);
// }
// }
//
// Get.log("${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;
// int status = data[2];
// errorWithStstus(status);
// }
// }
//
// class SenderAddFingerprintProcessReply extends Reply {
// SenderAddFingerprintProcessReply.parseData(CommandType commandType, List<int> dataDetail)
// : super.parseData(commandType, dataDetail) {
// data = dataDetail;
// int status = data[2];
// errorWithStstus(status);
// }
// }
//
// class SenderAddFingerprintConfirmationReply extends Reply {
// SenderAddFingerprintConfirmationReply.parseData(CommandType commandType, List<int> dataDetail)
// : super.parseData(commandType, dataDetail) {
// data = dataDetail;
// int status = data[2];
// errorWithStstus(status);
// }
// }

View File

@ -472,11 +472,16 @@ class IoSenderManage {
required String? userID, required String? userID,
required int? faceNo, required int? faceNo,
required int? useCountLimit, required int? useCountLimit,
required int? isForce,
required List<int>? token, required List<int>? token,
required int? startTime, required int? isRound,
required int? endTime, required int? weekRound,
required int? startDate,
required int? endDate,
required String? startTime,
required String? 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(
@ -485,11 +490,16 @@ class IoSenderManage {
userID: userID, userID: userID,
faceNo: faceNo, faceNo: faceNo,
useCountLimit: useCountLimit, useCountLimit: useCountLimit,
isForce: isForce,
token: token, token: token,
isRound: isRound,
weekRound: weekRound,
startDate: startDate,
endDate: endDate,
startTime: startTime, startTime: startTime,
endTime: endTime, endTime: endTime,
needAuthor: needAuthor, needAuthor: needAuthor,
publicKey: publicKey, signKey: signKey,
privateKey: privateKey, privateKey: privateKey,
), ),
callBack: callBack); callBack: callBack);

View File

@ -1,12 +1,9 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter/cupertino.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/appRouters.dart';
import 'package:star_lock/blue/io_type.dart'; import 'package:star_lock/blue/io_type.dart';
import 'package:star_lock/tools/dateTool.dart'; import 'package:star_lock/tools/dateTool.dart';
import 'package:star_lock/translations/trans_lib.dart';
import '../../../../blue/blue_manage.dart'; import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_reply.dart'; import '../../../../blue/io_reply.dart';
@ -33,21 +30,20 @@ class AuthorizedAdminLogic extends BaseGetXController {
if (reply is TransferPermissionsReply) { if (reply is TransferPermissionsReply) {
var token = reply.data.sublist(2, 6); var token = reply.data.sublist(2, 6);
var saveStrList = changeIntListToStringList(token); var saveStrList = changeIntListToStringList(token);
print("_replyFactoryDataResetKeyToken:$token"); Get.log("_replyFactoryDataResetKeyToken:$token");
Storage.setStringList(saveBlueToken, saveStrList); Storage.setStringList(saveBlueToken, saveStrList);
int status = reply.data[6]; int status = reply.data[6];
print("status:$status"); Get.log("status:$status");
switch (status) { switch (status) {
case 0x00: case 0x00:
// //
print("${reply.commandType!.typeValue} 数据解析成功"); Get.log("${reply.commandType!.typeValue} 数据解析成功");
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 = List<int> getPrivateKeyList =
changeStringListToIntList(privateKey!); changeStringListToIntList(privateKey!);
@ -67,25 +63,7 @@ class AuthorizedAdminLogic extends BaseGetXController {
privateKey: getPrivateKeyList, privateKey: getPrivateKeyList,
token: getTokenList); token: getTokenList);
break; break;
case 0x07:
//
print("${reply.commandType!.typeValue} 用户无权限");
break;
case 0x09:
//
print("${reply.commandType!.typeValue} 权限校验错误");
break;
case 0x14:
//
print("${reply.commandType!.typeValue} 用户已存在");
break;
default: default:
//
print("${reply.commandType!.typeValue} 失败");
break; break;
} }
} }
@ -289,7 +267,7 @@ class AuthorizedAdminLogic extends BaseGetXController {
endTime: int.parse(endTime), endTime: int.parse(endTime),
isOnlyManageSelf: state.onlyManageYouCreatesUser.value ? 1 : 0); isOnlyManageSelf: state.onlyManageYouCreatesUser.value ? 1 : 0);
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
print('发送电子钥匙成功'); Get.log('发送电子钥匙成功');
state.isCreateUser.value = false; state.isCreateUser.value = false;
state.isSendSuccess.value = true; state.isSendSuccess.value = true;
// Toast.show(msg: "添加成功"); // Toast.show(msg: "添加成功");

View File

@ -33,7 +33,6 @@ class AddICCardState{
isAdministrator.value = map["isAdministrator"]; isAdministrator.value = map["isAdministrator"];
print("isAdministrator.value isAdministrator.value:${isAdministrator.value}"); print("isAdministrator.value isAdministrator.value:${isAdministrator.value}");
startDate.value = map["startDate"]; startDate.value = map["startDate"];
lockId.value = map["lockId"];
weekDay.value = map["weekDay"]; weekDay.value = map["weekDay"];
fromType.value = map["fromType"]; fromType.value = map["fromType"];
effectiveDateTime.value = map["effectiveTime"]; effectiveDateTime.value = map["effectiveTime"];

View File

@ -56,8 +56,9 @@ class CardDetailLogic extends BaseGetXController{
// var publicKey = await Storage.getStringList(saveBluePublicKey); // var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!); // List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var token = await Storage.getStringList(saveBlueToken); var token = reply.data.sublist(5, 9);
List<int> getTokenList = changeStringListToIntList(token!); var saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList);
IoSenderManage.senderAddCardWithTimeCycleCoercionCommand( IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
keyID:state.keyId.value.toString(), keyID:state.keyId.value.toString(),
@ -74,7 +75,7 @@ class CardDetailLogic extends BaseGetXController{
needAuthor:1, needAuthor:1,
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: token,
); );
break; break;
default: default:

View File

@ -48,8 +48,8 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
keyType:state.itemData.value.keyType!, keyType:state.itemData.value.keyType!,
startTime:int.parse(state.starTime.value), startTime:int.parse(state.starTime.value),
endTime:int.parse(state.endTime.value), endTime:int.parse(state.endTime.value),
isOnlyManageSelf: state.onlyManageYouCreatesUser.value ? 1 : 0, isOnlyManageSelf: state.onlyManageYouCreatesUser.value == true ? 1 : 0,
remoteEnable: state.isRemoteUnlock.value ? 1 : 2); remoteEnable: state.isRemoteUnlock.value == true ? 1 : 2);
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
showToast("修改成功".tr, something: () { showToast("修改成功".tr, something: () {
eventBus.fire(ElectronicKeyListRefreshUI()); eventBus.fire(ElectronicKeyListRefreshUI());

View File

@ -30,7 +30,7 @@ class ElectronicKeyDetailState {
changeNameController.text = itemData.value.keyName!; changeNameController.text = itemData.value.keyName!;
keyName.value = itemData.value.keyName!; keyName.value = itemData.value.keyName!;
isRemoteUnlock.value = itemData.value.remoteEnable! == 2 ? false : true; isRemoteUnlock.value = itemData.value.remoteEnable! == 1 ? true : false;
onlyManageYouCreatesUser.value = itemData.value.isOnlyManageSelf! == 0 ? false : true; onlyManageYouCreatesUser.value = itemData.value.isOnlyManageSelf! == 0 ? false : true;
starDate.value = itemData.value.startDate!.toString(); starDate.value = itemData.value.startDate!.toString();

View File

@ -1,6 +1,5 @@
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_protocol/io_addFace.dart'; import 'package:star_lock/blue/io_protocol/io_addFace.dart';
@ -16,6 +15,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/storage.dart'; import '../../../../../tools/storage.dart';
import '../../../../tools/dateTool.dart';
class AddFaceLogic extends BaseGetXController { class AddFaceLogic extends BaseGetXController {
final AddFaceState state = AddFaceState(); final AddFaceState state = AddFaceState();
@ -44,7 +44,7 @@ class AddFaceLogic extends BaseGetXController {
Future<void> _replyAddFaceBegin(Reply reply) async { Future<void> _replyAddFaceBegin(Reply reply) async {
int status = reply.data[2]; int status = reply.data[2];
print("status:$status"); print("_replyAddFaceBegin status:$status");
switch (status) { switch (status) {
case 0x00: case 0x00:
@ -59,29 +59,41 @@ class AddFaceLogic extends BaseGetXController {
break; break;
case 0x06: case 0x06:
// //
print("${reply.commandType!.typeValue} 需要鉴权"); var weekStr = "00000000";
print("state.weekDay.value:${state.weekDay.value}");
for (var day in state.weekDay.value) {
int index = day % 7; // 0
weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}';
}
// weekStr
weekStr = weekStr.split('').reversed.join('');
int weekRound = int.parse(weekStr, radix: 2);
// print("weekStrweekStrweekStr:$weekStr weekRound:$weekRound");
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!);
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);
print("_replyAddFaceReplyToken:$token");
Storage.setStringList(saveBlueToken, saveStrList); Storage.setStringList(saveBlueToken, saveStrList);
IoSenderManage.senderAddFaceCommand( IoSenderManage.senderAddFaceCommand(
keyID:"1", keyID:"1",
userID:await Storage.getUid(), userID:await Storage.getUid(),
faceNo: 1, faceNo:state.isAdministrator.value == "2" ? 254 : 1,
useCountLimit:0xff, useCountLimit:0xff,
// startTime:0x11223344, isForce:state.isCoerced.value == "2" ? 1 : 0, //
// endTime:0x11223344, isRound:state.selectType.value == "2" ? 1: 0, //
startTime: state.startDate.value ~/ 1000, weekRound:weekRound, //
endTime: state.endDate.value ~/ 1000, startDate: int.parse(state.startDate.value)~/1000,
endDate: int.parse(state.endDate.value)~/1000,
startTime:DateTool().dateToHNString(state.effectiveDateTime.value),
endTime:DateTool().dateToHNString(state.failureDateTime.value),
needAuthor:1, needAuthor:1,
publicKey: publicKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: token, token: token,
); );
@ -194,8 +206,19 @@ class AddFaceLogic extends BaseGetXController {
(BluetoothConnectionState deviceConnectionState) async { (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected) { if (deviceConnectionState == BluetoothConnectionState.connected) {
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
var publicKey = await Storage.getStringList(saveBluePublicKey); var weekStr = "00000000";
List<int> publicKeyDataList = changeStringListToIntList(publicKey!); print("state.weekDay.value:${state.weekDay.value}");
for (var day in state.weekDay.value) {
int index = day % 7; // 0
weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}';
}
// weekStr
weekStr = weekStr.split('').reversed.join('');
int weekRound = int.parse(weekStr, radix: 2);
// print("weekStrweekStrweekStr:$weekStr weekRound:$weekRound");
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!);
@ -204,20 +227,22 @@ class AddFaceLogic extends BaseGetXController {
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
print( print(
"openDoorTokenPubToken:$getTokenList state.startDate.value:${state.startDate.value}"); "openDoorTokenPubToken:$getTokenList state.startDate.value:${state.startDate.value}");
print( // print("限时人脸开始时间:${state.startDate.value ~/ 1000} 限时人脸结束时间:${state.endDate.value ~/ 1000}");
"限时人脸开始时间:${state.startDate.value ~/ 1000} 限时人脸结束时间:${state.endDate.value ~/ 1000}");
IoSenderManage.senderAddFaceCommand( IoSenderManage.senderAddFaceCommand(
keyID:"1", keyID:"1",
userID:await Storage.getUid(), userID:await Storage.getUid(),
faceNo: state.isAdministrator.value == true ? 254 : 1, faceNo:state.isAdministrator.value == "2" ? 254 : 1,
useCountLimit:0xff, useCountLimit:0xff,
// startTime:0x11223344, isForce:state.isCoerced.value == "2" ? 1 : 0, //
// endTime:0x11223344, isRound:state.selectType.value == "2" ? 1: 0, //
startTime: state.startDate.value ~/ 1000, weekRound:weekRound, //
endTime: state.endDate.value ~/ 1000, startDate: int.parse(state.startDate.value)~/1000,
endDate: int.parse(state.endDate.value)~/1000,
startTime:DateTool().dateToHNString(state.effectiveDateTime.value),
endTime:DateTool().dateToHNString(state.failureDateTime.value),
needAuthor:1, needAuthor:1,
publicKey: publicKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: getTokenList,
); );
@ -238,12 +263,12 @@ class AddFaceLogic extends BaseGetXController {
faceName: state.faceName.value, faceName: state.faceName.value,
faceNumber: state.faceNumber.value, faceNumber: state.faceNumber.value,
faceType: state.faceType.value, faceType: state.faceType.value,
startDate: state.startDate.value, startDate: int.parse(state.startDate.value),
endDate: state.endDate.value, endDate: int.parse(state.endDate.value),
featureData: state.featureData.value, featureData: state.featureData.value,
addType: state.addType.value, addType: state.addType.value,
cyclicConfig: state.cyclicConfig.value, weekDay: state.weekDay.value,
faceRight: state.isAdministrator.value == true ? 1 : 0, faceRight: state.isAdministrator.value == "2" ? 1 : 0,
); );
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {

View File

@ -10,16 +10,22 @@ class AddFaceState {
var faceNumber = "".obs; var faceNumber = "".obs;
final lockId = 0.obs; final lockId = 0.obs;
final endDate = 0.obs; final endDate = "".obs;
final addType = "".obs; final addType = "".obs;
final faceName = "".obs; final faceName = "".obs;
final faceType = 0.obs; final faceType = 0.obs;
final startDate = 0.obs; // final cyclicConfig = [].obs;
final cyclicConfig = [].obs;
final fromType = 1.obs;
final featureData = ''.obs; final featureData = ''.obs;
final isClickAddFace = false.obs; final isClickAddFace = false.obs;
final isAdministrator = false.obs;
final isCoerced = "".obs;
final isAdministrator = "".obs;
final startDate = "".obs;
final weekDay = [].obs;
final fromType = 0.obs;
final effectiveDateTime = "".obs;//
final failureDateTime = "".obs;//
final selectType = "0".obs;// 0 1 2
AddFaceState() { AddFaceState() {
Map map = Get.arguments; Map map = Get.arguments;
@ -30,8 +36,15 @@ class AddFaceState {
faceType.value = map["faceType"]; faceType.value = map["faceType"];
startDate.value = map["startDate"]; startDate.value = map["startDate"];
lockId.value = map["lockId"]; lockId.value = map["lockId"];
cyclicConfig.value = map["cyclicConfig"]; weekDay.value = map["cyclicConfig"];
fromType.value = map["fromType"]; fromType.value = map["fromType"];
isAdministrator.value = map["isAdministrator"]; isAdministrator.value = map["isAdministrator"];
print("isAdministrator.value isAdministrator.value:${isAdministrator.value}");
startDate.value = map["startDate"];
// weekDay.value = map["weekDay"];
fromType.value = map["fromType"];
effectiveDateTime.value = map["effectiveTime"];
failureDateTime.value = map["failureTime"];
selectType.value = map["selectType"];
} }
} }

View File

@ -52,28 +52,27 @@ class AddFaceTypeLogic extends BaseGetXController {
showToast("请选择有效期".tr); showToast("请选择有效期".tr);
return; return;
} }
startDate = startDate = DateTool().dateToTimestamp(state.beginTime.value, 1).toString();
DateTool().dateToTimestamp(state.beginTime.value, 1).toString();
endDate = DateTool().dateToTimestamp(state.endTime.value, 1).toString(); endDate = DateTool().dateToTimestamp(state.endTime.value, 1).toString();
startTime = DateTool() startTime = DateTool().dateToTimestamp(state.effectiveDateTime.value, 0).toString();
.dateToTimestamp(state.effectiveDateTime.value, 0) endTime = DateTool().dateToTimestamp(state.failureDateTime.value, 0).toString();
.toString();
endTime =
DateTool().dateToTimestamp(state.failureDateTime.value, 0).toString();
faceType = 4; faceType = 4;
} }
// //
Get.toNamed(Routers.addFacePage, arguments: { Get.toNamed(Routers.addFacePage, arguments: {
"lockId": state.lockId.value, "lockId": state.lockId.value,
"endDate": int.parse(endDate), "endDate": endDate,
"addType": "1", "addType": "1",
"faceName": state.nameController.text, "faceName": state.nameController.text,
"faceNumber": "123456", "faceNumber": "123456",
"faceType": faceType, "faceType": faceType,
"startDate": int.parse(startDate), "startDate": startDate,
"cyclicConfig": state.weekdaysList.value, "cyclicConfig": state.weekdaysList.value,
"fromType": state.fromType.value, "fromType": state.fromType.value,
"isAdministrator": state.isAdministrator.value, "isAdministrator": state.isAdministrator.value == false ? "1" : "2",
"effectiveTime": startTime,
"failureTime": endTime,
"selectType": state.selectType.value,
}); });
} }

View File

@ -121,7 +121,7 @@ class _AddFaceTypePageState extends State<AddFaceTypePage> {
String titleStr, String rightTitle, TextEditingController controller) { String titleStr, String rightTitle, TextEditingController controller) {
return Column( return Column(
children: [ children: [
Container(height: 10.h), // Container(height: 10.h),
CommonItem( CommonItem(
leftTitel: titleStr, leftTitel: titleStr,
rightTitle: "", rightTitle: "",
@ -172,8 +172,7 @@ class _AddFaceTypePageState extends State<AddFaceTypePage> {
isHaveDirection: true, isHaveDirection: true,
isHaveLine: true, isHaveLine: true,
action: () async { action: () async {
var result = var result = await Get.toNamed(Routers.seletKeyCyclicDatePage, arguments: {
await Get.toNamed(Routers.seletKeyCyclicDatePage, arguments: {
'validityValue': state.weekdaysList.value, 'validityValue': state.weekdaysList.value,
'starDate': state.beginTime.value, 'starDate': state.beginTime.value,
'endDate': state.endTime.value, 'endDate': state.endTime.value,

View File

@ -65,24 +65,32 @@ class FaceDetailLogic 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 token = await Storage.getStringList(saveBlueToken); // var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> getTokenList = changeStringListToIntList(token!); // List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var token = reply.data.sublist(5, 9);
var saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList);
String? userID = await Storage.getUid();
IoSenderManage.senderAddFaceCommand( IoSenderManage.senderAddFaceCommand(
keyID:state.keyId.value.toString(), keyID:state.keyId.value.toString(),
userID: userID, userID:await Storage.getUid(),
faceNo:int.parse(state.typeNumber.value), faceNo:int.parse(state.typeNumber.value),
useCountLimit:0, useCountLimit:0,
startTime: int.parse(state.startDate.value), isForce:0, //
endTime: int.parse(state.endDate.value), isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:"0",
endTime:"0",
needAuthor:1, needAuthor:1,
publicKey: publicKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: token,
); );
break; break;
case 0x07: case 0x07:
@ -118,8 +126,8 @@ class FaceDetailLogic 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 privateKey = await Storage.getStringList(saveBluePrivateKey); var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!); List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -127,17 +135,23 @@ class FaceDetailLogic extends BaseGetXController {
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
String? userID = await Storage.getUid(); var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
IoSenderManage.senderAddFaceCommand( IoSenderManage.senderAddFaceCommand(
keyID:state.keyId.value.toString(), keyID:state.keyId.value.toString(),
userID: userID, userID:await Storage.getUid(),
faceNo:int.parse(state.typeNumber.value), faceNo:int.parse(state.typeNumber.value),
useCountLimit:0, useCountLimit:0,
startTime: int.parse(state.startDate.value), isForce:0, //
endTime: int.parse(state.endDate.value), isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:"0",
endTime:"0",
needAuthor:1, needAuthor:1,
publicKey: publicKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: getTokenList,
); );

View File

@ -2,6 +2,7 @@ import 'dart:async';
// 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:star_lock/blue/io_protocol/io_addFace.dart'; import 'package:star_lock/blue/io_protocol/io_addFace.dart';
import 'package:star_lock/blue/io_protocol/io_queryingFaceStatus.dart'; import 'package:star_lock/blue/io_protocol/io_queryingFaceStatus.dart';
import 'package:star_lock/blue/io_type.dart'; import 'package:star_lock/blue/io_type.dart';
@ -14,8 +15,10 @@ import '../../../../blue/io_tool/io_tool.dart';
import '../../../../blue/io_tool/manager_event_bus.dart'; import '../../../../blue/io_tool/manager_event_bus.dart';
import '../../../../blue/sender_manage.dart'; import '../../../../blue/sender_manage.dart';
import '../../../../network/api_repository.dart'; import '../../../../network/api_repository.dart';
import '../../../../tools/dateTool.dart';
import '../../../../tools/eventBusEventManage.dart'; import '../../../../tools/eventBusEventManage.dart';
import '../../../../tools/storage.dart'; import '../../../../tools/storage.dart';
import '../../fingerprint/fingerprintList/fingerprintListData_entity.dart';
class FaceListLogic extends BaseGetXController { class FaceListLogic extends BaseGetXController {
FaceListState state = FaceListState(); FaceListState state = FaceListState();
@ -65,24 +68,43 @@ class FaceListLogic 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 token = await Storage.getStringList(saveBlueToken); var token = reply.data.sublist(5, 9);
List<int> getTokenList = changeStringListToIntList(token!); var saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList);
IoSenderManage.senderAddFaceCommand( IoSenderManage.senderAddFaceCommand(
keyID:state.deletKeyID, keyID:state.deletKeyID,
userID:state.deletUserID, userID:state.deletUserID,
faceNo:state.deletFaceNo, faceNo:state.deletFaceNo,
useCountLimit:0, useCountLimit:0,
startTime: 0x11223344, isForce:0, //
endTime: 0x11223344, isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:"0",
endTime:"0",
needAuthor:1, needAuthor:1,
publicKey: publicKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: token,
); );
// IoSenderManage.senderAddFaceCommand(
// keyID: state.deletKeyID,
// userID: state.deletUserID,
// faceNo: state.deletFaceNo,
// useCountLimit: 0,
// startTime: 0x11223344,
// endTime: 0x11223344,
// needAuthor: 1,
// publicKey: publicKeyDataList,
// privateKey: getPrivateKeyList,
// token: getTokenList,
// );
break; break;
case 0x07: case 0x07:
// //
@ -308,8 +330,9 @@ class FaceListLogic 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);
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!);
@ -322,13 +345,31 @@ class FaceListLogic extends BaseGetXController {
userID:state.deletUserID, userID:state.deletUserID,
faceNo:state.deletFaceNo, faceNo:state.deletFaceNo,
useCountLimit:0, useCountLimit:0,
startTime: 0x11223344, isForce:0, //
endTime: 0x11223344, isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:"0",
endTime:"0",
needAuthor:1, needAuthor:1,
publicKey: publicKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: getTokenList,
); );
// IoSenderManage.senderAddFaceCommand(
// keyID: state.deletKeyID,
// userID: state.deletUserID,
// faceNo: state.deletFaceNo,
// useCountLimit: 0,
// startTime: 0x11223344,
// endTime: 0x11223344,
// needAuthor: 1,
// publicKey: publicKeyDataList,
// privateKey: getPrivateKeyList,
// token: getTokenList,
// );
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) { } else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
dismissEasyLoading(); dismissEasyLoading();
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
@ -391,6 +432,32 @@ class FaceListLogic extends BaseGetXController {
} }
} }
String getKeyType(FingerprintItemData fingerprintItemData){
// fingerprintStatus 1: 2:
var keyTypeStr = "";//
if(fingerprintItemData.status == 1){
if(fingerprintItemData.startDate! > DateTime.now().millisecondsSinceEpoch){
keyTypeStr = "未生效".tr;
}
}else if(fingerprintItemData.status == 2){
keyTypeStr = "已失效".tr;
}
return keyTypeStr;
}
String getKeyDateType(FingerprintItemData fingerprintItemData){
var keyDateTypeStr = "";// :1;23:4
if(fingerprintItemData.faceType! == 1){
keyDateTypeStr = "${DateTool().dateToYMDHNString(fingerprintItemData.createDate.toString())} 永久";
}else if(fingerprintItemData.faceType! == 2){
keyDateTypeStr = "${DateTool().dateToYMDHNString(fingerprintItemData.startDate.toString())} - ${DateTool().dateToYMDHNString(fingerprintItemData.endDate.toString())} 限时";
}else if(fingerprintItemData.faceType! == 4){
keyDateTypeStr = "${DateTool().dateToYMDString(fingerprintItemData.startDate.toString())}-${DateTool().dateToYMDString(fingerprintItemData.endDate.toString())} 循环";
}
return keyDateTypeStr;
}
// //
late StreamSubscription _teamEvent; late StreamSubscription _teamEvent;
void _initRefreshAction() { void _initRefreshAction() {

View File

@ -5,6 +5,7 @@ import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/fingerprint/fingerprintList/fingerprintListData_entity.dart'; import 'package:star_lock/main/lockDetail/fingerprint/fingerprintList/fingerprintListData_entity.dart';
import 'package:star_lock/tools/keySearchWidget.dart'; import 'package:star_lock/tools/keySearchWidget.dart';
import 'package:star_lock/tools/left_slide_actions.dart'; import 'package:star_lock/tools/left_slide_actions.dart';
import 'package:star_lock/tools/showTipView.dart';
import '../../../../appRouters.dart'; import '../../../../appRouters.dart';
import '../../../../app_settings/app_colors.dart'; import '../../../../app_settings/app_colors.dart';
@ -44,7 +45,15 @@ class _FaceListPageState extends State<FaceListPage> {
onPressed: () async { onPressed: () async {
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) { if (isDemoMode == false) {
showDeletAlertDialog(context); // showDeletAlertDialog(context);
ShowTipView().showIosTipWithContentDialog("重置后,该锁的人脸都将被删除哦,确认要重置吗?", () async {
state.isDeletFaceData = true;
state.isDeletAll = true;
state.deletKeyID = "1";
state.deletUserID = "DeleteAll!@#";
state.deletFaceNo = 255;
logic.senderAddFace();
});
} else { } else {
// Get.toNamed(Routers.selectLockTypePage); // Get.toNamed(Routers.selectLockTypePage);
logic.showToast("演示模式"); logic.showToast("演示模式");
@ -91,8 +100,7 @@ class _FaceListPageState extends State<FaceListPage> {
? ListView.separated( ? ListView.separated(
itemCount: state.faceItemListData.value.length, itemCount: state.faceItemListData.value.length,
itemBuilder: (c, index) { itemBuilder: (c, index) {
FingerprintItemData getFaceItemData = FingerprintItemData getFaceItemData = state.faceItemListData.value[index];
state.faceItemListData.value[index];
// //
if (index < state.faceItemListData.value.length) { if (index < state.faceItemListData.value.length) {
return LeftSlideActions( return LeftSlideActions(
@ -107,19 +115,15 @@ class _FaceListPageState extends State<FaceListPage> {
child: _keyItem( child: _keyItem(
'images/icon_face.png', 'images/icon_face.png',
getFaceItemData.faceName!, getFaceItemData.faceName!,
(getFaceItemData.faceType! != 1) logic.getKeyType(getFaceItemData),
? (getFaceItemData.endDate! < logic.getKeyDateType(getFaceItemData),
DateTime.now().millisecondsSinceEpoch // (getFaceItemData.faceType! != 1) ? (getFaceItemData.endDate! < DateTime.now().millisecondsSinceEpoch ? "已失效" : "") : "",
? "已失效" // getFaceItemData.validTimeStr!,
: "")
: "",
getFaceItemData.validTimeStr!,
// fingerprintItemData.fingerprintType! == 1 // fingerprintItemData.fingerprintType! == 1
// ? "永久" // ? "永久"
// : "${DateTool().dateToYMDHNString(fingerprintItemData.startDate.toString())} - ${DateTool().dateToYMDHNString(fingerprintItemData.endDate.toString())}", // : "${DateTool().dateToYMDHNString(fingerprintItemData.startDate.toString())} - ${DateTool().dateToYMDHNString(fingerprintItemData.endDate.toString())}",
() async { () async {
var data = var data = await Get.toNamed(Routers.faceDetailPage, arguments: {
await Get.toNamed(Routers.faceDetailPage, arguments: {
"faceItemData": getFaceItemData, "faceItemData": getFaceItemData,
}); });
if (data != null) { if (data != null) {
@ -147,7 +151,13 @@ class _FaceListPageState extends State<FaceListPage> {
// : // :
state.deletKeyID = faceItemData.faceId.toString(); state.deletKeyID = faceItemData.faceId.toString();
state.deletFaceNo = int.parse(faceItemData.faceNumber!); state.deletFaceNo = int.parse(faceItemData.faceNumber!);
showIosTipViewDialog(context); ShowTipView().showIosTipWithContentDialog("确定要删除吗?".tr, () async {
state.isDeletFaceData = true;
state.isDeletAll = false;
state.deletUserID = (await Storage.getUid())!;
logic.senderAddFace();
});
// showIosTipViewDialog(context);
}, },
child: Container( child: Container(
width: 60, width: 60,
@ -166,27 +176,27 @@ class _FaceListPageState extends State<FaceListPage> {
); );
} }
void showIosTipViewDialog(BuildContext context) { // void showIosTipViewDialog(BuildContext context) {
showDialog( // showDialog(
context: context, // context: context,
builder: (BuildContext context) { // builder: (BuildContext context) {
return ShowIosTipView( // return ShowIosTipView(
title: "提示", // title: "提示",
tipTitle: "确定要删除吗?", // tipTitle: "确定要删除吗?",
sureClick: () async { // sureClick: () async {
Get.back(); // Get.back();
state.isDeletFaceData = true; // state.isDeletFaceData = true;
state.isDeletAll = false; // state.isDeletAll = false;
state.deletUserID = (await Storage.getUid())!; // state.deletUserID = (await Storage.getUid())!;
logic.senderAddFace(); // logic.senderAddFace();
}, // },
cancelClick: () { // cancelClick: () {
Get.back(); // Get.back();
}, // },
); // );
}, // },
); // );
} // }
Widget _keyItem(String lockTypeIcon, String lockTypeTitle, Widget _keyItem(String lockTypeIcon, String lockTypeTitle,
String ifInvalidation, String showTime, Function() action) { String ifInvalidation, String showTime, Function() action) {
@ -212,10 +222,22 @@ class _FaceListPageState extends State<FaceListPage> {
Row( Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween, // mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text(lockTypeTitle, SizedBox(
style: TextStyle( width: 1.sw - 110.w - 100.w,
fontSize: 24.sp, color: AppColors.blackColor)), child: Row(
Expanded(child: Container()), children: [
Flexible(
child: Text(
lockTypeTitle,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor)
),
),
],
),
),
Text(ifInvalidation, Text(ifInvalidation,
style: TextStyle(fontSize: 22.sp, color: Colors.red)), style: TextStyle(fontSize: 22.sp, color: Colors.red)),
SizedBox(width: 10.w), SizedBox(width: 10.w),
@ -225,10 +247,14 @@ class _FaceListPageState extends State<FaceListPage> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Text(showTime, Flexible(
child: Text(showTime,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle( style: TextStyle(
fontSize: 18.sp, fontSize: 18.sp,
color: AppColors.placeholderTextColor)), color: AppColors.placeholderTextColor)),
),
], ],
), ),
SizedBox(width: 20.h), SizedBox(width: 20.h),
@ -242,35 +268,36 @@ class _FaceListPageState extends State<FaceListPage> {
); );
} }
void showDeletAlertDialog(BuildContext context) { // void showDeletAlertDialog(BuildContext context) {
showCupertinoDialog( // showCupertinoDialog(
context: context, // context: context,
builder: (context) { // builder: (context) {
return CupertinoAlertDialog( // return CupertinoAlertDialog(
title: const Text("提示"), // title: const Text("提示"),
content: const Text('重置后,该锁的人脸都将被删除哦,确认要重置吗?'), // content: const Text('重置后,该锁的人脸都将被删除哦,确认要重置吗?'),
actions: [ // actions: [
CupertinoDialogAction( // CupertinoDialogAction(
child: Text(TranslationLoader.lanKeys!.cancel!.tr), // child: Text(TranslationLoader.lanKeys!.cancel!.tr),
onPressed: () { // onPressed: () {
Navigator.pop(context); // Navigator.pop(context);
}, // },
), // ),
CupertinoDialogAction( // CupertinoDialogAction(
child: Text(TranslationLoader.lanKeys!.sure!.tr), // child: Text(TranslationLoader.lanKeys!.sure!.tr),
onPressed: () { // onPressed: () {
Navigator.pop(context); // Navigator.pop(context);
state.isDeletFaceData = true; // state.isDeletFaceData = true;
state.isDeletAll = true; // state.isDeletAll = true;
state.deletKeyID = "1"; // state.deletKeyID = "1";
state.deletUserID = "DeleteAll!@#"; // state.deletUserID = "DeleteAll!@#";
state.deletFaceNo = 255; // state.deletFaceNo = 255;
logic.senderAddFace(); // logic.senderAddFace();
}, // },
), // ),
], // ],
); // );
}, // },
); // );
} // }
} }

View File

@ -35,8 +35,6 @@ class FingerprintDetailLogic extends BaseGetXController{
Future<void> _replyAddFingerprintBegin(Reply reply) async { Future<void> _replyAddFingerprintBegin(Reply reply) async {
int status = reply.data[2]; int status = reply.data[2];
// Get.log("status:$status");
switch(status){ switch(status){
case 0x00: case 0x00:
// //
@ -58,8 +56,9 @@ class FingerprintDetailLogic extends BaseGetXController{
// var publicKey = await Storage.getStringList(saveBluePublicKey); // var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!); // List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var token = await Storage.getStringList(saveBlueToken); var token = reply.data.sublist(5, 9);
List<int> getTokenList = changeStringListToIntList(token!); var saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList);
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand( IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:state.keyId.value.toString(), keyID:state.keyId.value.toString(),
@ -76,7 +75,7 @@ class FingerprintDetailLogic extends BaseGetXController{
needAuthor:1, needAuthor:1,
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: token,
); );
break; break;
default: default:

View File

@ -64,24 +64,29 @@ class IrisListLogic 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 token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
IoSenderManage.senderAddFaceCommand( // IoSenderManage.senderAddFaceCommand(
keyID: state.deletKeyID, // keyID:state.deletKeyID,
userID: state.deletUserID, // userID:state.deletUserID,
faceNo: state.deletFaceNo, // faceNo:state.deletFaceNo,
useCountLimit: 0, // useCountLimit:0,
startTime: 0x11223344, // isForce:0, //
endTime: 0x11223344, // isRound:0, //
needAuthor: 1, // weekRound:0, //
publicKey: publicKeyDataList, // startDate: 0x11223344,
privateKey: getPrivateKeyList, // endDate: 0x11223344,
token: getTokenList, // startTime:"0",
); // endTime:"0",
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
break; break;
case 0x07: case 0x07:
// //
@ -245,17 +250,17 @@ class IrisListLogic extends BaseGetXController {
var publicKey = await Storage.getStringList(saveBluePublicKey); var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> getPublicKeyList = changeStringListToIntList(publicKey!); List<int> getPublicKeyList = changeStringListToIntList(publicKey!);
IoSenderManage.senderQueryingFaceStatusCommand( // IoSenderManage.senderQueryingFaceStatusCommand(
keyID: BlueManage().connectDeviceName, // keyID: BlueManage().connectDeviceName,
userID: await Storage.getUid(), // userID: await Storage.getUid(),
role: 0xff, // role: 0xff,
faceCount: 20, // faceCount: 20,
faceNo: 1, // faceNo: 1,
token: getTokenList, // token: getTokenList,
needAuthor: 1, // needAuthor: 1,
publicKey: getPublicKeyList, // publicKey: getPublicKeyList,
privateKey: getPrivateKeyList, // privateKey: getPrivateKeyList,
); // );
} }
}); });
} }
@ -274,16 +279,16 @@ class IrisListLogic extends BaseGetXController {
var publicKey = await Storage.getStringList(saveBluePublicKey); var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> getPublicKeyList = changeStringListToIntList(publicKey!); List<int> getPublicKeyList = changeStringListToIntList(publicKey!);
IoSenderManage.senderCheckingUserInfoCountCommand( // IoSenderManage.senderCheckingUserInfoCountCommand(
keyID: BlueManage().connectDeviceName, // keyID: BlueManage().connectDeviceName,
userID: await Storage.getUid(), // userID: await Storage.getUid(),
role: 0xff, // role: 0xff,
nowTime: DateTime.now().millisecondsSinceEpoch ~/ 1000, // nowTime: DateTime.now().millisecondsSinceEpoch ~/ 1000,
token: getTokenList, // token: getTokenList,
needAuthor: 1, // needAuthor: 1,
publicKey: getPublicKeyList, // publicKey: getPublicKeyList,
privateKey: getPrivateKeyList, // privateKey: getPrivateKeyList,
); // );
} }
}); });
} }
@ -297,8 +302,8 @@ class IrisListLogic 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 signKey = await Storage.getStringList(saveBlueSignKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!); 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!);
@ -306,18 +311,23 @@ class IrisListLogic 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.senderAddFaceCommand( // IoSenderManage.senderAddFaceCommand(
keyID: state.deletKeyID, // keyID:state.deletKeyID,
userID: state.deletUserID, // userID:state.deletUserID,
faceNo: state.deletFaceNo, // faceNo:state.deletFaceNo,
useCountLimit: 0, // useCountLimit:0,
startTime: 0x11223344, // isForce:0, //
endTime: 0x11223344, // isRound:0, //
needAuthor: 1, // weekRound:0, //
publicKey: publicKeyDataList, // startDate: 0x11223344,
privateKey: getPrivateKeyList, // endDate: 0x11223344,
token: getTokenList, // startTime:"0",
); // endTime:"0",
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
} else if (deviceConnectionState == } else if (deviceConnectionState ==
BluetoothConnectionState.disconnected) { BluetoothConnectionState.disconnected) {
dismissEasyLoading(); dismissEasyLoading();

View File

@ -64,24 +64,29 @@ class PalmListLogic 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 token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
IoSenderManage.senderAddFaceCommand( // IoSenderManage.senderAddFaceCommand(
keyID: state.deletKeyID, // keyID:state.deletKeyID,
userID: state.deletUserID, // userID:state.deletUserID,
faceNo: state.deletFaceNo, // faceNo:state.deletFaceNo,
useCountLimit: 0, // useCountLimit:0,
startTime: 0x11223344, // isForce:0, //
endTime: 0x11223344, // isRound:0, //
needAuthor: 1, // weekRound:0, //
publicKey: publicKeyDataList, // startDate: 0x11223344,
privateKey: getPrivateKeyList, // endDate: 0x11223344,
token: getTokenList, // startTime:"0",
); // endTime:"0",
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
break; break;
case 0x07: case 0x07:
// //
@ -255,17 +260,17 @@ class PalmListLogic extends BaseGetXController {
var publicKey = await Storage.getStringList(saveBluePublicKey); var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> getPublicKeyList = changeStringListToIntList(publicKey!); List<int> getPublicKeyList = changeStringListToIntList(publicKey!);
IoSenderManage.senderQueryingFaceStatusCommand( // IoSenderManage.senderQueryingFaceStatusCommand(
keyID: BlueManage().connectDeviceName, // keyID: BlueManage().connectDeviceName,
userID: await Storage.getUid(), // userID: await Storage.getUid(),
role: 0xff, // role: 0xff,
faceCount: 20, // faceCount: 20,
faceNo: 1, // faceNo: 1,
token: getTokenList, // token: getTokenList,
needAuthor: 1, // needAuthor: 1,
publicKey: getPublicKeyList, // publicKey: getPublicKeyList,
privateKey: getPrivateKeyList, // privateKey: getPrivateKeyList,
); // );
} }
}); });
} }
@ -284,16 +289,16 @@ class PalmListLogic extends BaseGetXController {
var publicKey = await Storage.getStringList(saveBluePublicKey); var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> getPublicKeyList = changeStringListToIntList(publicKey!); List<int> getPublicKeyList = changeStringListToIntList(publicKey!);
IoSenderManage.senderCheckingUserInfoCountCommand( // IoSenderManage.senderCheckingUserInfoCountCommand(
keyID: BlueManage().connectDeviceName, // keyID: BlueManage().connectDeviceName,
userID: await Storage.getUid(), // userID: await Storage.getUid(),
role: 0xff, // role: 0xff,
nowTime: DateTime.now().millisecondsSinceEpoch ~/ 1000, // nowTime: DateTime.now().millisecondsSinceEpoch ~/ 1000,
token: getTokenList, // token: getTokenList,
needAuthor: 1, // needAuthor: 1,
publicKey: getPublicKeyList, // publicKey: getPublicKeyList,
privateKey: getPrivateKeyList, // privateKey: getPrivateKeyList,
); // );
} }
}); });
} }
@ -307,8 +312,8 @@ class PalmListLogic 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 signKey = await Storage.getStringList(saveBlueSignKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!); 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,18 +321,23 @@ class PalmListLogic 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.senderAddFaceCommand( // IoSenderManage.senderAddFaceCommand(
keyID: state.deletKeyID, // keyID:state.deletKeyID,
userID: state.deletUserID, // userID:state.deletUserID,
faceNo: state.deletFaceNo, // faceNo:state.deletFaceNo,
useCountLimit: 0, // useCountLimit:0,
startTime: 0x11223344, // isForce:0, //
endTime: 0x11223344, // isRound:0, //
needAuthor: 1, // weekRound:0, //
publicKey: publicKeyDataList, // startDate: 0x11223344,
privateKey: getPrivateKeyList, // endDate: 0x11223344,
token: getTokenList, // startTime:"0",
); // endTime:"0",
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
} else if (deviceConnectionState == } else if (deviceConnectionState ==
BluetoothConnectionState.disconnected) { BluetoothConnectionState.disconnected) {
dismissEasyLoading(); dismissEasyLoading();

View File

@ -1176,7 +1176,7 @@ class ApiProvider extends BaseProvider {
int endDate, int endDate,
String featureData, String featureData,
String addType, String addType,
List cyclicConfig, List weekDay,
int faceRight, int faceRight,
) => ) =>
post( post(
@ -1190,7 +1190,7 @@ class ApiProvider extends BaseProvider {
'endDate': endDate, 'endDate': endDate,
'featureData': featureData, 'featureData': featureData,
'addType': addType, 'addType': addType,
'cyclicConfig': cyclicConfig, 'weekDay': weekDay,
'faceRight': faceRight 'faceRight': faceRight
})); }));

View File

@ -1348,7 +1348,7 @@ class ApiRepository {
required int endDate, required int endDate,
required String featureData, required String featureData,
required String addType, required String addType,
required List cyclicConfig, required List weekDay,
required int faceRight}) async { required int faceRight}) async {
final res = await apiProvider.addFaceData( final res = await apiProvider.addFaceData(
lockId, lockId,
@ -1359,7 +1359,7 @@ class ApiRepository {
endDate, endDate,
featureData, featureData,
addType, addType,
cyclicConfig, weekDay,
faceRight); faceRight);
return AddFaceEntity.fromJson(res.body); return AddFaceEntity.fromJson(res.body);
} }