import { autoBindInviteUser, autoGetInviteCode } from '@/common/api/market/distribution.js' import { APIshopUserInfo, APIusershopInfodetail } from '@/common/api/member.js' import { productStore } from '@/stores/user.js'; const accountStore = productStore(); const accountInfo = wx.getAccountInfoSync(); export const envVersion = accountInfo.miniProgram.envVersion; let type = 3; if (envVersion === 'trial') { console.log('当前环境是体验版'); type = 2; } else if (envVersion === 'release') { console.log('当前环境是正式版'); type = 0; } else { type = 1; console.log('当前环境是开发版或其他'); } /** * 绑定用户邀请关系(核心函数) * 功能说明:校验邀请码有效性,有效则调用自动绑定接口完成邀请关系绑定 * @param {Object} args - 绑定邀请关系的入参对象 * @param {number} [args.shopUserId] - 需要绑定邀请人的用户ID(integer ,可选) * @param {number} [args.shopId] - 店铺ID(integer ,可选) * @param {string} args.inviteCode - 邀请人的邀请码(必填,非空校验通过后才会执行绑定逻辑) * @returns {void} 无返回值 */ export function bindInvite(args) { // 解构入参对象,获取需要的核心参数 const { shopUserId, shopId, inviteCode } = args; // 校验邀请码有效性:若邀请码为空、null、undefined,则直接返回,不执行后续绑定逻辑 if (!inviteCode || inviteCode === null || inviteCode === undefined) { return; } // 邀请码有效,调用自动绑定邀请人接口,传递绑定所需参数 autoBindInviteUser({ id: shopUserId, shopId, inviteCode }); } export function wxShare(par) { return { ...par, type } } export async function returnQuery(query) { const shopId = uni.cache.get('shopId') const shopUserInfo = uni.cache.get('shopUserInfo') const shopInfo = uni.cache.get('shopInfo') const inviteCode = await autoGetInviteCode({ shopId: shopId, shopUserId: shopUserInfo.id }) const pages = getCurrentPages(); const currentPage = pages[pages.length - 1]; const currentPath = currentPage.route; const currentOptions = currentPage.options; let sharePath = `/${currentPath}`; const queryJson = { inviteCode: (inviteCode && inviteCode !== true) ? inviteCode : null, shopId, shopUserId: shopUserInfo.id, ...query } for (const key in currentOptions) { if (currentOptions.hasOwnProperty(key)) { queryJson[key] = encodeURIComponent(currentOptions[key]) } } queryJson.shopId = shopId queryJson.inviteCode = (inviteCode && inviteCode !== true) ? inviteCode : null queryJson.shopUserId = shopUserInfo.id let result = '' for (let key in queryJson) { if (queryJson[key]) { if (result === '') { result += `${key}=${queryJson[key]}` } else { result += `&${key}=${queryJson[key]}` } } } return result } function parseQueryString(queryString) { const queryParams = queryString.split("&").map((param) => param.split("=")); const params = {}; for (const [key, value] of queryParams) { params[key] = value; } return params; } /** * 混入的 onLoad 核心逻辑(抽成独立函数) * @param {Object} opt - 页面 onLoad 接收的参数 * @param {Object} vm - 组件实例(this) */ export async function handleMixinOnLoad(opt, vm) { console.log('onLoad'); const options = {} if (opt.q) { const q = decodeURIComponent(opt.q); const params = parseQueryString(q.split("?")[1]); Object.assign(options, params); } else { Object.assign(options, opt); } console.log('options', options); if (options.shopId) { uni.cache.set('shopId', options.shopId) accountStore.shopId = options.shopId await accountStore.pageOnload() } uni.setStorageSync('loadFinsh', true) // const shopId = uni.cache.get('shopId') // const shopUserInfo = uni.cache.get('shopUserInfo') // const shopInfo = uni.cache.get('shopInfo') // const inviteCode = await autoGetInviteCode({ // shopId: shopId, // shopUserId: shopUserInfo.id // }) if (options.inviteCode) { bindInvite(options) } } // utils/share.js export const shareMixin = { // async onLoad(opt) { // console.log('onLoad'); // const options = {} // if (opt.q) { // const q = decodeURIComponent(opt.q); // const params = parseQueryString(q.split("?")[1]); // Object.assign(options, params); // } else { // Object.assign(options, opt); // } // console.log('options', options); // if (options.shopId) { // uni.cache.set('shopId', options.shopId) // } // const shopId = uni.cache.get('shopId') // const shopUserInfo = uni.cache.get('shopUserInfo') // const shopInfo = uni.cache.get('shopInfo') // const inviteCode = await autoGetInviteCode({ // shopId: shopId, // shopUserId: shopUserInfo.id // }) // uni.setStorageSync('loadFinsh',true) // if (options.inviteCode) { // bindInvite(options) // } // }, async onShareAppMessage(res) { // const shopId = uni.cache.get('shopId') // const shopUserInfo = uni.cache.get('shopUserInfo') const shopInfo = uni.cache.get('shopInfo') // const inviteCode = await autoGetInviteCode({ // shopId: shopId, // shopUserId: shopUserInfo.id // }) const pages = getCurrentPages(); const currentPage = pages[pages.length - 1]; const currentPath = currentPage.route; const currentOptions = currentPage.options; let sharePath = `/${currentPath}`; // const queryJson = { // inviteCode: (inviteCode && inviteCode !== true) ? inviteCode : null, // shopId, // shopUserId: shopUserInfo.id, // } // for (const key in currentOptions) { // if (currentOptions.hasOwnProperty(key)) { // queryJson[key] = encodeURIComponent(currentOptions[key]) // } // } // queryJson.shopId = shopId // queryJson.inviteCode = (inviteCode && inviteCode !== true) ? inviteCode : null // queryJson.shopUserId = shopUserInfo.id const query = returnQuery() // 全局默认配置(可被页面覆盖) const defaultShareConfig = { title: shopInfo.shopName, path: sharePath + '?' + query, imageUrl: shopInfo.logo, query, // desc: '描述', success: (res) => { console.log('分享好友成功', res); // 可加埋点等统一逻辑 }, fail: (err) => { console.error('分享好友失败', err); } }; // 页面自定义配置覆盖全局 const pageShareConfig = this.$options.shareConfig || {}; console.log('mixIn onShareAppMessage', { ...defaultShareConfig, ...pageShareConfig }) return wxShare({ ...defaultShareConfig, ...pageShareConfig }); }, async onShareTimeline() { // const shopId = uni.cache.get('shopId') // const shopUserInfo = uni.cache.get('shopUserInfo') const shopInfo = uni.cache.get('shopInfo') // const inviteCode = await autoGetInviteCode({ // shopId: shopId, // shopUserId: shopUserInfo.id // }) const pages = getCurrentPages(); const currentPage = pages[pages.length - 1]; const currentPath = currentPage.route; const currentOptions = currentPage.options; let sharePath = `/${currentPath}`; // const queryJson = { // inviteCode: (inviteCode && inviteCode !== true) ? inviteCode : null, // shopId, // shopUserId: shopUserInfo.id, // } // for (const key in currentOptions) { // if (currentOptions.hasOwnProperty(key)) { // queryJson[key] = encodeURIComponent(currentOptions[key]) // } // } // queryJson.shopId = shopId // queryJson.inviteCode = (inviteCode && inviteCode !== true) ? inviteCode : null // queryJson.shopUserId = shopUserInfo.id const query = returnQuery() const defaultTimelineConfig = { title: shopInfo.shopName, path: sharePath + '?' + query, imageUrl: shopInfo.logo, query, }; const pageTimelineConfig = this.$options.shareTimelineConfig || {}; return wxShare({ ...defaultTimelineConfig, ...pageTimelineConfig }); } };