oak-general-business/lib/features/wechatSdk.mp.js

100 lines
3.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.WechatSdk = void 0;
const tslib_1 = require("tslib");
const Feature_1 = require("oak-frontend-base/es/types/Feature");
const Exception_1 = require("../types/Exception");
const assert_1 = tslib_1.__importDefault(require("assert"));
class WechatSdk extends Feature_1.Feature {
cache;
message;
constructor(cache, message) {
super();
this.cache = cache;
this.message = message;
}
wxConfig() {
console.error('小程序无需该操作');
}
async initWeiXinJsSDK() {
console.error('小程序无需该操作');
}
async loadWeiXinJsSDK() {
console.error('小程序无需该操作');
}
/**
* 小程序订阅模板消息
* @param messageTypes
* @param haveToAccept
* @param tip
*/
async subscribeMpMessage(messageTypes, haveToAccept, tip) {
let mttIds = this.cache.get('messageTypeTemplate', {
data: {
id: 1,
templateId: 1,
template: {
id: 1,
wechatId: 1,
},
type: 1,
},
filter: {
type: {
$in: messageTypes,
},
},
});
if (mttIds.length < messageTypes.length) {
mttIds = (await this.cache.refresh('messageTypeTemplate', {
data: {
id: 1,
templateId: 1,
template: {
id: 1,
wechatId: 1,
},
type: 1,
},
filter: {
type: {
$in: messageTypes,
},
},
})).data;
}
(0, assert_1.default)(mttIds.length === messageTypes.length);
const tmplIds = mttIds.map(ele => ele.template?.wechatId);
const result = await wx.requestSubscribeMessage({
tmplIds
});
const rejected = Object.keys(result).filter(ele => {
// 排除errMsg
if (ele === 'errMsg') {
return false;
}
else if (result[ele] === 'reject') {
return true;
}
else if (result[ele] !== 'accept') {
this.message.setMessage({
type: 'warning',
content: `类型${ele}的模板消息被${result[ele]},请管理员查看后台`,
});
}
});
if (rejected.length > 0 && haveToAccept) {
if (tip) {
this.message.setMessage({
type: 'warning',
content: tip,
});
return false;
}
throw new Exception_1.OakMpHaveToSubscribeMessage(rejected);
}
return true;
}
}
exports.WechatSdk = WechatSdk;