本周开发的邀请分红系统已经接近70%的完善。正式上线并投入用户使用。虽然还有一些地方没有完善,但还是做了。简单的回顾从技术和用户体验开始。为什么目标要邀请?,并不是为了吸引和留住这两兄弟。前者可以为我们的产品引入更多的新用户,注入更多的活水,产生更多的优质内容(……目前的内容暂时断掉)实现更高的商业价值,可以带动产品核心增长,提升产品体验,提升DAU指标,实现正增长值。同时,分红机制的推出,也是为了更好地激励老用户,通过个人渠道吸引更多的新用户,利用分红机制躺着赚钱。如何设计?邀请式设计的方案有很多,比如邀请H5邀请链接、微信分享小程序注册、邀请码机制等。前面两种方案我们都尝试过,但最终转换效果并不理想。最后,我们尝试了邀请码机制,这个邀请码不是另一个邀请码,我们采用了类似淘宝密码的机制,新用户可以通过复制老用户的邀请码完成自动绑定。整体效果图如下:相比之前的H5邀请链接,更有效的缩短了转化路径,新用户可以通过复制邀请码直接与老用户建立师徒关系。技术实现了解需求流程后,我们开始从技术角度进行设计。由于是邀请密码机制,新用户必须已经在APP中拥有用户身份。我们只需要设计一个表来建立邀请者和被邀请者。关系,首先创建一个Invitations表。Schema::create('invitations',function(Blueprint$table){$table->bigIncrements('id');$table->unsignedInteger('user_id')->index()->comment('邀请人ID');$table->unsignedInteger('be_inviter_id')->index()->comment('邀请人ID');$table->timestamp('invited_in')->nullable()->comment('验证成功后的邀请时间');$table->timestamps();});邀请关系表建立后,需要给每个用户分配一个邀请码(唯一标识),可以通过生成uuid来生成一个唯一的邀请码,也可以直接根据用户的ID计算出一个邀请码。最简单的方法是用base64生成一个,编解码速度更快,而且不占用实体存储空间。publicstaticfunctionencode($id){returnbase64_encode($id);}publicstaticfunctiondecode($code){returnbase64_decode($code);}生成邀请码后,需要为客户端提供接口调用和解码验证逻辑,整个逻辑使用伪代码实现。$inviterCode=$request->get('inviter_code);//验证邀请码合法&&抛出异常提示$this->invidatedInviterCode($inviterCode);//解码$inviterId=Invitation::decode($inviterCode);//验证用户真实性...//绑定邀请...//触发相应的奖励这样密码邀请系统就完成了,接下来就是完善分红了。整个分红处理流程如下:当用户触发浏览视频、打卡、点赞等各种操作时,会通过一个钩子来触发分红逻辑。创建每个操作后触发此触发器。我们可以通过观察者模式或者监听器来实现。在Laravel项目中,我们使用观察者模式。整个伪代码逻辑如下。公共函数创建(视频$video){$inviter=$user->myInviter;if(!is_null($inviter)){$inviterWallet=$inviter->wallet;//计算视频收入$reward=$this->computeReawrd($video);//发放奖励invicerWallet->makeIncome($reward,'视频观看分红');}}终于实现了我们邀请分红逻辑的编写。当然,在实际情况中,还有越来越复杂的处理流程,但基本思路如下,包括更多的二三级邀请奖励业务逻辑。相比之前的h5链接和微信小程序,用户体验是一种跳出的方式。在这个过程中,很可能无法进行直接转换,风险机制可以从容应对,尤其是微信和QQ的封禁。该链接很可能被阻止。不可重定向,可通过服务器随时更改文本内容。您只需要复制并打开APP即可完成绑定。可操作性也比在网页上填写手机号方便很多。思路延伸虽然基本的开发工作已经基本完成,但还有一些未完成的事情,如下:数据埋点(邀请触发数、邀请浏览量、分红数):数据越详细越方便后喜整体分析加入不确定因素,更诱人的奖励条件,邀请用户有机会获得5、10、20元现金红包。邀请排行榜,只有有人成功吃到螃蟹才会有更多的用户,尝试关注。关于邀请功能,如果限制太多,会降低用户参与的积极性。如果限制太少,很容易造成漏洞。必须在中间建立平衡。至于控制的程度,有待今后进一步研究。继续侦察。
