奖金制度lt rt 实现方法

mysql 会员表字段 parent_id lt rt level  默认lt=0 rt=1 level=1

会员注册插入会员表

$userinfo = Db::name('User')
->where('userkey',$pid)
->field('parent_id,id,userkey,user_id,lt,rt,level')
->find();
$rt = $userinfo['rt'];
$lt = $userinfo['lt'];
$level = $userinfo['level'];

Db::name('User')->where('lt','>=',$rt)->setInc('lt', 2);
Db::name('User')->where('rt','>=',$rt)->setInc('rt', 2);
Db::name('User')->where('id',$userid)->update(['lt' => $rt,'rt' => $rt+1,'level' => $level+1]);

升级
//查找所有用户 信息
$Assets = 0;//团队资产
$p_count= 0;//直推有效用户数量
//查找所有用户
$userDate = Db::name('user')->field('user_id,id,parent_id,lt,rt,level,uplevel')->select();
foreach ($userDate as $key => $value){
//查找用户直推人数 判断有效用户数量
$user_id = $value['user_id'];//用户user_id
$id = $value['id'];//用户id
//查找 直推人开启 智能狗的用户数量
$condition['b.parent_id'] = $id;
$condition['a.open'] = 1;
$p_count = Db::table('ryw_intelligent_dog')
->alias('a')
->join('user b','a.user_id = b.user_id')
->where($condition)
->group('a.user_id')
->count();

//成功直推有效用户 10个
if($p_count >= 10){
$rt = $value['rt'];
$lt = $value['lt'];
$level = bcadd($value['level'] ,10,0);//层级
//$parent_id = $value['parent_id'];//推荐ID
foreach ($nowdatas_price as $k => $v){
$price = $v['price'];//币种实时价格
$wherearr['b.lt'] = ['gt',$lt];
$wherearr['b.level'] = ['elt',$level];
$wherearr['b.rt'] = ['lt',$rt];
$wherearr['a.open'] = 1;
$wherearr['c.currency_mark'] = strtoupper($k);
$b_count = Db::table('ryw_intelligent_dog')
->alias('a')
->join('user b','a.user_id = b.user_id')
->join('currency c','a.currency_id = c.id')
->where($wherearr)
->sum('a.count');

$money = bcmul($b_count,$price,4);//该账户资产总额
$Assets = bcadd($money,$Assets,4);
}
//升级操作
if($Assets >= 200000){
Db::name('user')->where('id',$id)->update(['uplevel'=>1]);
}else{
Db::name('user')->where('id',$id)->update(['uplevel'=>0]);
}
}
//降级操作
if($p_count < 10){
if($value['uplevel'] > 0){
Db::name('user')->where('id',$id)->update(['uplevel'=>0]);
}
}
}
//会员升级 大咖 大神的升级操作
$df_user = Db::name('user')->where('uplevel = 1')->field('id,parent_id,user_id')->select();//查找所有大户 用户
foreach ($df_user as $k => $v) {
$df_id = $v['id'];
$df_count = Db::name('user')->where(['parent_id'=>$df_id,'uplevel'=>1])->count();//直推大户人数
if($df_count >= 3){
Db::name('user')->where('id',$df_id)->update(['uplevel'=>2]);
}
}
//大神 升级操作
$dk_user = Db::name('user')->where('uplevel = 2')->field('id,parent_id,user_id')->select();//查找所有大咖 用户
foreach ($dk_user as $k => $v) {
$dk_id = $v['id'];
$dk_count = Db::name('user')->where(['parent_id'=>$dk_id,'uplevel'=>2])->count();//直推大咖 人数
if($dk_count >= 3){
Db::name('user')->where('id',$dk_id)->update(['uplevel'=>3]);
}
}



控制奖金发放
//$date = date('Y-m-d');
$fj_time = bcadd(strtotime($date),23*3600,0);
$time = time();
if($time == $fj_time){
$param = Db::name('Param')->find(); //系统设置表
$earningsratio = 0.002; //收益比例
if($param['profit']){
$earningsratio = $param['profit'];
}

//奖金比例
$bonusproportion = array(1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1);
$layered = explode(",", $param['layered']);
if (is_array($layered)) {
$bonusproportion = $layered;
}

//查找所有智能狗 账号
$where['a.open'] = 1;
$dog_account = Db::table('ryw_intelligent_dog')
->alias('a')
->join('currency b','a.currency_id = b.id')
->join('user c','a.user_id = c.user_id')
->where($where)
->field('a.*,b.currency_mark,c.parent_id')
->select();
foreach ($dog_account as $k => $v){
//获取该账户 的用户名 和币种id
$currency_mark = strtolower($v['currency_mark']);
$user_id = $v['user_id'];
$currency_id = $v['currency_id'];
$from_account_id= $v['id'];
if(isset($nowdatas_price[$currency_mark])){
$currency_price = $nowdatas_price[$currency_mark]['price'];//币种价格
}else{
$currency_price = '0.0000';
}

$parent_id = $v['parent_id'];
// 发放收益
$sum_money = bcmul($currency_price,$v['count'],4);//投入 智能狗的币种资产
$profit = bcmul($sum_money,$earningsratio,4); // $earningsratio 收益比例 该智能狗账号 获取收益总额

Db::startTrans();
try{
$data['user_id'] = $user_id;
$data['type'] = 1;
$data['earning'] = $profit;
$data['add_date'] = $time;
$data['from_user'] = $user_id;
$data['status'] = 0;
$data['from_account_id'] = $from_account_id;
Db::name('Prizerecord')->insert($data);//添加 本人收益奖金记录

//发放推广收益
$i = 0;
$u = 0.15;//极差 总发放奖金比例 15%
while ($parent_id) {
if($i == count($bonusproportion)){
break;
}
$res = Db::name('user')->where('id', $parent_id)->field('parent_id,id,user_id,uplevel')->find();//推荐人信息
$parent_id = $res['parent_id'];
$uuid = $res['id']; //推荐人ID
$u_user_id = $res['user_id'];
$uplevel = $res['uplevel'];//等级信息
//统计上级直推人数
$count = Db::name('user')->where('parent_id', $uuid)->count();
$tg_profit = $profit * $bonusproportion[$i]; //上级收益
if($count < $i+1){
$i++;
continue;
}else{
//求奖金总和
$dt['user_id'] = $u_user_id;
$dt['type'] = 2;
$dt['earning'] = $tg_profit;
$dt['add_date'] = $time;
$dt['from_user'] = $user_id;
$dt['status'] = 0;
$dt['from_account_id'] = $from_account_id;
Db::name('Prizerecord')->insert($dt);//添加 推广收益奖金记录

if($uplevel == 3 && $u > 0){
//剩余极差 比例
$gg_profit = bcmul($profit,$u,4); //高管收益
$datas['user_id'] = $u_user_id;
$datas['type'] = 3;
$datas['earning'] = $gg_profit;
$datas['add_date'] = $time;
$datas['from_user'] = $user_id;
$datas['status'] = 0;
$datas['from_account_id'] = $from_account_id;
Db::name('Prizerecord')->insert($datas);
$u = 0.00;
}
if($uplevel == 2 && $u > 0){
if(bcsub($u,0.1,2) > 0){
$gg_profit = bcmul($profit,0.10,4); //高管收益
$u = bcsub($u,0.10);
}else{
$gg_profit = bcmul($profit,$u,4); //高管收益
$u = 0.00;
}
$datas['user_id'] = $u_user_id;
$datas['type'] = 3;
$datas['earning'] = $gg_profit;

$datas['add_date'] = $time;
$datas['from_user'] = $user_id;
$datas['status'] = 0;
$datas['from_account_id'] = $from_account_id;
Db::name('Prizerecord')->insert($datas);
}
if($uplevel == 1 && $u > 0){
$gg_profit = bcmul($profit,0.05,4); //高管收益
$datas['user_id'] = $u_user_id;
$datas['type'] = 3;
$datas['earning'] = $gg_profit;
$datas['add_date'] = $time;
$datas['from_user'] = $user_id;
$datas['status'] = 0;
$datas['from_account_id'] = $from_account_id;
Db::name('Prizerecord')->insert($datas);
$u = bcsub($u,0.05,2);
}
$i++;
}
}



转载于:https://www.cnblogs.com/nonoleng/p/8781120.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值