feat: 1. 完成设置相关功能
This commit is contained in:
parent
6cd5311190
commit
778172cf7f
18
api.js
18
api.js
@ -107,3 +107,21 @@ export function bindLockRequest(data) {
|
|||||||
data
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 移除坏锁
|
||||||
|
export function removeBadLockRequest(data) {
|
||||||
|
return request({
|
||||||
|
url: '/v1/lock/removeBadLock',
|
||||||
|
method: 'POST',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除锁
|
||||||
|
export function deleteLockRequest(data) {
|
||||||
|
return request({
|
||||||
|
url: '/v1/lock/delete',
|
||||||
|
method: 'POST',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
133
starCloud.js
133
starCloud.js
@ -4,6 +4,7 @@ import { buildNumber, configs, version } from '@/starCloud/env'
|
|||||||
import {
|
import {
|
||||||
addCustomPasswordRequest,
|
addCustomPasswordRequest,
|
||||||
bindLockRequest,
|
bindLockRequest,
|
||||||
|
deleteLockRequest,
|
||||||
deletePasswordRequest,
|
deletePasswordRequest,
|
||||||
getLockDetailRequest,
|
getLockDetailRequest,
|
||||||
getLockNetTokenRequest,
|
getLockNetTokenRequest,
|
||||||
@ -11,6 +12,7 @@ import {
|
|||||||
getServerDatetimeRequest,
|
getServerDatetimeRequest,
|
||||||
getStarCloudToken,
|
getStarCloudToken,
|
||||||
getUserNoListRequest,
|
getUserNoListRequest,
|
||||||
|
removeBadLockRequest,
|
||||||
starCloudCreateUser,
|
starCloudCreateUser,
|
||||||
updateLockUserNoRequest,
|
updateLockUserNoRequest,
|
||||||
updatePasswordRequest
|
updatePasswordRequest
|
||||||
@ -527,7 +529,6 @@ export const useStarCloudStore = defineStore('starCloud', {
|
|||||||
|
|
||||||
return this.getWriteResult(this.customPassword, params)
|
return this.getWriteResult(this.customPassword, params)
|
||||||
},
|
},
|
||||||
|
|
||||||
// 搜索设备
|
// 搜索设备
|
||||||
async searchDevice(callback) {
|
async searchDevice(callback) {
|
||||||
const result = await startBluetoothDevicesDiscovery()
|
const result = await startBluetoothDevicesDiscovery()
|
||||||
@ -680,6 +681,111 @@ export const useStarCloudStore = defineStore('starCloud', {
|
|||||||
}
|
}
|
||||||
return connectResult
|
return connectResult
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* 移除坏锁
|
||||||
|
* @param params
|
||||||
|
* @param {AccountInfo} params.accountInfo 账号信息
|
||||||
|
* @param {List[int]} params.lockIds 锁Id列表
|
||||||
|
* @returns {Promise<Result>}
|
||||||
|
*/
|
||||||
|
async removeBadLock(params) {
|
||||||
|
const { accountInfo, lockIds } = params
|
||||||
|
// 设置执行账号
|
||||||
|
const result = await this.login(accountInfo)
|
||||||
|
if (result.code !== Result.Success.code) {
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
const { code, message } = await removeBadLockRequest({
|
||||||
|
lockIds: params.lockIds
|
||||||
|
})
|
||||||
|
if (code === Result.Success.code) {
|
||||||
|
const lockList = getStorage('lockList')
|
||||||
|
if (lockList[accountInfo.uid]) {
|
||||||
|
lockIds.forEach(lockId => {
|
||||||
|
const index = lockList[accountInfo.uid].findIndex(item => item.lockId === lockId)
|
||||||
|
if (index !== -1) {
|
||||||
|
lockList[accountInfo.uid].splice(index, 1)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
setStorage('lockList', lockList)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Result(code, {}, message)
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 删除锁
|
||||||
|
* @param params
|
||||||
|
* @param {AccountInfo} params.accountInfo 账号信息
|
||||||
|
*/
|
||||||
|
async deleteLock(params) {
|
||||||
|
const { accountInfo } = params
|
||||||
|
// 设置执行账号
|
||||||
|
const result = await this.login(accountInfo)
|
||||||
|
if (result.code !== Result.Success.code) {
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
// 确认设备连接正常
|
||||||
|
const searchResult = await searchAndConnectDevice(this.lockInfo.bluetooth.bluetoothDeviceName)
|
||||||
|
if (searchResult.code !== Result.Success.code) {
|
||||||
|
return searchResult
|
||||||
|
}
|
||||||
|
this.updateLockInfo(searchResult.data)
|
||||||
|
|
||||||
|
// 检查是否已添加为用户
|
||||||
|
const checkResult = await this.checkLockUser()
|
||||||
|
if (checkResult.code !== Result.Success.code) {
|
||||||
|
return checkResult
|
||||||
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
token,
|
||||||
|
bluetooth: { publicKey, privateKey }
|
||||||
|
} = this.lockInfo
|
||||||
|
|
||||||
|
const authUid = this.lockInfo.uid.toString()
|
||||||
|
const name = this.lockInfo.bluetooth.bluetoothDeviceName
|
||||||
|
|
||||||
|
const length = 2 + 40 + 20 + 4 + 1 + 16
|
||||||
|
const headArray = this.createPackageHeader(3, length)
|
||||||
|
const contentArray = new Uint8Array(length)
|
||||||
|
|
||||||
|
contentArray[0] = cmdIds.resetDevice / 256
|
||||||
|
contentArray[1] = cmdIds.resetDevice % 256
|
||||||
|
|
||||||
|
for (let i = 0; i < name.length; i++) {
|
||||||
|
contentArray[i + 2] = name.charCodeAt(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < authUid.length; i++) {
|
||||||
|
contentArray[i + 42] = authUid.charCodeAt(i)
|
||||||
|
}
|
||||||
|
contentArray.set(token || new Uint8Array([0, 0, 0, 0]), 62)
|
||||||
|
contentArray[66] = 16
|
||||||
|
|
||||||
|
const md5Array = md5Encrypt(name, token || new Uint8Array([0, 0, 0, 0]), publicKey)
|
||||||
|
contentArray.set(md5Array, 67)
|
||||||
|
|
||||||
|
const cebArray = sm4.encrypt(contentArray, privateKey, {
|
||||||
|
mode: 'ecb',
|
||||||
|
output: 'array'
|
||||||
|
})
|
||||||
|
|
||||||
|
const packageArray = createPackageEnd(headArray, cebArray)
|
||||||
|
|
||||||
|
const writeResult = await writeBLECharacteristicValue(
|
||||||
|
this.lockInfo.deviceId,
|
||||||
|
this.lockInfo.serviceId,
|
||||||
|
this.lockInfo.writeCharacteristicId,
|
||||||
|
packageArray
|
||||||
|
)
|
||||||
|
|
||||||
|
if (writeResult.code !== Result.Success.code) {
|
||||||
|
return writeResult
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.getWriteResult(this.deleteLock, params)
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清理用户
|
* 清理用户
|
||||||
@ -1392,6 +1498,31 @@ export const useStarCloudStore = defineStore('starCloud', {
|
|||||||
console.log('开门', decrypted[6], this.lockInfo.token)
|
console.log('开门', decrypted[6], this.lockInfo.token)
|
||||||
characteristicValueCallback(new Result(decrypted[6]))
|
characteristicValueCallback(new Result(decrypted[6]))
|
||||||
break
|
break
|
||||||
|
case cmdIds.resetDevice:
|
||||||
|
this.updateLockInfo({
|
||||||
|
token: decrypted.slice(2, 6)
|
||||||
|
})
|
||||||
|
if (decrypted[6] === Result.Success.code) {
|
||||||
|
const { code, message } = await deleteLockRequest({
|
||||||
|
lockId: this.lockInfo.lockId
|
||||||
|
})
|
||||||
|
if (code === Result.Success.code) {
|
||||||
|
const lockList = getStorage('lockList')
|
||||||
|
if (lockList[this.accountInfo.uid]) {
|
||||||
|
const index = lockList[this.accountInfo.uid].findIndex(
|
||||||
|
item => item.lockId === this.lockInfo.lockId
|
||||||
|
)
|
||||||
|
if (index !== -1) {
|
||||||
|
lockList[this.accountInfo.uid].splice(index, 1)
|
||||||
|
}
|
||||||
|
setStorage('lockList', lockList)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
characteristicValueCallback(new Result(code, {}, message))
|
||||||
|
} else {
|
||||||
|
characteristicValueCallback(new Result(decrypted[6]))
|
||||||
|
}
|
||||||
|
break
|
||||||
default:
|
default:
|
||||||
this.updateLockInfo({
|
this.updateLockInfo({
|
||||||
token: decrypted.slice(2, 6)
|
token: decrypted.slice(2, 6)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user