php - 邀请好友机制的设计思路
滿天的星座
滿天的星座 2017-06-05 11:07:59
0
5
1035

网站需要邀请好友的功能模块,流程是这样的:

用户中心生成每个人(A)的邀请链接,然后被邀请人(B)点击注册之后,B的注册字段后面插入A的ID作为标记。

目前这样可以统计出每个人邀请的好友列表,但是后续存在以下问题:

被邀请人B首次下单,会奖励A 10%的积分奖励,非首次下单,不于奖励
(我自己笨方法是这么想的,每一个用户下单时候,都先判断是否有上级A用户,如果没有就直接下单,如果有上级A用户,就要再判断一次是否首次下单,然后再将积分增加给上级,并且同时进行B用户的下单操作)

那么问题就是,我自的笨方法需要对每一个用户的每一次下单进行首次下单的判断,感觉这样的过于累赘,容易出现问题,不知道大神有没有优化思路

滿天的星座
滿天的星座

全部回复(5)
世界只因有你

我觉得可以这样搞:

  1. 好友关系:可以单独搞一个表,好友关系表,里面存两个字段 uid(用户ID), contact_uid(关联好友ID)

  2. 下单是否是首次并增加推荐好友积分操作:可以在用户相关表增加个是否下过单的字段(楼上也有提过),默认为0为没有下过单,每次下单都会先查询这个字段,如果是1则走正常下单逻辑;如果为0,表示从未下过单,然后执行你将要用到的逻辑,就是用户是否有推荐人,给推荐人增加积分等的处理

伊谢尔伦

一个用户下单时候,都先判断是否有上级A用户,如果没有就直接下单

不要这样做,会影响性能。

统计积分在每天凌晨统计。

某草草

可以提出一张表,这张表有id,B的id,C的id,以及字段buystate,buystate的值可以取1或者0,0代表不是第一次购买,1代表是第一次购买

漂亮男人

直接加一个字段,是否下单过,默认为0,反正下单的时候会获取这个用户的信息,顺便判断一下是不是等于0就知道是不是首单了。积分方面,如果担心性能,可以考虑存到redis里,固定一个时间修改数据库。

过去多啦不再A梦

我觉得思路没问题
有一点提一下,奖励积分应该要在订单完成后吧,而不是下单的时候。
在用户表加一个字段表示历史完结单次数就好了,后续如果需求改变为前N次返积分也很容易。而且通常下单或者完成订单的过程中本身就需要查询用户表,并不显得繁杂。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!