这个不算三级分销,按照遍历的逻辑,当 B 成为团长时,A 和 B 就已经不是层级关系了,也就是说在规则上如果 B 是团长的话,A 不再从 B 及 B 以下获取佣金就不属于三级分销了。其实这是两个进程,一是人员等级问题,A 的等级树,二是分佣规则的制定,A 获取 B 及以下和 A 仅获取 B 是不同的。那么我们程序在设计的时候其实是在做程序一,而程序二就看产品经理怎么定了
我的做法是只更改 B 以及 B 的下级的 teamid 需要递归处理, 用户表内记录用户的上级 pid 以及 当前所属 teamid, B 团队离开 A 线,B 的上级 pid 归 0,无限极查询 B 的所有下级 id, 更改 teamid 为 B 的 id 因为这里不递归处理的话 订单那边进行分佣计算的时候也要递归
rockyou12
2018-10-27 09:14:42 +08:00
似乎可以考虑用图数据库?
TangMonk
2018-10-27 09:24:21 +08:00
递归
Mohanson
2018-10-27 09:27:10 +08:00
用 simple merkle tree. A 的 id 是 10, 则 B 的 id 是 10-11, 依次类推,当你找到一个用户,其所有上级都是确定的。
Mohanson
2018-10-27 09:28:15 +08:00
千万别用个字段记录上级 id, 这种对数据库的压力是指数级别增长的
Mohanson
2018-10-27 09:29:36 +08:00
错了,是 trie 树, 还没睡醒
abcbuzhiming
2018-10-27 09:40:37 +08:00
第一,国家现在好像严打多级分佣。 第二,程序员讨论的是技术问题,这个技术问题从本质是如何从理论上无限极的树里把把 1 个节点的子节点全部查出来。记录父 id 的方式是不行的,深度到一定程度后指数级别的增加计算压力,有一种 AB 树的记录方案,但是仍然有弱点。 我也希望能看到更好的算法