一丶数据库的设计

UserId int not null identity(1,1) primary key,
UserCode varchar(200) not null, --用户编号
UserClass int not null, --用户等级 比如:白金 钻石 。。
--对于直销,存在几种账户
Egold money not null, --奖金账户余额
ReSaleGold money not null, --重销账户余额
BaodanGold money not null, --报单账户余额
LeftPV int null, --左区PV
RightPV int null, --右区PV
ZhituiCount int null, --直推人数 可以用来更改用户等级
--上图我们看到一个用户下面有左右两个节点
--上图用户2 他的左节点就为4
LeftChildUID int null, --左节点 对应的是UserId
RightChildUID int null, --右节点
PromotionPV int null, --晋级PV总和
JieSRID int null, --介绍人ID (直推人ID)
FuDRID int null, --辅导人ID(接点人)
--这下面就是用户的一些基本信息
NickName varchar(50) null, --昵称
TrueName varchar(50) null, --真实姓名
ZJCode varchar(100) null, --身份证号
Birthday datetime null, --生日
Sex int null, --性别
Phone varchar(50) null,--手机号码
UserHead varchar(100) null, --用户头象
WeekGoldTax money null,--直销的奖金计算
--用户的左区 和右区 用来对碰
LeftPVCount int null,
RightPVCount int null,
UserRank int null, --会员位阶和上面的等级很像
ChildCount int null, --下面团队的人数
--一般现在直销都在微信端
OpenID varchar(100) null, --微信ID
)
从上图中可以看出:
1是没有介绍人和节点人的,所以为0。当用户2注册的时候选择 他的介绍人和节点人都为1 ,同时2注册时选择为1下面的左节(LeftChildUI)点。1的LeftChildUID也会指向2这个用户。4这个用户介绍人和节点人都为1,但是注册时选择为1下面的右节点(RightChildUI),所以1的右节点(RightChildUI)会指向4这个用户。
从这里面也看出来了,当用户1还准备介绍人进来的时候,它不能放在自己下面了,因为他左边(LeftChildUID)和右边(RightChildUID)都存在用户了。 此时就应该根据选择放在左边(LeftChildUID)或者右边(LeftChildUID)的用户下面。比如2左边(LeftChildUID)和右边(RightChildUID)都存在用户了。现在2介绍一个人进来,就必须放在用户7或者用户5下面。
现在我们大概也了解了数据库的设计。
二丶奖金计算
三代直推奖金计算:
现在查询出来了他的上级,然后他的上级再调用此方法,一直向上推(每推一次,发现一个用户(在这里面也可以添加条件,此用户当月必须消费多少才能获得奖金),就分配奖金给这个用户)。直到为NULL的时候或者他向上推的级数超过3个就停止。
其实三代直推 和 20层 差不多,就里面的查询条件不一样。
还有很多奖金计算的制度~~~~~~~ 哪天有空再写,以后说不准再用上了呢。