网站需要邀请好友的功能模块,流程是这样的:
用户中心生成每个人(A)的邀请链接,然后被邀请人(B)点击注册之后,B的注册字段后面插入A的ID作为标记。
目前这样可以统计出每个人邀请的好友列表,但是后续存在以下问题:
被邀请人B首次下单,会奖励A 10%的积分奖励,非首次下单,不于奖励
(我自己笨方法是这么想的,每一个用户下单时候,都先判断是否有上级A用户,如果没有就直接下单,如果有上级A用户,就要再判断一次是否首次下单,然后再将积分增加给上级,并且同时进行B用户的下单操作)
那么问题就是,我自的笨方法需要对每一个用户的每一次下单进行首次下单的判断,感觉这样的过于累赘,容易出现问题,不知道大神有没有优化思路
我觉得可以这样搞:
好友关系:可以单独搞一个表,
好友关系表
,里面存两个字段uid
(用户ID),contact_uid
(关联好友ID)下单是否是首次并增加推荐好友积分操作:可以在用户相关表增加个是否下过单的字段(楼上也有提过),默认为0为没有下过单,每次下单都会先查询这个字段,如果是
1
则走正常下单逻辑;如果为0,表示从未下过单,然后执行你将要用到的逻辑,就是用户是否有推荐人,给推荐人增加积分等的处理不要这样做,会影响性能。
统计积分在每天凌晨统计。
可以提出一张表,这张表有id,B的id,C的id,以及字段buystate,buystate的值可以取1或者0,0代表不是第一次购买,1代表是第一次购买
直接加一个字段,是否下单过,默认为0,反正下单的时候会获取这个用户的信息,顺便判断一下是不是等于0就知道是不是首单了。积分方面,如果担心性能,可以考虑存到redis里,固定一个时间修改数据库。
我觉得思路没问题
有一点提一下,奖励积分应该要在订单完成后吧,而不是下单的时候。
在用户表加一个字段表示历史完结单次数就好了,后续如果需求改变为前N次返积分也很容易。而且通常下单或者完成订单的过程中本身就需要查询用户表,并不显得繁杂。