diff --git a/application/api/model/GiveGift.php b/application/api/model/GiveGift.php index cd83c261..b67159bd 100644 --- a/application/api/model/GiveGift.php +++ b/application/api/model/GiveGift.php @@ -368,14 +368,36 @@ class GiveGift extends Model //收礼人认证歌手等级升级 model('api/SingerSong')->singerLevelUp($to_id,$gift_price); - //收礼人身价计算 这里的增长身价是收礼物的价值按比率产生的身价值 身价=收礼产生的身价+签约时的溢价 - $coin_market_value = get_system_config_value('coin_market_value'); + //收礼人身价计算 这里的增长身价是收礼物的价值按比率产生的身价值 + //单笔收礼大于100,四舍五入取整,不累计在这,单笔小于100,累计到100计算一次 + $coin_market_value = get_system_config_value('coin_market_value');//身价比例 if(!$coin_market_value){ - $coin_market_value = '100,1'; + $coin_market_value = '100,1';//默认 } $coin_market_values = explode(',', $coin_market_value); - $change_value = ceil($gift_price / ($coin_market_values[0] ?? 100) * ($coin_market_values[1] ?? 1)); - model('api/MarketValue')->change($to_id,$change_value,0); + $coin_value = $coin_market_values[0] ?? 100; + $market_value = $coin_market_values[1] ?? 1; + + if($gift_price >= 100){//单笔收礼大于100,四舍五入取整 + $change_value = round($gift_price / $coin_value) * $market_value; + model('api/MarketValue')->change($to_id,$change_value,0); + }else{//单笔小于100,累计到100计算一次 + //获取用户累计的金币数 + $accum_coin = db::name('user_data')->where(['user_id'=>$to_id])->value('market_value'); + if(($accum_coin + $gift_price) >= 100){//累计到100计算一次 + $change_value = floor(($accum_coin + $gift_price) / $coin_value) * $market_value; + $change_market_value = model('api/MarketValue')->change($to_id,$change_value,0); + if($change_market_value['code'] == 1){ + //取余 + $remain_coin = ($accum_coin + $gift_price) % $coin_value; + //修改数据 + db::name('user_data')->where(['user_id'=>$to_id])->update(['market_value'=>$remain_coin]); + } + }else{//累计 + db::name('user_data')->where(['user_id'=>$to_id])->update(['market_value'=>$accum_coin + $gift_price]); + } + } + //收礼人是否被签约 给上级返佣 model('api/Sign')->check_sign_gift($to_id,$gid,$num,$gift_price,$from_id);