添加掌静脉删除、修改有限期

This commit is contained in:
魏少阳 2024-07-29 11:56:34 +08:00
parent 706003021c
commit d945ff5bb8
15 changed files with 390 additions and 64 deletions

View File

@ -105,7 +105,7 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
state.endDate.value = data['endDate'];
state.starTime.value = data['starTime'];
state.endTime.value = data['endTime'];
state.weekDay.value = data['weekDay'];
state.weekDay.value = data['validityValue'];
});
}
}
@ -131,7 +131,7 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
state.endDate.value = data['endDate'];
state.starTime.value = data['starTime'];
state.endTime.value = data['endTime'];
state.weekDay.value = data['weekDay'];
state.weekDay.value = data['validityValue'];
});
}
})))),

View File

@ -3,6 +3,7 @@ import 'dart:async';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart';
import 'package:star_lock/blue/io_protocol/io_addPalmWithTimeCycleCoercion.dart';
import 'package:star_lock/blue/io_protocol/io_addRemoteControlWithTimeCycleCoercion.dart';
import 'package:star_lock/login/login/entity/LoginEntity.dart';
import 'package:star_lock/tools/baseGetXController.dart';
@ -45,9 +46,15 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
if ((reply is SenderAddFaceReply) && (state.ifCurrentScreen.value == true)) {
_replyAddFaceBegin(reply);
}
// ()
if ((reply is SenderAddPalmWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) {
_replyAddPalmBegin(reply);
}
});
}
///
//
Future<void> _replyAddICCardBegin(Reply reply) async {
final int status = reply.data[2];
@ -249,6 +256,58 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
}
}
//
Future<void> _replyAddPalmBegin(Reply reply) async {
final int status = reply.data[2];
switch (status) {
case 0x00:
//
state.sureBtnState.value = 0;
cancelBlueConnetctToastTimer();
dismissEasyLoading();
editPalmData();
break;
case 0x06:
//
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
final List<int> token = reply.data.sublist(5, 9);
final List<String> saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList);
IoSenderManage.senderAddPalmWithTimeCycleCoercionCommand(
keyID:state.fingerprintItemData.value.palmVeinId!.toString(),
userID:await Storage.getUid(),
palmNo:int.parse(state.fingerprintItemData.value.palmVeinNumber!),
useCountLimit:0xffff,
operate: 1, // 0: 1 2: 3
isAdmin:state.fingerprintItemData.value.palmVeinRight!,
isForce:state.fingerprintItemData.value.isCoerced, //
isRound:0, //
weekRound:0, //
startDate: state.beginTimeTimestamp.value~/1000,
endDate: state.endTimeTimestamp.value~/1000,
startTime:'0',
endTime:'0',
needAuthor:1,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: token,
isBeforeAddUser: false
);
break;
default:
//
break;
}
}
///
//
Future<void> senderAddFingerprint() async {
if(state.sureBtnState.value == 1){
@ -471,6 +530,62 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
});
}
//
Future<void> senderAddPalm() async {
if (state.sureBtnState.value == 1) {
return;
}
state.sureBtnState.value = 1;
showEasyLoading();
showBlueConnetctToastTimer(action: () {
dismissEasyLoading();
state.sureBtnState.value = 0;
});
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected) {
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
IoSenderManage.senderAddPalmWithTimeCycleCoercionCommand(
keyID:state.fingerprintItemData.value.palmVeinId!.toString(),
userID:await Storage.getUid(),
palmNo:int.parse(state.fingerprintItemData.value.palmVeinNumber!),
useCountLimit:0xffff,
operate: 1, // 0: 1 2: 3
isAdmin:state.fingerprintItemData.value.palmVeinRight!,
isForce:state.fingerprintItemData.value.isCoerced, //
isRound:0, //
weekRound:0, //
startDate: state.beginTimeTimestamp.value~/1000,
endDate: state.endTimeTimestamp.value~/1000,
startTime:'0',
endTime:'0',
needAuthor:1,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
isBeforeAddUser: false
);
} else if (deviceConnectionState ==
BluetoothConnectionState.disconnected) {
dismissEasyLoading();
cancelBlueConnetctToastTimer();
state.sureBtnState.value = 0;
if (state.ifCurrentScreen.value == true) {
showBlueConnetctToast();
}
}
});
}
///
//
Future<void> editFingerprintsData() async{
final LoginEntity entity = await ApiRepository.to.editFingerprintsData(
@ -579,6 +694,33 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
}
}
//
Future<void> editPalmData() async {
final LoginEntity entity = await ApiRepository.to.editPalmData(
lockId: state.fingerprintItemData.value.lockId!,
palmVeinId: state.fingerprintItemData.value.palmVeinId!,
startDate: state.beginTimeTimestamp.value,
endDate: state.endTimeTimestamp.value,
startTime: 0,
endTime: 0,
palmVeinType: 2,
weekDay: [],
palmVeinName: state.fingerprintItemData.value.palmVeinName!,
addType: 1,
isCoerced: state.fingerprintItemData.value.isCoerced!,
palmVeinRight: state.fingerprintItemData.value.palmVeinRight!,
);
if (entity.errorCode!.codeIsSuccessful) {
showToast('修改成功', something: () {
Get.back(result: <String, String>{
'beginTimeTimestamp':state.beginTimeTimestamp.value.toString(),
'endTimeTimestamp':state.endTimeTimestamp.value.toString(),
});
eventBus.fire(OtherTypeRefreshListEvent());
});
}
}
@override
void onReady() {
super.onReady();

View File

@ -77,6 +77,10 @@ class _OtherTypeKeyChangeDatePageState extends State<OtherTypeKeyChangeDatePage>
//
logic.senderAddFace();
break;
case 4:
//
logic.senderAddPalm();
break;
default:
break;
}

View File

@ -39,7 +39,7 @@ class OtherTypeKeyChangeDateState{// 0普通状态(可用) 1连接中(不可用)
RxInt beginTimeTimestamp = 0.obs;//
RxInt endTimeTimestamp = 0.obs;//
RxInt pushType = 0.obs;// 0 1 2 3
RxInt pushType = 0.obs;// 0 1 2 3 4
RxBool ifCurrentScreen = true.obs; // ,
RxInt sureBtnState = 0.obs;
}

View File

@ -3,6 +3,7 @@ import 'dart:async';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart';
import 'package:star_lock/blue/io_protocol/io_addPalmWithTimeCycleCoercion.dart';
import 'package:star_lock/blue/io_protocol/io_addRemoteControlWithTimeCycleCoercion.dart';
import 'package:star_lock/login/login/entity/LoginEntity.dart';
import 'package:star_lock/tools/baseGetXController.dart';
@ -47,9 +48,15 @@ class OtherTypeKeyChangeValidityDateLogic extends BaseGetXController{
if ((reply is SenderAddFaceReply) && (state.ifCurrentScreen.value == true)) {
_replyAddFaceBegin(reply);
}
// ()
if ((reply is SenderAddPalmWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) {
_replyAddPalmBegin(reply);
}
});
}
///
//
Future<void> _replyAddICCardBegin(Reply reply) async {
final int status = reply.data[2];
@ -250,7 +257,57 @@ class OtherTypeKeyChangeValidityDateLogic extends BaseGetXController{
}
}
//
Future<void> _replyAddPalmBegin(Reply reply) async {
final int status = reply.data[2];
switch(status){
case 0x00:
//
cancelBlueConnetctToastTimer();
dismissEasyLoading();
editPalmData();
break;
case 0x06:
//
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
final List<int> token = reply.data.sublist(5, 9);
final List<String> saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList);
IoSenderManage.senderAddPalmWithTimeCycleCoercionCommand(
keyID:state.fingerprintItemData.value.palmVeinId!.toString(),
userID:await Storage.getUid(),
palmNo:int.parse(state.fingerprintItemData.value.palmVeinNumber!),
useCountLimit:0xffff,
operate: 1, // 0: 1 2: 3
isAdmin:state.fingerprintItemData.value.palmVeinRight!,
isForce:state.fingerprintItemData.value.isCoerced, //
isRound:1, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
startDate: state.starDateTimestamp.value~/1000,
endDate: state.endDateTimestamp.value~/1000,
startTime:DateTool().dateToHNString(state.starTimeTimestamp.value.toString()),
endTime:DateTool().dateToHNString(state.endTimeTimestamp.value.toString()),
needAuthor:1,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: token,
isBeforeAddUser: false
);
break;
default:
//
break;
}
}
///
//
Future<void> senderAddICCard() async {
if(state.sureBtnState.value == 1){
@ -473,7 +530,62 @@ class OtherTypeKeyChangeValidityDateLogic extends BaseGetXController{
});
}
//
Future<void> senderAddPalm() async {
if (state.sureBtnState.value == 1) {
return;
}
state.sureBtnState.value = 1;
showEasyLoading();
showBlueConnetctToastTimer(action: () {
dismissEasyLoading();
state.sureBtnState.value = 0;
});
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected) {
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
IoSenderManage.senderAddPalmWithTimeCycleCoercionCommand(
keyID:state.fingerprintItemData.value.palmVeinId!.toString(),
userID:await Storage.getUid(),
palmNo:int.parse(state.fingerprintItemData.value.palmVeinNumber!),
useCountLimit:0xffff,
operate: 1, // 0: 1 2: 3
isAdmin:state.fingerprintItemData.value.palmVeinRight!,
isForce:state.fingerprintItemData.value.isCoerced, //
isRound:1, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
startDate: state.starDateTimestamp.value~/1000,
endDate: state.endDateTimestamp.value~/1000,
startTime:DateTool().dateToHNString(state.starTimeTimestamp.value.toString()),
endTime:DateTool().dateToHNString(state.endTimeTimestamp.value.toString()),
needAuthor:1,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
isBeforeAddUser: false
);
} else if (deviceConnectionState ==
BluetoothConnectionState.disconnected) {
dismissEasyLoading();
cancelBlueConnetctToastTimer();
state.sureBtnState.value = 0;
if (state.ifCurrentScreen.value == true) {
showBlueConnetctToast();
}
}
});
}
///
//
Future<void> editFingerprintsData() async{
final LoginEntity entity = await ApiRepository.to.editFingerprintsData(
@ -594,6 +706,36 @@ class OtherTypeKeyChangeValidityDateLogic extends BaseGetXController{
}
}
//
Future<void> editPalmData() async {
final LoginEntity entity = await ApiRepository.to.editPalmData(
lockId: state.fingerprintItemData.value.lockId!,
palmVeinId: state.fingerprintItemData.value.palmVeinId!,
startDate: state.starDateTimestamp.value,
endDate: state.endDateTimestamp.value,
startTime: state.starTimeTimestamp.value,
endTime: state.endTimeTimestamp.value,
palmVeinType: 4,
weekDay: state.weekDay.value,
palmVeinName: state.fingerprintItemData.value.palmVeinName!,
addType: 1,
isCoerced: state.fingerprintItemData.value.isCoerced!,
palmVeinRight: state.fingerprintItemData.value.palmVeinRight!,
);
if (entity.errorCode!.codeIsSuccessful) {
showToast('修改成功', something: () {
eventBus.fire(OtherTypeRefreshListEvent());
Get.back(result: <String, Object>{
'starDate':state.starDateTimestamp.value.toString(),
'endDate':state.endDateTimestamp.value.toString(),
'starTime':state.starTimeTimestamp.value.toString(),
'endTime':state.endTimeTimestamp.value.toString(),
'validityValue':state.weekDay.value,
});
});
}
}
@override
void onReady() {
super.onReady();

View File

@ -90,6 +90,10 @@ class _OtherTypeKeyChangeValidityDatePageState extends State<OtherTypeKeyChangeV
//
logic.senderAddFace();
break;
case 4:
//
logic.senderAddPalm();
break;
default:
break;
}

View File

@ -29,7 +29,7 @@ class OtherTypeKeyChangeValidityDateState{// 0普通状态(可用) 1连接中(
RxInt starTimeTimestamp = 0.obs;//
RxInt endTimeTimestamp = 0.obs;//
RxInt pushType = 0.obs;// 0 1 2 3
RxInt pushType = 0.obs;// 0 1 2 3 4
RxList weekDay = [].obs;
RxBool ifCurrentScreen = true.obs; // ,
RxInt sureBtnState = 0.obs;

View File

@ -63,22 +63,24 @@ class _AddPalmPageState extends State<AddPalmPage> {
SizedBox(
height: 120.h,
),
Obx(() => state.isClickAddPalm.value == false
? GestureDetector(
onTap: () {
state.isClickAddPalm.value = true;
},
child: Container(
width: 1.sw,
padding: EdgeInsets.all(10.w),
margin: EdgeInsets.only(left: 15.w, right: 15.w, top: 10.h, bottom: 10.h),
decoration: BoxDecoration(
color: AppColors.mainColor,
borderRadius: BorderRadius.circular(10.w),
),
child: Center(child: Text('准备好了,开始添加', style: TextStyle(color: Colors.white, fontSize: 24.sp)))),
)
: Container(
Obx(() =>
// state.isClickAddPalm.value == false
// ? GestureDetector(
// onTap: () {
// logic.senderAddPalm();
// },
// child: Container(
// width: 1.sw,
// padding: EdgeInsets.all(10.w),
// margin: EdgeInsets.only(left: 15.w, right: 15.w, top: 10.h, bottom: 10.h),
// decoration: BoxDecoration(
// color: AppColors.mainColor,
// borderRadius: BorderRadius.circular(10.w),
// ),
// child: Center(child: Text('准备好了,开始添加', style: TextStyle(color: Colors.white, fontSize: 24.sp)))),
// )
// :
Container(
width: 1.sw,
padding: EdgeInsets.all(10.w),
margin: EdgeInsets.only(left: 15.w, right: 15.w, top: 10.h, bottom: 10.h),

View File

@ -179,16 +179,16 @@ class PalmDetailLogic extends BaseGetXController {
}
}
//
//
Future<void> deletPalmData() async {
// final LoginEntity entity = await ApiRepository.to.deletRemoteControlData(
// remoteId: state.fingerprintItemData.value.remoteId ?? 0,
// );
// if (entity.errorCode!.codeIsSuccessful) {
// showToast('删除成功'.tr, something: () {
// Get.back(result: 'addScuess');
// });
// }
final LoginEntity entity = await ApiRepository.to.deletPalmData(
palmVeinId: state.fingerprintItemData.value.palmVeinId ?? 0,
);
if (entity.errorCode!.codeIsSuccessful) {
showToast('删除成功'.tr, something: () {
Get.back(result: 'addScuess');
});
}
}
String getKeyTypeShowDateTime() {

View File

@ -70,7 +70,7 @@ class _PalmDetailPageState extends State<PalmDetailPage> with RouteAware {
final data = await Get.toNamed(
Routers.otherTypeKeyChangeDatePage,
arguments: <String, Object>{
'pushType': 0,
'pushType': 4,
'fingerprintItemData':
state.fingerprintItemData.value,
});
@ -86,7 +86,7 @@ class _PalmDetailPageState extends State<PalmDetailPage> with RouteAware {
final data = await Get.toNamed(
Routers.otherTypeKeyChangeValidityDatePage,
arguments: <String, Object>{
'pushType': 0,
'pushType': 4,
'fingerprintItemData':
state.fingerprintItemData.value,
});
@ -96,7 +96,7 @@ class _PalmDetailPageState extends State<PalmDetailPage> with RouteAware {
state.endDate.value = data['endDate'];
state.starTime.value = data['starTime'];
state.endTime.value = data['endTime'];
state.weekDay.value = data['weekDay'];
state.weekDay.value = data['validityValue'];
});
}
}
@ -112,7 +112,7 @@ class _PalmDetailPageState extends State<PalmDetailPage> with RouteAware {
final data = await Get.toNamed(
Routers.otherTypeKeyChangeValidityDatePage,
arguments: <String, Object>{
'pushType': 0,
'pushType': 4,
'fingerprintItemData':
state.fingerprintItemData.value,
});
@ -122,7 +122,7 @@ class _PalmDetailPageState extends State<PalmDetailPage> with RouteAware {
state.endDate.value = data['endDate'];
state.starTime.value = data['starTime'];
state.endTime.value = data['endTime'];
state.weekDay.value = data['weekDay'];
state.weekDay.value = data['validityValue'];
});
}
})))),
@ -137,7 +137,7 @@ class _PalmDetailPageState extends State<PalmDetailPage> with RouteAware {
final data = await Get.toNamed(
Routers.otherTypeKeyChangeValidityDatePage,
arguments: <String, Object>{
'pushType': 0,
'pushType': 4,
'fingerprintItemData':
state.fingerprintItemData.value,
});

View File

@ -39,7 +39,11 @@ class PalmListLogic extends BaseGetXController {
case 0x00:
//
cancelBlueConnetctToastTimer();
deletICPalmData();
if(state.isDeletAll == true){
resetPalmData();
}else{
deletPalmData();
}
break;
case 0x06:
//
@ -156,30 +160,28 @@ class PalmListLogic extends BaseGetXController {
return entity;
}
// IC卡
Future<void> deletICPalmData() async {
String palmId = '';
String type = '1';
if (state.isDeletAll == false) {
palmId = state.deletKeyID;
type = '0';
//
Future<void> resetPalmData() async {
final LoginEntity entity = await ApiRepository.to.resetPalmData(
lockId: state.lockId.value
);
if (entity.errorCode!.codeIsSuccessful) {
showToast('重置成功'.tr, something: () {
getPalmListData(isRefresh: true);
});
}
}
//
Future<void> deletPalmData() async {
final LoginEntity entity = await ApiRepository.to.deletPalmData(
palmVeinId: int.parse(state.deletKeyID),
);
if (entity.errorCode!.codeIsSuccessful) {
showToast('删除成功'.tr, something: () {
getPalmListData(isRefresh: true);
});
}
// final LoginEntity entity = await ApiRepository.to.deletIcPalmData(
// cardId: palmId,
// lockId: state.lockId.value.toString(),
// type: type,
// deleteType: '1');
// if (entity.errorCode!.codeIsSuccessful) {
// if (state.isDeletAll == false) {
// showToast('删除成功'.tr, something: () {
// getICCardListData(isRefresh: true);
// });
// } else {
// showToast('重置成功'.tr, something: () {
// getICCardListData(isRefresh: true);
// });
// }
// }
}
//

View File

@ -101,7 +101,7 @@ class _RemoteControlDetailPageState extends State<RemoteControlDetailPage> with
state.endDate.value = data['endDate'];
state.starTime.value = data['starTime'];
state.endTime.value = data['endTime'];
state.weekDay.value = data['weekDay'];
state.weekDay.value = data['validityValue'];
});
}
}
@ -117,7 +117,7 @@ class _RemoteControlDetailPageState extends State<RemoteControlDetailPage> with
var data = await Get.toNamed(
Routers.otherTypeKeyChangeValidityDatePage,
arguments: <String, Object>{
'pushType': 0,
'pushType': 2,
'fingerprintItemData':
state.fingerprintItemData.value,
});
@ -127,7 +127,7 @@ class _RemoteControlDetailPageState extends State<RemoteControlDetailPage> with
state.endDate.value = data['endDate'];
state.starTime.value = data['starTime'];
state.endTime.value = data['endTime'];
state.weekDay.value = data['weekDay'];
state.weekDay.value = data['validityValue'];
});
}
})))),
@ -142,7 +142,7 @@ class _RemoteControlDetailPageState extends State<RemoteControlDetailPage> with
var data = await Get.toNamed(
Routers.otherTypeKeyChangeValidityDatePage,
arguments: <String, Object>{
'pushType': 0,
'pushType': 2,
'fingerprintItemData':
state.fingerprintItemData.value,
});

View File

@ -139,6 +139,8 @@ abstract class Api {
final String addPalmURL = '/palmVein/add'; //
final String updatePalmUserNoURL = '/palmVein/updatePalmVeinUserNo'; //
final String editPalmURL = '/palmVein/update'; //
final String deletePalmURL = '/palmVein/delete'; //
final String clearPalmURL = '/palmVein/clear'; //
final String checkPalmNameURL = '/palmVein/checkPalmVeinName'; //
final String transferLockListURL = '/room/listForTransfer'; //

View File

@ -1665,6 +1665,22 @@ class ApiProvider extends BaseProvider {
'palmVeinRight': palmVeinRight
}));
//
Future<Response> deletPalmData(int palmVeinId) =>
post(
deletePalmURL.toUrl,
jsonEncode({
'palmVeinId': palmVeinId,
}));
//
Future<Response> resetPalmData(int lockId) =>
post(
clearPalmURL.toUrl,
jsonEncode({
'lockId': lockId,
}));
//
Future<Response> checkPalmNameDuplicatedData(
String lockId, String palmVeinName) =>

View File

@ -1811,7 +1811,7 @@ class ApiRepository {
return LoginEntity.fromJson(res.body);
}
//
//
Future<LoginEntity> editPalmData({
required int lockId,
required int palmVeinId,
@ -1842,6 +1842,18 @@ class ApiRepository {
return LoginEntity.fromJson(res.body);
}
//
Future<LoginEntity> deletPalmData({required int palmVeinId}) async {
final res = await apiProvider.deletPalmData(palmVeinId);
return LoginEntity.fromJson(res.body);
}
//
Future<LoginEntity> resetPalmData({required int lockId}) async {
final res = await apiProvider.resetPalmData(lockId);
return LoginEntity.fromJson(res.body);
}
//
Future<LoginEntity> checkPalmNameDuplicatedData(
{required String lockId, required String palmVeinName}) async {