100 lines
3.0 KiB
JavaScript
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;
|