分享人此时已经是登陆状态,所以在分享的时候直接从本地存储中拿到用户的userId并拼接到分享链接上,其他用户在点击链接打开详情页之后会判断当前链接参数中有无uid有的话则直接存入本地中用作新用户登录注册时候请求接口的判断,最后在砍价记录列表的接口中通过isnewUser字段来判断是否显示新用户标识
新用户第一次砍价则显示新用户标识
流程:
我分享的时候将uid作为参数携带出去,让别人点击我的分享链接,点击进入详情页面后通过截取到分享链接上面的uid然后将其存入本地,当用户点击砍价的时候检测到他未登录注册小程序,然后到登陆页面进行登录,登陆时判断本地是否有uid有的话就给auth/mpLogin这个登录接口传递过去,没有则正常请求,用户第一次砍价完成后我这边砍价记录中会显示他是新用户,他那边自己看记录也会显示新用户标识,第二次分享给他其他商品链接进行砍价时则就没有新用户标识了
再次砍价则不显示新用户标识
核心代码
//邀请好友按钮
<button open-type="share" v-bind:data-bargainGood="{goodsname, spdetailImg,origin_price,refer_price,already_grade_amount}" class="share">
<view class="discount">邀请帮砍<image
src="https://ebk-picture.oss-cn-hangzhou.aliyuncs.com/mini-wx/images/bargain/share.png"
mode=""></image>
</view>
</button>
onLoad(options) {
console.log(options);
if (options.uid) {
this.paramsUid = options.uid;
uni.setStorageSync('pid',this.paramsUid)
}
this.token = uni.getStorageSync('token').token
},
//分享链接函数
onShareAppMessage(e) {
console.log(e)
var {goodsname,goodsId, spdetailImg,origin_price,refer_price,already_grade_amount}=this
// console.log(e.target.dataset,'onShareAppMessage');
let userId = uni.getStorageSync('userInfo').uid
refer_price = '原价'+refer_price/100+'元';
already_grade_amount = '现价'+(parseInt(origin_price) - parseInt(already_grade_amount))/100+'元'
// let already_grade_amount = '当前'+e.target.dataset.bargaingood.already_grade_amount/100+'元'
return {
title:`${refer_price}, ${already_grade_amount},${goodsname}`,
imageUrl:this.spImgList[0],
path:'pages/bargain/bargainspDetail?uid='+userId+'&goodsId='+goodsId
}
},
//全局app.vue中
get_token() {
let that = this;
return new Promise(function (resolve, reject) {
uni.login({ //获取code
provider: 'weixin',
success: (res2) => {
//return false;
if(uni.getStorageSync('pid')){
uni.request({
url: that.globalData.URL + "auth/mpLogin",
method: 'POST',
data: {
version: '251',
client: 'wxmp',
code: res2.code,
pid:uni.getStorageSync('pid')
},
success(res) {
console.log(res.data, '111111111111111111111111');
if (res.data.status == 'ok') {
uni.setStorageSync('token', res.data.data);
that.globalData.is_user_info = res.data.data.is_user_info;
that.globalData.is_mobile = res.data.data.is_mobile;
that.globalData.token = res.data.data.token;
uni.$emit('uptoken', {
msg: 'token更新',
data: res.data.data
})
}
that.getUserInfo()
resolve()
}
})
}else{
uni.request({
url: that.globalData.URL + "auth/mpLogin",
method: 'POST',
data: {
version: '251',
client: 'wxmp',
code: res2.code,
},
success(res) {
console.log(res.data, '111111111111111111111111');
if (res.data.status == 'ok') {
uni.setStorageSync('token', res.data.data);
that.globalData.is_user_info = res.data.data.is_user_info;
that.globalData.is_mobile = res.data.data.is_mobile;
that.globalData.token = res.data.data.token;
uni.$emit('uptoken', {
msg: 'token更新',
data: res.data.data
})
}
that.getUserInfo()
resolve()
}
})
}
},
fail: () => {
uni.showToast({
title: "微信登录授权失败22",
icon: "none"
});
uni.reLaunch({
url: '/pages/login/login' // 跳转到新的页面
});
reject()
}
})
// 一段耗时的异步操作
// resolve('成功') // 数据处理完成
// reject('失败') // 数据处理出错
}
)
},