本地注册管理员密码--app连接时获取管理员密码替换成基本信息的管理员密码
This commit is contained in:
parent
47e4b86086
commit
f05e8fc813
@ -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
|
||||
|
||||
@ -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();
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user