diff --git a/star_lock/images/lan/lan_en.json b/star_lock/images/lan/lan_en.json index 6a8d884e..6f8633ef 100644 --- a/star_lock/images/lan/lan_en.json +++ b/star_lock/images/lan/lan_en.json @@ -822,6 +822,7 @@ "取消升级":"Cancel the upgrade", "固件传输中":"Firmware in transit", "关闭":"Shut down", - "传输中'":"In transit" - + "传输中'":"In transit", + "操作记录":"Operation record", + "修改姓名":"Modify name" } diff --git a/star_lock/images/lan/lan_keys.json b/star_lock/images/lan/lan_keys.json index 42794399..2fafb5e7 100644 --- a/star_lock/images/lan/lan_keys.json +++ b/star_lock/images/lan/lan_keys.json @@ -850,5 +850,7 @@ "取消升级":"取消升级", "固件传输中":"固件传输中", "关闭":"关闭", - "传输中'":"传输中" + "传输中'":"传输中", + "操作记录":"操作记录", + "修改姓名":"修改姓名" } diff --git a/star_lock/images/lan/lan_zh.json b/star_lock/images/lan/lan_zh.json index ecb2ac64..b4e73b39 100644 --- a/star_lock/images/lan/lan_zh.json +++ b/star_lock/images/lan/lan_zh.json @@ -853,6 +853,7 @@ "取消升级":"取消升级", "固件传输中":"固件传输中", "关闭":"关闭", - "传输中'":"传输中" - + "传输中'":"传输中", + "操作记录":"操作记录", + "修改姓名":"修改姓名" } diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_page.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_page.dart index 4aa4707c..3771b298 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_page.dart @@ -1,4 +1,3 @@ - import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -20,7 +19,8 @@ class ElectronicKeyDetailPage extends StatefulWidget { const ElectronicKeyDetailPage({Key? key}) : super(key: key); @override - State createState() => _ElectronicKeyDetailPageState(); + State createState() => + _ElectronicKeyDetailPageState(); } class _ElectronicKeyDetailPageState extends State { @@ -35,18 +35,20 @@ class _ElectronicKeyDetailPageState extends State { appBar: TitleAppBar( barTitle: TranslationLoader.lanKeys!.keyDetail!.tr, haveBack: true, - actionsList: (state.keyType.value!=3) ? [ - IconButton( - icon: Image.asset( - 'images/icon_bar_more.png', - height: 30.h, - width: 10.w, - ), - onPressed: () { - logic.openModalBottomSheet(context); - }, - ), - ]:null, + actionsList: (state.keyType.value != 3) + ? [ + IconButton( + icon: Image.asset( + 'images/icon_bar_more.png', + height: 30.h, + width: 10.w, + ), + onPressed: () { + logic.openModalBottomSheet(context); + }, + ), + ] + : null, backgroundColor: AppColors.mainColor), body: ListView( children: [ @@ -63,39 +65,54 @@ class _ElectronicKeyDetailPageState extends State { allHeight: 70.h, // rightTitle:"2023.09.19 11:27\n2023.09.25 11:27", rightTitle: logic.getKeyTypeShowDateTime(), - isHaveDirection: state.itemData.value.keyStatus! == XSConstantMacro.keyStatusExpired ? false : state.keyType.value == 3 ? false : true , + isHaveDirection: state.itemData.value.keyStatus! == + XSConstantMacro.keyStatusExpired + ? false + : state.keyType.value == 3 + ? false + : true, isHaveLine: true, - action: state.itemData.value.keyStatus! == XSConstantMacro.keyStatusExpired ? null :() async { - if(state.keyType.value == 2 || state.keyType.value == 1){ - // 限时/永久 - var data = await Get.toNamed(Routers.electronicKeyDetailChangeDate, arguments: { - "pushType": 0, - "itemData": state.itemData.value, - }); - if(data != null) { - setState(() { - state.starDate.value = data["beginTimeTimestamp"].toString(); - state.endDate.value = data["endTimeTimestamp"].toString(); - state.keyType.value = 2; - }); - } - }else if(state.keyType.value == 4){ - // 循环 - var data = await Get.toNamed(Routers.electronicKeyPeriodValidityPage, arguments: { - "pushType": 0, - "itemData": state.itemData.value, - }); - if(data != null) { - setState(() { - state.starDate.value = data["starDate"]; - state.endDate.value = data["endDate"]; - state.starTime.value = data["starTime"]; - state.endTime.value = data["endTime"]; - state.weekDay.value = data["validityValue"]; - }); - } - } - })), + action: state.itemData.value.keyStatus! == + XSConstantMacro.keyStatusExpired + ? null + : () async { + if (state.keyType.value == 2 || + state.keyType.value == 1) { + // 限时/永久 + var data = await Get.toNamed( + Routers.electronicKeyDetailChangeDate, + arguments: { + "pushType": 0, + "itemData": state.itemData.value, + }); + if (data != null) { + setState(() { + state.starDate.value = + data["beginTimeTimestamp"].toString(); + state.endDate.value = + data["endTimeTimestamp"].toString(); + state.keyType.value = 2; + }); + } + } else if (state.keyType.value == 4) { + // 循环 + var data = await Get.toNamed( + Routers.electronicKeyPeriodValidityPage, + arguments: { + "pushType": 0, + "itemData": state.itemData.value, + }); + if (data != null) { + setState(() { + state.starDate.value = data["starDate"]; + state.endDate.value = data["endDate"]; + state.starTime.value = data["starTime"]; + state.endTime.value = data["endTime"]; + state.weekDay.value = data["validityValue"]; + }); + } + } + })), Obx(() => Visibility( visible: state.keyType.value == 4 ? true : false, child: Obx(() => CommonItem( @@ -104,11 +121,13 @@ class _ElectronicKeyDetailPageState extends State { isHaveDirection: true, isHaveLine: true, action: () async { - var data = await Get.toNamed(Routers.electronicKeyPeriodValidityPage, arguments: { - "pushType": 0, - "itemData": state.itemData.value, - }); - if(data != null) { + var data = await Get.toNamed( + Routers.electronicKeyPeriodValidityPage, + arguments: { + "pushType": 0, + "itemData": state.itemData.value, + }); + if (data != null) { setState(() { state.starDate.value = data["starDate"]; state.endDate.value = data["endDate"]; @@ -122,14 +141,17 @@ class _ElectronicKeyDetailPageState extends State { visible: state.keyType.value == 4 ? true : false, child: Obx(() => CommonItem( leftTitel: "有效时间".tr, - rightTitle: "${DateTool().dateToHNString(state.starTime.value)}-${DateTool().dateToHNString(state.endTime.value)}", + rightTitle: + "${DateTool().dateToHNString(state.starTime.value)}-${DateTool().dateToHNString(state.endTime.value)}", isHaveDirection: true, action: () async { - var data = await Get.toNamed(Routers.electronicKeyPeriodValidityPage, arguments: { - "pushType": 0, - "itemData": state.itemData.value, - }); - if(data != null) { + var data = await Get.toNamed( + Routers.electronicKeyPeriodValidityPage, + arguments: { + "pushType": 0, + "itemData": state.itemData.value, + }); + if (data != null) { setState(() { state.starDate.value = data["starDate"]; state.endDate.value = data["endDate"]; @@ -150,33 +172,37 @@ class _ElectronicKeyDetailPageState extends State { const SizedBox(height: 1), CommonItem( leftTitel: TranslationLoader.lanKeys!.senderTime!.tr, - rightTitle: DateTool().dateToYMDHNString( - state.itemData.value.sendDate.toString())), + rightTitle: DateTool() + .dateToYMDHNString(state.itemData.value.sendDate.toString())), Container(height: 10.h), Visibility( - visible: state.itemData.value.keyRight == 1 ? true:false, + visible: state.itemData.value.keyRight == 1 ? true : false, child: CommonItem( leftTitel: "仅管理自己创建的用户".tr, rightTitle: "", isHaveRightWidget: true, isHaveLine: true, rightWidget: SizedBox( - width: 60.w, - child: _onlyManageYouCreatesUserSwitch())), + width: 60.w, child: _onlyManageYouCreatesUserSwitch())), ), - Visibility(// (state.keyInfo.value.lockSetting!.remoteUnlock == 1 ? true : false - visible: CommonDataManage().currentKeyInfo.lockSetting!.remoteUnlock == 1 && state.itemData.value.keyRight != 1 ? true:false, + Visibility( + // (state.keyInfo.value.lockSetting!.remoteUnlock == 1 ? true : false + visible: + CommonDataManage().currentKeyInfo.lockSetting!.remoteUnlock == + 1 && + state.itemData.value.keyRight != 1 + ? true + : false, child: CommonItem( leftTitel: "远程开锁".tr, rightTitle: "", isHaveRightWidget: true, isHaveLine: true, - rightWidget: SizedBox( - width: 60.w, - child: _remoteUnlockingSwitch())), + rightWidget: + SizedBox(width: 60.w, child: _remoteUnlockingSwitch())), ), CommonItem( - leftTitel: TranslationLoader.lanKeys!.realNameAuthentication!.tr, + leftTitel: '实名认证'.tr, rightTitle: "", isHaveRightWidget: true, rightWidget: SizedBox( @@ -186,7 +212,7 @@ class _ElectronicKeyDetailPageState extends State { : false))), Container(height: 10.h), CommonItem( - leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr, + leftTitel: '操作记录'.tr, rightTitle: "", isHaveDirection: true, action: () { @@ -198,7 +224,7 @@ class _ElectronicKeyDetailPageState extends State { }), Container(height: 40.h), SubmitBtn( - btnName: TranslationLoader.lanKeys!.delete!.tr, + btnName: '删除'.tr, borderRadius: 20.w, isDelete: true, margin: EdgeInsets.only( @@ -249,7 +275,8 @@ class _ElectronicKeyDetailPageState extends State { value: state.onlyManageYouCreatesUser.value, onChanged: (value) { setState(() { - state.onlyManageYouCreatesUser.value = !state.onlyManageYouCreatesUser.value; + state.onlyManageYouCreatesUser.value = + !state.onlyManageYouCreatesUser.value; logic.updateKeyDateRequest(1); }); }, @@ -261,7 +288,7 @@ class _ElectronicKeyDetailPageState extends State { context: context, builder: (BuildContext context) { return ShowTFView( - title: "${TranslationLoader.lanKeys!.amend!.tr} ${TranslationLoader.lanKeys!.name!.tr}", + title: "修改姓名".tr, tipTitle: "请输入".tr, controller: state.changeNameController, sureClick: () { @@ -277,5 +304,4 @@ class _ElectronicKeyDetailPageState extends State { }, ); } - } diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart index b83333fb..1cc8128a 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart @@ -4,6 +4,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:get_storage/get_storage.dart'; import 'package:intl/intl.dart'; import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/flavors.dart'; @@ -237,9 +238,7 @@ class _LockDetailPageState extends State GestureDetector( onTap: state.openDoorBtnisUneable.value == true ? () { - setState(() { - isNeedRealNameAuthThenOpenLock(); - }); + isNeedRealNameAuthThenOpenLock(); } : null, onLongPressStart: state.openDoorBtnisUneable.value == true @@ -580,9 +579,7 @@ class _LockDetailPageState extends State child: GestureDetector( onTap: state.openDoorBtnisUneable.value == true ? () { - setState(() { - isNeedRealNameAuthThenOpenLock(); - }); + isNeedRealNameAuthThenOpenLock(); } : null, onLongPressStart: state.openDoorBtnisUneable.value == true @@ -1268,22 +1265,26 @@ class _LockDetailPageState extends State //如果需要实名认证,需认证完成,方可开锁 isNeedRealNameAuthThenOpenLock() { + state.nextAuthTime.value = state.keyInfos.value.nextFaceValidateTime ?? 0; if (state.keyInfos.value.faceAuthentication == 1 && - state.keyInfos.value.nextFaceValidateTime! > 0 && - DateTool().compareTimeIsOvertime( - state.keyInfos.value.nextFaceValidateTime!) == - true) { + state.nextAuthTime.value > 0 && + DateTool().compareTimeIsOvertime(state.nextAuthTime.value) == true) { AliyunRealNameAuthProvider( getLockInfo: state.keyInfos.value, - onCertifyResult: (bool isSuccess) { + onCertifyResultWithTime: ((bool isSuccess, int getNextAuthTime) { + state.nextAuthTime.value = getNextAuthTime; if (isSuccess) { // 认证成功,去开锁 - startOpenLock(); + setState(() { + startOpenLock(); + }); } - }).initAliyunRealNameAuth(); + })).initAliyunRealNameAuth(); } else { //无需认证,直接开锁 - startOpenLock(); + setState(() { + startOpenLock(); + }); } } diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_state.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_state.dart index 28fa4dd6..8318d96d 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_state.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_state.dart @@ -49,6 +49,7 @@ class LockDetailState { var operateDate = 0; // 按日期查询消息记录的时间戳 var logCountPage = 10; // 蓝牙记录一页多少个 + var nextAuthTime = 0.obs; // 下次认证时间 // LockDetailState() { // Map map = Get.arguments; // lockCount = map["lockCount"]; diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index 364b5715..3993a45d 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -33,6 +33,7 @@ import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRealName/fac import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/buy_record_list_entity.dart'; import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_entity.dart'; import 'package:star_lock/tools/aliyunRealNameAuth/realNameVertify_entity.dart'; +import 'package:star_lock/tools/aliyunRealNameAuth/serviceAuthResult_entity.dart'; import '../common/safetyVerification/entity/CheckSafetyVerificationEntity.dart'; import '../common/safetyVerification/entity/SafetyVerificationEntity.dart'; import '../login/login/entity/LoginEntity.dart'; @@ -2067,11 +2068,11 @@ class ApiRepository { } // 检测certifyId是否完成认证 - Future getServiceCheckCertify({ + Future getServiceCheckCertify({ required String certifyId, required int keyId, }) async { final res = await apiProvider.getServiceCheckCertify(certifyId, keyId); - return LockCertifyEntity.fromJson(res.body); + return ServiceAuthResultEntity.fromJson(res.body); } } diff --git a/star_lock/lib/tools/aliyunRealNameAuth/aliyunRealNameAuthHandle.dart b/star_lock/lib/tools/aliyunRealNameAuth/aliyunRealNameAuthHandle.dart index f5f4800f..95a210e4 100644 --- a/star_lock/lib/tools/aliyunRealNameAuth/aliyunRealNameAuthHandle.dart +++ b/star_lock/lib/tools/aliyunRealNameAuth/aliyunRealNameAuthHandle.dart @@ -6,6 +6,7 @@ import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/main/lockMian/entity/lockListInfo_entity.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/aliyunRealNameAuth/realNameVertify_entity.dart'; +import 'package:star_lock/tools/aliyunRealNameAuth/serviceAuthResult_entity.dart'; import 'package:star_lock/tools/baseGetXController.dart'; class AliyunRealNameAuthProvider { @@ -14,10 +15,10 @@ class AliyunRealNameAuthProvider { var metainfosMap = {}; //认证信息 var certifyId = ''; //认证ID var getLockInfo = LockListInfoItemEntity(); //锁信息 - final Function(bool) onCertifyResult; //认证结果 + final Function(bool, int) onCertifyResultWithTime; //认证结果及下次认证时间 AliyunRealNameAuthProvider( - {required this.getLockInfo, required this.onCertifyResult}); + {required this.getLockInfo, required this.onCertifyResultWithTime}); //初始化 initAliyunRealNameAuth() { @@ -71,13 +72,14 @@ class AliyunRealNameAuthProvider { // 检测certifyId是否完成认证 Future getServiceCheckCertify() async { - var entity = await ApiRepository.to.getServiceCheckCertify( + ServiceAuthResultEntity entity = + await ApiRepository.to.getServiceCheckCertify( certifyId: certifyId, keyId: getLockInfo.keyId ?? 0, ); if (entity.errorCode!.codeIsSuccessful) { // 如果认证成功,则调用回调函数,将结果传递给调用处 - onCertifyResult(true); + onCertifyResultWithTime(true, entity.data!.nextFaceValidateTime!); } else { // 如果认证失败 // await startVerify(); diff --git a/star_lock/lib/tools/aliyunRealNameAuth/serviceAuthResult_entity.dart b/star_lock/lib/tools/aliyunRealNameAuth/serviceAuthResult_entity.dart new file mode 100644 index 00000000..837256ac --- /dev/null +++ b/star_lock/lib/tools/aliyunRealNameAuth/serviceAuthResult_entity.dart @@ -0,0 +1,43 @@ +class ServiceAuthResultEntity { + int? errorCode; + String? description; + String? errorMsg; + Data? data; + + ServiceAuthResultEntity( + {this.errorCode, this.description, this.errorMsg, this.data}); + + ServiceAuthResultEntity.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? nextFaceValidateTime; + + Data({this.nextFaceValidateTime}); + + Data.fromJson(Map json) { + nextFaceValidateTime = json['nextFaceValidateTime']; + } + + Map toJson() { + final Map data = {}; + data['nextFaceValidateTime'] = nextFaceValidateTime; + return data; + } +}