wechat判断了wechatQrCode的过期

This commit is contained in:
Xu Chang 2023-01-30 21:24:22 +08:00
parent 4ab636890f
commit 0c575966ce
2 changed files with 52 additions and 32 deletions

View File

@ -88,7 +88,7 @@ function setUserUnsubscribed(openId, context) {
}
function setUserSubscribed(openId, eventKey, context) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var applicationId, list, now, data, doUpdate, sceneStr, wcqId, _a, weChatQrCode, entity, entityId, _b, _c, userEntityGrant, _d, id, granter, expired, entity2, _e, domain, url, name_1, application, _f, type, config, _g, appId, appSecret, wechatInstance;
var applicationId, list, now, data, doUpdate, sceneStr, wcqId, _a, wechatQrCode, application, _b, type, config, _c, appId, appSecret, wechatInstance, expired, entity, entityId, _d, _e, userEntityGrant, _f, id, granter, expired_1, entity2, _g, domain, url;
var _this = this;
return tslib_1.__generator(this, function (_h) {
switch (_h.label) {
@ -179,6 +179,7 @@ function setUserSubscribed(openId, eventKey, context) {
id: 1,
entity: 1,
entityId: 1,
expired: 1,
},
filter: {
id: wcqId,
@ -187,11 +188,26 @@ function setUserSubscribed(openId, eventKey, context) {
count: 10,
}, { dontCollect: true })];
case 2:
_a = tslib_1.__read.apply(void 0, [_h.sent(), 1]), weChatQrCode = _a[0];
if (!weChatQrCode) return [3 /*break*/, 8];
entity = weChatQrCode.entity, entityId = weChatQrCode.entityId;
_b = entity;
switch (_b) {
_a = tslib_1.__read.apply(void 0, [_h.sent(), 1]), wechatQrCode = _a[0];
if (!wechatQrCode) return [3 /*break*/, 8];
application = context.getApplication();
_b = application, type = _b.type, config = _b.config;
(0, assert_1.default)(type === 'wechatPublic');
_c = config, appId = _c.appId, appSecret = _c.appSecret;
wechatInstance = oak_external_sdk_1.WechatSDK.getInstance(appId, appSecret, 'wechatPublic');
expired = wechatQrCode.expired;
if (expired) {
// 若二维码已经过期,则直接告知用户已经过期
wechatInstance.sendServeMessage({
openId: openId,
type: 'text',
content: '此二维码已经过期,请重新获取',
});
return [2 /*return*/];
}
entity = wechatQrCode.entity, entityId = wechatQrCode.entityId;
_d = entity;
switch (_d) {
case 'user': return [3 /*break*/, 3];
case 'userEntityGrant': return [3 /*break*/, 4];
}
@ -221,8 +237,8 @@ function setUserSubscribed(openId, eventKey, context) {
}
}, { dontCollect: true })];
case 5:
_c = tslib_1.__read.apply(void 0, [_h.sent(), 1]), userEntityGrant = _c[0];
_d = userEntityGrant, id = _d.id, granter = _d.granter, expired = _d.expired, entity2 = _d.entity;
_e = tslib_1.__read.apply(void 0, [_h.sent(), 1]), userEntityGrant = _e[0];
_f = userEntityGrant, id = _f.id, granter = _f.granter, expired_1 = _f.expired, entity2 = _f.entity;
return [4 /*yield*/, context.select('domain', {
data: {
id: 1,
@ -246,23 +262,17 @@ function setUserSubscribed(openId, eventKey, context) {
}
}, { dontCollect: true })];
case 6:
_e = tslib_1.__read.apply(void 0, [_h.sent(), 1]), domain = _e[0];
_g = tslib_1.__read.apply(void 0, [_h.sent(), 1]), domain = _g[0];
(0, assert_1.default)(domain, "\u5904\u7406userEntityGrant\u65F6\uFF0C\u627E\u4E0D\u5230\u5BF9\u5E94\u7684domain\uFF0CapplicationId\u662F\u300C".concat(applicationId, "\u300D"));
url = (0, domain_1.composeDomainUrl)(domain, 'wechatQrCode/scan', {
scene: sceneStr,
});
(0, assert_1.default)(!expired); // 如果生成的wechatQrCode没过期userEntityGrant就不可能过期。
name_1 = granter.name || granter.nickname;
application = context.getApplication();
_f = application, type = _f.type, config = _f.config;
(0, assert_1.default)(type === 'wechatPublic');
_g = config, appId = _g.appId, appSecret = _g.appSecret;
wechatInstance = oak_external_sdk_1.WechatSDK.getInstance(appId, appSecret, 'wechatPublic');
(0, assert_1.default)(!expired_1); // 如果生成的wechatQrCode没过期userEntityGrant就不可能过期。
wechatInstance.sendServeMessage({
openId: openId,
type: 'news',
url: url,
title: "".concat(name_1, "\u7ED9\u60A8\u521B\u5EFA\u4E86\u4E00\u4E2A\u6388\u6743"),
title: "".concat(name, "\u7ED9\u60A8\u521B\u5EFA\u4E86\u4E00\u4E2A\u6388\u6743"),
description: '请接受',
picurl: 'http://img95.699pic.com/element/40018/2473.png_860.png',
});

View File

@ -190,13 +190,14 @@ async function setUserSubscribed(openId: string, eventKey: string, context: BRC)
// sceneStr是id压缩后的字符串
const wcqId = expandUuidTo36Bytes(sceneStr);
const [weChatQrCode] = await context.select(
const [wechatQrCode] = await context.select(
'wechatQrCode',
{
data: {
id: 1,
entity: 1,
entityId: 1,
expired: 1,
},
filter: {
id: wcqId,
@ -206,8 +207,29 @@ async function setUserSubscribed(openId: string, eventKey: string, context: BRC)
},
{ dontCollect: true },
);
if (weChatQrCode) {
const { entity, entityId } = weChatQrCode;
if (wechatQrCode) {
const application = context.getApplication();
const { type, config } = application!;
assert(type === 'wechatPublic');
const { appId, appSecret } = config as WechatPublicConfig;
const wechatInstance = WechatSDK.getInstance(
appId,
appSecret,
'wechatPublic'
) as WechatPublicInstance;
const { expired } = wechatQrCode;
if (expired) {
// 若二维码已经过期,则直接告知用户已经过期
wechatInstance.sendServeMessage({
openId,
type: 'text',
content: '此二维码已经过期,请重新获取',
});
return;
}
const { entity, entityId } = wechatQrCode;
switch (entity) {
case 'user': {
// 裂变获得的用户
@ -267,18 +289,6 @@ async function setUserSubscribed(openId: string, eventKey: string, context: BRC)
});
assert(!expired); // 如果生成的wechatQrCode没过期userEntityGrant就不可能过期。
const name = granter!.name || granter!.nickname;
const application = context.getApplication();
const { type, config } = application!;
assert(type === 'wechatPublic');
const { appId, appSecret } = config as WechatPublicConfig;
const wechatInstance = WechatSDK.getInstance(
appId,
appSecret,
'wechatPublic'
) as WechatPublicInstance;
wechatInstance.sendServeMessage({
openId,
type: 'news',