幸运拼团系统开发了很长时间了,幸运拼lucky系统现成开发解决方案和源码分享一部分,欢迎大家交流一起交流
/**
*幸运拼拼团系统贡献值和奖励发放核心代码
* @param $order_uid 是谁的购买的vip
* @param $uid 查找谁的上级
* @param int $speed 第几次处理逻辑
* @return bool
*/
public function teamReward($order_uid,$uid,$speed=1)
{
//获取用户信息
$user_info = User::getUserInfo($uid);
//如果有上级则进行逻辑处理,如果没有则结束
if($user_info['spread_uid'])
{
//获取我的上级信息
$spread_user_info = User::where('uid', $user_info['spread_uid'])->field('now_money,brokerage_price,level')->find()->toArray();
//普通VIP = 1, 总代 = 2 SVIP = 3
//需要是总代或者SVIP才可以,不然直到找到为止
//如果第一次查找就查找到SVIP,并且订单用户id和被查找用户id相同,则是SVIP直推,不发放奖励;
if( $spread_user_info['level'] == 3
&& $speed == 1
&& $uid == $order_uid
)
{
return true;
}
//等级必须是总代或者SVIP
if( $spread_user_info['level'] > 1)
{
//获取上级当前的等级信息
$level_info = SystemUserLevel::get(['id'=>$spread_user_info['level']]);
$level_info = $level_info->toArray();
/**
* 列出关系 第一次只可能是总代或者SVIP
* 第二次只可能是总代或者SVIP,如果是总代就会产生平级
* 第三次只可能是SVIP了。
* 所以逻辑处理最多三次完成。中间任何一次碰到SVIP,则奖励发放完后终止
*/
//获取当前等级的极差额度
$money = $level_info['vip_eqlevel_reward'];
//如果是第一次处理,并且上级是SVIP,那上级直接获取双倍极差额度
if($speed == 1 && $level_info['id'] == 3)
{
//奖金翻倍
$money = bcmul($money ,2,2);
//如果是第二次处理而且上级为总代 或者是第三次处理而且上级为SVIP 此状态下则是平级减半奖励
} else if( ( $level_info['id'] == 2 && $speed == 2 )
OR ( $speed == 3 && $level_info['id'] ==3 ) )
{
//奖金减半
$money = bcdiv($money ,2,2);
}
//发放奖励
$this->sendBrokerageReward($spread_user_info['uid'],'VIP团队奖励',$money,$spread_user_info['brokerage_price']);
//决定是否继续查找 只要碰到SVIP,则停止。
if($level_info['id'] == 3)
return true;
//没有碰到SVIP的情况下自动进入下一轮
$speed++ ;
$this->teamReward($order_uid,$spread_user_info['uid'],$speed);
} else {
//如果上级等级不达标,继续递归查找。
$this->teamReward($order_uid,$user_info['spread_uid'],$speed);
}
}
}
幸运拼团的这种深度而又全面的方式,是其他类型的新互联网物种无法比拟的。它既串联起来了传统电商,又涉及到了传统的生产型企业。这其实正是新互联网为我们描绘的美好蓝图。因为新互联网所改造的并不仅仅只是传统的电商平台,上游的生产厂商和供应商都是新互联网改造的对象。从这个角度来看,幸运拼团的背后其实是对新互联网的落地和实践
下图是幸运拼制度的模式思维导图