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.
 

425 lines
13 KiB

// pages/addBlueButton/addBlueButton.js
const WXAPI = require('../../utils/request')
import ICINLocker from "../../utils/ICINPakage/ICINLocker"
var util = require('../../utils/util');
import moment from "../../utils/moment"
const app = getApp();
const CurentTime=moment().format("YYYY-MM-DD HH:mm:ss")
const CurentTime1=moment().add(60, "years").format("YYYY-MM-DD HH:mm:ss");
Page({
/**
* 页面的初始数据
*/
data: {
show:true,
deviceList:[],
personList:[],
timer:null,
blueKeyId:"",
personli:{},
selectName:'',
signKey:'',
starttime:"",
minDate:"",
minDate1:"",
endtime:"",
datetimerange:[CurentTime, CurentTime1],
minDate: CurentTime,
minDate1: CurentTime,
endtime: CurentTime1,
starttime: CurentTime,
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
// let timer=setInterval(()=>{
this.linkBlue()
// },5000)
var deviceinfo=wx.getStorageSync('deviceinfo')
// var personli=wx.getStorageSync('personli')
this.getSiteTenant(deviceinfo.roomId)
this.setData({
deviceinfo,
// personli,
// timer
})
},
bindDateChange: function (e) {
var str = e.detail.value + " 00:00:00"
this.data.datetimerange[0] = str
this.setData({
starttime: str,
minDate1: str
})
},
bindDateChange1: function (e) {
var str = e.detail.value + " 23:59:59"
this.data.datetimerange[1] = str
this.setData({
endtime: str
})
},
btntest1(e){
var personli=e.currentTarget.dataset.personli
this.setData({
personli:personli
})
if (app.globalData.zgBlueStatus) {
this.addUser()
} else {
this.goBlue()
}
},
setDeviceKeyId(){
var info=JSON.parse(this.data.personli.info)
var cgInfo=wx.getStorageSync('cgInfo')
var comm=this.stringToHex(this.data.selectName)
var keyId="0o01weit9ti9ti"
var password="3030000000000000000000000000000000000000"
var infoKeyId=info.keyId?info.keyId:info.userPassword
ICINLocker.connect(this.data.deviceId,true).then((res) => {
if (res.status == 0) {
console.log(res,'蓝牙扣连接')
ICINLocker.readBluetoothBuckle(cgInfo.lockerId, comm, callback2 => {
if(callback2.status==0){
console.log(infoKeyId, this.data.selectName, keyId, password, "", this.data.signKey, comm,'--------蓝牙扣')
ICINLocker.registeBluetoothBuckle(infoKeyId, this.data.selectName, keyId, password, "", this.data.signKey, comm, callback3 => {
if(callback3.status==0){
wx.hideLoading()
ICINLocker.disConnect(this.data.deviceId).then(res=>{
console.log(res)
wx.removeStorageSync("connectedDeviceId");
})
this.setData({
show:false
})
wx.showToast({
title: '添加成功',
duration:2000,
icon:"none"
})
}else{
ICINLocker.disConnect(this.data.deviceId).then(res=>{
console.log(res)
wx.removeStorageSync("connectedDeviceId");
})
wx.hideLoading()
this.setData({
show:false
})
wx.showToast({
title: '添加成功',
duration:2000,
icon:"none"
})
}
})
}else{
ICINLocker.disConnect(this.data.deviceId).then(res=>{
console.log(res)
wx.removeStorageSync("connectedDeviceId");
})
wx.hideLoading()
wx.showToast({
title: '读取失败',
duration:2000,
icon:"none"
})
}
});
}
})
},
stringToHex(str){
    var val="";
    for(var i = 0; i < str.length; i++){
      if(val == "")
        val = str.charCodeAt(i).toString(16);
      else
        val += str.charCodeAt(i).toString(16);
    }
    return val;
  },
addUser(){
console.log("添加蓝牙扣用户")
wx.showLoading({
title: '添加中'
})
var that=this
var cgInfo=wx.getStorageSync('cgInfo')
var personli=this.data.personli
var info=JSON.parse(personli.info)
console.log("添加蓝牙扣用户",personli,cgInfo)
var infoKeyId=info.keyId?info.keyId:info.userPassword
ICINLocker.getUserSignKey(cgInfo.lockerId, cgInfo.superId, infoKeyId, cgInfo.superId,cgInfo.authKey,"01",
(callback) => {
console.log(callback,'callbackcallbackcallbackcallback')
if (callback.status == '00') {
ICINLocker.getCommonKey(cgInfo.lockerId, infoKeyId, infoKeyId, callback.userSignKey, (callback1) => {
if (callback1.status == '00') {
var startTime=parseInt(moment(this.data.datetimerange[0]).format("X")).toString(16).toUpperCase()
var endTime=parseInt(moment(this.data.datetimerange[1]).format("X")).toString(16).toUpperCase()
console.log(cgInfo.lockerId, infoKeyId, this.data.blueKeyId, "0o01weit9ti9ti", "00", callback.userSignKey, "", callback1.commonKey, startTime, endTime)
ICINLocker.addUserToLock(cgInfo.lockerId, infoKeyId, this.data.blueKeyId, "0o01weit9ti9ti", "00", callback.userSignKey, "", callback1.commonKey, startTime, endTime, (callback2) => {
console.log(callback2)
if(callback2.status=='00'){
this.setData({
signKey:callback.userSignKey
})
wx.closeBLEConnection({
deviceId:app.globalData.blueDeviceId,
success (res) {
app.globalData.zgBlueStatus=false
that.setDeviceKeyId()
}
})
var str = {
username: personli.name,
deviceNum:this.data.deviceinfo.deviceNum,
imei:this.data.deviceinfo.imei,
iotId:infoKeyId,
manufactureId:this.data.deviceinfo.manufactureId,
userPassword: info.userPassword,
roomName:this.data.deviceinfo.roomName,
password: "0o01weit9ti9ti",
passwordStartTime: moment(this.data.datetimerange[0]).format("X"),
passwordEndTime: moment(this.data.datetimerange[1]).format("X"),
operateMode: 26,
order: 6326
};
var dataCerti={
cardId: personli.cardId,
content: JSON.stringify(str),
type: 36,
startTime: moment(this.data.datetimerange[0]).format("X"),
endTime: moment(this.data.datetimerange[1]).format("X"),
}
console.log(dataCerti,"蓝牙扣添加蓝牙扣用户凭证")
WXAPI.addCertificates(dataCerti).then(res=>{
if(res.code==200){
var dataPasswod = {
lockerId: this.data.deviceinfo.deviceNum,
imei: this.data.deviceinfo.imei,
lockerUserId: infoKeyId,
keyId: infoKeyId,
role: 0,
order: 6226,
action: 1,
roomName:this.data.deviceinfo.roomName,
cardName:'蓝牙扣'+personli.name,
type: 1,
result: 1
}
WXAPI.ZGduserOperation(dataPasswod).then(res6 => {
console.log(res6,"上报添加蓝牙扣用户")
})
}
})
// ICINLocker.disConnect(app.globalData.blueDeviceId).then(res=>{
// if(res.status=='00'){
// app.globalData.zgBlueStatus=false
// that.setDeviceKeyId()
// }
// })
}
})
}
})
}
})
},
linkBlue(){
var that=this;
ICINLocker.searchDevices().then(res=>{
if (res.status == 0) {
this.setData({
deviceList:res.deviceList
})
}
}).catch((res) => {
if (res.status == 1) {
if (res.statusReason.errCode == 10001) {
wx.showToast({
title: '请检查手机蓝牙和定位功能是否打开?',
duration: 2000,
icon: 'none'
})
} else {
if (!app.globalData.zgBlueStatus && that.data.bluestatus) {
that.linkBlue()
}
}
}
})
},
searchBlueButton(e) {
var that = this
var cgInfo=wx.getStorageSync('cgInfo')
var comm=this.stringToHex(e.currentTarget.dataset.select.name)
var deviceId=e.currentTarget.dataset.select.deviceId
var keyId="0o01weit9ti9ti"
var password="3030000000000000000000000000000000000000"
// app.globalData.blueDeviceId = e.currentTarget.dataset.select.name
var blueKeyId=e.currentTarget.dataset.select.name
if(this.data.datetimerange[0]==''||this.data.datetimerange[1]==''){
wx.showToast({
title: '请选择开始结束时间',
duration:2000,
icon:"none"
})
}else{
this.setData({
bleStatus: '蓝牙已连接',
deviceId: deviceId,
blueKeyId:blueKeyId,
show:false,
selectName:e.currentTarget.dataset.select.name
})
app.globalData.zgBlueStatus = false
}
},
// 获取入住人员
getSiteTenant(roomId) {
var data2 = {
q: JSON.stringify({
id: roomId
}),
orderBy: "createTime",
orderType: 'desc'
}
WXAPI.getSiteTenant(data2).then(res1 => {
if (res1.data.list.length > 0) {
this.setData({
personList: res1.data.list,
roomId: roomId
})
} else {
this.setData({
personList: []
})
wx.showToast({
title: "还未下发人员,请先下发人员",
duration: 2000,
icon: 'none'
})
}
})
},
goBlue() {
var that = this
wx.showLoading({
title: '连接中',
})
var deviceinfo=wx.getStorageSync('deviceinfo')
ICINLocker.scanDevices(deviceinfo.deviceNum,false).then((res) => {
if (res.status == 0) {
var deviceId = res.deviceId
//成功找到蓝牙情况下进行锁连接
app.globalData.blueDeviceId = res.deviceId
ICINLocker.connect(res.deviceId,false).then(res1 => {
if (res1.status == "0") {
console.log(res1)
that.addUser()
wx.showToast({
title: '连接成功',
icon: "none",
duration: 2000
})
app.globalData.zgBlueStatus = true
that.setData({
bleStatus: '蓝牙已连接',
})
} else {
wx.hideLoading()
var msg = ''
switch (res1.errCode) {
case 10001:
msg = '调用失败,请打开蓝牙!';
break;
}
wx.showToast({
title: msg,
duration: 2000,
icon: 'none'
})
//此处处理返回值不为成功(0)的情况
}
}).catch((res) => {
wx.hideLoading()
// 此处处理未能连接成功问题
})
}
})
.catch((res) => {
//此处处理未能连接到蓝牙的问题
if (res.status == 1) {
if (res.statusReason.errCode == 10001) {
wx.hideLoading()
wx.showToast({
title: '请检查手机蓝牙和定位功能是否打开?',
duration: 2000,
icon: 'none'
})
} else {
if (!app.globalData.zgBlueStatus && that.data.bluestatus) {
that.goBlue()
} else {
wx.hideLoading()
}
}
}
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})