import ICINLocker from "./ICINPakage/ICINLocker"
|
|
const WXAPI = require('./request')
|
|
import moment from "./moment"
|
|
var bleall = require('./bleall');
|
|
import {
|
|
BLE
|
|
} from "./btls/ble";
|
|
|
|
const app = getApp();
|
|
const emitter = app.globalData.emitter
|
|
// 锁端连接蓝牙
|
|
function bluetoothConnectivity(deviceNum,manufactureId){
|
|
var that=this
|
|
return new Promise((resolve, reject)=>{
|
|
if(manufactureId==201||manufactureId==221){
|
|
let data={
|
|
status:'',
|
|
msg:''
|
|
}
|
|
wx.showLoading({
|
|
title: '连接蓝牙中',
|
|
mask: true
|
|
})
|
|
ICINLocker.scanDevices(deviceNum)
|
|
.then((res) => {
|
|
if (res.status === 0) {
|
|
app.globalData.blueDeviceId = res.deviceId
|
|
ICINLocker.connect(res.deviceId,false) // 此处 deviceId 存起来,当断开连接时使用
|
|
.then((res1) => {
|
|
if (res1.status === 0) {
|
|
data.status='00'
|
|
data.msg='连接成功'
|
|
wx.hideLoading()
|
|
wx.showToast({
|
|
title: '连接成功',
|
|
icon: "none",
|
|
duration: 2000
|
|
})
|
|
app.globalData.zgBlueStatus = true
|
|
resolve(data)
|
|
}else{
|
|
data.status='01'
|
|
data.msg='连接失败'
|
|
wx.hideLoading()
|
|
var msg = ''
|
|
switch (res.errCode) {
|
|
case 10001:
|
|
msg = '调用失败,请打开蓝牙!';
|
|
break;
|
|
}
|
|
wx.showToast({
|
|
title: msg,
|
|
duration: 2000,
|
|
icon: 'none'
|
|
})
|
|
reject(data)
|
|
}
|
|
})
|
|
}else{
|
|
data.status='01'
|
|
data.msg='搜索失败'
|
|
wx.hideLoading()
|
|
wx.showToast({
|
|
title: '搜索失败',
|
|
duration: 2000,
|
|
icon: 'none'
|
|
})
|
|
reject(data)
|
|
}
|
|
}).catch((res) => {
|
|
if (res.status == 1) {
|
|
if (res.statusReason.errCode == 10001) {
|
|
data.status='01'
|
|
data.msg='请检查手机蓝牙和定位功能是否打开?'
|
|
wx.hideLoading()
|
|
wx.showToast({
|
|
title: '请检查手机蓝牙和定位功能是否打开?',
|
|
duration: 2000,
|
|
icon: 'none'
|
|
})
|
|
reject(data)
|
|
}else if(res.statusReason.errCode == 1000){
|
|
data.status='01'
|
|
data.msg='未找到该设备'
|
|
wx.hideLoading()
|
|
wx.showToast({
|
|
title: '未找到该设备',
|
|
duration: 2000,
|
|
icon: 'none'
|
|
})
|
|
reject(data)
|
|
}else {
|
|
if (!app.globalData.zgBlueStatus && app.globalData.blueStatus) {
|
|
that.bluetoothConnectivity()
|
|
} else {
|
|
data.status='01'
|
|
data.msg=res.statusReason
|
|
wx.hideLoading()
|
|
wx.showToast({
|
|
title: res.statusReason,
|
|
duration: 2000,
|
|
icon: 'none'
|
|
})
|
|
reject(data)
|
|
}
|
|
}
|
|
}else{
|
|
data.status='01'
|
|
data.msg='连接失败'
|
|
wx.hideLoading()
|
|
reject(data)
|
|
}
|
|
})
|
|
}else if(manufactureId==101){
|
|
let data={
|
|
status:'',
|
|
msg:''
|
|
}
|
|
wx.showLoading({
|
|
title: '连接蓝牙中',
|
|
mask: true
|
|
})
|
|
const ble = new BLE(deviceNum, emitter)
|
|
app.globalData.ble = ble
|
|
app.globalData.ble.init()
|
|
if (app.globalData.ble && app.globalData.bleStatus) {
|
|
app.globalData.ble.listen(res => {
|
|
if (res.type == 'connect') {
|
|
if (res.data == "未打开适配器") {
|
|
wx.hideLoading()
|
|
wx.showToast({
|
|
title: '请检查手机蓝牙和定位功能是否打开?',
|
|
duration: 2000,
|
|
icon: 'none'
|
|
})
|
|
data.status='01'
|
|
data.msg='请检查手机蓝牙和定位功能是否打开?'
|
|
reject(data)
|
|
} else {
|
|
if (res.data == '蓝牙已连接') {
|
|
app.globalData.bleStatus = res.data
|
|
data.status='00'
|
|
data.msg='连接成功'
|
|
resolve(data)
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
})
|
|
}
|
|
// ZH,GX1000蓝牙开锁
|
|
function bluetoothUnlocking(data,manufactureId){
|
|
wx.showLoading({
|
|
title: '开锁中',
|
|
mask:true,
|
|
})
|
|
if(manufactureId==201||manufactureId==221){
|
|
ICINLocker.getSignKey(data.lockerId, data.superId,data.superId, (callback) => {
|
|
console.log(callback,'管理员获取密钥')
|
|
if (callback.status == '00') {
|
|
var userSignKey = callback.signKey?callback.signKey:callback.commonKey||''
|
|
ICINLocker.getCommonKey(data.lockerId, data.superId, data.superId, userSignKey, (callback1) => {
|
|
if(callback1.status=='00'){
|
|
var commonKey = callback1.commonKey
|
|
ICINLocker.openTheDoor(data.lockerId, data.superId, userSignKey, data.superId, '', '00', commonKey, (callback2) => {
|
|
if(callback2.status=='00'){
|
|
var rqTime=moment().format("X")
|
|
var username=wx.getStorageSync('username'),password=wx.getStorageSync('password')
|
|
var str=`${username}+${password}+${rqTime}`
|
|
var signature=md5(str)
|
|
var data = {
|
|
code: "zg/bleUnlockRecord",
|
|
data: {
|
|
lockerId:data.lockerId,
|
|
lockerUserId: data.superId,
|
|
roomId:data.roomId,
|
|
roomName:data.roomName,
|
|
cardName:username,
|
|
signature:signature
|
|
}
|
|
}
|
|
console.log(data,'蓝牙开锁')
|
|
wx.hideLoading()
|
|
wx.showToast({
|
|
title: '开锁成功',
|
|
duration:2000,
|
|
icon:'none'
|
|
})
|
|
WXAPI.sendCommand(data).then(res => {
|
|
console.log(res)
|
|
})
|
|
}else{
|
|
wx.hideLoading()
|
|
wx.showToast({
|
|
title: '开锁失败',
|
|
duration:2000,
|
|
icon:'none'
|
|
})
|
|
}
|
|
})
|
|
}else{
|
|
wx.hideLoading()
|
|
wx.showToast({
|
|
title: '连接失败',
|
|
duration:2000,
|
|
icon:'none'
|
|
})
|
|
}
|
|
})
|
|
}else{
|
|
wx.hideLoading()
|
|
}
|
|
});
|
|
}else if(manufactureId==101){
|
|
let userTelephone = "18270949468" //JSON.parse(this.data.deviceinfo.info).userTelephone
|
|
let userPassword = "202108" //JSON.parse(this.data.deviceinfo.info).userPassword
|
|
let pwd = "2021110309" //JSON.parse(this.data.deviceinfo.info).userPassword
|
|
let openLockType = 2
|
|
var userInfo=wx.getStorageSync('userInfo')
|
|
var timestamp = moment().format("x")
|
|
bleall.openLock(userTelephone, userPassword, pwd, openLockType, timestamp, function (res) {
|
|
if (res.success) {
|
|
var rqTime=moment().format("X")
|
|
var username=wx.getStorageSync('username'),password=wx.getStorageSync('password')
|
|
var str=`${username}+${password}+${rqTime}`
|
|
var signature=md5(str)
|
|
var data = {
|
|
code: "ld/bleUnlockRecord",
|
|
data: {
|
|
deviceNum: data.deviceNum,
|
|
userTelephone: userTelephone,
|
|
password: userPassword,
|
|
roomId:data.roomId,
|
|
roomName:data.roomName,
|
|
cardName:userInfo.username,
|
|
signature:signature
|
|
}
|
|
}
|
|
WXAPI.sendCommand(data).then(res => {
|
|
|
|
})
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
// ZH锁蓝牙操作
|
|
/*
|
|
1--添加用户
|
|
2--删除用户
|
|
3--添加密码
|
|
4--删除密码
|
|
5--添加指纹
|
|
6--删除指纹
|
|
7--添加卡
|
|
8--删除卡
|
|
*/
|
|
function bluetoothOperation_ZH(data,info,type){
|
|
return new Promise((resolve, reject)=>{
|
|
wx.showLoading({
|
|
title: '下发中',
|
|
mask:true,
|
|
})
|
|
if(type==1){
|
|
ICINLocker.getSignKey(data.lockerId, data.superId, data.superId, (callback) => {
|
|
if(callback.status=='00'){
|
|
var signKey = callback.signKey
|
|
ICINLocker.getCommonKey(data.lockerId, data.superId, data.superId, signKey, (callback1) => {
|
|
if(callback1.status=='00'){
|
|
var commonKey = callback1.commonKey
|
|
ICINLocker.addUserToLock(data.lockerId, data.superId, info.usrID, data.superId, '00', signKey, '', commonKey, info.startTime, info.endTime, (callback2) => {
|
|
if(callback2.status=='00'){
|
|
resolve(callback2)
|
|
}else{
|
|
reject(callback2)
|
|
}
|
|
})
|
|
}else{
|
|
reject(callback1)
|
|
}
|
|
})
|
|
}else{
|
|
reject(callback)
|
|
}
|
|
})
|
|
}else{
|
|
ICINLocker.getUserSignKey(data.lockerId, data.superId, info.userPassword, data.superId, data.authKey, '01', (callback) => {
|
|
if(callback.status=='00'){
|
|
var userSignKey = callback.userSignKey
|
|
ICINLocker.getCommonKey(data.lockerId, info.userPassword, info.userPassword, userSignKey, (callback1) => {
|
|
if(callback1.status=='00'){
|
|
var commonKey = callback1.commonKey
|
|
if(type==3){
|
|
console.log(data,info,commonKey)
|
|
ICINLocker.handlePwd(data.lockerId, data.superId, info.userPassword, info.password, info.pwdNo, data.superId, data.authKey, '', info.startTime, info.endTime, 255, commonKey, (callback2) => {
|
|
if(callback2.status=='00'){
|
|
resolve(callback2)
|
|
}else{
|
|
reject(callback2)
|
|
}
|
|
})
|
|
}else if(type==5){
|
|
wx.showLoading({
|
|
title: '请在锁上按压手指',
|
|
mask:true,
|
|
})
|
|
ICINLocker.addFingerPrints(data.lockerId, data.superId, info.userPassword, data.superId, '', data.authKey, info.startTime, info.endTime, '00', commonKey, (callback2) => {
|
|
if(callback2.status=='00' && callback2.completeFlag=='01'){
|
|
resolve(callback2)
|
|
}else if(callback2.status=='ff' && callback2.completeFlag=='00'){
|
|
wx.showToast({
|
|
title: '录入失败',
|
|
icon:'none'
|
|
})
|
|
reject(callback2)
|
|
}
|
|
})
|
|
}else if(type==7){
|
|
wx.showLoading({
|
|
title: '请在锁上按键区刷卡',
|
|
mask:true,
|
|
})
|
|
ICINLocker.RfCardRegister(data.lockerId, data.superId, info.userPassword, data.superId, info.pwdNo, '',data.authKey, info.startTime, info.endTime, commonKey, (callback2) => {
|
|
if(callback2.status=='00'){
|
|
resolve(callback2)
|
|
}else{
|
|
reject(callback2)
|
|
}
|
|
})
|
|
}
|
|
}else{
|
|
reject(callback1)
|
|
}
|
|
})
|
|
}else{
|
|
reject(callback)
|
|
}
|
|
})
|
|
}
|
|
})
|
|
}
|
|
|
|
module.exports = {
|
|
bluetoothUnlocking,
|
|
bluetoothConnectivity,
|
|
bluetoothOperation_ZH,
|
|
}
|