微信小程序分享实现拉新绑定(用户关系绑定)

分享人此时已经是登陆状态,所以在分享的时候直接从本地存储中拿到用户的userId并拼接到分享链接上,其他用户在点击链接打开详情页之后会判断当前链接参数中有无uid有的话则直接存入本地中用作新用户登录注册时候请求接口的判断,最后在砍价记录列表的接口中通过isnewUser字段来判断是否显示新用户标识

新用户第一次砍价则显示新用户标识
微信小程序分享实现拉新绑定(用户关系绑定)_第1张图片

流程:

我分享的时候将uid作为参数携带出去,让别人点击我的分享链接,点击进入详情页面后通过截取到分享链接上面的uid然后将其存入本地,当用户点击砍价的时候检测到他未登录注册小程序,然后到登陆页面进行登录,登陆时判断本地是否有uid有的话就给auth/mpLogin这个登录接口传递过去,没有则正常请求,用户第一次砍价完成后我这边砍价记录中会显示他是新用户,他那边自己看记录也会显示新用户标识,第二次分享给他其他商品链接进行砍价时则就没有新用户标识了

再次砍价则不显示新用户标识
微信小程序分享实现拉新绑定(用户关系绑定)_第2张图片

核心代码

//邀请好友按钮
<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('失败') // 数据处理出错
				  }
				)
			},

你可能感兴趣的:(小程序知识/功能大总结,微信小程序,notepad++,小程序)