185 lines
5.4 KiB
JavaScript
185 lines
5.4 KiB
JavaScript
"use strict";
|
|
var __async = (__this, __arguments, generator) => {
|
|
return new Promise((resolve, reject) => {
|
|
var fulfilled = (value) => {
|
|
try {
|
|
step(generator.next(value));
|
|
} catch (e) {
|
|
reject(e);
|
|
}
|
|
};
|
|
var rejected = (value) => {
|
|
try {
|
|
step(generator.throw(value));
|
|
} catch (e) {
|
|
reject(e);
|
|
}
|
|
};
|
|
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
step((generator = generator.apply(__this, __arguments)).next());
|
|
});
|
|
};
|
|
const common_vendor = require("../../../../common/vendor.js");
|
|
const modules_mall_sheep_store_index = require("../store/index.js");
|
|
const modules_mall_sheep_platform_index = require("./index.js");
|
|
const modules_mall_sheep_router_index = require("../router/index.js");
|
|
const modules_mall_sheep_url_index = require("../url/index.js");
|
|
const modules_mall_sheep_api_trade_brokerage = require("../api/trade/brokerage.js");
|
|
const platformMap = ["H5", "WechatOfficialAccount", "WechatMiniProgram", "App"];
|
|
const fromMap = ["forward", "poster", "link"];
|
|
const getShareInfo = (scene = {
|
|
title: "",
|
|
// 自定义分享标题
|
|
desc: "",
|
|
// 自定义描述
|
|
image: "",
|
|
// 自定义分享图片
|
|
params: {}
|
|
// 自定义分享参数
|
|
}, poster = {
|
|
// 自定义海报数据
|
|
type: "user"
|
|
}) => {
|
|
const shareInfo = {
|
|
title: "",
|
|
// 分享标题
|
|
desc: "",
|
|
// 描述
|
|
image: "",
|
|
// 分享图片
|
|
path: "",
|
|
// 分享页面+参数
|
|
link: "",
|
|
// 分享Url+参数
|
|
query: "",
|
|
// 分享参数
|
|
poster
|
|
// 海报所需数据
|
|
};
|
|
const app = modules_mall_sheep_store_index.$store("app");
|
|
const shareConfig = app.platform.share;
|
|
const query = buildSpmQuery(scene.params);
|
|
shareInfo.query = query;
|
|
shareInfo.link = buildSpmLink(query, shareConfig.linkAddress);
|
|
shareInfo.path = buildSpmPath();
|
|
if (shareConfig.methods.includes("forward")) {
|
|
if (shareConfig.forwardInfo.title === "" || shareConfig.forwardInfo.image === "") {
|
|
console.log("请在平台设置中配置转发信息");
|
|
}
|
|
shareInfo.title = scene.title || shareConfig.forwardInfo.title;
|
|
shareInfo.image = modules_mall_sheep_url_index.$url.cdn(scene.image || shareConfig.forwardInfo.image);
|
|
shareInfo.desc = scene.desc || shareConfig.forwardInfo.subtitle;
|
|
shareInfo.path = buildSpmPath(scene.path);
|
|
}
|
|
return shareInfo;
|
|
};
|
|
const buildSpmQuery = (params) => {
|
|
const user = modules_mall_sheep_store_index.$store("user");
|
|
let shareId = "0";
|
|
if (typeof params.shareId === "undefined") {
|
|
if (user.isLogin) {
|
|
shareId = user.userInfo.id;
|
|
}
|
|
}
|
|
let page = "1";
|
|
if (typeof params.page !== "undefined") {
|
|
page = params.page;
|
|
}
|
|
let query = "0";
|
|
if (typeof params.query !== "undefined") {
|
|
query = params.query;
|
|
}
|
|
const platform = platformMap.indexOf(modules_mall_sheep_platform_index._platform.name) + 1;
|
|
let from = "1";
|
|
if (typeof params.from !== "undefined") {
|
|
from = platformMap.indexOf(params.from) + 1;
|
|
}
|
|
return `spm=${shareId}.${page}.${query}.${platform}.${from}`;
|
|
};
|
|
const buildSpmPath = (query) => {
|
|
return `pages/index/index`;
|
|
};
|
|
const buildSpmLink = (query, linkAddress = "") => {
|
|
return `${linkAddress}?${query}`;
|
|
};
|
|
const decryptSpm = (spm) => {
|
|
const user = modules_mall_sheep_store_index.$store("user");
|
|
const shareParamsArray = spm.split(".");
|
|
const shareParams = {
|
|
spm,
|
|
shareId: 0,
|
|
page: "",
|
|
query: {},
|
|
platform: "",
|
|
from: ""
|
|
};
|
|
let query;
|
|
shareParams.shareId = shareParamsArray[0];
|
|
switch (shareParamsArray[1]) {
|
|
case "1":
|
|
shareParams.page = "/modules/mall/index/index";
|
|
break;
|
|
case "2":
|
|
shareParams.page = "/modules/mall/goods/index";
|
|
shareParams.query = {
|
|
id: shareParamsArray[2]
|
|
};
|
|
break;
|
|
case "3":
|
|
shareParams.page = "/modules/mall/goods/groupon";
|
|
query = shareParamsArray[2].split(",");
|
|
shareParams.query = {
|
|
id: query[0],
|
|
activity_id: query[1]
|
|
// TODO 芋艿:接入分享后,应该统一成 id 参数
|
|
};
|
|
break;
|
|
case "4":
|
|
shareParams.page = "/modules/mall/goods/seckill";
|
|
query = shareParamsArray[2].split(",");
|
|
shareParams.query = {
|
|
id: query[1]
|
|
};
|
|
break;
|
|
case "5":
|
|
shareParams.page = "/modules/mall/activity/groupon/detail";
|
|
shareParams.query = {
|
|
id: shareParamsArray[2]
|
|
};
|
|
break;
|
|
}
|
|
shareParams.platform = platformMap[shareParamsArray[3] - 1];
|
|
shareParams.from = fromMap[shareParamsArray[4] - 1];
|
|
if (shareParams.shareId !== 0) {
|
|
if (user.isLogin) {
|
|
bindBrokerageUser(shareParams.shareId);
|
|
} else {
|
|
common_vendor.index.setStorageSync("shareId", shareParams.shareId);
|
|
}
|
|
}
|
|
if (shareParams.page !== "/modules/mall/index/index") {
|
|
modules_mall_sheep_router_index.$router.go(shareParams.page, shareParams.query);
|
|
}
|
|
return shareParams;
|
|
};
|
|
const bindBrokerageUser = (val = void 0) => __async(exports, null, function* () {
|
|
try {
|
|
const shareId = val || common_vendor.index.getStorageSync("shareId");
|
|
if (!shareId) {
|
|
return;
|
|
}
|
|
yield modules_mall_sheep_api_trade_brokerage.BrokerageApi.bindBrokerageUser({ bindUserId: shareId });
|
|
common_vendor.index.removeStorageSync("shareId");
|
|
} catch (e) {
|
|
}
|
|
});
|
|
const updateShareInfo = (shareInfo) => {
|
|
};
|
|
const $share = {
|
|
getShareInfo,
|
|
updateShareInfo,
|
|
decryptSpm,
|
|
bindBrokerageUser
|
|
};
|
|
exports.$share = $share;
|