当前位置: 首页 > 后端技术 > PHP

【注3】二维码扫描资料埋点

时间:2023-03-29 18:26:20 PHP

项目中遇到的问题:1.前台埋点商品扫码数据(二维码里的链接是外链,不是自己后台)。如果直接放外链,是不会统计数据的,所以需要先请求到自己的后台,再重定向外链。2、如果二维码中的链接太长,二维码中的点会很多,手机扫描的时间会更长,所以需要设计一个短链接替换策略。1、vue前端使用qrcode-lite包生成二维码。'qrcode-lite'...constlongUrl='http://h5.m.taobao.com/app/smg/index.html?a=1&b=2&c=3...'this.shortUrl=this.getShortUrl(longUrl)//从长链接获取短链接constqrOption={width:200,margin:1,quality:0.3}this.getQrcodeImgURL(this.shortUrl,qrOption).then(url=>{this.qrcodeImg=url}).catch((err)=>{console.log(`Createqrcodeimgfailed,${err}`)})2.laravel后台主要实现3个功能,短链接和长链接的生成缓存和访问,重定向publicfunctionshortUrl(Request$request){$url=$request->input('long_url');if(!$url){returnresponse()->json(['code'=>'-1','message'=>'需要long_url!']);$key=Carbon::now()->timestamp;//使用当前时间戳作为缓存键$expiresAt=Carbon::now()->addDays(10);//短链接有效期为10天Cache::put($key,$url,$expiresAt);returnresponse()->json(['code'=>'0','message'=>'Successshorttheurl','data'=>$key]);}publicfunctionredirect($shortCode){$key=$shortCode;if(!$key){returnview("common.error",["errorTitle"=>"扫码错误","errorMessage"=>"二维码错误,请与管理员确认!"]);}$redirectUrl=Cache::get($key,'expiration');if($redirectUrl=='expiration'){returnview("common.error",["errorTitle"=>"扫码错误","errorMessage"=>"二维码过期,请重新生成二维码再扫描代码!”]);}//记录埋点数据...returnredirect()->away($redirectUrl);}