| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 | "use strict";const common_vendor = require("../../common/vendor.js");const sheep_store_index = require("../store/index.js");const sheep_platform_index = require("./index.js");const sheep_router_index = require("../router/index.js");const sheep_url_index = require("../url/index.js");const platformMap = ["H5", "WechatOfficialAccount", "WechatMiniProgram", "App"];const fromMap = ["forward", "poster", "link"];const getShareInfo = (scene = {  title: "",  // 自定义分享标题  desc: "",  // 自定义描述  image: "",  // 自定义分享图片  params: {}  // 自定义分享参数}, poster = {  // 自定义海报数据  type: "user"}) => {  let shareInfo = {    title: "",    // 分享标题    desc: "",    // 描述    image: "",    // 分享图片    path: "",    // 分享页面+参数    link: "",    // 分享Url+参数    query: "",    // 分享参数    poster    // 海报所需数据  };  const app = sheep_store_index.$store("app");  const shareConfig = app.platform.share;  const query = buildSpmQuery(scene.params);  shareInfo.query = query;  shareInfo.link = buildSpmLink(query, shareConfig.linkAddress);  if (shareConfig.methods.includes("forward")) {    if (shareConfig.forwardInfo.title === "" || shareConfig.forwardInfo.image === "") {      console.log("请在平台设置中配置转发信息");    }    shareInfo.title = scene.title || shareConfig.forwardInfo.title;    shareInfo.image = sheep_url_index.$url.cdn(scene.image || shareConfig.forwardInfo.image);    shareInfo.desc = scene.desc || shareConfig.forwardInfo.subtitle;    shareInfo.path = buildSpmPath(query);  }  return shareInfo;};const buildSpmQuery = (params) => {  const user = 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;  }  let platform = platformMap.indexOf(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?${query}`;};const buildSpmLink = (query, linkAddress = "") => {  return `${linkAddress}?${query}`;};const decryptSpm = (spm) => {  const user = sheep_store_index.$store("user");  let shareParamsArray = spm.split(".");  let shareParams = {    spm,    shareId: 0,    page: "",    query: {},    platform: "",    from: ""  };  let query;  shareParams.shareId = shareParamsArray[0];  switch (shareParamsArray[1]) {    case "1":      shareParams.page = "/pages/index/index";      break;    case "2":      shareParams.page = "/pages/goods/index";      shareParams.query = {        id: shareParamsArray[2]      };      break;    case "3":      shareParams.page = "/pages/goods/groupon";      query = shareParamsArray[2].split(",");      shareParams.query = {        id: query[0],        activity_id: query[1]      };      break;    case "4":      shareParams.page = "/pages/goods/seckill";      query = shareParamsArray[2].split(",");      shareParams.query = {        id: query[1]      };      break;    case "5":      shareParams.page = "/pages/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) {      user.addShareLog(shareParams);    } else {      common_vendor.index.setStorageSync("shareLog", shareParams);    }  }  if (shareParams.page !== "/pages/index/index") {    sheep_router_index.$router.go(shareParams.page, shareParams.query);  }  return shareParams;};const updateShareInfo = (shareInfo) => {};const $share = {  getShareInfo,  updateShareInfo,  decryptSpm};exports.$share = $share;
 |