|
@@ -1438,6 +1438,8 @@ class Party extends Common
|
|
|
|
|
|
$giftValue = $giftInfo["value"] * $number;
|
|
$giftValue = $giftInfo["value"] * $number;
|
|
$getValue = $giftValue;
|
|
$getValue = $giftValue;
|
|
|
|
+
|
|
|
|
+ $giftCountValue = $giftInfo["value"] * $number * $userCount;
|
|
} else {
|
|
} else {
|
|
|
|
|
|
// 获取礼物信息
|
|
// 获取礼物信息
|
|
@@ -1663,6 +1665,18 @@ class Party extends Common
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //爆币
|
|
|
|
+ $res_baobi = $this->baobi($this->auth->id,$data["gift_id"],$giftCountValue);
|
|
|
|
+ if($res_baobi === false){
|
|
|
|
+ Db::rollback();
|
|
|
|
+ $this->error('爆币失败');
|
|
|
|
+ }elseif($res_baobi === true){
|
|
|
|
+ $returnData["baobi"] = 0;
|
|
|
|
+ }else{
|
|
|
|
+ //爆币了
|
|
|
|
+ $returnData["baobi"] = $res_baobi;
|
|
|
|
+ }
|
|
|
|
+
|
|
// 获取用户魅力值
|
|
// 获取用户魅力值
|
|
$users = $this->redis->zRange("hourCharm_".$party_id,0,-1,true);
|
|
$users = $this->redis->zRange("hourCharm_".$party_id,0,-1,true);
|
|
$u = [];
|
|
$u = [];
|
|
@@ -1730,6 +1744,125 @@ class Party extends Common
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //gift_id必须是爆币礼物才可以
|
|
|
|
+ public function baobi($user_id,$gift_id,$pay_total){
|
|
|
|
+
|
|
|
|
+ //奖项参数
|
|
|
|
+ $conf_arr = Db::name('gift_baobi_config')->where('gift_id',$gift_id)->select();
|
|
|
|
+ if(empty($conf_arr)){
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //用户今天的爆币情况,与消费情况,不用区分具体哪个爆币礼物
|
|
|
|
+ $today_start = strtotime(date('Y-m-d'));
|
|
|
|
+ $today_end = $today_start + 86399;
|
|
|
|
+ $map = [
|
|
|
|
+ 'user_id' => $user_id,
|
|
|
|
+ 'createtime' => ['BETWEEN',[$today_start,$today_end]],
|
|
|
|
+ ];
|
|
|
|
+ $today_data = Db::name('gift_baobi_log')->field('IFNULL(sum(pay_total),0) as today_pay_total,IFNULL(sum(baobi_total),0) as today_baobi_total')->where($map)->find();
|
|
|
|
+ //dump($today_data);
|
|
|
|
+ if($today_data['today_baobi_total'] >= $today_data['today_pay_total']){
|
|
|
|
+ //爆币比消费还高了,不用抽奖了,记录个日志,返回。这里的日志仅用来记录今日消费 sum(pay_total)
|
|
|
|
+ $data = [];
|
|
|
|
+ $data['user_id'] = $user_id;
|
|
|
|
+ $data['gift_id'] = $gift_id;
|
|
|
|
+ $data['baobi_id'] = 0;
|
|
|
|
+ $data['beilv'] = 0;
|
|
|
|
+ $data['rate'] = 0;
|
|
|
|
+ $data['pay_total'] = $pay_total;
|
|
|
|
+ $data['baobi_total'] = 0;
|
|
|
|
+ $data['createtime'] = time();
|
|
|
|
+
|
|
|
|
+ $log_id = Db::name('gift_baobi_log')->insertGetId($data);
|
|
|
|
+ if(!$log_id){
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //概率新数组
|
|
|
|
+ $gailv = [];
|
|
|
|
+ $bei = 100; //小数变整数
|
|
|
|
+ foreach ($conf_arr as $key=>$value)
|
|
|
|
+ {
|
|
|
|
+ $gailv[$value['id']] = $value['rate']*$bei;
|
|
|
|
+ }
|
|
|
|
+ //dump($gailv);
|
|
|
|
+
|
|
|
|
+ //奖项新数组
|
|
|
|
+ $conf_column = [];
|
|
|
|
+ foreach ($conf_arr as $key=>$value)
|
|
|
|
+ {
|
|
|
|
+ $conf_column[$value['id']] = $value;
|
|
|
|
+ }
|
|
|
|
+ //dump($conf_column);
|
|
|
|
+
|
|
|
|
+ //抽
|
|
|
|
+ $rid = $this->getRand($gailv); //根据概率获取奖项id
|
|
|
|
+ //dump($rid);
|
|
|
|
+
|
|
|
|
+ //返回中奖结果
|
|
|
|
+ $result = $conf_column[$rid];
|
|
|
|
+
|
|
|
|
+ //爆币金额
|
|
|
|
+ $baobi_total = bcdiv(bcmul($pay_total,$result['beilv'],0),100,0);
|
|
|
|
+
|
|
|
|
+ //写入爆币记录,不论有没有钱。全都写入其实是为了方便查日志,比在money_log里找范围更小,而且可删除
|
|
|
|
+ $data = [];
|
|
|
|
+ $data['user_id'] = $user_id;
|
|
|
|
+ $data['gift_id'] = $gift_id;
|
|
|
|
+ $data['baobi_id'] = $result['id'];
|
|
|
|
+ $data['beilv'] = $result['beilv'];
|
|
|
|
+ $data['rate'] = $result['rate'];
|
|
|
|
+ $data['pay_total'] = $pay_total;
|
|
|
|
+ $data['baobi_total'] = $baobi_total;
|
|
|
|
+ $data['createtime'] = time();
|
|
|
|
+
|
|
|
|
+ $log_id = Db::name('gift_baobi_log')->insertGetId($data);
|
|
|
|
+ if(!$log_id){
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //直接给用户钱
|
|
|
|
+ if($baobi_total > 0){
|
|
|
|
+ $rs_wallet = model('wallet')->lockChangeAccountRemain($user_id,$baobi_total,'+',0,'送礼物爆币'.$result['beilv'].'%',21,'jewel');
|
|
|
|
+ if($rs_wallet['status'] === false){
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //返回爆币金额
|
|
|
|
+ return $baobi_total;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //默认成功
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //概率获得算法
|
|
|
|
+ private function getRand($proArr) {
|
|
|
|
+ //概率数组的总概率精度
|
|
|
|
+ $proSum = array_sum($proArr);
|
|
|
|
+
|
|
|
|
+ $key = rand(1, $proSum);
|
|
|
|
+// echo $key;
|
|
|
|
+ $result = 0;
|
|
|
|
+ $now = 0;
|
|
|
|
+ foreach ($proArr as $k=>$v)
|
|
|
|
+ {
|
|
|
|
+ $now = $now + $v;
|
|
|
|
+ if($key<=$now)
|
|
|
|
+ {
|
|
|
|
+ $result = $k;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ unset ($proArr);
|
|
|
|
+ return $result;
|
|
|
|
+ }
|
|
|
|
+
|
|
//送礼完成之后,大礼物飘屏
|
|
//送礼完成之后,大礼物飘屏
|
|
private function bigGiftNotice($sender,$receiver,$partyInfo,$giftUserParty){
|
|
private function bigGiftNotice($sender,$receiver,$partyInfo,$giftUserParty){
|
|
if ($giftUserParty['party_id'] > 0) {
|
|
if ($giftUserParty['party_id'] > 0) {
|
|
@@ -1747,7 +1880,8 @@ class Party extends Common
|
|
//某房间内礼物列表
|
|
//某房间内礼物列表
|
|
public function getPartyGiftLog(){
|
|
public function getPartyGiftLog(){
|
|
$party_id = input('party_id',0);
|
|
$party_id = input('party_id',0);
|
|
- $list = Db::name('gift_user_party')->alias('log')->field('log.gift_name,log.gift_gif_image,log.number,log.value,log.guildermoney,log.createtime,user.nickname as give_nickname,b.nickname as get_nickname')
|
|
|
|
|
|
+ $list = Db::name('gift_user_party')->alias('log')
|
|
|
|
+ ->field('log.gift_name,log.gift_gif_image,log.number,log.value,log.guildermoney,log.createtime,user.nickname as give_nickname,b.nickname as get_nickname')
|
|
->join('user','log.user_id = user.id','LEFT')
|
|
->join('user','log.user_id = user.id','LEFT')
|
|
->join('user b','log.user_to_id = b.id','LEFT')
|
|
->join('user b','log.user_to_id = b.id','LEFT')
|
|
->where('log.party_id',$party_id)->order('log.id desc')->autopage()->select();
|
|
->where('log.party_id',$party_id)->order('log.id desc')->autopage()->select();
|