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, }