php实现三级分销求助

项目要实现三级分销;
对于数据库的设计和用户注册后给所有上级(最多三级)返利

但是一点头绪都没有,请大神帮忙给个思路!

如果是直接注册给奖励20元
如果是通过二维码或者链接进入的注册页面 找到上级 给上级奖励10元
如果上级还有上级就奖励5元
如果上级的上级还有上级就奖励3元

对于这样的实现以及数据表的建立真是没有思路啊!
目前就是用的很蠢的办法 就是用户注册的时候写一个方法去查找上级 给奖励10元
之后再写一个方法根据上级再去查找 之后再去查找

感觉这种办法好蠢啊 有什么其他好点的办法吗?

如果用递归的方式 如何查询当前会员向上三级的父级会员呢?

阅读 7.7k
6 个回答

create table user{
id int unsigned not null auto_increment primary key,
name varchar(64) not null,
pass varchar(64) not null,
fid int unsigned not null,
money decimal(6,2) not null
}engine=innodb charset=utf8;

做一个简单的叙述
1,用户注册进来,获得的信息,按照楼主的意思,应该能得到用户信息以及推荐人信息(自己注册推荐人信息为空)。
2,拿到信息之后入库,自己注册,fid(也就是father_id的意思)为0.如果有推荐人,则fid设置为推荐人id。此时推荐人为第一层上级。
3,已知推荐人id,可知推荐人fid,可查推荐人的上级。层层递进。
4,利用id,fid写一个递归函数,查到当fid为0的时候,停止。fid为0,也就是最顶层上级。
5,根据递归函数返回的信息,确认总共级数(很容易确认,返回几组用户信息就知道总共有几级)
6,总共的级数确认了,写一个按照级数分配奖金的方法,调用方法,负责发放奖金。
最后:简单的sql和简单的思路就是这样,如果不太清楚如何根据递归查询上级的方法,我会在评论中给楼主写出。

既然是确定三级分销,设计就是用三级联动的表设计就行 然后一条语句就可以查出来,mysql关联三个用户表,
->table('1')
->join('2','条件自己限制')
->join('3','条件自己限制')
->where(3.fid=2.id)
->where(2.fid=1.id)
->select(1.id,2.id,3.id)

对的鸭,就这样,你还可以加个辅助字段。

比如一级会员推荐的 会有就是2级 这个是固定的
二级会员推推荐的就是3级 这样固定固定还可以省一次查询。

能不能用一个字段来记录
每个会有都有一个唯一id 1级级的下去 就会有个数字字符串 如果当前的会员id是 50 上级是1 上上级不存在
00-00-01-50 当这个会员推荐一个新会员id 51的时候 新会员就会有 00-01-50-51
不知道这个想法行不行

最多三级,那直接记录上三级就好了,fId1,fId2,fId3,没必要搞太多,注册的时候就初始化好,向上查直接查这三个字段,一次搞定
向下查可以参考省市县区域码的设计

如果只有三级的话,感觉最简单的方法就是直接存在一张表里,记录上面的三级fid1,fid2,fid3,这样每次注册的时候直接通过上一个介绍人就可以查出所有的上三级,何必这么麻烦去做递归。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题