fix:修复电子钥匙里的授权管理员详情多了取消授权

This commit is contained in:
anfe 2024-05-18 16:38:50 +08:00
parent 0df385cba2
commit af04296143
2 changed files with 126 additions and 111 deletions

View File

@ -25,17 +25,17 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
//
Future<void> modifyKeyNameRequest() async {
if (state.changeNameController.text.isEmpty) {
showToast("请输入钥匙名称".tr);
showToast('请输入钥匙名称'.tr);
return;
}
KeyOperationRecordEntity entity = await ApiRepository.to
final KeyOperationRecordEntity entity = await ApiRepository.to
.modifyKeyNameForAdmin(state.itemData.value.keyId.toString(),
state.changeNameController.text, '');
if (entity.errorCode!.codeIsSuccessful) {
state.itemData.value.keyName = state.changeNameController.text;
state.keyName.value = state.itemData.value.keyName!;
Get.back();
showToast("修改成功".tr, something: () {
showToast('修改成功'.tr, something: () {
eventBus.fire(ElectronicKeyListRefreshUI());
eventBus.fire(AuthorizedAdminPageRefreshUI());
});
@ -44,19 +44,21 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
// updateType 1: 2:
Future<void> updateKeyDateRequest(int updateType) async {
KeyOperationRecordEntity entity = await ApiRepository.to.updateKeyDate(
keyId: state.itemData.value.keyId.toString(),
lockId: state.itemData.value.lockId.toString(),
endDate: state.endDate.value.toString(),
startDate: state.starDate.value.toString(),
weekDays: state.itemData.value.weekDays!,
keyType: state.itemData.value.keyType!,
startTime: int.parse(state.starTime.value),
endTime: int.parse(state.endTime.value),
isOnlyManageSelf: state.onlyManageYouCreatesUser.value == true ? 1 : 0,
remoteEnable: state.isRemoteUnlock.value == true ? 1 : 2);
final KeyOperationRecordEntity entity = await ApiRepository.to
.updateKeyDate(
keyId: state.itemData.value.keyId.toString(),
lockId: state.itemData.value.lockId.toString(),
endDate: state.endDate.value.toString(),
startDate: state.starDate.value.toString(),
weekDays: state.itemData.value.weekDays!,
keyType: state.itemData.value.keyType!,
startTime: int.parse(state.starTime.value),
endTime: int.parse(state.endTime.value),
isOnlyManageSelf:
state.onlyManageYouCreatesUser.value == true ? 1 : 0,
remoteEnable: state.isRemoteUnlock.value == true ? 1 : 2);
if (entity.errorCode!.codeIsSuccessful) {
showToast("修改成功".tr, something: () {
showToast('修改成功'.tr, something: () {
eventBus.fire(ElectronicKeyListRefreshUI());
eventBus.fire(AuthorizedAdminPageRefreshUI());
});
@ -65,11 +67,12 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
//
Future<void> deleteKeyRequest(int includeUnderlings) async {
ElectronicKeyListEntity entity = await ApiRepository.to.deleteElectronicKey(
keyId: state.itemData.value.keyId.toString(),
includeUnderlings: includeUnderlings);
final ElectronicKeyListEntity entity = await ApiRepository.to
.deleteElectronicKey(
keyId: state.itemData.value.keyId.toString(),
includeUnderlings: includeUnderlings);
if (entity.errorCode!.codeIsSuccessful) {
showToast("删除成功".tr, something: () {
showToast('删除成功'.tr, something: () {
eventBus.fire(ElectronicKeyListRefreshUI());
eventBus.fire(AuthorizedAdminPageRefreshUI());
Get.back();
@ -79,11 +82,12 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
//
Future<void> setAdministrator() async {
ElectronicKeyListEntity entity = await ApiRepository.to.setAdministrator(
final ElectronicKeyListEntity entity =
await ApiRepository.to.setAdministrator(
keyId: state.itemData.value.keyId.toString(),
);
if (entity.errorCode!.codeIsSuccessful) {
showToast("设置成功".tr, something: () {
showToast('设置成功'.tr, something: () {
eventBus.fire(ElectronicKeyListRefreshUI());
eventBus.fire(AuthorizedAdminPageRefreshUI());
Get.back();
@ -93,11 +97,12 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
//
Future<void> cancelAdministrator() async {
ElectronicKeyListEntity entity = await ApiRepository.to.cancelAdministrator(
final ElectronicKeyListEntity entity =
await ApiRepository.to.cancelAdministrator(
keyId: state.itemData.value.keyId.toString(),
);
if (entity.errorCode!.codeIsSuccessful) {
showToast("设置成功".tr, something: () {
showToast('设置成功'.tr, something: () {
eventBus.fire(ElectronicKeyListRefreshUI());
eventBus.fire(AuthorizedAdminPageRefreshUI());
Get.back();
@ -107,11 +112,11 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
//
Future<void> freezeKey(int includeUnderlings) async {
ElectronicKeyListEntity entity = await ApiRepository.to.freezeKey(
final ElectronicKeyListEntity entity = await ApiRepository.to.freezeKey(
keyId: state.itemData.value.keyId.toString(),
includeUnderlings: includeUnderlings);
if (entity.errorCode!.codeIsSuccessful) {
showToast("设置成功".tr, something: () {
showToast('设置成功'.tr, something: () {
eventBus.fire(ElectronicKeyListRefreshUI());
eventBus.fire(AuthorizedAdminPageRefreshUI());
Get.back();
@ -121,11 +126,11 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
//
Future<void> cancelFreeze(int includeUnderlings) async {
ElectronicKeyListEntity entity = await ApiRepository.to.cancelFreeze(
final ElectronicKeyListEntity entity = await ApiRepository.to.cancelFreeze(
keyId: state.itemData.value.keyId.toString(),
includeUnderlings: includeUnderlings);
if (entity.errorCode!.codeIsSuccessful) {
showToast("设置成功".tr, something: () {
showToast('设置成功'.tr, something: () {
eventBus.fire(ElectronicKeyListRefreshUI());
eventBus.fire(AuthorizedAdminPageRefreshUI());
Get.back();
@ -137,14 +142,15 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
Future<void> checkRealNameStatus(int realNameAuthStatus) async {
//
if (realNameAuthStatus == 1) {
AdvancedFunctionRecordEntity entity = await ApiRepository.to.keyCheckFace(
final AdvancedFunctionRecordEntity entity =
await ApiRepository.to.keyCheckFace(
lockId: CommonDataManage().currentKeyInfo.lockId ?? 0,
);
if (entity.errorCode!.codeIsSuccessful) {
if (state.getRealName.value.isEmpty ||
state.getIDCardNumber.value.isEmpty) {
ShowCupertinoAlertView()
.showOpenAuthWithIDCardInfoAlert((idCard, realName) {
ShowCupertinoAlertView().showOpenAuthWithIDCardInfoAlert(
(String? idCard, String? realName) {
state.getIDCardNumber.value = idCard ?? '';
state.getRealName.value = realName ?? '';
updateRealNameInfoWithAuthStatus(realNameAuthStatus);
@ -158,7 +164,7 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
titleStr: '实名认证为付费功能,请购买后再使用'.tr,
sureClick: () {
Get.toNamed(Routers.advancedFeaturesWebPage,
arguments: {'isShop': false});
arguments: <String, bool>{'isShop': false});
});
} else if (entity.errorCode == 433) {
//
@ -171,16 +177,17 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
//--
Future<void> updateRealNameInfoWithAuthStatus(int realNameAuthStatus) async {
KeyOperationRecordEntity entity = await ApiRepository.to.updateRealNameInfo(
lockId: state.itemData.value.lockId ?? 0,
keyId: state.itemData.value.keyId ?? 0,
uid: state.itemData.value.uid ?? 0,
faceAuthentication: realNameAuthStatus,
realName: state.getRealName.value,
idCardNumber: state.getIDCardNumber.value);
final KeyOperationRecordEntity entity = await ApiRepository.to
.updateRealNameInfo(
lockId: state.itemData.value.lockId ?? 0,
keyId: state.itemData.value.keyId ?? 0,
uid: state.itemData.value.uid ?? 0,
faceAuthentication: realNameAuthStatus,
realName: state.getRealName.value,
idCardNumber: state.getIDCardNumber.value);
if (entity.errorCode!.codeIsSuccessful) {
state.isRealNameAuth.value = !state.isRealNameAuth.value;
showToast("修改成功".tr, something: () {
showToast('修改成功'.tr, something: () {
eventBus.fire(ElectronicKeyListRefreshUI());
eventBus.fire(AuthorizedAdminPageRefreshUI());
});
@ -192,25 +199,26 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
switch (alertEnum) {
case ShowAlertEnum.realName:
if (state.changeRealNameController.text.isEmpty) {
showToast("请输入真实姓名".tr);
showToast('请输入真实姓名'.tr);
return;
}
break;
case ShowAlertEnum.idCardNumber:
if (state.changeIDCardController.text.isEmpty) {
showToast("请输入身份证号".tr);
showToast('请输入身份证号'.tr);
return;
}
break;
default:
}
KeyOperationRecordEntity entity = await ApiRepository.to.updateRealNameInfo(
lockId: state.itemData.value.lockId ?? 0,
keyId: state.itemData.value.keyId ?? 0,
uid: state.itemData.value.uid ?? 0,
faceAuthentication: state.isRealNameAuth.value ? 1 : 2,
realName: state.changeRealNameController.text,
idCardNumber: state.changeIDCardController.text);
final KeyOperationRecordEntity entity = await ApiRepository.to
.updateRealNameInfo(
lockId: state.itemData.value.lockId ?? 0,
keyId: state.itemData.value.keyId ?? 0,
uid: state.itemData.value.uid ?? 0,
faceAuthentication: state.isRealNameAuth.value ? 1 : 2,
realName: state.changeRealNameController.text,
idCardNumber: state.changeIDCardController.text);
if (entity.errorCode!.codeIsSuccessful) {
if (alertEnum == ShowAlertEnum.realName) {
state.itemData.value.userIdCard!.realName =
@ -222,7 +230,7 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
state.getIDCardNumber.value =
state.itemData.value.userIdCard!.idCardNumber!;
}
showToast("修改成功".tr, something: () {
showToast('修改成功'.tr, something: () {
eventBus.fire(ElectronicKeyListRefreshUI());
eventBus.fire(AuthorizedAdminPageRefreshUI());
});
@ -232,44 +240,54 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
String getKeyTypeShowDateTime() {
String useDateStr = '';
if (state.keyType.value == 1) {
useDateStr = "永久".tr;
useDateStr = '永久'.tr;
} else if (state.keyType.value == 2) {
useDateStr =
"${DateTool().dateToYMDHNString(state.starDate.value)}\n${DateTool().dateToYMDHNString(state.endDate.value)}";
'${DateTool().dateToYMDHNString(state.starDate.value)}\n${DateTool().dateToYMDHNString(state.endDate.value)}';
} else if (state.keyType.value == 3) {
useDateStr = "单次".tr;
useDateStr = '单次'.tr;
} else if (state.keyType.value == 4) {
useDateStr =
"${DateTool().dateToYMDString(state.starDate.value)}\n${DateTool().dateToYMDString(state.endDate.value)}";
'${DateTool().dateToYMDString(state.starDate.value)}\n${DateTool().dateToYMDString(state.endDate.value)}';
}
return useDateStr;
}
Future openModalBottomSheet(BuildContext context) async {
var textList = <String>[];
Future<void> openModalBottomSheet(BuildContext context) async {
List<String> textList = <String>[];
if (state.itemData.value.keyRight == 1) {
//
textList = [
state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen ? '取消冻结'.tr : "冻结".tr,
"取消授权".tr
textList = <String>[
if (state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen)
'取消冻结'.tr
else
'冻结'.tr,
// '取消授权'.tr
];
} else if (CommonDataManage().currentKeyInfo.isLockOwner == 1) {
//
if (state.keyType.value == 1 || state.keyType.value == 2) {
textList = [
state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen ? '取消冻结'.tr : "冻结".tr,
state.itemData.value.keyRight == 1 ? '取消授权'.tr : '授权'.tr
textList = <String>[
if (state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen)
'取消冻结'.tr
else
'冻结'.tr,
if (state.itemData.value.keyRight == 1) '取消授权'.tr else '授权'.tr
];
} else if (state.keyType.value == 4) {
textList = [
state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen
? '取消冻结'.tr
: "冻结".tr
textList = <String>[
if (state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen)
'取消冻结'.tr
else
'冻结'.tr
];
}
}else{
textList = [
state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen ? '取消冻结'.tr : "冻结".tr,
} else {
textList = <String>[
if (state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen)
'取消冻结'.tr
else
'冻结'.tr,
];
}
showModalBottomSheet(
@ -280,20 +298,21 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
return AlertBottomWidget(
topTitle: '',
items: textList,
chooseCallback: (value) {
int index = value;
chooseCallback: (int value) {
final int index = value;
if (index == 0) {
if (state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen) {
if (state.itemData.value.keyStatus ==
XSConstantMacro.keyStatusFrozen) {
//
if (state.itemData.value.keyRight == 1) {
//
ShowTipView().showDeleteAdministratorIsHaveAllDataDialog(
'同时解冻其发送的钥匙'.tr, (isAllData) {
'同时解冻其发送的钥匙'.tr, (bool isAllData) {
cancelFreeze(isAllData ? 1 : 0);
});
} else {
ShowTipView()
.showIosTipWithContentDialog("取消冻结会在用户APP连网后生效".tr, () {
.showIosTipWithContentDialog('取消冻结会在用户APP连网后生效'.tr, () {
cancelFreeze(0);
});
}
@ -301,12 +320,12 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
if (state.itemData.value.keyRight == 1) {
//
ShowTipView().showDeleteAdministratorIsHaveAllDataDialog(
'同时冻结其发送的钥匙'.tr, (isAllData) {
'同时冻结其发送的钥匙'.tr, (bool isAllData) {
freezeKey(isAllData ? 1 : 0);
});
} else {
ShowTipView()
.showIosTipWithContentDialog("冻结会在用户APP连网后生效".tr, () {
.showIosTipWithContentDialog('冻结会在用户APP连网后生效'.tr, () {
freezeKey(0);
});
}
@ -315,15 +334,11 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
// /
if (state.itemData.value.keyRight == 1) {
//
ShowTipView()
.showIosTipWithContentDialog("取消授权会在用户APP连网后生效".tr, () {
cancelAdministrator();
});
ShowTipView().showIosTipWithContentDialog(
'取消授权会在用户APP连网后生效'.tr, cancelAdministrator);
} else {
ShowTipView().showIosTipWithContentDialog(
"授权用户拥有管理员的大部分权限,比如发送钥匙、发送密码".tr, () {
setAdministrator();
});
'授权用户拥有管理员的大部分权限,比如发送钥匙、发送密码'.tr, setAdministrator);
}
}
},
@ -331,16 +346,16 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
});
}
deletKeyLogic() {
void deletKeyLogic() {
if (state.itemData.value.keyRight == 1) {
//
ShowTipView().showDeleteAdministratorIsHaveAllDataDialog(
'同时删除其发送的所有钥匙,钥匙删除后不能恢复'.tr, (isAllData) {
'同时删除其发送的所有钥匙,钥匙删除后不能恢复'.tr, (bool isAllData) {
deleteKeyRequest(isAllData ? 1 : 0);
});
} else {
//
ShowTipView().showIosTipWithContentDialog("删除钥匙会在用户APP连网后生效".tr, () {
ShowTipView().showIosTipWithContentDialog('删除钥匙会在用户APP连网后生效'.tr, () {
deleteKeyRequest(0);
});
}
@ -363,16 +378,17 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
return currentController;
}
noModificationAllowedDuringFreeze() {
void noModificationAllowedDuringFreeze() {
if (state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen) {
showToast("冻结状态下不允许修改钥匙权限".tr);
showToast('冻结状态下不允许修改钥匙权限'.tr);
return;
}
}
//
Future<void> keyCheckFace() async {
AdvancedFunctionRecordEntity entity = await ApiRepository.to.keyCheckFace(
final AdvancedFunctionRecordEntity entity =
await ApiRepository.to.keyCheckFace(
lockId: CommonDataManage().currentKeyInfo.lockId ?? 0,
);
if (entity.errorCode!.codeIsSuccessful) {
@ -385,7 +401,7 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
titleStr: '实名认证为付费功能,请购买后再使用'.tr,
sureClick: () {
Get.toNamed(Routers.advancedFeaturesWebPage,
arguments: {'isShop': false});
arguments: <String, bool>{'isShop': false});
});
} else if (entity.errorCode == 433) {
//

View File

@ -5,6 +5,7 @@ import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:get/get.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_logic.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_state.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart';
import 'package:star_lock/tools/noData.dart';
import 'package:star_lock/tools/storage.dart';
@ -26,8 +27,8 @@ class ElectronicKeyListPage extends StatefulWidget {
}
class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
final logic = Get.put(ElectronicKeyListLogic());
final state = Get.find<ElectronicKeyListLogic>().state;
final ElectronicKeyListLogic logic = Get.put(ElectronicKeyListLogic());
final ElectronicKeyListState state = Get.find<ElectronicKeyListLogic>().state;
@override
void initState() {
@ -38,7 +39,7 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
Future<void> mockRequest() async {
//
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) {
logic.mockNetworkDataRequest().then((ElectronicKeyListEntity value) {
setState(() {});
@ -54,7 +55,7 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
barTitle: TranslationLoader.lanKeys!.electronicKey!.tr,
haveBack: true,
backgroundColor: AppColors.mainColor,
actionsList: [
actionsList: <Widget>[
TextButton(
child: Text(
TranslationLoader.lanKeys!.reset!.tr,
@ -62,13 +63,11 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
),
onPressed: () async {
//
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) {
ShowTipView().showIosTipWithContentDialog("该锁的电子钥匙都将被删除".tr, (){
logic.resetElectronicKeyListRequest();
});
ShowTipView().showIosTipWithContentDialog('该锁的电子钥匙都将被删除'.tr, logic.resetElectronicKeyListRequest);
} else {
logic.showToast("演示模式".tr);
logic.showToast('演示模式'.tr);
}
},
),
@ -83,7 +82,7 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
mockRequest();
},
child: Column(
children: [
children: <Widget>[
// _searchWidget(),
KeySearchWidget(
editingController: state.searchController,
@ -102,7 +101,7 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
AddBottomWhiteBtn(
btnName: TranslationLoader.lanKeys!.sendKey!.tr,
onClick: () {
Navigator.pushNamed(context, Routers.sendElectronicKeyPage).then((val) {
Navigator.pushNamed(context, Routers.sendElectronicKeyPage).then((Object? val) {
if (val != null) {
logic.pageNo = 1;
mockRequest();
@ -130,7 +129,7 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
child: ListView.separated(
shrinkWrap: true,
itemCount: state.itemDataList.value.length,
itemBuilder: (c, index) {
itemBuilder: (BuildContext c, int index) {
ElectronicKeyListItem indexEntity = state.itemDataList.value[index];
String useDateStr = ''; //使
String keyStatus = ''; //
@ -154,7 +153,7 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
endActionPane: ActionPane(
extentRatio: 0.2,
motion: const ScrollMotion(),
children: [
children: <Widget>[
SlidableAction(
onPressed: (BuildContext context) {
logic.deletKeyLogic(indexEntity);
@ -175,9 +174,9 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
indexEntity.remoteEnable == 1 ? true : false, () {
Navigator.pushNamed(
context, Routers.electronicKeyDetailPage,
arguments: {
"itemData": indexEntity,
}).then((val) {
arguments: <String, ElectronicKeyListItem>{
'itemData': indexEntity,
}).then((Object? val) {
if (val != null) {
logic.mockNetworkDataRequest();
setState(() {});
@ -214,7 +213,7 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
useDateStr = '${sendDateStr.toLocal().toString().substring(0, 16)} ${"永久".tr}';
} else if (indexEntity.keyType == XSConstantMacro.keyTypeOnce) {
//
useDateStr = "单次".tr;
useDateStr = '单次'.tr;
useDateStr = '${sendDateStr.toLocal().toString().substring(0, 16)} ${"单次".tr}';
} else if (indexEntity.keyType == XSConstantMacro.keyTypeLoop) {
//
@ -232,7 +231,7 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
color: Colors.white,
height: 90.h,
child: Row(
children: [
children: <Widget>[
SizedBox(width: 30.w),
Image.asset(
avatarURL,
@ -243,14 +242,14 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
children: <Widget>[
Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
children: <Widget>[
SizedBox(
width: 1.sw - 110.w - 34.w - 60.w,
child: Row(
children: [
children: <Widget>[
Flexible(
child: Text(receiveUser,
maxLines: 1,
@ -290,7 +289,7 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
SizedBox(height: 10.h),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
children: <Widget>[
Text(
useDate,
style: TextStyle(