添加用户、密码、卡、指纹number改为2字节,添加是否是管理员功能

This commit is contained in:
魏少阳 2024-05-04 16:53:27 +08:00
parent 08de8f1fdf
commit 24fac59ac4
43 changed files with 388 additions and 174 deletions

View File

@ -21,6 +21,8 @@ class SenderAddFingerprintWithTimeCycleCoercionCommand extends SenderProtocol {
int? fingerNo; int? fingerNo;
int? useCountLimit; int? useCountLimit;
int? isForce; int? isForce;
int? operate;
int? isAdmin;
List<int>? token; List<int>? token;
int? isRound; int? isRound;
int? weekRound; int? weekRound;
@ -38,6 +40,8 @@ class SenderAddFingerprintWithTimeCycleCoercionCommand extends SenderProtocol {
this.fingerNo, this.fingerNo,
this.useCountLimit, this.useCountLimit,
this.isForce, this.isForce,
this.operate,
this.isAdmin,
this.token, this.token,
this.isRound, this.isRound,
this.weekRound, this.weekRound,
@ -85,6 +89,14 @@ class SenderAddFingerprintWithTimeCycleCoercionCommand extends SenderProtocol {
// UseCountLimit // UseCountLimit
subData.addAll(intChangList(useCountLimit!)); subData.addAll(intChangList(useCountLimit!));
// Operate 0: 1 2: 3
subData.add(operate!);
AppLog.log("addFingerprint operate:$operate");
// isAdmin
subData.add(isAdmin!);
AppLog.log("addFingerprint isAdmin:$isAdmin");
// isForce // isForce
subData.add(isForce!); subData.add(isForce!);

View File

@ -21,6 +21,8 @@ class SenderAddICCardWithTimeCycleCoercionCommand extends SenderProtocol {
int? cardNo; int? cardNo;
int? useCountLimit; int? useCountLimit;
int? isForce; int? isForce;
int? operate;
int? isAdmin;
List<int>? token; List<int>? token;
int? isRound; int? isRound;
int? weekRound; int? weekRound;
@ -38,6 +40,8 @@ class SenderAddICCardWithTimeCycleCoercionCommand extends SenderProtocol {
this.cardNo, this.cardNo,
this.useCountLimit, this.useCountLimit,
this.isForce, this.isForce,
this.operate,
this.isAdmin,
this.token, this.token,
this.isRound, this.isRound,
this.weekRound, this.weekRound,
@ -80,13 +84,21 @@ class SenderAddICCardWithTimeCycleCoercionCommand extends SenderProtocol {
// cardNo // cardNo
subData.addAll(intChangList(cardNo!)); subData.addAll(intChangList(cardNo!));
AppLog.log("cardNo:$cardNo intChangList(cardNo!):${intChangList(cardNo!)}");
// UseCountLimit // UseCountLimit
subData.addAll(intChangList(useCountLimit!)); subData.addAll(intChangList(useCountLimit!));
// Operate 0: 1 2: 3
subData.add(operate!);
AppLog.log("addCard operate:$operate");
// isAdmin
subData.add(isAdmin!);
AppLog.log("addCard isAdmin:$isAdmin");
// isForce // isForce
subData.add(isForce!); subData.add(isForce!);
AppLog.log("addCard isForce:$isForce");
// token // token
subData.addAll(token!); subData.addAll(token!);

View File

@ -20,6 +20,8 @@ class SenderCustomPasswordsCommand extends SenderProtocol {
String? keyID; String? keyID;
String? userID; String? userID;
int? pwdNo; int? pwdNo;
int? operate;
int? isAdmin;
String? pwd; String? pwd;
int? useCountLimit; int? useCountLimit;
List<int>? token; List<int>? token;
@ -33,6 +35,8 @@ class SenderCustomPasswordsCommand extends SenderProtocol {
this.keyID, this.keyID,
this.userID, this.userID,
this.pwdNo, this.pwdNo,
this.operate,
this.isAdmin,
this.pwd, this.pwd,
this.useCountLimit, this.useCountLimit,
this.token, this.token,
@ -75,6 +79,12 @@ class SenderCustomPasswordsCommand extends SenderProtocol {
subData.addAll(intChangList(pwdNo!)); subData.addAll(intChangList(pwdNo!));
AppLog.log("pwdNo:$pwdNo"); AppLog.log("pwdNo:$pwdNo");
// Operate 0: 1 2: 3
subData.add(operate!);
// isAdmin
subData.add(isAdmin!);
// pwd 20 // pwd 20
int pwdLength = utf8.encode(pwd!).length; int pwdLength = utf8.encode(pwd!).length;
subData.addAll(utf8.encode(pwd!)); subData.addAll(utf8.encode(pwd!));

View File

@ -5,7 +5,7 @@ import 'package:crypto/crypto.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
int listChangInt(List<int> list){ int listChangInt(List<int> list){
int dataLen = (list[0] << 8) + list[61]; int dataLen = (list[0] << 8) + list[1];
return dataLen; return dataLen;
} }

View File

@ -280,13 +280,15 @@ class IoSenderManage {
{required String? keyID, {required String? keyID,
required String? userID, required String? userID,
required int? pwdNo, required int? pwdNo,
required int? operate,
required int? isAdmin,
required String? pwd, required String? pwd,
required int? useCountLimit, required int? useCountLimit,
required List<int>? token, required List<int>? token,
required int? startTime, required int? startTime,
required int? endTime, required int? endTime,
required int? needAuthor, required int? needAuthor,
required bool? isBeforeAddUser, required bool? isBeforeAddUser,
required List<int>? signKey, required List<int>? signKey,
required List<int>? privateKey, required List<int>? privateKey,
CommandSendCallBack? callBack}) { CommandSendCallBack? callBack}) {
@ -295,6 +297,8 @@ class IoSenderManage {
keyID: keyID, keyID: keyID,
userID: userID, userID: userID,
pwdNo: pwdNo, pwdNo: pwdNo,
operate: operate,
isAdmin: isAdmin,
pwd: pwd, pwd: pwd,
useCountLimit: useCountLimit, useCountLimit: useCountLimit,
token: token, token: token,
@ -377,6 +381,8 @@ class IoSenderManage {
required int? fingerNo, required int? fingerNo,
required int? useCountLimit, required int? useCountLimit,
required int? isForce, required int? isForce,
required int? isAdmin,
required int? operate,
required List<int>? token, required List<int>? token,
required int? isRound, required int? isRound,
required int? weekRound, required int? weekRound,
@ -395,6 +401,8 @@ class IoSenderManage {
fingerNo: fingerNo, fingerNo: fingerNo,
useCountLimit: useCountLimit, useCountLimit: useCountLimit,
isForce: isForce, isForce: isForce,
operate: operate,
isAdmin: isAdmin,
token: token, token: token,
isRound: isRound, isRound: isRound,
weekRound: weekRound, weekRound: weekRound,
@ -444,6 +452,8 @@ class IoSenderManage {
required String? userID, required String? userID,
required int? cardNo, required int? cardNo,
required int? useCountLimit, required int? useCountLimit,
required int? operate,
required int? isAdmin,
required int? isForce, required int? isForce,
required List<int>? token, required List<int>? token,
required int? isRound, required int? isRound,
@ -462,6 +472,8 @@ class IoSenderManage {
userID: userID, userID: userID,
cardNo: cardNo, cardNo: cardNo,
useCountLimit: useCountLimit, useCountLimit: useCountLimit,
operate: operate,
isAdmin: isAdmin,
isForce: isForce, isForce: isForce,
token: token, token: token,
isRound: isRound, isRound: isRound,

View File

@ -50,7 +50,9 @@ class AddICCardLogic extends BaseGetXController{
switch(status){ switch(status){
case 0x00: case 0x00:
// //
var cardNumber = listChangInt(reply.data.sublist(9, 11)).toString(); var cardNumberList = reply.data.sublist(reply.data.length - 2);
var cardNumber = listChangInt(cardNumberList).toString();
// AppLog.log("添加卡号:$cardNumberList cardNumber:$cardNumber");
state.cardNumber.value = cardNumber.toString(); state.cardNumber.value = cardNumber.toString();
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
state.ifConnectScuess.value = true; state.ifConnectScuess.value = true;
@ -69,13 +71,16 @@ class AddICCardLogic extends BaseGetXController{
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);
AppLog.log("添加卡token:$token");
IoSenderManage.senderAddCardWithTimeCycleCoercionCommand( IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
keyID:"1", keyID:"1",
userID:await Storage.getUid(), userID:await Storage.getUid(),
cardNo:state.isAdministrator.value == "2" ? 254 : 0, cardNo:0,
useCountLimit:0xff, useCountLimit:0xffff,
isForce:state.isCoerced.value == "1" ? 0 : 1, // operate:0, // 0: 1 2: 3
isAdmin:state.isAdministrator.value == "2" ? 1 : 0,
isForce:state.isCoerced.value == "2" ? 1 : 0, //
isRound:state.selectType.value == "2" ? 1: 0, // isRound:state.selectType.value == "2" ? 1: 0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
startDate: int.parse(state.startDate.value)~/1000, startDate: int.parse(state.startDate.value)~/1000,
@ -206,8 +211,10 @@ class AddICCardLogic extends BaseGetXController{
IoSenderManage.senderAddCardWithTimeCycleCoercionCommand( IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
keyID:"1", keyID:"1",
userID:await Storage.getUid(), userID:await Storage.getUid(),
cardNo:state.isAdministrator.value == "2" ? 254 : 0, cardNo:0,
useCountLimit:0xff, useCountLimit:0xffff,
operate:0, // 0: 1 2: 3
isAdmin:state.isAdministrator.value == "2" ? 1 : 0,
isForce:state.isCoerced.value == "2" ? 1 : 0, // isForce:state.isCoerced.value == "2" ? 1 : 0, //
isRound:state.selectType.value == "2" ? 1: 0, // isRound:state.selectType.value == "2" ? 1: 0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //

View File

@ -66,7 +66,9 @@ class CardDetailLogic extends BaseGetXController{
keyID:state.keyId.value.toString(), keyID:state.keyId.value.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
cardNo:int.parse(state.typeNumber.value), cardNo:int.parse(state.typeNumber.value),
useCountLimit:state.isDeletCard.value == true ? 0 : 0xff, useCountLimit:0xffff,
operate:state.isDeletCard.value ? 2 : 1, // 0: 1 2: 3
isAdmin:state.isAdministrator.value == true ? 1 : 0,
isForce:state.isStressCard.value == true ? 1 : 0, // isForce:state.isStressCard.value == true ? 1 : 0, //
isRound:state.keyType.value == 4 ? 1: 0, // isRound:state.keyType.value == 4 ? 1: 0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
@ -113,7 +115,9 @@ class CardDetailLogic extends BaseGetXController{
keyID:state.keyId.value.toString(), keyID:state.keyId.value.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
cardNo:int.parse(state.typeNumber.value), cardNo:int.parse(state.typeNumber.value),
useCountLimit:state.isDeletCard.value == true ? 0 : 0xff, useCountLimit:0xffff,
operate:state.isDeletCard.value ? 2 : 1, // 0: 1 2: 3
isAdmin:state.isAdministrator.value == true ? 1 : 0,
isForce:state.isStressCard.value == true ? 1 : 0, // isForce:state.isStressCard.value == true ? 1 : 0, //
isRound:state.keyType.value == 4 ? 1: 0, // isRound:state.keyType.value == 4 ? 1: 0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
@ -151,6 +155,7 @@ class CardDetailLogic extends BaseGetXController{
startTime: int.parse(state.starTime.value), startTime: int.parse(state.starTime.value),
endTime: int.parse(state.endTime.value), endTime: int.parse(state.endTime.value),
cardType:state.keyType.value, cardType:state.keyType.value,
cardRight: state.isAdministrator.value ? 1 : 0,
); );
if(entity.errorCode!.codeIsSuccessful){ if(entity.errorCode!.codeIsSuccessful){
showToast("修改成功".tr, something: (){ showToast("修改成功".tr, something: (){

View File

@ -160,8 +160,15 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
leftTitel: TranslationLoader.lanKeys!.stressCard!.tr, leftTitel: TranslationLoader.lanKeys!.stressCard!.tr,
rightTitle: "", rightTitle: "",
isTipsImg: false, isTipsImg: false,
isHaveLine: true,
isHaveRightWidget: true, isHaveRightWidget: true,
rightWidget: SizedBox(width: 60.w, height: 50.h, child: _isStressFingerprint()))), rightWidget: SizedBox(width: 60.w, height: 50.h, child: _isStressFingerprint()))),
Obx(() => CommonItem(
leftTitel: "是否是管理员".tr,
rightTitle: "",
isTipsImg: false,
isHaveRightWidget: true,
rightWidget: SizedBox(width: 60.w, height: 50.h, child: _isAdmin()))),
Container(height: 10.h), Container(height: 10.h),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr, leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr,
@ -210,6 +217,21 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
); );
} }
//
CupertinoSwitch _isAdmin() {
return CupertinoSwitch(
activeColor: CupertinoColors.activeBlue,
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: state.isAdministrator.value,
onChanged: (value) {
state.isAdministrator.value = value;
state.isDeletCard.value = false;
logic.senderAddICCard();
},
);
}
@override @override
void didChangeDependencies() { void didChangeDependencies() {
// TODO: implement didChangeDependencies // TODO: implement didChangeDependencies

View File

@ -14,6 +14,7 @@ class CardDetailState{
var sureBtnState = 0.obs;// 0() 1() var sureBtnState = 0.obs;// 0() 1()
var isDeletCard = true.obs;// var isDeletCard = true.obs;//
var isStressCard = false.obs;// var isStressCard = false.obs;//
var isAdministrator = false.obs;//
final typeNumber = "".obs;// final typeNumber = "".obs;//
final typeName = "".obs;// final typeName = "".obs;//
@ -44,6 +45,7 @@ class CardDetailState{
addTime.value = fingerprintItemData.value.createDate!; addTime.value = fingerprintItemData.value.createDate!;
isStressCard.value = fingerprintItemData.value.isCoerced! == 2 ? true : false; isStressCard.value = fingerprintItemData.value.isCoerced! == 2 ? true : false;
weekDay.value = fingerprintItemData.value.weekDay!; weekDay.value = fingerprintItemData.value.weekDay!;
isAdministrator.value = fingerprintItemData.value.cardRight! == 1 ? true : false;
} }
} }
} }

View File

@ -29,7 +29,7 @@ class CardListLogic extends BaseGetXController {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) { _replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) {
// () // ()
if((reply is SenderAddICCardWithTimeCycleCoercionReply) && (state.isDeletCardData == true)) { if((reply is SenderAddICCardWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) {
_replyAddICCardBegin(reply); _replyAddICCardBegin(reply);
} }
@ -50,7 +50,6 @@ class CardListLogic extends BaseGetXController {
switch(status){ switch(status){
case 0x00: case 0x00:
// //
state.isDeletCardData = false;
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
deletICCardData(); deletICCardData();
break; break;
@ -71,9 +70,11 @@ class CardListLogic extends BaseGetXController {
IoSenderManage.senderAddCardWithTimeCycleCoercionCommand( IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
keyID:state.deletKeyID, keyID:state.deletKeyID,
userID:state.deletUserID, userID:(await Storage.getUid())!,
cardNo:state.deletCardNo, cardNo:state.deletCardNo,
useCountLimit:0, useCountLimit:0xffff,
operate: state.isDeletAll == true ? 3 : 2, // 0: 1 2: 3
isAdmin:0,
isForce:0, // isForce:0, //
isRound:0, // isRound:0, //
weekRound:0, // weekRound:0, //
@ -244,9 +245,11 @@ class CardListLogic extends BaseGetXController {
IoSenderManage.senderAddCardWithTimeCycleCoercionCommand( IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
keyID:state.deletKeyID, keyID:state.deletKeyID,
userID:state.deletUserID, userID:(await Storage.getUid())!,
cardNo:state.deletCardNo, cardNo:state.deletCardNo,
useCountLimit:0, useCountLimit:0xffff,
operate: state.isDeletAll == true ? 3 : 2, // 0: 1 2: 3
isAdmin:0,
isForce:0, // isForce:0, //
isRound:0, // isRound:0, //
weekRound:0, // weekRound:0, //
@ -321,13 +324,11 @@ class CardListLogic extends BaseGetXController {
if(entity.errorCode!.codeIsSuccessful){ if(entity.errorCode!.codeIsSuccessful){
if(state.isDeletAll == false){ if(state.isDeletAll == false){
showToast("删除成功".tr, something: (){ showToast("删除成功".tr, something: (){
state.isDeletCardData = false;
pageNo = 1; pageNo = 1;
getICCardListData(); getICCardListData();
}); });
}else{ }else{
showToast("重置成功".tr, something: (){ showToast("重置成功".tr, something: (){
state.isDeletCardData = false;
pageNo = 1; pageNo = 1;
getICCardListData(); getICCardListData();
}); });

View File

@ -66,11 +66,9 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) { if (isDemoMode == false) {
ShowTipView().showIosTipWithContentDialog("重置后,该锁的卡都将被删除哦,确认要重置吗?".tr, () async { ShowTipView().showIosTipWithContentDialog("重置后,该锁的卡都将被删除哦,确认要重置吗?".tr, () async {
state.isDeletCardData = true;
state.isDeletAll = true; state.isDeletAll = true;
state.deletKeyID = "1"; state.deletKeyID = "0";
state.deletUserID = "DeleteAll!@#"; state.deletCardNo = 0;
state.deletCardNo = 255;
logic.senderAddICCard(); logic.senderAddICCard();
}); });
// showDeletAlertDialog(context); // showDeletAlertDialog(context);
@ -138,9 +136,7 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
SlidableAction( SlidableAction(
onPressed: (BuildContext context){ onPressed: (BuildContext context){
ShowTipView().showIosTipWithContentDialog("确定要删除吗?".tr, () async { ShowTipView().showIosTipWithContentDialog("确定要删除吗?".tr, () async {
state.isDeletCardData = true;
state.isDeletAll = false; state.isDeletAll = false;
state.deletUserID = (await Storage.getUid())!;
state.deletKeyID = fingerprintItemData.cardId.toString(); state.deletKeyID = fingerprintItemData.cardId.toString();
state.deletCardNo = int.parse(fingerprintItemData.cardNumber!); state.deletCardNo = int.parse(fingerprintItemData.cardNumber!);
state.fingerprintDeletItem = fingerprintItemData; state.fingerprintDeletItem = fingerprintItemData;

View File

@ -7,10 +7,8 @@ class CardListState {
final lockId = 0.obs; final lockId = 0.obs;
// //
var isDeletCardData = false;
var isDeletAll = false; var isDeletAll = false;
var deletKeyID = ""; var deletKeyID = "0";
var deletUserID = "DeleteAll!@#";
var deletCardNo = 0; var deletCardNo = 0;
final fingerprintItemListData = <FingerprintItemData>[].obs; final fingerprintItemListData = <FingerprintItemData>[].obs;

View File

@ -170,7 +170,9 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
keyID:state.fingerprintItemData.value.cardId!.toString(), keyID:state.fingerprintItemData.value.cardId!.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
cardNo:int.parse(state.fingerprintItemData.value.cardNumber!), cardNo:int.parse(state.fingerprintItemData.value.cardNumber!),
useCountLimit:0xff , useCountLimit:0xffff,
operate: 1, // 0: 1 2: 3
isAdmin:state.fingerprintItemData.value.cardRight!,
isForce:state.fingerprintItemData.value.isCoerced, // isForce:state.fingerprintItemData.value.isCoerced, //
isRound:0, // isRound:0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), //
@ -217,7 +219,9 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
keyID:state.fingerprintItemData.value.fingerprintId.toString(), keyID:state.fingerprintItemData.value.fingerprintId.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
fingerNo:int.parse(state.fingerprintItemData.value.fingerprintNumber!), fingerNo:int.parse(state.fingerprintItemData.value.fingerprintNumber!),
useCountLimit:0xff, useCountLimit:0xffff,
operate:1, // 0: 1 2: 3
isAdmin:state.fingerprintItemData.value.fingerRight,
isForce:state.fingerprintItemData.value.isCoerced, // isForce:state.fingerprintItemData.value.isCoerced, //
isRound:0, // isRound:0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), //
@ -267,7 +271,9 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
keyID:state.fingerprintItemData.value.fingerprintId.toString(), keyID:state.fingerprintItemData.value.fingerprintId.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
fingerNo:int.parse(state.fingerprintItemData.value.fingerprintNumber!), fingerNo:int.parse(state.fingerprintItemData.value.fingerprintNumber!),
useCountLimit:0xff, useCountLimit:0xffff,
operate:1, // 0: 1 2: 3
isAdmin:state.fingerprintItemData.value.fingerRight,
isForce:state.fingerprintItemData.value.isCoerced, // isForce:state.fingerprintItemData.value.isCoerced, //
isRound:0, // isRound:0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), //
@ -319,7 +325,9 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
keyID:state.fingerprintItemData.value.cardId!.toString(), keyID:state.fingerprintItemData.value.cardId!.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
cardNo:int.parse(state.fingerprintItemData.value.cardNumber!), cardNo:int.parse(state.fingerprintItemData.value.cardNumber!),
useCountLimit:0xff , useCountLimit:0xffff,
operate: 1, // 0: 1 2: 3
isAdmin:state.fingerprintItemData.value.cardRight!,
isForce:state.fingerprintItemData.value.isCoerced, // isForce:state.fingerprintItemData.value.isCoerced, //
isRound:0, // isRound:0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), //
@ -357,6 +365,7 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
startTime: 0, startTime: 0,
endTime: 0, endTime: 0,
fingerprintType: state.fingerprintItemData.value.fingerprintType! == 4 ? 4 : 2, fingerprintType: state.fingerprintItemData.value.fingerprintType! == 4 ? 4 : 2,
fingerRight: state.fingerprintItemData.value.fingerRight!,
); );
if(entity.errorCode!.codeIsSuccessful){ if(entity.errorCode!.codeIsSuccessful){
showToast("修改成功".tr, something: (){ showToast("修改成功".tr, something: (){
@ -383,6 +392,7 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
startTime: 0, startTime: 0,
endTime: 0, endTime: 0,
cardType: 2,// 2: cardType: 2,// 2:
cardRight: state.fingerprintItemData.value.cardRight!,
); );
if(entity.errorCode!.codeIsSuccessful){ if(entity.errorCode!.codeIsSuccessful){
showToast("修改成功".tr, something: (){ showToast("修改成功".tr, something: (){

View File

@ -172,7 +172,9 @@ class OtherTypeKeyChangeValidityDateLogic extends BaseGetXController{
keyID:state.fingerprintItemData.value.cardId!.toString(), keyID:state.fingerprintItemData.value.cardId!.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
cardNo:int.parse(state.fingerprintItemData.value.cardNumber!), cardNo:int.parse(state.fingerprintItemData.value.cardNumber!),
useCountLimit:0xff , useCountLimit:0xffff,
operate: 1, // 0: 1 2: 3
isAdmin:state.fingerprintItemData.value.isCoerced!,
isForce:state.fingerprintItemData.value.isCoerced, // isForce:state.fingerprintItemData.value.isCoerced, //
isRound:1, // isRound:1, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
@ -219,7 +221,9 @@ class OtherTypeKeyChangeValidityDateLogic extends BaseGetXController{
keyID:state.fingerprintItemData.value.fingerprintId.toString(), keyID:state.fingerprintItemData.value.fingerprintId.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
fingerNo:int.parse(state.fingerprintItemData.value.fingerprintNumber!), fingerNo:int.parse(state.fingerprintItemData.value.fingerprintNumber!),
useCountLimit:0xff, useCountLimit:0xffff,
operate:1, // 0: 1 2: 3
isAdmin:state.fingerprintItemData.value.fingerRight,
isForce:state.fingerprintItemData.value.isCoerced, // isForce:state.fingerprintItemData.value.isCoerced, //
isRound:1, // isRound:1, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
@ -269,7 +273,9 @@ class OtherTypeKeyChangeValidityDateLogic extends BaseGetXController{
keyID:state.fingerprintItemData.value.fingerprintId.toString(), keyID:state.fingerprintItemData.value.fingerprintId.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
fingerNo:int.parse(state.fingerprintItemData.value.fingerprintNumber!), fingerNo:int.parse(state.fingerprintItemData.value.fingerprintNumber!),
useCountLimit:0xff, useCountLimit:0xffff,
operate:1, // 0: 1 2: 3
isAdmin:state.fingerprintItemData.value.fingerRight,
isForce:state.fingerprintItemData.value.isCoerced, // isForce:state.fingerprintItemData.value.isCoerced, //
isRound:1, // isRound:1, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
@ -321,7 +327,9 @@ class OtherTypeKeyChangeValidityDateLogic extends BaseGetXController{
keyID:state.fingerprintItemData.value.cardId!.toString(), keyID:state.fingerprintItemData.value.cardId!.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
cardNo:int.parse(state.fingerprintItemData.value.cardNumber!), cardNo:int.parse(state.fingerprintItemData.value.cardNumber!),
useCountLimit:0xff , useCountLimit:0xffff,
operate: 1, // 0: 1 2: 3
isAdmin:state.fingerprintItemData.value.isCoerced!,
isForce:state.fingerprintItemData.value.isCoerced, // isForce:state.fingerprintItemData.value.isCoerced, //
isRound:1, // isRound:1, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
@ -359,6 +367,7 @@ class OtherTypeKeyChangeValidityDateLogic extends BaseGetXController{
startTime: state.starTimeTimestamp.value, startTime: state.starTimeTimestamp.value,
endTime: state.endTimeTimestamp.value, endTime: state.endTimeTimestamp.value,
fingerprintType: state.fingerprintItemData.value.fingerprintType!, fingerprintType: state.fingerprintItemData.value.fingerprintType!,
fingerRight: state.fingerprintItemData.value.fingerRight!
); );
if(entity.errorCode!.codeIsSuccessful){ if(entity.errorCode!.codeIsSuccessful){
showToast("修改成功".tr, something: (){ showToast("修改成功".tr, something: (){
@ -388,6 +397,7 @@ class OtherTypeKeyChangeValidityDateLogic extends BaseGetXController{
startTime: state.starTimeTimestamp.value, startTime: state.starTimeTimestamp.value,
endTime: state.endTimeTimestamp.value, endTime: state.endTimeTimestamp.value,
cardType: state.fingerprintItemData.value.cardType!, cardType: state.fingerprintItemData.value.cardType!,
cardRight: state.fingerprintItemData.value.cardRight!
); );
if(entity.errorCode!.codeIsSuccessful){ if(entity.errorCode!.codeIsSuccessful){
showToast("修改成功".tr, something: (){ showToast("修改成功".tr, something: (){

View File

@ -26,7 +26,7 @@ class AddFaceLogic extends BaseGetXController {
_replySubscription = _replySubscription =
EventBusManager().eventBus!.on<Reply>().listen((reply) async { EventBusManager().eventBus!.on<Reply>().listen((reply) async {
// //
if (reply is SenderAddFaceReply) { if (reply is SenderAddFaceReply && state.ifCurrentScreen.value == true) {
_replyAddFaceBegin(reply); _replyAddFaceBegin(reply);
} }
@ -44,27 +44,16 @@ 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];
switch (status) { switch (status) {
case 0x00: case 0x00:
// //
state.ifConnectScuess.value = true;
// //
state.maxRegCount.value = reply.data[10]; state.maxRegCount.value = reply.data[11];
// AppLog.log("人脸开始state.maxRegCount.value:${state.maxRegCount.value}"); // AppLog.log("人脸开始state.maxRegCount.value:${state.maxRegCount.value}");
break; break;
case 0x06: case 0x06:
// //
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)}';
}
// weekStr
weekStr = weekStr.split('').reversed.join('');
int weekRound = int.parse(weekStr, radix: 2);
var signKey = await Storage.getStringList(saveBlueSignKey); var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!); List<int> signKeyDataList = changeStringListToIntList(signKey!);
@ -82,7 +71,7 @@ class AddFaceLogic extends BaseGetXController {
useCountLimit:0xff, useCountLimit:0xff,
isForce:state.isCoerced.value == "2" ? 1 : 0, // isForce:state.isCoerced.value == "2" ? 1 : 0, //
isRound:state.selectType.value == "2" ? 1: 0, // isRound:state.selectType.value == "2" ? 1: 0, //
weekRound:weekRound, // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
startDate: int.parse(state.startDate.value)~/1000, startDate: int.parse(state.startDate.value)~/1000,
endDate: int.parse(state.endDate.value)~/1000, endDate: int.parse(state.endDate.value)~/1000,
startTime:DateTool().dateToHNString(state.effectiveDateTime.value), startTime:DateTool().dateToHNString(state.effectiveDateTime.value),
@ -132,7 +121,9 @@ class AddFaceLogic extends BaseGetXController {
switch (status) { switch (status) {
case 0x00: case 0x00:
// //
var faceNumber = listChangInt(reply.data.sublist(6, 7)).toString(); var faceList = reply.data.sublist(reply.data.length - 2);
var faceNumber = listChangInt(faceList).toString();
// var faceNumber = listChangInt(reply.data.sublist(6, 7)).toString();
// if (state.faceNumber.value == (reply.data[6]).toString()) { // if (state.faceNumber.value == (reply.data[6]).toString()) {
if (state.faceNumber.value == faceNumber) { if (state.faceNumber.value == faceNumber) {
return; return;
@ -160,14 +151,6 @@ class AddFaceLogic extends BaseGetXController {
(BluetoothConnectionState deviceConnectionState) async { (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected) { if (deviceConnectionState == BluetoothConnectionState.connected) {
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
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)}';
}
// weekStr
weekStr = weekStr.split('').reversed.join('');
int weekRound = int.parse(weekStr, radix: 2);
var signKey = await Storage.getStringList(saveBlueSignKey); var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!); List<int> signKeyDataList = changeStringListToIntList(signKey!);
@ -185,7 +168,7 @@ class AddFaceLogic extends BaseGetXController {
useCountLimit:0xff, useCountLimit:0xff,
isForce:state.isCoerced.value == "2" ? 1 : 0, // isForce:state.isCoerced.value == "2" ? 1 : 0, //
isRound:state.selectType.value == "2" ? 1: 0, // isRound:state.selectType.value == "2" ? 1: 0, //
weekRound:weekRound, // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
startDate: int.parse(state.startDate.value)~/1000, startDate: int.parse(state.startDate.value)~/1000,
endDate: int.parse(state.endDate.value)~/1000, endDate: int.parse(state.endDate.value)~/1000,
startTime:DateTool().dateToHNString(state.effectiveDateTime.value), startTime:DateTool().dateToHNString(state.effectiveDateTime.value),

View File

@ -1,3 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@ -7,6 +8,7 @@ import '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/submitBtn.dart'; import '../../../../../tools/submitBtn.dart';
import '../../../../../tools/titleAppBar.dart'; import '../../../../../tools/titleAppBar.dart';
import '../../../../../translations/trans_lib.dart'; import '../../../../../translations/trans_lib.dart';
import '../../../../tools/appRouteObserver.dart';
class AddFacePage extends StatefulWidget { class AddFacePage extends StatefulWidget {
const AddFacePage({Key? key}) : super(key: key); const AddFacePage({Key? key}) : super(key: key);
@ -15,7 +17,7 @@ class AddFacePage extends StatefulWidget {
State<AddFacePage> createState() => _AddFacePageState(); State<AddFacePage> createState() => _AddFacePageState();
} }
class _AddFacePageState extends State<AddFacePage> { class _AddFacePageState extends State<AddFacePage> with RouteAware {
final logic = Get.put(AddFaceLogic()); final logic = Get.put(AddFaceLogic());
final state = Get.find<AddFaceLogic>().state; final state = Get.find<AddFaceLogic>().state;
@ -93,4 +95,52 @@ class _AddFacePageState extends State<AddFacePage> {
), ),
); );
} }
@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
///
AppRouteObserver().routeObserver.subscribe(this, ModalRoute.of(context)!);
}
@override
void dispose() {
// TODO: implement dispose
///
AppRouteObserver().routeObserver.unsubscribe(this);
super.dispose();
}
///
@override
void didPush() {
super.didPush();
state.ifCurrentScreen.value = true;
}
///
@override
void didPop() {
super.didPop();
logic.cancelBlueConnetctToastTimer();
state.ifCurrentScreen.value = false;
}
///
@override
void didPopNext() {
super.didPopNext();
state.ifCurrentScreen.value = true;
}
///
@override
void didPushNext() {
super.didPushNext();
logic.cancelBlueConnetctToastTimer();
state.ifCurrentScreen.value = false;
}
} }

View File

@ -57,7 +57,7 @@ class AddFingerprintLogic extends BaseGetXController {
state.ifConnectScuess.value = true; state.ifConnectScuess.value = true;
// //
state.maxRegCount.value = reply.data[10]; state.maxRegCount.value = reply.data[11];
// AppLog.log("state.maxRegCount.value:${state.maxRegCount.value}"); // AppLog.log("state.maxRegCount.value:${state.maxRegCount.value}");
// state.fingerprintNumber.value = reply.data.last.toString(); // state.fingerprintNumber.value = reply.data.last.toString();
break; break;
@ -66,9 +66,6 @@ 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);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey); var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!); List<int> signKeyDataList = changeStringListToIntList(signKey!);
@ -76,21 +73,14 @@ class AddFingerprintLogic extends BaseGetXController {
var saveStrList = changeIntListToStringList(token); var saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList); Storage.setStringList(saveBlueToken, saveStrList);
// 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)}';
// }
// // weekStr
// weekStr = weekStr.split('').reversed.join('');
// int weekRound = int.parse(weekStr, radix: 2);
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand( IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:"1", keyID:"1",
userID:await Storage.getUid(), userID:await Storage.getUid(),
fingerNo:state.isAdministrator.value == "2" ? 254 : 0, fingerNo:0,
useCountLimit:0xff, useCountLimit:0xffff,
isForce:state.isCoerced.value == "1" ? 1 : 0, // isForce:state.isCoerced.value == "2" ? 1 : 0, //
isAdmin: state.isAdministrator.value == "2" ? 1 : 0,
operate: 0,
isRound:state.selectType.value == "2" ? 1: 0, // isRound:state.selectType.value == "2" ? 1: 0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
startDate: int.parse(state.startDate.value)~/1000, startDate: int.parse(state.startDate.value)~/1000,
@ -156,7 +146,10 @@ class AddFingerprintLogic extends BaseGetXController {
switch(status){ switch(status){
case 0x00: case 0x00:
// //
var fingerprintNum = listChangInt(reply.data.sublist(9, 11)).toString(); // var fingerprintNum = listChangInt(reply.data.sublist(9, 11)).toString();
var fingerprintList = reply.data.sublist(reply.data.length - 2);
var fingerprintNum = listChangInt(fingerprintList).toString();
if(state.fingerprintNumber.value == fingerprintNum){ if(state.fingerprintNumber.value == fingerprintNum){
return; return;
}else{ }else{
@ -250,9 +243,11 @@ class AddFingerprintLogic extends BaseGetXController {
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand( IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:"1", keyID:"1",
userID:await Storage.getUid(), userID:await Storage.getUid(),
fingerNo:state.isAdministrator.value == "2" ? 254 : 0, fingerNo:0,
useCountLimit:0xff, useCountLimit:0xffff,
isForce:state.isCoerced.value == "2" ? 1 : 0, // isForce:state.isCoerced.value == "2" ? 1 : 0, //
isAdmin: state.isAdministrator.value == "2" ? 1 : 0,
operate: 0,
isRound:state.selectType.value == "2" ? 1: 0, // isRound:state.selectType.value == "2" ? 1: 0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
startDate: int.parse(state.startDate.value)~/1000, startDate: int.parse(state.startDate.value)~/1000,

View File

@ -95,7 +95,6 @@ class _AddFingerprintTypePageState extends State<AddFingerprintTypePage> with Si
TranslationLoader.lanKeys!.pleaseEnter!.tr, TranslationLoader.lanKeys!.pleaseEnter!.tr,
state.nameController), state.nameController),
keyTimeLimitWidget(), keyTimeLimitWidget(),
SizedBox(height: 10.h),
keyBottomWidget() keyBottomWidget()
], ],
), ),

View File

@ -3,7 +3,6 @@ import 'dart:async';
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/tools/baseGetXController.dart'; import 'package:star_lock/tools/baseGetXController.dart';
import '../../../../blue/blue_manage.dart'; import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_protocol/io_addFingerprintWithTimeCycleCoercion.dart'; import '../../../../blue/io_protocol/io_addFingerprintWithTimeCycleCoercion.dart';
@ -66,7 +65,9 @@ class FingerprintDetailLogic extends BaseGetXController{
keyID:state.keyId.value.toString(), keyID:state.keyId.value.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
fingerNo:int.parse(state.typeNumber.value), fingerNo:int.parse(state.typeNumber.value),
useCountLimit:state.isDeletFingerprint.value == true ? 0 : 0xff, useCountLimit:0xffff,
operate:state.isDeletFingerprint.value ? 2 : 1, // 0: 1 2: 3
isAdmin:state.isAdministrator.value == true ? 1 : 0,
isForce:state.isStressFingerprint.value == true ? 1 : 0, // isForce:state.isStressFingerprint.value == true ? 1 : 0, //
isRound:state.keyType.value == 4 ? 1: 0, // isRound:state.keyType.value == 4 ? 1: 0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
@ -116,7 +117,9 @@ class FingerprintDetailLogic extends BaseGetXController{
keyID:state.keyId.value.toString(), keyID:state.keyId.value.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
fingerNo:int.parse(state.typeNumber.value), fingerNo:int.parse(state.typeNumber.value),
useCountLimit:state.isDeletFingerprint.value == true ? 0 : 0xff, useCountLimit:0xffff,
operate:state.isDeletFingerprint.value ? 2 : 1, // 0: 1 2: 3
isAdmin:state.isAdministrator.value == true ? 1 : 0,
isForce:state.isStressFingerprint.value == true ? 1 : 0, // isForce:state.isStressFingerprint.value == true ? 1 : 0, //
isRound:state.keyType.value == 4 ? 1: 0, // isRound:state.keyType.value == 4 ? 1: 0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
@ -169,6 +172,7 @@ class FingerprintDetailLogic extends BaseGetXController{
startTime: int.parse(state.startDate.value), startTime: int.parse(state.startDate.value),
endTime: int.parse(state.endTime.value), endTime: int.parse(state.endTime.value),
fingerprintType: state.fingerprintItemData.value.fingerprintType!, fingerprintType: state.fingerprintItemData.value.fingerprintType!,
fingerRight: state.isAdministrator.value ? 1 : 0,
); );
if(entity.errorCode!.codeIsSuccessful){ if(entity.errorCode!.codeIsSuccessful){
showToast("修改成功".tr, something: (){ showToast("修改成功".tr, something: (){

View File

@ -167,8 +167,15 @@ class _FingerprintDetailPageState extends State<FingerprintDetailPage> with Rout
rightTitle: "", rightTitle: "",
isTipsImg: false, isTipsImg: false,
isHaveRightWidget: true, isHaveRightWidget: true,
isHaveLine: true,
rightWidget: SizedBox( rightWidget: SizedBox(
width: 60.w, height: 50.h, child: _isStressFingerprint()))), width: 60.w, height: 50.h, child: _isStressFingerprint()))),
Obx(() => CommonItem(
leftTitel: "是否是管理员".tr,
rightTitle: "",
isTipsImg: false,
isHaveRightWidget: true,
rightWidget: SizedBox(width: 60.w, height: 50.h, child: _isAdmin()))),
Container(height: 10.h), Container(height: 10.h),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr, leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr,
@ -192,6 +199,7 @@ class _FingerprintDetailPageState extends State<FingerprintDetailPage> with Rout
padding: EdgeInsets.only(top: 25.w, bottom: 25.w), padding: EdgeInsets.only(top: 25.w, bottom: 25.w),
onClick: () { onClick: () {
ShowTipView().showIosTipWithContentDialog("确定要删除吗?".tr, () async { ShowTipView().showIosTipWithContentDialog("确定要删除吗?".tr, () async {
state.isDeletFingerprint.value = true;
logic.senderAddFingerprint(); logic.senderAddFingerprint();
}); });
}), }),
@ -210,12 +218,28 @@ class _FingerprintDetailPageState extends State<FingerprintDetailPage> with Rout
onChanged: (value) { onChanged: (value) {
setState(() { setState(() {
state.isStressFingerprint.value = value; state.isStressFingerprint.value = value;
logic.editFingerprintsData(); state.isDeletFingerprint.value = false;
logic.senderAddFingerprint();
}); });
}, },
); );
} }
//
CupertinoSwitch _isAdmin() {
return CupertinoSwitch(
activeColor: CupertinoColors.activeBlue,
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: state.isAdministrator.value,
onChanged: (value) {
state.isAdministrator.value = value;
state.isDeletFingerprint.value = false;
logic.senderAddFingerprint();
},
);
}
@override @override
void didChangeDependencies() { void didChangeDependencies() {
// TODO: implement didChangeDependencies // TODO: implement didChangeDependencies

View File

@ -25,6 +25,7 @@ class FingerprintDetailState{
var sureBtnState = 0.obs;// 0() 1() var sureBtnState = 0.obs;// 0() 1()
var isDeletFingerprint = true.obs;// var isDeletFingerprint = true.obs;//
final isStressFingerprint = false.obs; final isStressFingerprint = false.obs;
var isAdministrator = false.obs;//
FingerprintDetailState() { FingerprintDetailState() {
Map map = Get.arguments; Map map = Get.arguments;
@ -43,6 +44,7 @@ class FingerprintDetailState{
addTime.value = fingerprintItemData.value.createDate!; addTime.value = fingerprintItemData.value.createDate!;
isStressFingerprint.value = fingerprintItemData.value.isCoerced! == 2 ? true : false; isStressFingerprint.value = fingerprintItemData.value.isCoerced! == 2 ? true : false;
weekDay.value = fingerprintItemData.value.weekDay!; weekDay.value = fingerprintItemData.value.weekDay!;
isAdministrator.value = fingerprintItemData.value.fingerRight! == 1 ? true : false;
} }
} }
} }

View File

@ -77,12 +77,14 @@ class FingerprintItemData {
String? senderUsername; String? senderUsername;
List? weekDay; List? weekDay;
String? validTimeStr; String? validTimeStr;
int? fingerRight;
String? cardName; String? cardName;
String? cardNumber; String? cardNumber;
int? cardType; int? cardType;
int? cardId; int? cardId;
int? cardStatus; int? cardStatus;
int? cardRight;
int? faceId; int? faceId;
String? faceName; String? faceName;
@ -123,7 +125,9 @@ class FingerprintItemData {
this.cyclicConfig, this.cyclicConfig,
this.featureData, this.featureData,
this.faceRight, this.faceRight,
this.cardStatus}); this.cardStatus,
this.cardRight,
this.fingerRight});
FingerprintItemData.fromJson(Map<String, dynamic> json) { FingerprintItemData.fromJson(Map<String, dynamic> json) {
fingerprintStatus = json['fingerprintStatus']; fingerprintStatus = json['fingerprintStatus'];
@ -155,6 +159,8 @@ class FingerprintItemData {
featureData = json['featureData']; featureData = json['featureData'];
faceRight = json['faceRight']; faceRight = json['faceRight'];
cardStatus = json['cardStatus']; cardStatus = json['cardStatus'];
cardRight = json['cardRight'];
fingerRight = json['fingerRight'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
@ -188,6 +194,8 @@ class FingerprintItemData {
data['featureData'] = featureData; data['featureData'] = featureData;
data['faceRight'] = faceRight; data['faceRight'] = faceRight;
data['cardStatus'] = cardStatus; data['cardStatus'] = cardStatus;
data['cardRight'] = cardRight;
data['fingerRight'] = fingerRight;
return data; return data;
} }
} }

View File

@ -63,30 +63,17 @@ class FingerprintListLogic extends BaseGetXController{
var signKey = await Storage.getStringList(saveBlueSignKey); var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!); List<int> signKeyDataList = changeStringListToIntList(signKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey); var token = reply.data.sublist(5, 9);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!); var saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList);
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
// IoSenderManage.senderAddFingerprintCommand(
// keyID:state.deletKeyID,
// userID:state.deletUserID,
// fingerNo:state.deletFingerNo,
// useCountLimit:0,
// startTime:0x11223344,
// endTime:0x11223344,
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand( IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:state.deletKeyID, keyID:state.deletKeyID,
userID:state.deletUserID, userID:(await Storage.getUid())!,
fingerNo:state.deletFingerNo, fingerNo:state.deletFingerNo,
useCountLimit:0, useCountLimit:0xffff,
operate: state.isDeletAll == true ? 3 : 2, // 0: 1 2: 3
isAdmin:0,
isForce:0, // isForce:0, //
isRound:0, // isRound:0, //
weekRound:0, // weekRound:0, //
@ -97,7 +84,7 @@ class FingerprintListLogic extends BaseGetXController{
needAuthor:1, needAuthor:1,
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: token,
); );
break; break;
default: default:
@ -278,9 +265,11 @@ class FingerprintListLogic extends BaseGetXController{
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand( IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:state.deletKeyID, keyID:state.deletKeyID,
userID:state.deletUserID, userID:(await Storage.getUid())!,
fingerNo:state.deletFingerNo, fingerNo:state.deletFingerNo,
useCountLimit:0, useCountLimit:0xffff,
operate: state.isDeletAll == true ? 3 : 2, // 0: 1 2: 3
isAdmin:0,
isForce:0, // isForce:0, //
isRound:0, // isRound:0, //
weekRound:0, // weekRound:0, //
@ -293,19 +282,6 @@ class FingerprintListLogic extends BaseGetXController{
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: getTokenList,
); );
// IoSenderManage.senderAddFingerprintCommand(
// keyID:state.deletKeyID,
// userID:state.deletUserID,
// fingerNo:state.deletFingerNo,
// useCountLimit:0,
// startTime:0x11223344,
// endTime:0x11223344,
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) { } else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
dismissEasyLoading(); dismissEasyLoading();
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();

View File

@ -72,7 +72,6 @@ class _FingerprintListPageState extends State<FingerprintListPage> with RouteAwa
state.isDeletFingerprintData = true; state.isDeletFingerprintData = true;
state.isDeletAll = true; state.isDeletAll = true;
state.deletKeyID = "1"; state.deletKeyID = "1";
state.deletUserID = "DeleteAll!@#";
state.deletFingerNo = 255; state.deletFingerNo = 255;
logic.senderAddFingerprint(); logic.senderAddFingerprint();
}); });
@ -145,7 +144,6 @@ class _FingerprintListPageState extends State<FingerprintListPage> with RouteAwa
state.isDeletFingerprintData = true; state.isDeletFingerprintData = true;
state.isDeletAll = false; state.isDeletAll = false;
state.deletKeyID = fingerprintItemData.fingerprintId.toString(); state.deletKeyID = fingerprintItemData.fingerprintId.toString();
state.deletUserID = (await Storage.getUid())!;
logic.senderAddFingerprint(); logic.senderAddFingerprint();
}); });
}, },

View File

@ -10,8 +10,7 @@ class FingerprintListState{
// //
var isDeletFingerprintData = false; var isDeletFingerprintData = false;
var isDeletAll = false; var isDeletAll = false;
var deletKeyID = ""; var deletKeyID = "0";
var deletUserID = "DeleteAll!@#";
var deletFingerNo = 0; var deletFingerNo = 0;
final fingerprintItemListData = <FingerprintItemData>[].obs; final fingerprintItemListData = <FingerprintItemData>[].obs;

View File

@ -144,6 +144,7 @@ class IrisDetailLogic extends BaseGetXController {
startTime: int.parse(state.starTime.value), startTime: int.parse(state.starTime.value),
endTime: int.parse(state.endTime.value), endTime: int.parse(state.endTime.value),
cardType: state.keyType.value, cardType: state.keyType.value,
cardRight: 0,
); );
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
showToast("修改成功", something: () { showToast("修改成功", something: () {

View File

@ -586,6 +586,15 @@ class LockDetailLogic extends BaseGetXController {
await PermissionDialog.request(Permission.location); await PermissionDialog.request(Permission.location);
await PermissionDialog.requestBluetooth(); await PermissionDialog.requestBluetooth();
var vendorStr = utf8String([84, 77, 72, 95, 100, 99, 56, 102, 57, 50,
56, 51, 54, 57, 101, 100, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]);
AppLog.log("LockID :$vendorStr");
var userID = utf8String([51, 50, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
AppLog.log("userID :$userID");
} }
} }

View File

@ -143,6 +143,7 @@ class PalmDetailLogic extends BaseGetXController {
startTime: int.parse(state.starTime.value), startTime: int.parse(state.starTime.value),
endTime: int.parse(state.endTime.value), endTime: int.parse(state.endTime.value),
cardType: state.keyType.value, cardType: state.keyType.value,
cardRight: 0,
); );
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
showToast("修改成功", something: () { showToast("修改成功", something: () {

View File

@ -25,7 +25,6 @@ class PasswordKeyDetailLogic extends BaseGetXController {
void _initReplySubscription() { void _initReplySubscription() {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async { _replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
// //
AppLog.log("ifCurrentScreen:${state.ifCurrentScreen.value}");
if ((reply is SenderCustomPasswordsReply) && (state.ifCurrentScreen.value == true)) { if ((reply is SenderCustomPasswordsReply) && (state.ifCurrentScreen.value == true)) {
int status = reply.data[2]; int status = reply.data[2];
switch (status) { switch (status) {
@ -56,8 +55,10 @@ class PasswordKeyDetailLogic extends BaseGetXController {
keyID:state.itemData.value.keyboardPwdId!.toString(), keyID:state.itemData.value.keyboardPwdId!.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
pwdNo: state.itemData.value.pwdUserNo!, pwdNo: state.itemData.value.pwdUserNo!,
pwd: state.isDeletPasswordKey.value == true ? "000000" : state.inputPwdController.text, pwd: state.isDeletPasswordKey.value == true ? "0" : state.inputPwdController.text,
useCountLimit: state.isDeletPasswordKey.value == true ? 0 : 0xff, useCountLimit: 0xffff,
operate: state.isDeletPasswordKey.value == true ? 2 : 1,
isAdmin: state.isAdministrator.value == true ? 1 : 0,
startTime:state.itemData.value.startDate! ~/ 1000, startTime:state.itemData.value.startDate! ~/ 1000,
endTime:state.itemData.value.endDate! ~/ 1000, endTime:state.itemData.value.endDate! ~/ 1000,
needAuthor: 1, needAuthor: 1,
@ -150,12 +151,15 @@ class PasswordKeyDetailLogic extends BaseGetXController {
// signKey: signKeyDataList, // signKey: signKeyDataList,
// privateKey: getPrivateKeyList, // privateKey: getPrivateKeyList,
// token: getTokenList); // token: getTokenList);
IoSenderManage.senderCustomPasswordsCommand( IoSenderManage.senderCustomPasswordsCommand(
keyID:state.itemData.value.keyboardPwdId!.toString(), keyID:state.itemData.value.keyboardPwdId!.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
pwdNo: state.itemData.value.pwdUserNo!, pwdNo: state.itemData.value.pwdUserNo!,
pwd: state.isDeletPasswordKey.value == true ? "000000" : state.inputPwdController.text, pwd: state.isDeletPasswordKey.value == true ? "0" : state.inputPwdController.text,
useCountLimit: state.isDeletPasswordKey.value == true ? 0 : 0xff, useCountLimit: 0xffff,
operate: state.isDeletPasswordKey.value == true ? 2 : 1,
isAdmin: state.isAdministrator.value == true ? 1 : 0,
startTime:state.itemData.value.startDate! ~/ 1000, startTime:state.itemData.value.startDate! ~/ 1000,
endTime:state.itemData.value.endDate! ~/ 1000, endTime:state.itemData.value.endDate! ~/ 1000,
needAuthor: 1, needAuthor: 1,

View File

@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -113,6 +114,20 @@ class _PasswordKeyDetailPageState extends State<PasswordKeyDetailPage> with Rout
rightTitle: getSenderDate(state.itemData.value), rightTitle: getSenderDate(state.itemData.value),
action: () {}), action: () {}),
Container(height: 10.h), Container(height: 10.h),
Obx(() => Visibility(
visible: state.itemData.value.isCustom! == 1,
child: Column(
children: [
CommonItem(
leftTitel: "管理员".tr,
rightTitle: "",
isTipsImg: false,
isHaveRightWidget: true,
rightWidget: SizedBox(width: 60.w, height: 50.h, child: _isAdmin())),
Container(height: 10.h),
],
),
)),
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr, leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr,
rightTitle: "", rightTitle: "",
@ -202,7 +217,6 @@ class _PasswordKeyDetailPageState extends State<PasswordKeyDetailPage> with Rout
onClick: () { onClick: () {
ShowTipView().showIosTipWithContentDialog("确定要删除吗?".tr, (){ ShowTipView().showIosTipWithContentDialog("确定要删除吗?".tr, (){
state.isDeletPasswordKey.value = true; state.isDeletPasswordKey.value = true;
state.ifCurrentScreen.value = true;
if(state.itemData.value.isCustom! == 1){ if(state.itemData.value.isCustom! == 1){
// //
logic.senderCustomPasswords(); logic.senderCustomPasswords();
@ -217,6 +231,21 @@ class _PasswordKeyDetailPageState extends State<PasswordKeyDetailPage> with Rout
)); ));
} }
//
CupertinoSwitch _isAdmin() {
return CupertinoSwitch(
activeColor: CupertinoColors.activeBlue,
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: state.isAdministrator.value,
onChanged: (value) {
state.isAdministrator.value = value;
state.isDeletPasswordKey.value = false;
logic.senderCustomPasswords();
},
);
}
// //
String getSenderDate(PasswordKeyListItem indexEntity) { String getSenderDate(PasswordKeyListItem indexEntity) {
String senderDate = ''; String senderDate = '';
@ -257,7 +286,6 @@ class _PasswordKeyDetailPageState extends State<PasswordKeyDetailPage> with Rout
logic.updatePwdRequest(1); logic.updatePwdRequest(1);
}else{ }else{
// //
state.ifCurrentScreen.value = true;
logic.senderCustomPasswords(); logic.senderCustomPasswords();
} }
}, },

View File

@ -17,7 +17,8 @@ class PasswordKeyDetailState {
var ifCurrentScreen = true.obs; // , var ifCurrentScreen = true.obs; // ,
var sureBtnState = 0.obs;// 0() 1() var sureBtnState = 0.obs;// 0() 1()
final passwordKeyNumber = "".obs;// final passwordKeyNumber = "".obs;//
var isDeletPasswordKey = true.obs;// var isDeletPasswordKey = true.obs;//
var isAdministrator = false.obs;//
PasswordKeyDetailState() { PasswordKeyDetailState() {
Map map = Get.arguments; Map map = Get.arguments;
@ -29,7 +30,7 @@ class PasswordKeyDetailState {
inputPwdController.text = itemData.value.keyboardPwd!; inputPwdController.text = itemData.value.keyboardPwd!;
keyId.value = itemData.value.keyboardPwdId!; keyId.value = itemData.value.keyboardPwdId!;
keyboardUserNo.value = itemData.value.pwdUserNo!; keyboardUserNo.value = itemData.value.pwdUserNo!;
isAdministrator.value = itemData.value.pwdRight! == 1 ? true : false;
// startDate.value = itemData.value.startDate!; // startDate.value = itemData.value.startDate!;
// endDate.value = itemData.value.endDate!; // endDate.value = itemData.value.endDate!;
// hoursStart.value = itemData.value.hoursStart!; // hoursStart.value = itemData.value.hoursStart!;

View File

@ -51,7 +51,9 @@ class PasswordKeyDetailChangeDateLogic extends BaseGetXController {
userID:await Storage.getUid(), userID:await Storage.getUid(),
pwdNo: state.itemData.value.pwdUserNo!, pwdNo: state.itemData.value.pwdUserNo!,
pwd: state.itemData.value.keyboardPwd!.toString(), pwd: state.itemData.value.keyboardPwd!.toString(),
useCountLimit: 0xff, operate: 1,
isAdmin: 0,
useCountLimit: 0xffff,
startTime:state.itemData.value.startDate! ~/ 1000, startTime:state.itemData.value.startDate! ~/ 1000,
endTime:state.itemData.value.endDate! ~/ 1000, endTime:state.itemData.value.endDate! ~/ 1000,
needAuthor: 1, needAuthor: 1,
@ -131,7 +133,9 @@ class PasswordKeyDetailChangeDateLogic extends BaseGetXController {
userID:await Storage.getUid(), userID:await Storage.getUid(),
pwdNo: state.itemData.value.pwdUserNo!, pwdNo: state.itemData.value.pwdUserNo!,
pwd: state.itemData.value.keyboardPwd!.toString(), pwd: state.itemData.value.keyboardPwd!.toString(),
useCountLimit: 0xff, operate: 1,
isAdmin: state.itemData.value.pwdUserNo!,
useCountLimit: 0xffff,
startTime:state.itemData.value.startDate! ~/ 1000, startTime:state.itemData.value.startDate! ~/ 1000,
endTime:state.itemData.value.endDate! ~/ 1000, endTime:state.itemData.value.endDate! ~/ 1000,
needAuthor: 1, needAuthor: 1,

View File

@ -83,6 +83,7 @@ class PasswordKeyListItem {
int? hoursStart; int? hoursStart;
int? hoursEnd; int? hoursEnd;
int? pwdUserNo; int? pwdUserNo;
int? pwdRight;
PasswordKeyListItem( PasswordKeyListItem(
{this.apiUserId, {this.apiUserId,
@ -102,7 +103,8 @@ class PasswordKeyListItem {
this.isCoerced, this.isCoerced,
this.hoursStart, this.hoursStart,
this.hoursEnd, this.hoursEnd,
this.pwdUserNo}); this.pwdUserNo,
this.pwdRight});
PasswordKeyListItem.fromJson(Map<String, dynamic> json) { PasswordKeyListItem.fromJson(Map<String, dynamic> json) {
apiUserId = json['apiUserId']; apiUserId = json['apiUserId'];
@ -123,6 +125,7 @@ class PasswordKeyListItem {
hoursStart = json['hoursStart']; hoursStart = json['hoursStart'];
hoursEnd = json['hoursEnd']; hoursEnd = json['hoursEnd'];
pwdUserNo = json['pwdUserNo']; pwdUserNo = json['pwdUserNo'];
pwdRight = json['pwdRight'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
@ -145,6 +148,7 @@ class PasswordKeyListItem {
data['hoursStart'] = hoursStart; data['hoursStart'] = hoursStart;
data['hoursEnd'] = hoursEnd; data['hoursEnd'] = hoursEnd;
data['pwdUserNo'] = pwdUserNo; data['pwdUserNo'] = pwdUserNo;
data['pwdRight'] = pwdRight;
return data; return data;
} }
} }

View File

@ -2,8 +2,6 @@ import 'dart:async';
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/app_settings/app_settings.dart';
import 'package:star_lock/blue/io_type.dart';
import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart';
import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_state.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_state.dart';
import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/network/api_repository.dart';
@ -41,7 +39,6 @@ class PasswordKeyListLogic extends BaseGetXController {
switch(status){ switch(status){
case 0x00: case 0x00:
// //
state.isDeletPWDData = false;
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
if(state.isDeletAll){ if(state.isDeletAll){
resetPasswordKeyListRequest(); resetPasswordKeyListRequest();
@ -66,10 +63,12 @@ class PasswordKeyListLogic extends BaseGetXController {
IoSenderManage.senderCustomPasswordsCommand( IoSenderManage.senderCustomPasswordsCommand(
keyID:state.deletKeyID, keyID:state.deletKeyID,
userID:state.deletUserID, userID:(await Storage.getUid())!,
pwdNo:state.pwdNo, pwdNo:state.pwdNo,
pwd:"000000",//state.deletPWD, pwd:"0",//state.deletPWD,
useCountLimit: 0, operate: state.isDeletAll ? 3 : 2,
isAdmin: 0,
useCountLimit: 0xffff,
startTime:0x11223344, startTime:0x11223344,
endTime:0x11223344, endTime:0x11223344,
needAuthor: 1, needAuthor: 1,
@ -155,10 +154,12 @@ class PasswordKeyListLogic extends BaseGetXController {
IoSenderManage.senderCustomPasswordsCommand( IoSenderManage.senderCustomPasswordsCommand(
keyID:state.deletKeyID, keyID:state.deletKeyID,
userID:state.deletUserID, userID:(await Storage.getUid())!,
pwdNo:state.pwdNo, pwdNo:state.pwdNo,
pwd:"000000",//state.deletPWD, pwd:"0",//state.deletPWD,
useCountLimit: 0, operate: state.isDeletAll ? 3 : 2,
isAdmin: 0,
useCountLimit: 0xffff,
startTime:0x11223344, startTime:0x11223344,
endTime:0x11223344, endTime:0x11223344,
needAuthor: 1, needAuthor: 1,

View File

@ -62,12 +62,11 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage> with RouteAwa
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) { if (isDemoMode == false) {
ShowTipView().showIosTipWithContentDialog('该锁的密码都将被删除'.tr, () { ShowTipView().showIosTipWithContentDialog('该锁的密码都将被删除'.tr, () {
state.isDeletPWDData = true;
state.isDeletAll = true; state.isDeletAll = true;
state.deletKeyID = "0"; state.deletKeyID = "0";
state.deletUserID = "DeleteAll!@#"; state.deletUserID = "0";
// state.deletPWD = ""; // state.deletPWD = "";
state.pwdNo = 255; state.pwdNo = 0;
logic.senderCustomPasswords(); logic.senderCustomPasswords();
}); });

View File

@ -14,7 +14,6 @@ class PasswordKeyListState {
var sureBtnState = 0.obs;// 0() 1() var sureBtnState = 0.obs;// 0() 1()
// //
var isDeletPWDData = false;
var isDeletAll = false; var isDeletAll = false;
var deletKeyID = ""; var deletKeyID = "";
var deletUserID = "DeleteAll!@#"; var deletUserID = "DeleteAll!@#";

View File

@ -154,7 +154,8 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
keyboardPwdType:getKeyType, keyboardPwdType:getKeyType,
startDate:getEffectiveDateTime, startDate:getEffectiveDateTime,
endDate:getFailureDateTime, endDate:getFailureDateTime,
addType:'1'); addType:'1',
pwdRight:state.isAdministrator.value == true ? 1 : 0,);
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
state.isSendSuccess.value = true; state.isSendSuccess.value = true;
state.sendSucceedType.value = state.widgetType.value; state.sendSucceedType.value = state.widgetType.value;
@ -235,9 +236,11 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
IoSenderManage.senderCustomPasswordsCommand( IoSenderManage.senderCustomPasswordsCommand(
keyID: "1", keyID: "1",
userID: await Storage.getUid(), userID: await Storage.getUid(),
pwdNo: state.isAdministrator.value == true ? 254 : 0, pwdNo: 0,
pwd:state.pwdController.text, pwd:state.pwdController.text,
useCountLimit: 0xff, operate: 0,
isAdmin: state.isAdministrator.value == true ? 1 : 0,
useCountLimit: 0xffff,
startTime: DateTool().dateToTimestamp(state.customBeginTime.value, 1)~/1000, startTime: DateTool().dateToTimestamp(state.customBeginTime.value, 1)~/1000,
endTime: DateTool().dateToTimestamp(state.customEndTime.value, 1)~/1000, endTime: DateTool().dateToTimestamp(state.customEndTime.value, 1)~/1000,
needAuthor: 1, needAuthor: 1,
@ -316,11 +319,13 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
IoSenderManage.senderCustomPasswordsCommand( IoSenderManage.senderCustomPasswordsCommand(
keyID: "1", keyID: "1",
userID: await Storage.getUid(), userID: await Storage.getUid(),
pwdNo: state.isAdministrator.value == true ? 254 : 0, pwdNo: 0,
pwd: state.pwdController.text, pwd:state.pwdController.text,
useCountLimit: 0xff, operate: 0,
startTime:state.isPermanent.value == false ? startDate ~/ 1000 : 0, isAdmin: state.isAdministrator.value == true ? 1 : 0,
endTime: state.isPermanent.value == false ? endDate ~/ 1000 : 0, useCountLimit: 0xffff,
startTime: DateTool().dateToTimestamp(state.customBeginTime.value, 1)~/1000,
endTime: DateTool().dateToTimestamp(state.customEndTime.value, 1)~/1000,
needAuthor: 1, needAuthor: 1,
isBeforeAddUser: false, isBeforeAddUser: false,
signKey: signKeyDataList, signKey: signKeyDataList,

View File

@ -6,6 +6,7 @@ import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart';
import 'package:star_lock/tools/commonDataManage.dart'; import 'package:star_lock/tools/commonDataManage.dart';
import 'package:star_lock/tools/pickers/pickers.dart'; import 'package:star_lock/tools/pickers/pickers.dart';
@ -580,6 +581,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> wit
value: state.isAdministrator.value, value: state.isAdministrator.value,
onChanged: (value) { onChanged: (value) {
state.isAdministrator.value = value; state.isAdministrator.value = value;
AppLog.log("isAdministrator:${state.isAdministrator.value}");
}, },
); );
} }

View File

@ -119,9 +119,11 @@ class SaveLockLogic extends BaseGetXController {
IoSenderManage.senderCustomPasswordsCommand( IoSenderManage.senderCustomPasswordsCommand(
keyID: "1", keyID: "1",
userID: await Storage.getUid(), userID: await Storage.getUid(),
pwdNo: 254, pwdNo: 0,
pwd: state.adminPasswordTF.text, pwd: state.adminPasswordTF.text,
useCountLimit: 0xff, operate: 0,
isAdmin: 1,
useCountLimit: 0xffff,
startTime: 0x11223344, startTime: 0x11223344,
endTime: 0x11223344, endTime: 0x11223344,
needAuthor: 1, needAuthor: 1,
@ -256,9 +258,11 @@ class SaveLockLogic extends BaseGetXController {
IoSenderManage.senderCustomPasswordsCommand( IoSenderManage.senderCustomPasswordsCommand(
keyID: "1", keyID: "1",
userID: await Storage.getUid(), userID: await Storage.getUid(),
pwdNo: 254, pwdNo: 0,
pwd:state.adminPasswordTF.text, pwd: state.adminPasswordTF.text,
useCountLimit: 0xff, operate: 0,
isAdmin: 1,
useCountLimit: 0xffff,
startTime: 0x11223344, startTime: 0x11223344,
endTime: 0x11223344, endTime: 0x11223344,
needAuthor: 1, needAuthor: 1,

View File

@ -61,7 +61,9 @@ class ExpireCardLogic extends BaseGetXController {
keyID:"1", keyID:"1",
userID:await Storage.getUid(), userID:await Storage.getUid(),
cardNo:state.deletExpireCardItemEntity.cardUserNo!, cardNo:state.deletExpireCardItemEntity.cardUserNo!,
useCountLimit:0xff, useCountLimit:0xffff,
operate: 2, // 0: 1 2: 3
isAdmin:0,
isForce:0, // isForce:0, //
isRound:0, // isRound:0, //
weekRound:0, // weekRound:0, //
@ -110,7 +112,9 @@ class ExpireCardLogic extends BaseGetXController {
keyID:"1", keyID:"1",
userID:await Storage.getUid(), userID:await Storage.getUid(),
cardNo:state.deletExpireCardItemEntity.cardUserNo!, cardNo:state.deletExpireCardItemEntity.cardUserNo!,
useCountLimit:0xff, useCountLimit:0xffff,
operate: 2, // 0: 1 2: 3
isAdmin:0,
isForce:0, // isForce:0, //
isRound:0, // isRound:0, //
weekRound:0, // weekRound:0, //

View File

@ -74,6 +74,8 @@ class ExpireFingerprintLogic extends BaseGetXController {
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: getTokenList,
isAdmin: 0,
operate: 0,
); );
break; break;
default: default:
@ -107,8 +109,6 @@ class ExpireFingerprintLogic 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();
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand( IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:state.deletExpireFingerprintItemEntity.fingerprintId.toString(), keyID:state.deletExpireFingerprintItemEntity.fingerprintId.toString(),
userID:await Storage.getUid(), userID:await Storage.getUid(),
@ -125,6 +125,8 @@ class ExpireFingerprintLogic extends BaseGetXController {
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: getTokenList,
isAdmin: 0,
operate: 0,
); );
// IoSenderManage.senderAddFingerprintCommand( // IoSenderManage.senderAddFingerprintCommand(

View File

@ -452,6 +452,7 @@ class ApiProvider extends BaseProvider {
String startDate, String startDate,
String endDate, String endDate,
String addType, String addType,
int? pwdRight,
) => ) =>
post( post(
passwordKeyAddURL.toUrl, passwordKeyAddURL.toUrl,
@ -463,6 +464,7 @@ class ApiProvider extends BaseProvider {
'startDate': startDate, 'startDate': startDate,
'endDate': endDate, 'endDate': endDate,
'addType': addType, 'addType': addType,
'pwdRight': pwdRight
})); }));
// //
@ -1122,7 +1124,8 @@ class ApiProvider extends BaseProvider {
String changeType, String changeType,
int startTime, int startTime,
int endTime, int endTime,
int fingerprintType) => int fingerprintType,
int fingerRight) =>
post( post(
editFingerprintURL.toUrl, editFingerprintURL.toUrl,
jsonEncode({ jsonEncode({
@ -1137,6 +1140,7 @@ class ApiProvider extends BaseProvider {
'startTime': startTime, 'startTime': startTime,
'endTime': endTime, 'endTime': endTime,
'fingerprintType': fingerprintType, 'fingerprintType': fingerprintType,
'fingerRight': fingerRight
})); }));
// //
@ -1333,6 +1337,7 @@ class ApiProvider extends BaseProvider {
int startTime, int startTime,
int endTime, int endTime,
int cardType, int cardType,
int cardRight,
) => ) =>
post( post(
editICCardURL.toUrl, editICCardURL.toUrl,
@ -1347,7 +1352,8 @@ class ApiProvider extends BaseProvider {
'changeType': changeType, 'changeType': changeType,
'startTime': startTime, 'startTime': startTime,
'endTime': endTime, 'endTime': endTime,
'cardType': cardType 'cardType': cardType,
'cardRight': cardRight
})); }));
// //

View File

@ -474,9 +474,10 @@ class ApiRepository {
required String startDate, required String startDate,
required String endDate, required String endDate,
required String addType, required String addType,
required int pwdRight,
}) async { }) async {
final res = await apiProvider.addKeyboardPwd(lockId, keyboardPwdName, final res = await apiProvider.addKeyboardPwd(lockId, keyboardPwdName,
keyboardPwd, keyboardPwdType, startDate, endDate, addType); keyboardPwd, keyboardPwdType, startDate, endDate, addType, pwdRight);
return PasswordKeyEntity.fromJson(res.body); return PasswordKeyEntity.fromJson(res.body);
} }
@ -1296,7 +1297,8 @@ class ApiRepository {
required String changeType, required String changeType,
required int startTime, required int startTime,
required int endTime, required int endTime,
required int fingerprintType}) async { required int fingerprintType,
required int fingerRight}) async {
final res = await apiProvider.editFingerprintsData( final res = await apiProvider.editFingerprintsData(
fingerprintId, fingerprintId,
lockId, lockId,
@ -1308,7 +1310,8 @@ class ApiRepository {
changeType, changeType,
startTime, startTime,
endTime, endTime,
fingerprintType); fingerprintType,
fingerRight);
return LoginEntity.fromJson(res.body); return LoginEntity.fromJson(res.body);
} }
@ -1502,6 +1505,7 @@ class ApiRepository {
required int startTime, required int startTime,
required int endTime, required int endTime,
required int cardType, required int cardType,
required int cardRight,
}) async { }) async {
final res = await apiProvider.editICCardData( final res = await apiProvider.editICCardData(
lockId, lockId,
@ -1514,7 +1518,8 @@ class ApiRepository {
changeType, changeType,
startTime, startTime,
endTime, endTime,
cardType); cardType,
cardRight);
return LoginEntity.fromJson(res.body); return LoginEntity.fromJson(res.body);
} }