import 'dart:async'; import 'package:get/get.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_state.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/commonDataManage.dart'; import 'package:star_lock/tools/showTipView.dart'; import '../../../../tools/eventBusEventManage.dart'; class ElectronicKeyListLogic extends BaseGetXController { final ElectronicKeyListState state = ElectronicKeyListState(); //请求电子钥匙列表 Future mockNetworkDataRequest() async { final ElectronicKeyListEntity entity = await ApiRepository.to .electronicKeyList( endDate: '0', keyId: CommonDataManage().currentKeyInfo.keyId.toString(), keyStatus: '', keyRight: '0', lockId: CommonDataManage().currentKeyInfo.lockId.toString(), pageNo: pageNo.toString(), pageSize: pageSize.toString(), startDate: '0', searchStr: state.searchController.text); if (entity.errorCode!.codeIsSuccessful) { if (pageNo == 1) { state.itemDataList.value = entity.data!.itemList; pageNo++; } else { if (entity.data!.itemList.isNotEmpty) { state.itemDataList.value.addAll(entity.data!.itemList); pageNo++; } } } return entity; } //刷新单挑信息 Future refreshIndividualKeys( {required int lockId, required int keyId}) async { final ElectronicKeyEntity entity = await ApiRepository.to.electronicKey(lockId: lockId, keyId: keyId); if (entity.errorCode!.codeIsSuccessful) { final int index = state.itemDataList .indexWhere((ElectronicKeyListItem item) => item.keyId == keyId); state.itemDataList.removeAt(index); state.itemDataList.insert(index, entity.data!); } } //电子钥匙重置请求 Future resetElectronicKeyListRequest() async { final ElectronicKeyListEntity entity = await ApiRepository.to .resetElectronicKey(CommonDataManage().currentKeyInfo.lockId.toString(), '0'); if (entity.errorCode!.codeIsSuccessful) { showToast('重置成功'.tr, something: (){ pageNo = 1; mockNetworkDataRequest(); }); } } //删除电子钥匙名称请求 Future deleteKeyRequest(String keyId, int includeUnderlings) async { final ElectronicKeyListEntity entity = await ApiRepository.to.deleteElectronicKey( keyId:keyId, includeUnderlings:includeUnderlings ); if (entity.errorCode!.codeIsSuccessful) { showToast('删除成功'.tr,something: (){ pageNo = 1; mockNetworkDataRequest(); }); } } void deletKeyLogic(ElectronicKeyListItem electronicKeyListItem){ if(electronicKeyListItem.keyRight == 1){ // 授权管理员 ShowTipView().showDeleteAdministratorIsHaveAllDataDialog( '同时删除其发送的所有钥匙,钥匙删除后不能恢复'.tr, (bool isAllData) { deleteKeyRequest( electronicKeyListItem.keyId.toString(), isAllData ? 1 : 0); }); } else { // 普通用户 ShowTipView().showIosTipWithContentDialog('删除钥匙会在用户APP连网后生效'.tr,(){ deleteKeyRequest(electronicKeyListItem.keyId.toString(), 0); }); } } /// 刷新电子钥匙列表 StreamSubscription? _getElectronicKeyListRefreshUIEvent; void _getElectronicKeyListRefreshUIAction() { // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus _getElectronicKeyListRefreshUIEvent = eventBus .on() .listen((ElectronicKeyListRefreshUI event) { pageNo = 1; mockNetworkDataRequest(); }); } @override void onReady() { super.onReady(); _getElectronicKeyListRefreshUIAction(); } @override void onClose() { super.onClose(); _getElectronicKeyListRefreshUIEvent?.cancel(); } }