本地注册管理员密码--app连接时获取管理员密码替换成基本信息的管理员密码

This commit is contained in:
sky.min 2026-01-26 11:56:31 +08:00
parent 47e4b86086
commit f05e8fc813
2 changed files with 111 additions and 8 deletions

View File

@ -1,9 +1,11 @@
import 'dart:async';
import 'dart:math';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart';
import 'package:star_lock/apm/apm_helper.dart';
import 'package:star_lock/appRouters.dart';
import 'package:star_lock/blue/io_protocol/io_readAdminPassword.dart';
import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_logic.dart';
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart';
@ -18,7 +20,6 @@ import '../../../blue/io_tool/manager_event_bus.dart';
import '../../../blue/sender_manage.dart';
import '../../../network/api_repository.dart';
import '../../../tools/baseGetXController.dart';
import '../../../tools/commonDataManage.dart';
import '../../../tools/dateTool.dart';
import '../../../tools/eventBusEventManage.dart';
import '../../../tools/storage.dart';
@ -43,9 +44,108 @@ class SaveLockLogic extends BaseGetXController {
// if (reply is ChangeAdministratorPasswordReply) {
// _replyChangeAdministratorPassword(reply);
// }
// ----m
if (reply is SenderReadAdminPasswordReply && (state.ifCurrentScreen.value == true)) {
_replySenderReadAdminPasswordReply(reply);
}
});
}
// ----m
Future<void> _replySenderReadAdminPasswordReply(Reply reply) async {
AppLog.log('响应获取管理员密码: ${reply.data}');
var token = reply.data.sublist(5, 9);
var saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList);
int status = reply.data[2];
switch (status) {
case 0x00:
//
dismissEasyLoading();
cancelBlueConnetctToastTimer();
if(reply.data[5] > 0){
reply.data.removeRange(0, 6);
// 8
var getList = splitList(reply.data, 13);
for(int i = 0; i<getList.length; i++){
var indexList = getList[i];
var pwd = indexList.sublist(1, 11);
var pwdStr = utf8String(pwd);
state.adminPassword = pwdStr;
AppLog.log('管理员密码:${state.adminPassword}');
}
}
if(state.adminPassword == ''){
final Random rng = Random();
final int number = rng.nextInt(900000) + 100000;
state.adminPassword = number.toString();
} else {
state.role = 1;
}
break;
case 0x06:
//
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> getPublicKeyList = changeStringListToIntList(publicKey!);
IoSenderManage.senderReadAdminPasswordCommand(
keyID: state.lockSetInfoData.value.lockBasicInfo!.keyId.toString(),
userID: await Storage.getUid(),
role:0xff,
pwdNum:1,
pwdNo: 0,
token: getTokenList,
needAuthor: 1,
publicKey: getPublicKeyList,
privateKey: getPrivateKeyList
);
break;
default:
//
break;
}
}
void senderReadAdminPassword() async {
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
AppLog.log('开始读取管理员密码,蓝牙状态是否链接:${connectionState == BluetoothConnectionState.connected}');
if (connectionState == BluetoothConnectionState.connected) {
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
final List<String>? publicKey = await Storage.getStringList(saveBluePublicKey);
final List<int> getPublicKeyList = changeStringListToIntList(publicKey!);
AppLog.log('发送获取管理员密码指令:${BlueManage().connectDeviceName}');
IoSenderManage.senderReadAdminPasswordCommand(
keyID: '1',
userID: await Storage.getUid(),
role:1,
pwdNum:1,
pwdNo: 0,
token: getTokenList,
needAuthor: 1,
publicKey: getPublicKeyList,
privateKey: getPrivateKeyList
);
}
});
}
//
Future<void> _replyAddUserKey(Reply reply) async {
final List<int> token = reply.data.sublist(42, 46);
@ -240,7 +340,7 @@ class SaveLockLogic extends BaseGetXController {
startMin: 0,
endHour: 0,
endMin: 0,
role: 255,
role: state.role,
password: state.adminPassword,
needAuthor: 1,
publicKey: publicKeyDataList,
@ -521,6 +621,7 @@ class SaveLockLogic extends BaseGetXController {
super.onReady();
_initReplySubscription();
senderReadAdminPassword();
}
@override

View File

@ -12,7 +12,7 @@ class SaveLockState {
SaveLockState() {
aliName.value = BlueManage().connectDeviceName;
aliNameController.text = aliName.value;
adminPassword = getAdminPassword();
// adminPassword = getAdminPassword();
final Map map = Get.arguments;
if (map['pwdTimestamp']!= null) {
@ -60,14 +60,16 @@ class SaveLockState {
String adminPassword = '';
int lockId = 0;
int role = 255;
void onClose() {
aliNameController.dispose();
}
String getAdminPassword(){
final Random rng = Random();
final int number = rng.nextInt(900000) + 100000; // 100000 999999
return number.toString();
}
// String getAdminPassword(){
// final Random rng = Random();
// final int number = rng.nextInt(900000) + 100000; // 100000 999999
// return number.toString();
// }
}