diff --git a/sheep/platform/provider/wechat/openPlatform.js b/sheep/platform/provider/wechat/openPlatform.js index 6a17074..a80f0d7 100644 --- a/sheep/platform/provider/wechat/openPlatform.js +++ b/sheep/platform/provider/wechat/openPlatform.js @@ -1,6 +1,7 @@ // 登录 import third from '@/sheep/api/migration/third'; import SocialApi from '@/sheep/api/member/social'; +import $share from '@/sheep/platform/share'; // TODO 芋艿:等后面搞 App 再弄 const socialType = 32; // 社交类型 - 微信开放平台 @@ -16,6 +17,7 @@ const login = () => { }); debugger if (loginRes.errMsg == 'login:ok') { + // TODO third.wechat.login 函数未实现 const res = await third.wechat.login({ platform: 'openPlatform', shareInfo: uni.getStorageSync('shareLog') || {}, @@ -27,6 +29,7 @@ const login = () => { }); if (res.error === 0) { + $share.bindBrokerageUser() resolve(true); } } else { diff --git a/sheep/platform/share.js b/sheep/platform/share.js index a135eac..a5d1b0a 100644 --- a/sheep/platform/share.js +++ b/sheep/platform/share.js @@ -2,6 +2,7 @@ import $store from '@/sheep/store'; import $platform from '@/sheep/platform'; import $router from '@/sheep/router'; import $url from '@/sheep/url'; +import BrokerageApi from '@/sheep/api/trade/brokerage'; // #ifdef H5 import $wxsdk from '@/sheep/libs/sdk-h5-weixin'; // #endif @@ -152,18 +153,16 @@ const decryptSpm = (spm) => { id: shareParamsArray[2], }; break; - case '6': // 分销 - // TODO puhui999: 如果用户未登录想想怎么搞 } shareParams.platform = platformMap[shareParamsArray[3] - 1]; shareParams.from = fromMap[shareParamsArray[4] - 1]; - if (shareParams.shareId != 0) { - // 已登录 立即添加分享记录 + if (shareParams.shareId !== 0) { + // 已登录 绑定推广员 if (user.isLogin) { - user.addShareLog(shareParams); + bindBrokerageUser(shareParams.shareId); } else { - // 未登录 待用户登录后添加分享记录 - uni.setStorageSync('shareLog', shareParams); + // 记录分享者编号 + uni.setStorageSync('shareId', shareParams.shareId); } } @@ -173,6 +172,19 @@ const decryptSpm = (spm) => { return shareParams; }; +// 绑定推广员 +const bindBrokerageUser = async (val= undefined) => { + try { + const shareId = val || uni.getStorageSync('shareId'); + if (!shareId) { + return; + } + await BrokerageApi.bindBrokerageUser({ bindUserId: shareId }); + uni.removeStorageSync('shareId'); + } catch { + } +}; + // 更新公众号分享sdk const updateShareInfo = (shareInfo) => { // #ifdef H5 @@ -186,4 +198,5 @@ export default { getShareInfo, updateShareInfo, decryptSpm, + bindBrokerageUser, }; diff --git a/sheep/store/user.js b/sheep/store/user.js index 4e641a3..195dade 100644 --- a/sheep/store/user.js +++ b/sheep/store/user.js @@ -1,17 +1,9 @@ -import { - defineStore -} from 'pinia'; +import { defineStore } from 'pinia'; import $share from '@/sheep/platform/share'; -import { - isEmpty, - cloneDeep, - clone -} from 'lodash'; +import { clone, cloneDeep } from 'lodash'; import cart from './cart'; import app from './app'; -import { - showAuthModal -} from '@/sheep/hooks/useModal'; +import { showAuthModal } from '@/sheep/hooks/useModal'; import UserApi from '@/sheep/api/member/user'; import PayWalletApi from '@/sheep/api/pay/wallet'; import OrderApi from '@/sheep/api/trade/order'; @@ -19,17 +11,17 @@ import CouponApi from '@/sheep/api/promotion/coupon'; // 默认用户信息 const defaultUserInfo = { - avatar: '', // 头像 - nickname: '', // 昵称 - gender: 0, // 性别 - mobile: '', // 手机号 + avatar: '', // 头像 + nickname: '', // 昵称 + gender: 0, // 性别 + mobile: '', // 手机号 point: 0, // 积分 }; // 默认钱包信息 const defaultUserWallet = { balance: 0, // 余额 -} +}; // 默认订单、优惠券等其他资产信息 const defaultNumData = { @@ -41,29 +33,29 @@ const defaultNumData = { deliveredCount: 0, uncommentedCount: 0, afterSaleCount: 0, - }, + }, }; const user = defineStore({ - id: 'user', - state: () => ({ - userInfo: clone(defaultUserInfo), // 用户信息 + id: 'user', + state: () => ({ + userInfo: clone(defaultUserInfo), // 用户信息 userWallet: clone(defaultUserWallet), // 用户钱包信息 - isLogin: !!uni.getStorageSync('token'), // 登录状态 - numData: cloneDeep(defaultNumData), // 用户其他数据 - lastUpdateTime: 0, // 上次更新时间 - }), + isLogin: !!uni.getStorageSync('token'), // 登录状态 + numData: cloneDeep(defaultNumData), // 用户其他数据 + lastUpdateTime: 0, // 上次更新时间 + }), - actions: { - // 获取用户信息 - async getInfo() { - const { code, data } = await UserApi.getUserInfo(); + actions: { + // 获取用户信息 + async getInfo() { + const { code, data } = await UserApi.getUserInfo(); if (code !== 0) { return; } this.userInfo = data; - return Promise.resolve(data); - }, + return Promise.resolve(data); + }, // 获得用户钱包 async getWallet() { @@ -74,7 +66,7 @@ const user = defineStore({ this.userWallet = data; }, - // 获取订单、优惠券等其他资产信息 + // 获取订单、优惠券等其他资产信息 getNumData() { OrderApi.getOrderCount().then(res => { if (res.code === 0) { @@ -86,101 +78,103 @@ const user = defineStore({ this.numData.unusedCouponCount = res.data; } }); - }, + }, - // 添加分享记录 + // 添加分享记录 // TODO 芋艿:整理下; - async addShareLog(params) { - const { - error - } = await userApi.addShareLog(params); - if (error === 0) uni.removeStorageSync('shareLog'); - }, + // async addShareLog(params) { + // const { + // error + // } = await userApi.addShareLog(params); + // if (error === 0) uni.removeStorageSync('shareLog'); + // }, - // 设置 token + // 设置 token setToken(token = '', refreshToken = '') { - if (token === '') { - this.isLogin = false; - uni.removeStorageSync('token'); - uni.removeStorageSync('refresh-token') - } else { - this.isLogin = true; - uni.setStorageSync('token', token); + if (token === '') { + this.isLogin = false; + uni.removeStorageSync('token'); + uni.removeStorageSync('refresh-token'); + } else { + this.isLogin = true; + uni.setStorageSync('token', token); uni.setStorageSync('refresh-token', refreshToken); - this.loginAfter(); - } - return this.isLogin; - }, + this.loginAfter(); + } + return this.isLogin; + }, - // 更新用户相关信息 (手动限流,5 秒之内不刷新) + // 更新用户相关信息 (手动限流,5 秒之内不刷新) async updateUserData() { - if (!this.isLogin) { - this.resetUserData(); - return; - } + if (!this.isLogin) { + this.resetUserData(); + return; + } // 防抖,5 秒之内不刷新 - const nowTime = new Date().getTime(); + const nowTime = new Date().getTime(); if (this.lastUpdateTime + 5000 > nowTime) { return; } this.lastUpdateTime = nowTime; // 获取最新信息 - await this.getInfo(); + await this.getInfo(); this.getWallet(); - this.getNumData(); - return this.userInfo; - }, + this.getNumData(); + return this.userInfo; + }, - // 重置用户默认数据 + // 重置用户默认数据 resetUserData() { // 清空 token - this.setToken(); + this.setToken(); // 清空用户相关的缓存 - this.userInfo = clone(defaultUserInfo); + this.userInfo = clone(defaultUserInfo); this.userWallet = clone(defaultUserWallet); - this.numData = cloneDeep(defaultNumData); + this.numData = cloneDeep(defaultNumData); // 清空购物车的缓存 - cart().emptyList(); - }, + cart().emptyList(); + }, - // 登录后,加载各种信息 + // 登录后,加载各种信息 // TODO 芋艿:整理下; async loginAfter() { - await this.updateUserData(); + await this.updateUserData(); // 加载购物车 - cart().getList(); - // 登录后设置全局分享参数 - $share.getShareInfo(); + cart().getList(); + // 登录后设置全局分享参数 + $share.getShareInfo(); - // 提醒绑定手机号 - if (app().platform.bind_mobile && !this.userInfo.mobile) { - showAuthModal('changeMobile'); - } + // 提醒绑定手机号 + if (app().platform.bind_mobile && !this.userInfo.mobile) { + showAuthModal('changeMobile'); + } - // 添加分享记录 + // 绑定推广员 + $share.bindBrokerageUser() + // 添加分享记录 // TODO 芋艿:整理下; - const shareLog = uni.getStorageSync('shareLog'); - if (!isEmpty(shareLog)) { - this.addShareLog({ - ...shareLog, - }); - } - }, + // const shareLog = uni.getStorageSync('shareLog'); + // if (!isEmpty(shareLog)) { + // this.addShareLog({ + // ...shareLog, + // }); + // } + }, - // 登出系统 + // 登出系统 async logout() { this.resetUserData(); - return !this.isLogin; - } - }, - persist: { - enabled: true, - strategies: [{ - key: 'user-store', - }, ], - }, + return !this.isLogin; + } + }, + persist: { + enabled: true, + strategies: [{ + key: 'user-store', + }] + }, }); export default user;