From a5817cffeb35922fa3a46022924ef5af0a732a78 Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Wed, 24 Jan 2024 18:51:18 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8C=E6=96=B0=E5=A2=9E=E4=BA=BA=E8=84=B8?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=91=BD=E4=BB=A4=E5=8D=8F=E8=AE=AE=E8=B0=83?= =?UTF-8?q?=E8=AF=95=202=EF=BC=8C=E6=96=B0=E5=A2=9E=E4=BA=BA=E8=84=B8?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=E5=A4=84=E7=90=86=20?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=BA=E8=84=B8=E4=BF=A1=E6=81=AF=E3=80=81?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BA=BA=E8=84=B8=E3=80=81=E6=B8=85=E7=A9=BA?= =?UTF-8?q?=E4=BA=BA=E8=84=B8=EF=BC=88=E6=9C=AA=E5=AE=8C=E6=88=90=EF=BC=89?= =?UTF-8?q?=203=EF=BC=8C=E9=83=A8=E5=88=86=E4=BA=BA=E8=84=B8=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=A4=84=E7=90=86=EF=BC=88=E5=BE=85=E5=AE=8C=E5=96=84?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/images/icon_face.png | Bin 0 -> 5785 bytes .../lib/blue/io_protocol/io_addFace.dart | 2 +- .../io_protocol/io_queryingFaceStatus.dart | 14 +- star_lock/lib/blue/sender_manage.dart | 8 +- .../face/addFace/addFace_entity.dart | 42 ++++++ .../face/addFace/addFace_logic.dart | 24 ++-- .../lockDetail/face/addFace/addFace_page.dart | 14 +- .../addFaceTypeManage_tabbar.dart | 34 +++-- .../face/addFaceType/addFaceType_logic.dart | 2 + .../face/addFaceType/addFaceType_page.dart | 3 +- .../face/faceDetail/faceDetail_logic.dart | 78 ++++++----- .../face/faceDetail/faceDetail_page.dart | 26 ++-- .../face/faceDetail/faceDetail_state.dart | 9 +- .../face/faceList/faceListData_entity.dart | 131 ------------------ .../face/faceList/faceList_logic.dart | 53 ++++--- .../face/faceList/faceList_page.dart | 8 +- .../face/faceList/faceList_state.dart | 4 +- .../fingerprintListData_entity.dart | 75 +++++++--- .../realTimePicture/realTimePicture_page.dart | 6 +- .../realTimePicture_state.dart | 2 + star_lock/lib/network/api.dart | 7 +- star_lock/lib/network/api_provider.dart | 38 ++++- star_lock/lib/network/api_provider_base.dart | 12 +- star_lock/lib/network/api_repository.dart | 56 ++++++-- 24 files changed, 359 insertions(+), 289 deletions(-) create mode 100644 star_lock/images/icon_face.png delete mode 100644 star_lock/lib/main/lockDetail/face/faceList/faceListData_entity.dart diff --git a/star_lock/images/icon_face.png b/star_lock/images/icon_face.png new file mode 100644 index 0000000000000000000000000000000000000000..6663c7255d7d4b8aa0c1a8101e7084257ca90d97 GIT binary patch literal 5785 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 token; int? needAuthor; List? publicKey; @@ -23,8 +23,8 @@ class SenderQueryingFaceStatusCommand extends SenderProtocol { this.keyID, this.userID, this.role, - this.fingerCount, - this.fingerNo, + this.faceCount, + this.faceNo, this.token, this.needAuthor, this.publicKey, @@ -62,10 +62,10 @@ class SenderQueryingFaceStatusCommand extends SenderProtocol { subData.add(role!); // fingerCount - subData.add(fingerCount!); + subData.add(faceCount!); // FingerNo - subData.add(fingerNo!); + subData.add(faceNo!); if (needAuthor == 0) { //AuthCodeLen 1 diff --git a/star_lock/lib/blue/sender_manage.dart b/star_lock/lib/blue/sender_manage.dart index 50021afa..b5c48e40 100644 --- a/star_lock/lib/blue/sender_manage.dart +++ b/star_lock/lib/blue/sender_manage.dart @@ -568,8 +568,8 @@ class IoSenderManage { {required String? keyID, required String? userID, required int? role, - required int? fingerCount, - required int? fingerNo, + required int? faceCount, + required int? faceNo, required List? token, required int? needAuthor, required List? publicKey, @@ -580,8 +580,8 @@ class IoSenderManage { keyID: keyID, userID: userID, role: role, - fingerCount: fingerCount, - fingerNo: fingerNo, + faceCount: faceCount, + faceNo: faceNo, token: token, needAuthor: needAuthor, publicKey: publicKey, diff --git a/star_lock/lib/main/lockDetail/face/addFace/addFace_entity.dart b/star_lock/lib/main/lockDetail/face/addFace/addFace_entity.dart index e69de29b..d30efd81 100644 --- a/star_lock/lib/main/lockDetail/face/addFace/addFace_entity.dart +++ b/star_lock/lib/main/lockDetail/face/addFace/addFace_entity.dart @@ -0,0 +1,42 @@ +class AddFaceEntity { + int? errorCode; + String? description; + String? errorMsg; + Data? data; + + AddFaceEntity({this.errorCode, this.description, this.errorMsg, this.data}); + + AddFaceEntity.fromJson(Map json) { + errorCode = json['errorCode']; + description = json['description']; + errorMsg = json['errorMsg']; + data = json['data'] != null ? Data.fromJson(json['data']) : null; + } + + Map toJson() { + final Map data = {}; + data['errorCode'] = errorCode; + data['description'] = description; + data['errorMsg'] = errorMsg; + if (this.data != null) { + data['data'] = this.data!.toJson(); + } + return data; + } +} + +class Data { + int? faceId; + + Data({this.faceId}); + + Data.fromJson(Map json) { + faceId = json['faceId']; + } + + Map toJson() { + final Map data = {}; + data['faceId'] = faceId; + return data; + } +} diff --git a/star_lock/lib/main/lockDetail/face/addFace/addFace_logic.dart b/star_lock/lib/main/lockDetail/face/addFace/addFace_logic.dart index a991f631..783da3e1 100644 --- a/star_lock/lib/main/lockDetail/face/addFace/addFace_logic.dart +++ b/star_lock/lib/main/lockDetail/face/addFace/addFace_logic.dart @@ -24,7 +24,7 @@ class AddFaceLogic extends BaseGetXController { void _initReplySubscription() { _replySubscription = EventBusManager().eventBus!.on().listen((reply) async { - // 添加指纹开始 + // 添加人脸开始 if (reply is SenderAddFaceReply) { _replyAddFaceBegin(reply); } @@ -105,14 +105,14 @@ class AddFaceLogic extends BaseGetXController { Future _replyAddFaceProcess(Reply reply) async { int status = reply.data[2]; - print("33 status:$status"); + print("******33 status:$status"); switch (status) { case 0x00: //成功 print("${reply.commandType!.typeValue} 注册人脸过程数据解析成功"); if (reply.data[5] == 255) { - // 注册指纹失败 + // 注册人脸失败 print("${reply.commandType!.typeValue} 注册人脸过程失败"); showToast("添加失败"); Get.close(2); @@ -121,7 +121,7 @@ class AddFaceLogic extends BaseGetXController { // 当前注册数 state.regIndex.value = reply.data[6]; - print("state.regIndex.value:${state.regIndex.value}"); + print("注册人脸过程state.regIndex.value:${state.regIndex.value}"); } break; case 0x06: @@ -203,6 +203,8 @@ class AddFaceLogic extends BaseGetXController { List getTokenList = changeStringListToIntList(token!); print( "openDoorTokenPubToken:$getTokenList state.startDate.value:${state.startDate.value}"); + print( + "限时人脸开始时间:${state.startDate.value ~/ 1000} 限时人脸结束时间:${state.endDate.value ~/ 1000}"); IoSenderManage.senderAddFaceCommand( keyID: "1", @@ -244,23 +246,25 @@ class AddFaceLogic extends BaseGetXController { if (entity.errorCode!.codeIsSuccessful) { // Toast.show(msg: "添加成功"); - updateFaceUserNoLoadData(entity.data!.fingerprintId.toString()); + print('更新人脸用户账号成功了么1'); + updateFaceUserNoLoadData(entity.data!.faceId!); } } // 更新人脸用户账号 - void updateFaceUserNoLoadData(String faceId) async { - var entity = await ApiRepository.to.updateFaceUserNoLoadData( + void updateFaceUserNoLoadData(int faceId) async { + var entity = await ApiRepository.to.updateFaceUserNo( faceId: faceId, - lockId: state.lockId.value.toString(), + lockId: state.lockId.value, faceUserNo: state.faceNumber.value, ); if (entity.errorCode!.codeIsSuccessful) { + print('更新人脸用户账号成功了么2'); showToast("添加成功"); if (state.fromType.value == 2) { // 回调人脸号 - eventBus - .fire(ChickInAddStaffCardAndFingerprintBlockNumberEvent(faceId)); + eventBus.fire(ChickInAddStaffCardAndFingerprintBlockNumberEvent( + faceId.toString())); } else if (state.fromType.value == 1) { eventBus.fire(OtherTypeRefreshListEvent()); } diff --git a/star_lock/lib/main/lockDetail/face/addFace/addFace_page.dart b/star_lock/lib/main/lockDetail/face/addFace/addFace_page.dart index c0e363d5..6c755b11 100644 --- a/star_lock/lib/main/lockDetail/face/addFace/addFace_page.dart +++ b/star_lock/lib/main/lockDetail/face/addFace/addFace_page.dart @@ -33,12 +33,14 @@ class _AddFacePageState extends State { SizedBox( height: 50.h, ), - Image.asset( - 'images/main/icon_addFace_step1.png', - width: 100.w, - height: 457.h, - fit: BoxFit.fitHeight, - ), + Obx(() => Image.asset( + state.isClickAddFace.value == false + ? 'images/main/icon_addFace_step1.png' + : 'images/main/icon_addFace_step2.png', + width: 100.w, + height: 457.h, + fit: BoxFit.fitHeight, + )), SizedBox( height: 60.h, ), diff --git a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceTypeManage/addFaceTypeManage_tabbar.dart b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceTypeManage/addFaceTypeManage_tabbar.dart index 6bb172cb..0704f149 100644 --- a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceTypeManage/addFaceTypeManage_tabbar.dart +++ b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceTypeManage/addFaceTypeManage_tabbar.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -11,19 +10,23 @@ import '../addFaceType_page.dart'; class AddFaceTypeManageTabbar extends StatefulWidget { var initialIndex = 1; - AddFaceTypeManageTabbar({Key? key, required this.initialIndex}) : super(key: key); + AddFaceTypeManageTabbar({Key? key, required this.initialIndex}) + : super(key: key); @override - State createState() => _AddFaceTypeManageTabbarState(); + State createState() => + _AddFaceTypeManageTabbarState(); } -class _AddFaceTypeManageTabbarState extends State with SingleTickerProviderStateMixin { +class _AddFaceTypeManageTabbarState extends State + with SingleTickerProviderStateMixin { late TabController _tabController; final List _itemTabs = [ ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, selectType: "0"), ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, selectType: "1"), - ItemView(title: TranslationLoader.lanKeys!.circulation!.tr, selectType: "2"), + ItemView( + title: TranslationLoader.lanKeys!.circulation!.tr, selectType: "2"), ]; @override @@ -34,17 +37,24 @@ class _AddFaceTypeManageTabbarState extends State with vsync: this, length: _itemTabs.length, initialIndex: widget.initialIndex); + + _tabController.addListener(() { + // print("_tabController.animation!.value:${_tabController.animation!.value} _tabController.index:${_tabController.index}"); + if (_tabController.animation!.value == _tabController.index) { + FocusScope.of(context).requestFocus(FocusNode()); + } + }); } @override Widget build(BuildContext context) { return Expanded( child: Column( - children: [ - _tabBar(), - _pageWidget(), - ], - )); + children: [ + _tabBar(), + _pageWidget(), + ], + )); } TabBar _tabBar() { @@ -83,7 +93,9 @@ class _AddFaceTypeManageTabbarState extends State with child: TabBarView( controller: _tabController, children: _itemTabs - .map((ItemView item) => AddFaceTypePage(selectType: item.selectType,)) + .map((ItemView item) => AddFaceTypePage( + selectType: item.selectType, + )) .toList(), ), ); diff --git a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_logic.dart b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_logic.dart index 3f4536e3..2ef47628 100644 --- a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_logic.dart +++ b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_logic.dart @@ -69,6 +69,8 @@ class AddFaceTypeLogic extends BaseGetXController { faceType = 4; } + print( + "传出去的给你限时人脸开始时间:${int.parse(startDate) ~/ 1000} 限时人脸结束时间:${int.parse(endDate) ~/ 1000}"); // 人脸 Get.toNamed(Routers.addFacePage, arguments: { "lockId": state.lockId.value, diff --git a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_page.dart b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_page.dart index 15d03eb4..70126a10 100644 --- a/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_page.dart +++ b/star_lock/lib/main/lockDetail/face/addFaceType/addFaceType_page.dart @@ -1,4 +1,3 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -28,6 +27,8 @@ class _AddFaceTypePageState extends State { @override Widget build(BuildContext context) { + state.seletType.value = widget.selectType; + return indexChangeWidget(); } diff --git a/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_logic.dart b/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_logic.dart index 709887f5..db54f08a 100644 --- a/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_logic.dart +++ b/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_logic.dart @@ -2,11 +2,11 @@ import 'dart:async'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import 'package:get/get.dart'; +import 'package:star_lock/blue/io_protocol/io_addFace.dart'; import 'package:star_lock/blue/io_type.dart'; import 'package:star_lock/main/lockDetail/face/faceDetail/faceDetail_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../../blue/blue_manage.dart'; -import '../../../../blue/io_protocol/io_addFingerprint.dart'; import '../../../../blue/io_reply.dart'; import '../../../../blue/io_tool/io_tool.dart'; import '../../../../blue/io_tool/manager_event_bus.dart'; @@ -22,30 +22,30 @@ class FaceDetailLogic extends BaseGetXController { void _initReplySubscription() { _replySubscription = EventBusManager().eventBus!.on().listen((reply) { - // 添加指纹开始(此处用作删除指纹) - if ((reply is SenderAddFingerprintReply)) { - _replyAddFingerprintBegin(reply); + // 添加人脸开始(此处用作删除人脸) + if ((reply is SenderAddFaceReply)) { + _replyAddFaceBegin(reply); } }); } - // 添加指纹开始 - Future _replyAddFingerprintBegin(Reply reply) async { + // 添加人脸开始 + Future _replyAddFaceBegin(Reply reply) async { int status = reply.data[2]; print("status:$status"); switch (status) { case 0x00: //成功 - print("${reply.commandType!.typeValue} 数据解析成功"); + print("${reply.commandType!.typeValue} 删除人脸数据解析成功"); state.sureBtnState.value = 0; cancelBlueConnetctToastTimer(); dismissEasyLoading(); - deletFingerprintsData(); + deletFaceData(); break; case 0x06: //无权限 - print("${reply.commandType!.typeValue} 需要鉴权"); + print("${reply.commandType!.typeValue} 删除人脸需要鉴权"); var privateKey = await Storage.getStringList(saveBluePrivateKey); List getPrivateKeyList = changeStringListToIntList(privateKey!); @@ -56,10 +56,10 @@ class FaceDetailLogic extends BaseGetXController { List getTokenList = changeStringListToIntList(token!); String? userID = await Storage.getUid(); - IoSenderManage.senderAddFingerprintCommand( + IoSenderManage.senderAddFaceCommand( keyID: state.keyId.value.toString(), userID: userID, - fingerNo: int.parse(state.typeNumber.value), + faceNo: int.parse(state.typeNumber.value), useCountLimit: 0, startTime: state.effectiveDateTime.value, endTime: state.failureDateTime.value, @@ -81,14 +81,14 @@ class FaceDetailLogic extends BaseGetXController { break; default: //失败 - print("${reply.commandType!.typeValue} 失败"); + print("${reply.commandType!.typeValue} 删除人脸失败"); break; } } - // 删除指纹 - Future senderAddFingerprint() async { + // 删除人脸 + Future senderAddFace() async { if (state.sureBtnState.value == 1) { return; } @@ -113,10 +113,10 @@ class FaceDetailLogic extends BaseGetXController { String? userID = await Storage.getUid(); - IoSenderManage.senderAddFingerprintCommand( + IoSenderManage.senderAddFaceCommand( keyID: state.keyId.value.toString(), userID: userID, - fingerNo: int.parse(state.typeNumber.value), + faceNo: int.parse(state.typeNumber.value), useCountLimit: 0, startTime: state.effectiveDateTime.value, endTime: state.failureDateTime.value, @@ -136,13 +136,12 @@ class FaceDetailLogic extends BaseGetXController { }); } - // 删除指纹 - void deletFingerprintsData() async { - var entity = await ApiRepository.to.deletFingerprintsData( - fingerprintId: state.faceItemData.value.faceId.toString(), - lockId: state.faceItemData.value.lockId.toString(), - type: "0", - deleteType: "1"); + // 删除人脸 + void deletFaceData() async { + var entity = await ApiRepository.to.deleteFaceData( + faceId: state.faceItemData.value.faceId!, + lockId: state.faceItemData.value.lockId!, + ); if (entity.errorCode!.codeIsSuccessful) { showToast("删除成功", something: () { Get.back(result: "addScuess"); @@ -150,17 +149,28 @@ class FaceDetailLogic extends BaseGetXController { } } - // 编辑指纹 - void editFingerprintsData() async { - var entity = await ApiRepository.to.editFingerprintsData( - fingerprintId: state.keyId.value.toString(), - lockId: state.faceItemData.value.lockId.toString(), - weekDay: state.weekDay.value, - startDate: state.effectiveDateTime.value.toString(), - endDate: state.failureDateTime.value.toString(), - isCoerced: state.isStressFingerprint.value ? "2" : "1", - fingerprintName: state.changeNameController.text, - changeType: "1", + // 修改人脸名称 + void updateFaceNameData() async { + var entity = await ApiRepository.to.updateFaceName( + lockId: state.faceItemData.value.lockId!, + faceId: state.faceItemData.value.faceId!, + faceName: state.changeNameController.text, + ); + if (entity.errorCode!.codeIsSuccessful) { + state.typeName.value = state.changeNameController.text; + showToast("修改成功", something: () { + Get.back(result: "addScuess"); + }); + } + } + + // 修改人脸有效期 + void updateFaceValidityData() async { + var entity = await ApiRepository.to.updateFaceValidity( + lockId: state.faceItemData.value.lockId!, + faceId: state.faceItemData.value.faceId!, + startDate: state.effectiveDateTime.value, + endDate: state.failureDateTime.value, ); if (entity.errorCode!.codeIsSuccessful) { showToast("修改成功", something: () { diff --git a/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_page.dart b/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_page.dart index 26023d6a..cd164feb 100644 --- a/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_page.dart +++ b/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_page.dart @@ -20,11 +20,10 @@ class FaceDetailPage extends StatefulWidget { const FaceDetailPage({Key? key}) : super(key: key); @override - State createState() => _FingerprintDetailPageState(); + State createState() => _FaceDetailPageState(); } -class _FingerprintDetailPageState extends State - with RouteAware { +class _FaceDetailPageState extends State with RouteAware { final logic = Get.put(FaceDetailLogic()); final state = Get.find().state; @@ -33,7 +32,7 @@ class _FingerprintDetailPageState extends State return Scaffold( backgroundColor: AppColors.mainBackgroundColor, appBar: TitleAppBar( - barTitle: "指纹详情", + barTitle: "人脸详情", haveBack: true, backgroundColor: AppColors.mainColor, // actionsList: [ @@ -48,8 +47,7 @@ class _FingerprintDetailPageState extends State body: Column( children: [ Obx(() => CommonItem( - leftTitel: - "${TranslationLoader.lanKeys!.fingerprint!.tr}${TranslationLoader.lanKeys!.number!.tr}", + leftTitel: "人脸号", rightTitle: state.typeNumber.value, isHaveDirection: false, isHaveLine: true)), @@ -87,7 +85,7 @@ class _FingerprintDetailPageState extends State var data = await Get.toNamed( Routers.otherTypeKeyChangeDatePage, arguments: { - "fingerprintItemData": state.faceItemData.value, + "faceItemData": state.faceItemData.value, "pushType": 1, }); if (data != null) { @@ -103,7 +101,7 @@ class _FingerprintDetailPageState extends State var data = await Get.toNamed( Routers.otherTypeKeyChangeValidityDatePage, arguments: { - "fingerprintItemData": state.faceItemData.value, + "faceItemData": state.faceItemData.value, }); if (data != null) { setState(() { @@ -123,11 +121,11 @@ class _FingerprintDetailPageState extends State rightTitle: state.weekDay.value.join(','), isHaveDirection: true, action: () async { - // 当是指纹的时候 + // 当是人脸的时候 var data = await Get.toNamed( Routers.otherTypeKeyChangeValidityDatePage, arguments: { - "fingerprintItemData": state.faceItemData.value, + "faceItemData": state.faceItemData.value, }); if (data != null) { setState(() { @@ -286,8 +284,8 @@ class _FingerprintDetailPageState extends State return; } Get.back(); - // 指纹 - logic.editFingerprintsData(); + // 面容 + logic.updateFaceNameData(); }, cancelClick: () { Get.back(); @@ -305,8 +303,8 @@ class _FingerprintDetailPageState extends State tipTitle: "确定要删除吗?", sureClick: () { Get.back(); - // 指纹 - logic.senderAddFingerprint(); + // 人脸 + logic.senderAddFace(); }, cancelClick: () { Get.back(); diff --git a/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_state.dart b/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_state.dart index d631d6db..c56cefc8 100644 --- a/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_state.dart +++ b/star_lock/lib/main/lockDetail/face/faceDetail/faceDetail_state.dart @@ -1,14 +1,14 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:star_lock/main/lockDetail/face/faceList/faceListData_entity.dart'; +import 'package:star_lock/main/lockDetail/fingerprint/fingerprintList/fingerprintListData_entity.dart'; class FaceDetailState { - final faceItemData = FaceItemData().obs; + final faceItemData = FingerprintItemData().obs; final TextEditingController changeNameController = TextEditingController(); - final typeNumber = "".obs; // 指纹号 - final typeName = "".obs; // 指纹名字 + final typeNumber = "".obs; // 人脸号 + final typeName = "".obs; // 人脸名字 var effectiveDateTime = 0.obs; // 生效时间 var failureDateTime = 0.obs; // 失效时间 final keyType = 0.obs; // 永久:1;限时2,单次3,循环:4 @@ -20,7 +20,6 @@ class FaceDetailState { var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 var sureBtnState = 0.obs; // 0普通状态(可用) 1连接中(不可用) - final isStressFingerprint = false.obs; FaceDetailState() { Map map = Get.arguments; faceItemData.value = map["faceItemData"]; diff --git a/star_lock/lib/main/lockDetail/face/faceList/faceListData_entity.dart b/star_lock/lib/main/lockDetail/face/faceList/faceListData_entity.dart deleted file mode 100644 index 942f823c..00000000 --- a/star_lock/lib/main/lockDetail/face/faceList/faceListData_entity.dart +++ /dev/null @@ -1,131 +0,0 @@ -class FaceListDataEntity { - int? errorCode; - String? description; - String? errorMsg; - Data? data; - - FaceListDataEntity( - {this.errorCode, this.description, this.errorMsg, this.data}); - - FaceListDataEntity.fromJson(Map json) { - errorCode = json['errorCode']; - description = json['description']; - errorMsg = json['errorMsg']; - data = json['data'] != null ? Data.fromJson(json['data']) : null; - } - - Map toJson() { - final Map data = {}; - data['errorCode'] = errorCode; - data['description'] = description; - data['errorMsg'] = errorMsg; - if (this.data != null) { - data['data'] = this.data!.toJson(); - } - return data; - } -} - -class Data { - List? list; - int? pageNo; - int? pageSize; - int? pages; - int? total; - - Data({this.list, this.pageNo, this.pageSize, this.pages, this.total}); - - Data.fromJson(Map json) { - if (json['list'] != null) { - list = []; - json['list'].forEach((v) { - list!.add(FaceItemData.fromJson(v)); - }); - } - pageNo = json['pageNo']; - pageSize = json['pageSize']; - pages = json['pages']; - total = json['total']; - } - - Map toJson() { - final Map data = {}; - if (list != null) { - data['list'] = list!.map((v) => v.toJson()).toList(); - } - data['pageNo'] = pageNo; - data['pageSize'] = pageSize; - data['pages'] = pages; - data['total'] = total; - return data; - } -} - -class FaceItemData { - int? lockId; - int? faceId; - String? faceName; - String? faceNumber; - int? startDate; - int? endDate; - int? status; - int? addType; - int? faceType; - List? cyclicConfig; - String? featureData; - int? createDate; - String? senderUsername; - String? validTimeStr; - - FaceItemData( - {this.lockId, - this.faceId, - this.faceName, - this.faceNumber, - this.startDate, - this.endDate, - this.status, - this.addType, - this.faceType, - this.cyclicConfig, - this.featureData, - this.createDate, - this.senderUsername, - this.validTimeStr}); - - FaceItemData.fromJson(Map json) { - lockId = json['lockId']; - faceId = json['faceId']; - faceName = json['faceName']; - faceNumber = json['faceNumber']; - startDate = json['startDate']; - endDate = json['endDate']; - status = json['status']; - addType = json['addType']; - faceType = json['faceType']; - cyclicConfig = json['cyclicConfig']; - featureData = json['featureData']; - createDate = json['createDate']; - senderUsername = json['senderUsername']; - validTimeStr = json['validTimeStr']; - } - - Map toJson() { - final Map data = {}; - data['lockId'] = lockId; - data['faceId'] = faceId; - data['faceName'] = faceName; - data['faceNumber'] = faceNumber; - data['startDate'] = startDate; - data['endDate'] = endDate; - data['status'] = status; - data['addType'] = addType; - data['faceType'] = faceType; - data['cyclicConfig'] = cyclicConfig; - data['featureData'] = featureData; - data['createDate'] = createDate; - data['senderUsername'] = senderUsername; - data['validTimeStr'] = validTimeStr; - return data; - } -} diff --git a/star_lock/lib/main/lockDetail/face/faceList/faceList_logic.dart b/star_lock/lib/main/lockDetail/face/faceList/faceList_logic.dart index 6d04677c..94be07d2 100644 --- a/star_lock/lib/main/lockDetail/face/faceList/faceList_logic.dart +++ b/star_lock/lib/main/lockDetail/face/faceList/faceList_logic.dart @@ -52,7 +52,11 @@ class FaceListLogic extends BaseGetXController { state.isDeletFaceData = false; cancelBlueConnetctToastTimer(); dismissEasyLoading(); - deletAllFacesData(); + if (state.isDeletAll == false) { + deletFacesData(); + } else { + clearAllFacesData(); + } break; case 0x06: //无权限 @@ -255,8 +259,8 @@ class FaceListLogic extends BaseGetXController { keyID: BlueManage().connectDeviceName, userID: await Storage.getUid(), role: 0xff, - fingerCount: 20, - fingerNo: 1, + faceCount: 20, + faceNo: 1, token: getTokenList, needAuthor: 1, publicKey: getPublicKeyList, @@ -347,27 +351,40 @@ class FaceListLogic extends BaseGetXController { } } - // 重置所有的人脸 - void deletAllFacesData() async { - var fingerprintId = ""; + // 删除的人脸 + void deletFacesData() async { + var faceId = ""; var type = "1"; if (state.isDeletAll == false) { - fingerprintId = state.deletKeyID; + faceId = state.deletKeyID; type = "0"; } - print("delet fingerprintId $fingerprintId"); - var entity = await ApiRepository.to.deletFingerprintsData( - fingerprintId: fingerprintId, - lockId: state.lockId.value.toString(), - type: type, - deleteType: "1"); + print("delet faceId $faceId"); + var entity = await ApiRepository.to.deleteFaceData( + faceId: int.parse(faceId), + lockId: state.lockId.value, + ); if (entity.errorCode!.codeIsSuccessful) { - if (state.isDeletAll == false) { - showToast("删除成功"); - } else { - showToast("重置成功"); - } + showToast("删除成功"); + state.isDeletFaceData = false; + getFaceListData(); + } + } + // 重置所有的人脸 + void clearAllFacesData() async { + var faceId = ""; + var type = "1"; + if (state.isDeletAll == false) { + faceId = state.deletKeyID; + type = "0"; + } + print("delet faceId $faceId"); + var entity = await ApiRepository.to.clearFaceData( + lockId: state.lockId.value, + ); + if (entity.errorCode!.codeIsSuccessful) { + showToast("重置成功"); state.isDeletFaceData = false; getFaceListData(); } diff --git a/star_lock/lib/main/lockDetail/face/faceList/faceList_page.dart b/star_lock/lib/main/lockDetail/face/faceList/faceList_page.dart index d427e482..0d169801 100644 --- a/star_lock/lib/main/lockDetail/face/faceList/faceList_page.dart +++ b/star_lock/lib/main/lockDetail/face/faceList/faceList_page.dart @@ -2,7 +2,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; -import 'package:star_lock/main/lockDetail/face/faceList/faceListData_entity.dart'; +import 'package:star_lock/main/lockDetail/fingerprint/fingerprintList/fingerprintListData_entity.dart'; import 'package:star_lock/tools/keySearchWidget.dart'; import 'package:star_lock/tools/left_slide_actions.dart'; @@ -91,7 +91,7 @@ class _FaceListState extends State { ? ListView.separated( itemCount: state.faceItemListData.value.length, itemBuilder: (c, index) { - FaceItemData getFaceItemData = + FingerprintItemData getFaceItemData = state.faceItemListData.value[index]; // 人脸 if (index < state.faceItemListData.value.length) { @@ -105,7 +105,7 @@ class _FaceListState extends State { borderRadius: BorderRadius.all(Radius.circular(1)), ), child: _keyItem( - 'images/icon_fingerprint.png', + 'images/icon_face.png', getFaceItemData.faceName!, (getFaceItemData.faceType! != 1) ? (getFaceItemData.endDate! < @@ -141,7 +141,7 @@ class _FaceListState extends State { } } - Widget _buildDeleteBtn(FaceItemData faceItemData) { + Widget _buildDeleteBtn(FingerprintItemData faceItemData) { return GestureDetector( onTap: () { // 省略: 弹出是否删除的确认对话框。 diff --git a/star_lock/lib/main/lockDetail/face/faceList/faceList_state.dart b/star_lock/lib/main/lockDetail/face/faceList/faceList_state.dart index 4f3f072e..334b149b 100644 --- a/star_lock/lib/main/lockDetail/face/faceList/faceList_state.dart +++ b/star_lock/lib/main/lockDetail/face/faceList/faceList_state.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:star_lock/main/lockDetail/face/faceList/faceListData_entity.dart'; +import 'package:star_lock/main/lockDetail/fingerprint/fingerprintList/fingerprintListData_entity.dart'; class FaceListState { final TextEditingController searchController = TextEditingController(); @@ -13,7 +13,7 @@ class FaceListState { var deletUserID = "DeleteAll!@#"; var deletFaceNo = 0; - final faceItemListData = [].obs; + final faceItemListData = [].obs; var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 diff --git a/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintListData_entity.dart b/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintListData_entity.dart index 8d0d39ed..d8b14f5d 100644 --- a/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintListData_entity.dart +++ b/star_lock/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintListData_entity.dart @@ -82,26 +82,44 @@ class FingerprintItemData { String? cardNumber; int? cardType; int? cardId; + + int? faceId; + String? faceName; + String? faceNumber; + int? status; + int? addType; + int? faceType; + List? cyclicConfig; + String? featureData; + FingerprintItemData( - { this.fingerprintStatus, - this.lockId, - this.createDate, - this.fingerprintName, - this.endDate, - this.apiUserId, - this.nickName, - this.isCoerced, - this.startDate, - this.fingerprintNumber, - this.fingerprintType, - this.fingerprintId, - this.senderUsername, - this.weekDay, - this.validTimeStr, - this.cardName, - this.cardNumber, - this.cardType, - this.cardId}); + {this.fingerprintStatus, + this.lockId, + this.createDate, + this.fingerprintName, + this.endDate, + this.apiUserId, + this.nickName, + this.isCoerced, + this.startDate, + this.fingerprintNumber, + this.fingerprintType, + this.fingerprintId, + this.senderUsername, + this.weekDay, + this.validTimeStr, + this.cardName, + this.cardNumber, + this.cardType, + this.cardId, + this.faceId, + this.faceName, + this.faceNumber, + this.status, + this.addType, + this.faceType, + this.cyclicConfig, + this.featureData}); FingerprintItemData.fromJson(Map json) { fingerprintStatus = json['fingerprintStatus']; @@ -123,6 +141,14 @@ class FingerprintItemData { cardNumber = json['cardNumber']; cardType = json['cardType']; cardId = json['cardId']; + faceId = json['faceId']; + faceName = json['faceName']; + faceNumber = json['faceNumber']; + status = json['status']; + addType = json['addType']; + faceType = json['faceType']; + cyclicConfig = json['cyclicConfig']; + featureData = json['featureData']; } Map toJson() { @@ -146,6 +172,15 @@ class FingerprintItemData { data['cardNumber'] = cardNumber; data['cardType'] = cardType; data['cardId'] = cardId; + data['faceId'] = faceId; + data['faceName'] = faceName; + data['faceNumber'] = faceNumber; + data['status'] = status; + data['addType'] = addType; + data['faceType'] = faceType; + data['cyclicConfig'] = cyclicConfig; + data['featureData'] = featureData; + return data; } -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/realTimePicture/realTimePicture_page.dart b/star_lock/lib/main/lockDetail/realTimePicture/realTimePicture_page.dart index 40497dfb..08abd363 100644 --- a/star_lock/lib/main/lockDetail/realTimePicture/realTimePicture_page.dart +++ b/star_lock/lib/main/lockDetail/realTimePicture/realTimePicture_page.dart @@ -28,7 +28,7 @@ class _RealTimePicturePageState extends State super.initState(); //写一个定时器,三十秒后页面自动返回 - Timer(const Duration(seconds: 30), () { + state.autoBackTimer = Timer(const Duration(seconds: 30), () { Get.back(); }); @@ -380,6 +380,7 @@ class _RealTimePicturePageState extends State // 在这里处理失败的逻辑 CallTalk().stopPcmSound(); state.realTimePicTimer.cancel(); + state.autoBackTimer.cancel(); if (state.animationController != null) { state.animationController.stop(); } @@ -388,6 +389,9 @@ class _RealTimePicturePageState extends State @override void dispose() { state.animationController.dispose(); + state.realTimePicTimer.cancel(); + state.autoBackTimer.cancel(); + CallTalk().stopPcmSound(); super.dispose(); } } diff --git a/star_lock/lib/main/lockDetail/realTimePicture/realTimePicture_state.dart b/star_lock/lib/main/lockDetail/realTimePicture/realTimePicture_state.dart index 5858382c..a3fb1356 100644 --- a/star_lock/lib/main/lockDetail/realTimePicture/realTimePicture_state.dart +++ b/star_lock/lib/main/lockDetail/realTimePicture/realTimePicture_state.dart @@ -37,6 +37,8 @@ class RealTimePictureState { late Timer openDoorTimer; late AnimationController animationController; + late Timer autoBackTimer = + Timer(const Duration(seconds: 1), () {}); //发送30秒监视后自动返回 late Timer realTimePicTimer = Timer(const Duration(seconds: 1), () {}); //监视命令定时器 var elapsedSeconds = 0.obs; diff --git a/star_lock/lib/network/api.dart b/star_lock/lib/network/api.dart index ac9cd36b..0b63f470 100644 --- a/star_lock/lib/network/api.dart +++ b/star_lock/lib/network/api.dart @@ -1,6 +1,6 @@ abstract class Api { - static String baseAddress = "https://pre.lock.star-lock.cn"; //预发布环境 - // static String baseAddress = "https://dev.lock.star-lock.cn"; //联调环境 + // static String baseAddress = "https://pre.lock.star-lock.cn"; //预发布环境 + static String baseAddress = "https://dev.lock.star-lock.cn"; //联调环境 // static String baseAddress = "http://192.168.1.15:8022"; //谢总本地 // static String baseAddress = "https://ge.lock.star-lock.cn"; //葛工开发环境地址 @@ -110,6 +110,9 @@ abstract class Api { final String addFaceURL = '/face/add'; // 添加人脸 final String checkFaceNameURL = '/face/checkFaceName'; // 校验人脸名称是否重复 final String updateFaceUserNoURL = '/face/updateFaceUserNo'; // 更新人脸用户序号 + final String updateFaceUserInfoURL = '/face/update'; // 更新人脸信息--有效期、名称 + final String deleteFaceURL = '/face/delete'; // 删除人脸 + final String clearFaceURL = '/face/clear'; // 清空人脸 final String getICCardListURL = '/identityCard/list'; // IC卡列表 final String addICCardURL = '/identityCard/add'; // 添加IC卡 diff --git a/star_lock/lib/network/api_provider.dart b/star_lock/lib/network/api_provider.dart index 27c243c4..06ebe133 100644 --- a/star_lock/lib/network/api_provider.dart +++ b/star_lock/lib/network/api_provider.dart @@ -1069,13 +1069,47 @@ class ApiProvider extends BaseProvider { jsonEncode({'lockId': lockId, 'faceName': faceName})); // 更新人脸用户序号 - Future updateFaceUserNoLoadData( - String faceId, String lockId, String faceUserNo) => + Future updateFaceUserNo( + int faceId, int lockId, String faceUserNo) => post( updateFaceUserNoURL.toUrl, jsonEncode( {'faceId': faceId, 'lockId': lockId, 'faceUserNo': faceUserNo})); + // 更新人脸用户信息--人脸名称、有效期 + Future updateFaceName(int faceId, int lockId, String faceName) => + post( + updateFaceUserInfoURL.toUrl, + jsonEncode( + {'faceId': faceId, 'lockId': lockId, 'faceName': faceName})); + + // 更新人脸用户信息--有效期 + Future updateFaceValidity( + int faceId, int lockId, int startDate, int endDate) => + post( + updateFaceUserInfoURL.toUrl, + jsonEncode({ + 'faceId': faceId, + 'lockId': lockId, + 'startDate': startDate, + 'endDate': endDate + })); + + // 删除人脸 + Future deleteFaceData(int faceId, int lockId) => post( + deleteFaceURL.toUrl, + jsonEncode({ + 'faceId': faceId, + 'lockId': lockId, + })); + + // 清空人脸 + Future clearFaceData(int lockId) => post( + clearFaceURL.toUrl, + jsonEncode({ + 'lockId': lockId, + })); + // 获取IC卡列表 Future getICCardListData( String lockId, String pageNo, String pageSize, String searchStr) => diff --git a/star_lock/lib/network/api_provider_base.dart b/star_lock/lib/network/api_provider_base.dart index 3001e788..fcbb8ab5 100644 --- a/star_lock/lib/network/api_provider_base.dart +++ b/star_lock/lib/network/api_provider_base.dart @@ -31,8 +31,8 @@ class BaseProvider extends GetConnect with Api { bool? isUnShowLoading = false}) async { // print("post: url:${url} body:${body} contentType:${contentType} headers:${headers} query:${query}"); if (isUnShowLoading == false) EasyLoading.show(); - - print('星锁请求body体为:${body}'); + // print('请求url======>$url'); + // print('请求body体======>$body'); var res = await super.post(url, body, contentType: contentType, headers: headers, @@ -56,7 +56,7 @@ class BaseProvider extends GetConnect with Api { statusText: res.statusText, ); } else {} - // print('得到的数据======>bodyString:${res.bodyString} body:${res.body} bodyBytes:${res.bodyBytes} status:${res.status} statusText:${res.statusText} statusCode:${res.statusCode}'); + // print('得到的数据======>${res.bodyString}'); getDataResult(res.body); return res; } @@ -67,19 +67,19 @@ class BaseProvider extends GetConnect with Api { Get.offNamedUntil(Routers.starLockLoginPage, (route) => false); break; case 500: - EasyLoading.showToast("服务器错误",duration: 2000.milliseconds); + EasyLoading.showToast("服务器错误", duration: 2000.milliseconds); break; case 421: case 422: case 430: //与葛工约定弹出ErrorMsg - EasyLoading.showToast(T["errorMsg"],duration: 2000.milliseconds); + EasyLoading.showToast(T["errorMsg"], duration: 2000.milliseconds); break; //已单独处理,暂不做全局弹窗 // case 425: // Toast.show(msg: "用户不存在"); // break; case 10001: - EasyLoading.showToast("数据不存在",duration: 2000.milliseconds); + EasyLoading.showToast("数据不存在", duration: 2000.milliseconds); break; } } diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index c5c5ba2a..af3ca490 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -4,7 +4,7 @@ import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyO import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; -import 'package:star_lock/main/lockDetail/face/faceList/faceListData_entity.dart'; +import 'package:star_lock/main/lockDetail/face/addFace/addFace_entity.dart'; import 'package:star_lock/main/lockDetail/lockSet/basicInformation/basicInformation/KeyDetailEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKeyEntity.dart'; @@ -1168,7 +1168,7 @@ class ApiRepository { } // 获取人脸列表 - Future getFaceListData({ + Future getFaceListData({ required String lockId, required String pageNo, required String pageSize, @@ -1176,11 +1176,11 @@ class ApiRepository { }) async { final res = await apiProvider.getFaceListData(lockId, pageNo, pageSize, searchStr); - return FaceListDataEntity.fromJson(res.body); + return FingerprintListDataEntity.fromJson(res.body); } // 添加人脸 - Future addFaceData({ + Future addFaceData({ required int lockId, required String faceName, required String faceNumber, @@ -1193,7 +1193,7 @@ class ApiRepository { }) async { final res = await apiProvider.addFaceData(lockId, faceName, faceNumber, faceType, startDate, endDate, featureData, addType, cyclicConfig); - return AddFingerprintEntity.fromJson(res.body); + return AddFaceEntity.fromJson(res.body); } // 校验人脸名字是否重复 @@ -1204,12 +1204,48 @@ class ApiRepository { } // 更新人脸用户序号 - Future updateFaceUserNoLoadData( - {required String faceId, - required String lockId, + Future updateFaceUserNo( + {required int faceId, + required int lockId, required String faceUserNo}) async { - final res = - await apiProvider.updateFaceUserNoLoadData(faceId, lockId, faceUserNo); + final res = await apiProvider.updateFaceUserNo(faceId, lockId, faceUserNo); + return LoginEntity.fromJson(res.body); + } + + // 更新人脸用户信息--人脸名称 + Future updateFaceName( + {required int faceId, + required int lockId, + required String faceName}) async { + final res = await apiProvider.updateFaceName(faceId, lockId, faceName); + return LoginEntity.fromJson(res.body); + } + + // 更新人脸用户信息--有效期 + Future updateFaceValidity( + {required int faceId, + required int lockId, + required int startDate, + required int endDate}) async { + final res = await apiProvider.updateFaceValidity( + faceId, lockId, startDate, endDate); + return LoginEntity.fromJson(res.body); + } + + // 删除人脸 + Future deleteFaceData({ + required int faceId, + required int lockId, + }) async { + final res = await apiProvider.deleteFaceData(faceId, lockId); + return LoginEntity.fromJson(res.body); + } + + // 清空人脸 + Future clearFaceData({ + required int lockId, + }) async { + final res = await apiProvider.clearFaceData(lockId); return LoginEntity.fromJson(res.body); }