@tnwx/wxmp
Version:
TNWX 微信系开发脚手架之极速开发微信公众号
402 lines • 17.3 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const util = require("util");
const accesstoken_1 = require("@tnwx/accesstoken");
const kits_1 = require("@tnwx/kits");
/**
* @author Javen
* @copyright javendev@126.com
* @description 微信摇一摇 设备管理
*/
class ShakeAroundDeviceApi {
/**
* 申请设备ID
* @param quantity 申请的设备ID的数量,单次新增设备超过500个,需走人工审核流程
* @param applyReason 申请理由,不超过100个汉字或200个英文字母
* @param comment 备注,不超过15个汉字或30个英文字母
* @param poiId 设备关联的门店ID,关联门店后,在门店1KM的范围内有优先摇出信息的机会。门店相关信息具体可 查看门店相关的接口文档
* @param accessToken
*/
static applyId(quantity, applyReason, comment, poiId, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
let map = new Map();
map.set('quantity', quantity);
map.set('apply_reason', applyReason);
if (comment)
map.set('comment', comment);
if (poiId)
map.set('poi_id', poiId);
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.applyIdUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify(map));
});
}
/**
* 查询设备ID申请审核状态
* @param applyId 批次ID,申请设备ID时所返回的批次ID
* @param accessToken
*/
static getApplyStatus(applyId, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.applyStatusUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
apply_id: applyId
}));
});
}
/**
* 编辑设备的备注信息
* @param deviceIdentifier 可用设备ID或完整的UUID、Major、Minor指定设备,二者选其一。
* @param comment 设备的备注信息,不超过15个汉字或30个英文字母。
* @param accessToken
*/
static updateDeviceInfo(deviceIdentifier, comment, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.updateUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
device_identifier: deviceIdentifier,
comment: comment
}));
});
}
/**
* 配置设备与门店的关联关系
* @param deviceIdentifier 指定的设备ID
* @param poiId 设备关联的门店ID,关联门店后,在门店1KM的范围内有优先摇出信息的机会。当值为0时,将清除设备已关联的门店ID。门店相关信息具体可 查看门店相关的接口文档
* @param type 为1时,关联的门店和设备归属于同一公众账号; 为2时,关联的门店为其他公众账号的门店
* @param poiAppid 当Type为2时,必填。关联门店所归属的公众账号的APPID
* @param accessToken
*/
static bindLocation(deviceIdentifier, poiId, type = 1, poiAppid, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
let map = new Map();
map.set('device_identifier', deviceIdentifier);
map.set('poi_id', poiId);
if (type == 2) {
map.set('type', 2);
if (poiAppid)
map.set('poi_appid', poiAppid);
}
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.bindLocationUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify(map));
});
}
/**
* 查询设备列表
* @param deviceIdentifier 指定的设备ID
* @param accessToken
*/
static searchByDevice(deviceIdentifier, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.searchUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
device_identifiers: deviceIdentifier,
type: 1
}));
});
}
/**
* 需要分页查询或者指定范围内的设备时
* @param lastSeen 前一次查询列表末尾的设备ID , 第一次查询last_seen 为0
* @param count 待查询的设备数量,不能超过50个
* @param accessToken
*/
static searchPage(lastSeen, count, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (lastSeen < 0)
lastSeen = 0;
if (count > 50)
count = 50;
if (count < 1)
count = 1;
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.searchUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
last_seen: lastSeen,
type: 2,
count: count
}));
});
}
/**
* 当需要根据批次ID查询时
* @param applyId 批次ID,申请设备ID时所返回的批次ID
* @param lastSeen 前一次查询列表末尾的设备ID , 第一次查询last_seen 为0
* @param count 待查询的设备数量,不能超过50个
* @param accessToken
*/
static searchPageByApplyId(applyId, lastSeen, count, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (lastSeen < 0)
lastSeen = 0;
if (count > 50)
count = 50;
if (count < 1)
count = 1;
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.searchUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
apply_id: applyId,
last_seen: lastSeen,
type: 3,
count: count
}));
});
}
/**
* 配置设备与页面的关联关系
* @param deviceIdentifier 指定页面的设备ID
* @param pageIds 待关联的页面列表
* @param accessToken
*/
static bindPage(deviceIdentifier, pageIds, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.bindPageUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
device_identifier: deviceIdentifier,
page_ids: pageIds
}));
});
}
/**
* 查询设备与页面的关联关系,当查询指定设备所关联的页面时
* @param deviceIdentifier 指定页面的设备ID
* @param accessToken
*/
static relationSearch(deviceIdentifier, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.relationSearchUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
device_identifier: deviceIdentifier,
type: 1
}));
});
}
/**
*
* @param pageId 指定的页面id
* @param begin 关联关系列表的起始索引值
* @param count 待查询的关联关系数量,不能超过50个
* @param accessToken
*/
static relationSearchByPage(pageId, begin, count, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (begin < 0)
begin = 0;
if (count > 50)
count = 50;
if (count < 1)
count = 1;
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.relationSearchUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
type: 2,
page_id: pageId,
begin: begin,
count: count
}));
});
}
/**
* 新增分组 每个帐号下最多只有1000个分组。
* @param groupName 分组名称,不超过100汉字或200个英文字母
* @param accessToken
*/
static addGroup(groupName, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.addGroupUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
group_name: groupName
}));
});
}
/**
* 编辑分组信息
* @param groupId 分组唯一标识,全局唯一
* @param groupName 分组名称,不超过100汉字或200个英文字母
* @param accessToken
*/
static updateGroup(groupId, groupName, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.updateGroupUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
group_id: groupId,
group_name: groupName
}));
});
}
/**
* 删除分组
* @param groupId 分组唯一标识,全局唯一
* @param accessToken
*/
static deleteGroup(groupId, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.deleteGroupUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
group_id: groupId
}));
});
}
/**
* 查询分组列表
* @param begin 分组列表的起始索引值
* @param count 待查询的分组数量,不能超过1000个
* @param accessToken
*/
static getGroupList(begin, count, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.getGroupListUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
begin: begin,
count: count
}));
});
}
/**
* 查询分组详情
* @param groupId 分组唯一标识,全局唯一
* @param begin 分组列表的起始索引值
* @param count 待查询的分组数量,不能超过1000个
* @param accessToken
*/
static getGroupDetail(groupId, begin, count, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.getGroupDetailUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
groupId: groupId,
begin: begin,
count: count
}));
});
}
/**
* 添加设备到分组
* @param groupId 分组唯一标识,全局唯一
* @param deviceIdentifierList 设备id列表 每次添加设备上限为1000
* @param accessToken
*/
static addDeviceToGroup(groupId, deviceIdentifierList, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.addDeviceUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
groupId: groupId,
device_identifiers: deviceIdentifierList
}));
});
}
/**
* 从分组中移除设备
* @param groupId 分组唯一标识,全局唯一
* @param deviceIdentifierList 设备id列表 每次删除设备上限为1000
* @param accessToken
*/
static deleteDeviceFromGroup(groupId, deviceIdentifierList, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.deleteGroupDeviceUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
groupId: groupId,
device_identifiers: deviceIdentifierList
}));
});
}
}
exports.ShakeAroundDeviceApi = ShakeAroundDeviceApi;
ShakeAroundDeviceApi.applyIdUrl = 'https://api.weixin.qq.com/shakearound/device/applyid?access_token=%s';
ShakeAroundDeviceApi.applyStatusUrl = 'https://api.weixin.qq.com/shakearound/device/applystatus?access_token=%s';
ShakeAroundDeviceApi.updateUrl = 'https://api.weixin.qq.com/shakearound/device/update?access_token=%s';
ShakeAroundDeviceApi.bindLocationUrl = 'https://api.weixin.qq.com/shakearound/device/bindlocation?access_token=%s';
ShakeAroundDeviceApi.searchUrl = 'https://api.weixin.qq.com/shakearound/device/search?access_token=%s';
ShakeAroundDeviceApi.bindPageUrl = 'https://api.weixin.qq.com/shakearound/device/bindpage?access_token=%s';
ShakeAroundDeviceApi.relationSearchUrl = 'https://api.weixin.qq.com/shakearound/relation/search?access_token=%s';
ShakeAroundDeviceApi.addGroupUrl = 'https://api.weixin.qq.com/shakearound/device/group/add?access_token=%s';
ShakeAroundDeviceApi.updateGroupUrl = 'https://api.weixin.qq.com/shakearound/device/group/update?access_token=%s';
ShakeAroundDeviceApi.deleteGroupUrl = 'https://api.weixin.qq.com/shakearound/device/group/delete?access_token=%s';
ShakeAroundDeviceApi.getGroupListUrl = 'https://api.weixin.qq.com/shakearound/device/group/getlist?access_token=%s';
ShakeAroundDeviceApi.getGroupDetailUrl = 'https://api.weixin.qq.com/shakearound/device/group/getdetail?access_token=%s';
ShakeAroundDeviceApi.addDeviceUrl = 'https://api.weixin.qq.com/shakearound/device/group/adddevice?access_token=%s';
ShakeAroundDeviceApi.deleteGroupDeviceUrl = 'https://api.weixin.qq.com/shakearound/device/group/deletedevice?access_token=%s';
class DeviceIdentifier {
set setDeviceId(deviceId) {
this.device_id = deviceId;
}
get getDeviceId() {
return this.device_id;
}
set setUuid(uuid) {
this.uuid = uuid;
}
get getUuit() {
return this.uuid;
}
set setMajor(major) {
this.major = major;
}
get getMajor() {
return this.major;
}
set setMinor(minor) {
this.minor = minor;
}
get getMinor() {
return this.minor;
}
}
exports.DeviceIdentifier = DeviceIdentifier;
//# sourceMappingURL=ShakeAroundDeviceApi.js.map