425 lines
16 KiB
Dart
Executable File
425 lines
16 KiB
Dart
Executable File
|
|
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:star_lock/appRouters.dart';
|
|
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
|
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_page.dart';
|
|
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_state.dart';
|
|
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart';
|
|
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesHighFunction/valueAddedServicesHighFunction_entity.dart';
|
|
import 'package:star_lock/network/api_repository.dart';
|
|
import 'package:star_lock/tools/baseGetXController.dart';
|
|
import 'package:star_lock/tools/showCupertinoAlertView.dart';
|
|
|
|
import '../../../../../tools/commonDataManage.dart';
|
|
import '../../../../../tools/custom_bottom_sheet.dart';
|
|
import '../../../../../tools/dateTool.dart';
|
|
import '../../../../../tools/eventBusEventManage.dart';
|
|
import '../../../../../tools/pickers/time_picker/time_utils.dart';
|
|
import '../../../../../tools/showTipView.dart';
|
|
import '../../../lockOperatingRecord/keyOperationRecord_entity.dart';
|
|
|
|
typedef BlockIsHaveAllDataCallback = void Function(bool isAllData);
|
|
|
|
class ElectronicKeyDetailLogic extends BaseGetXController {
|
|
final ElectronicKeyDetailState state = ElectronicKeyDetailState();
|
|
|
|
List<dynamic> get weekDayStr {
|
|
return state.weekDay.map((e) => TimeUtils.translateWeekday(e)).toList();
|
|
}
|
|
|
|
//修改钥匙名称请求
|
|
Future<void> modifyKeyNameRequest() async {
|
|
if (state.changeNameController.text.isEmpty) {
|
|
showToast('请输入钥匙名称'.tr);
|
|
return;
|
|
}
|
|
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: () {
|
|
eventBus.fire(ElectronicKeyListRefreshUI());
|
|
eventBus.fire(AuthorizedAdminPageRefreshUI());
|
|
});
|
|
}
|
|
}
|
|
|
|
//编辑电子钥匙有效期请求 updateType 1:仅管理自己创建的用户 2:远程开锁
|
|
Future<void> updateKeyDateRequest(int updateType) async {
|
|
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: () {
|
|
eventBus.fire(ElectronicKeyListRefreshUI());
|
|
eventBus.fire(AuthorizedAdminPageRefreshUI());
|
|
});
|
|
}
|
|
}
|
|
|
|
//删除电子钥匙名称请求
|
|
Future<void> deleteKeyRequest(int includeUnderlings) async {
|
|
final ElectronicKeyListEntity entity = await ApiRepository.to
|
|
.deleteElectronicKey(
|
|
keyId: state.itemData.value.keyId.toString(),
|
|
includeUnderlings: includeUnderlings);
|
|
if (entity.errorCode!.codeIsSuccessful) {
|
|
showToast('删除成功'.tr, something: () {
|
|
eventBus.fire(ElectronicKeyListRefreshUI());
|
|
eventBus.fire(AuthorizedAdminPageRefreshUI());
|
|
Get.back();
|
|
});
|
|
}
|
|
}
|
|
|
|
//设置授权管理员
|
|
Future<void> setAdministrator() async {
|
|
final ElectronicKeyListEntity entity =
|
|
await ApiRepository.to.setAdministrator(
|
|
keyId: state.itemData.value.keyId.toString(),
|
|
);
|
|
if (entity.errorCode!.codeIsSuccessful) {
|
|
showToast('设置成功'.tr, something: () {
|
|
eventBus.fire(ElectronicKeyListRefreshUI());
|
|
eventBus.fire(AuthorizedAdminPageRefreshUI());
|
|
Get.back();
|
|
});
|
|
}
|
|
}
|
|
|
|
//取消授权管理员
|
|
Future<void> cancelAdministrator() async {
|
|
final ElectronicKeyListEntity entity =
|
|
await ApiRepository.to.cancelAdministrator(
|
|
keyId: state.itemData.value.keyId.toString(),
|
|
);
|
|
if (entity.errorCode!.codeIsSuccessful) {
|
|
showToast('设置成功'.tr, something: () {
|
|
eventBus.fire(ElectronicKeyListRefreshUI());
|
|
eventBus.fire(AuthorizedAdminPageRefreshUI());
|
|
Get.back();
|
|
});
|
|
}
|
|
}
|
|
|
|
//冻结
|
|
Future<void> freezeKey(int includeUnderlings) async {
|
|
final ElectronicKeyListEntity entity = await ApiRepository.to.freezeKey(
|
|
keyId: state.itemData.value.keyId.toString(),
|
|
includeUnderlings: includeUnderlings);
|
|
if (entity.errorCode!.codeIsSuccessful) {
|
|
showToast('设置成功'.tr, something: () {
|
|
eventBus.fire(ElectronicKeyListRefreshUI());
|
|
eventBus.fire(AuthorizedAdminPageRefreshUI());
|
|
Get.back();
|
|
});
|
|
}
|
|
}
|
|
|
|
//解除冻结
|
|
Future<void> cancelFreeze(int includeUnderlings) async {
|
|
final ElectronicKeyListEntity entity = await ApiRepository.to.cancelFreeze(
|
|
keyId: state.itemData.value.keyId.toString(),
|
|
includeUnderlings: includeUnderlings);
|
|
if (entity.errorCode!.codeIsSuccessful) {
|
|
showToast('设置成功'.tr, something: () {
|
|
eventBus.fire(ElectronicKeyListRefreshUI());
|
|
eventBus.fire(AuthorizedAdminPageRefreshUI());
|
|
Get.back();
|
|
});
|
|
}
|
|
}
|
|
|
|
//检查实名认证状态
|
|
Future<void> checkRealNameStatus(int realNameAuthStatus) async {
|
|
//打开实名认证 必须输入身份证号和真实姓名
|
|
if (realNameAuthStatus == 1) {
|
|
final ValueAddedServicesHighFunctionEntity 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(
|
|
(String? idCard, String? realName) {
|
|
state.getIDCardNumber.value = idCard ?? '';
|
|
state.getRealName.value = realName ?? '';
|
|
updateRealNameInfoWithAuthStatus(realNameAuthStatus);
|
|
});
|
|
} else {
|
|
updateRealNameInfoWithAuthStatus(realNameAuthStatus);
|
|
}
|
|
} else if (entity.errorCode == 432) {
|
|
//432--余量不足,需购买
|
|
ShowCupertinoAlertView().showBuyTipWithContentAlert(
|
|
titleStr: '实名认证为付费功能,请购买后再使用'.tr,
|
|
sureClick: () {
|
|
Get.toNamed(Routers.valueAddedServicesRealNamePage);
|
|
// Get.toNamed(Routers.advancedFeaturesWebPage, arguments: {
|
|
// 'webBuyType': XSConstantMacro.webBuyTypeAuth,
|
|
// });
|
|
});
|
|
} else if (entity.errorCode == 433) {
|
|
//需联系管理员购买
|
|
ShowCupertinoAlertView().showContactAdministratorBuyAlert();
|
|
}
|
|
} else {
|
|
updateRealNameInfoWithAuthStatus(realNameAuthStatus);
|
|
}
|
|
}
|
|
|
|
//更新钥匙实名认证信息--实名认证状态
|
|
Future<void> updateRealNameInfoWithAuthStatus(int realNameAuthStatus) async {
|
|
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: () {
|
|
eventBus.fire(ElectronicKeyListRefreshUI());
|
|
eventBus.fire(AuthorizedAdminPageRefreshUI());
|
|
});
|
|
}
|
|
}
|
|
|
|
//更新钥匙实名认证信息
|
|
Future<void> updateRealNameInfoRequest(ShowAlertEnum alertEnum) async {
|
|
switch (alertEnum) {
|
|
case ShowAlertEnum.realName:
|
|
if (state.changeRealNameController.text.isEmpty) {
|
|
showToast('请输入真实姓名'.tr);
|
|
return;
|
|
}
|
|
break;
|
|
case ShowAlertEnum.idCardNumber:
|
|
if (state.changeIDCardController.text.isEmpty) {
|
|
showToast('请输入身份证号'.tr);
|
|
return;
|
|
}
|
|
break;
|
|
default:
|
|
}
|
|
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 =
|
|
state.changeRealNameController.text;
|
|
state.getRealName.value = state.itemData.value.userIdCard!.realName!;
|
|
} else if (alertEnum == ShowAlertEnum.idCardNumber) {
|
|
state.itemData.value.userIdCard!.idCardNumber =
|
|
state.changeIDCardController.text;
|
|
state.getIDCardNumber.value =
|
|
state.itemData.value.userIdCard!.idCardNumber!;
|
|
}
|
|
showToast('修改成功'.tr, something: () {
|
|
eventBus.fire(ElectronicKeyListRefreshUI());
|
|
eventBus.fire(AuthorizedAdminPageRefreshUI());
|
|
});
|
|
}
|
|
}
|
|
|
|
String getKeyTypeShowDateTime() {
|
|
String useDateStr = '';
|
|
if (state.keyType.value == 1) {
|
|
useDateStr = '永久'.tr;
|
|
} else if (state.keyType.value == 2) {
|
|
useDateStr =
|
|
'${DateTool().dateToYMDHNString(state.starDate.value)}\n${DateTool().dateToYMDHNString(state.endDate.value)}';
|
|
} else if (state.keyType.value == 3) {
|
|
useDateStr = '单次'.tr;
|
|
} else if (state.keyType.value == 4) {
|
|
useDateStr =
|
|
'${DateTool().dateToYMDString(state.starDate.value)}\n${DateTool().dateToYMDString(state.endDate.value)}';
|
|
}
|
|
return useDateStr;
|
|
}
|
|
|
|
Future<void> openModalBottomSheet(BuildContext context) async {
|
|
List<String> textList = <String>[];
|
|
final bool isAdminKey = state.itemData.value.keyRight == 1;
|
|
final bool isLockOwner = CommonDataManage().currentKeyInfo.isLockOwner == 1;
|
|
if (isAdminKey) {
|
|
// 授权管理员
|
|
textList = <String>[
|
|
if (state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen)
|
|
'解除冻结'.tr
|
|
else
|
|
'冻结'.tr,
|
|
if (isLockOwner) '取消授权'.tr
|
|
];
|
|
} else if (isLockOwner) {
|
|
// 锁拥有者
|
|
if (state.keyType.value == 1 || state.keyType.value == 2) {
|
|
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 = <String>[
|
|
if (state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen)
|
|
'解除冻结'.tr
|
|
else
|
|
'冻结'.tr
|
|
];
|
|
}
|
|
} else {
|
|
textList = <String>[
|
|
if (state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen)
|
|
'解除冻结'.tr
|
|
else
|
|
'冻结'.tr,
|
|
];
|
|
}
|
|
showModalBottomSheet(
|
|
context: context,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadiusDirectional.circular(10)),
|
|
builder: (BuildContext context) {
|
|
return AlertBottomWidget(
|
|
topTitle: '',
|
|
items: textList,
|
|
chooseCallback: (int value) {
|
|
final int index = value;
|
|
if (index == 0) {
|
|
if (state.itemData.value.keyStatus ==
|
|
XSConstantMacro.keyStatusFrozen) {
|
|
// 解除冻结
|
|
if (state.itemData.value.keyRight == 1) {
|
|
// 管理员
|
|
ShowTipView().showDeleteAdministratorIsHaveAllDataDialog(
|
|
'同时解冻其发送的钥匙'.tr, (bool isAllData) {
|
|
cancelFreeze(isAllData ? 1 : 0);
|
|
});
|
|
} else {
|
|
ShowTipView()
|
|
.showIosTipWithContentDialog('会在用户APP连网后生效'.tr, () {
|
|
cancelFreeze(0);
|
|
});
|
|
}
|
|
} else {
|
|
if (state.itemData.value.keyRight == 1) {
|
|
// 管理员
|
|
ShowTipView().showDeleteAdministratorIsHaveAllDataDialog(
|
|
'同时冻结其发送的钥匙'.tr, (bool isAllData) {
|
|
freezeKey(isAllData ? 1 : 0);
|
|
});
|
|
} else {
|
|
ShowTipView()
|
|
.showIosTipWithContentDialog('冻结会在用户APP连网后生效'.tr, () {
|
|
freezeKey(0);
|
|
});
|
|
}
|
|
}
|
|
} else {
|
|
// 取消/授权管理员
|
|
if (state.itemData.value.keyRight == 1) {
|
|
// 管理员
|
|
ShowTipView().showIosTipWithContentDialog(
|
|
'取消授权会在用户APP连网后生效'.tr, cancelAdministrator);
|
|
} else {
|
|
ShowTipView().showIosTipWithContentDialog(
|
|
'授权用户拥有管理员的大部分权限,比如发送钥匙、发送密码'.tr, setAdministrator);
|
|
}
|
|
}
|
|
},
|
|
);
|
|
});
|
|
}
|
|
|
|
void deletKeyLogic() {
|
|
if (state.itemData.value.keyRight == 1) {
|
|
// 授权管理员
|
|
ShowTipView().showDeleteAdministratorIsHaveAllDataDialog(
|
|
'同时删除其发送的所有钥匙,钥匙删除后不能恢复'.tr, (bool isAllData) {
|
|
deleteKeyRequest(isAllData ? 1 : 0);
|
|
});
|
|
} else {
|
|
// 普通用户
|
|
ShowTipView().showIosTipWithContentDialog('删除钥匙会在用户APP连网后生效'.tr, () {
|
|
deleteKeyRequest(0);
|
|
});
|
|
}
|
|
}
|
|
|
|
TextEditingController getCurrentController(ShowAlertEnum alertEnum) {
|
|
TextEditingController currentController = TextEditingController();
|
|
switch (alertEnum) {
|
|
case ShowAlertEnum.name:
|
|
currentController = state.changeNameController;
|
|
break;
|
|
case ShowAlertEnum.realName:
|
|
currentController = state.changeRealNameController;
|
|
break;
|
|
case ShowAlertEnum.idCardNumber:
|
|
currentController = state.changeIDCardController;
|
|
break;
|
|
default:
|
|
}
|
|
return currentController;
|
|
}
|
|
|
|
void noModificationAllowedDuringFreeze() {
|
|
if (state.itemData.value.keyStatus == XSConstantMacro.keyStatusFrozen) {
|
|
showToast('冻结状态下不允许修改钥匙权限'.tr);
|
|
return;
|
|
}
|
|
}
|
|
|
|
//检测实名认证是否支持开启
|
|
Future<void> keyCheckFace() async {
|
|
final ValueAddedServicesHighFunctionEntity entity =
|
|
await ApiRepository.to.keyCheckFace(
|
|
lockId: CommonDataManage().currentKeyInfo.lockId ?? 0,
|
|
);
|
|
if (entity.errorCode!.codeIsSuccessful) {
|
|
//打开实名认证,需要弹出输入身份证信息框
|
|
state.isRequireAuth.value = true;
|
|
state.isRealNameAuth.value = true;
|
|
} else if (entity.errorCode == 432) {
|
|
//432--余量不足,需购买
|
|
ShowCupertinoAlertView().showBuyTipWithContentAlert(
|
|
titleStr: '实名认证为付费功能,请购买后再使用'.tr,
|
|
sureClick: () {
|
|
// Get.toNamed(Routers.advancedFeaturesWebPage, arguments: {
|
|
// 'webBuyType': XSConstantMacro.webBuyTypeAuth,
|
|
// });
|
|
Get.toNamed(Routers.valueAddedServicesRealNamePage);
|
|
});
|
|
} else if (entity.errorCode == 433) {
|
|
//需联系管理员购买
|
|
ShowCupertinoAlertView().showContactAdministratorBuyAlert();
|
|
}
|
|
}
|
|
|
|
}
|