You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

349 lines
14 KiB

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