Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -121,6 +121,8 @@ class Chat extends Model
|
||||
// ClearUserCharm = 1059,
|
||||
//发红包
|
||||
// RedPacket = 1060,
|
||||
//红包领完推送
|
||||
// RedPacketComplete = 1061,
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -32,17 +32,6 @@ class RoomHourRanking extends Model
|
||||
// $is_open_red_pack = db::name('vs_hour_ranking_config')->where('id', 1)->value('is_open_red_pack');
|
||||
$is_open_red_pack = 0 ;
|
||||
|
||||
// $profit = db::name('vs_room')->alias('a')
|
||||
// ->join('vs_give_gift b', 'a.id = b.from_id AND b.from = 2 AND b.createtime BETWEEN '.$start_time.' AND '.$end_time, 'left')
|
||||
// ->join('vs_room_label c', 'a.label_id = c.id','left')
|
||||
// ->field('a.id as room_id,a.user_id,a.room_name,a.label_id,a.room_cover,IFNULL(sum(b.total_price), 0) as total_price,c.label_icon')
|
||||
// ->where('a.room_status', 1) // 只统计正常状态的房间
|
||||
// ->where('a.apply_status', 2) // 只统计审核通过的房间
|
||||
// ->where('a.type_id', '<>', 6)
|
||||
// ->group('a.id')
|
||||
// ->order('total_price', 'desc')
|
||||
// ->page($page, $page_limit)
|
||||
// ->select();
|
||||
// 更进一步的优化版本:
|
||||
$subQuery = Db::name('vs_give_gift')
|
||||
->where('from', 2)
|
||||
@@ -70,6 +59,13 @@ class RoomHourRanking extends Model
|
||||
}else{
|
||||
$v['xlh_status'] = 0;
|
||||
}
|
||||
//查询房间是否有红包
|
||||
if($v['room_id'] > 0){
|
||||
$red_pack_status = Db::name('redpacket')->where(['room_id' => $v['room_id'], 'status' => ['<=',1]])->count();
|
||||
$v['redpacket_status'] = $red_pack_status;
|
||||
}else{
|
||||
$v['redpacket_status'] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
//当前小时开始时间 和结束时间 00:00-00:59 这样的格式
|
||||
|
||||
@@ -111,6 +111,19 @@ class RedpacketService
|
||||
|
||||
$amount = floatval($result[1]);
|
||||
$isFinished = $result[2] == 1; // Lua脚本返回是否抢完
|
||||
//给前端推送销毁这个红包
|
||||
// redis 记录该红包是否已经推送过了 只推送一次
|
||||
if($isFinished){
|
||||
$redisKey = "redpacket:{$redpacketId}:is_finished";
|
||||
if (!Cache::get($redisKey)) {
|
||||
Cache::set($redisKey, 1, $redpacket['countdown']+get_system_config_value('red_packet_time')+60);
|
||||
$text = [
|
||||
'redpacket_id' => $redpacketId,
|
||||
'text' => '抢完了,请销毁该红包'
|
||||
];
|
||||
model('api/Chat')->sendMsg(1061,$redpacket['room_id'],$text);
|
||||
}
|
||||
}
|
||||
|
||||
// Lua脚本执行成功,记录到数据库
|
||||
Db::startTrans();
|
||||
@@ -595,10 +608,37 @@ class RedpacketService
|
||||
*/
|
||||
private function checkUserOnMic($userId,$roomId)
|
||||
{
|
||||
$onPit = Db::name('vs_room_pit')->where(['user_id' => $userId,'room_id' => $roomId])->value('pit_number');
|
||||
if ($onPit <= 0){
|
||||
return false;
|
||||
$room_type = Db::name('vs_room')->where('id',$roomId)->field('type_id,label_id')->find();
|
||||
//实际麦位
|
||||
if($room_type['type_id'] == 1 || $room_type['type_id'] == 7 || $room_type['type_id'] == 8){
|
||||
$onPit = Db::name('vs_room_pit')->where(['user_id' => $userId,'room_id' => $roomId])->value('pit_number');
|
||||
if ($onPit <= 0){
|
||||
return false;
|
||||
}
|
||||
}elseif($room_type['type_id'] ==2){//拍卖
|
||||
//获取房间的当前拍卖ID
|
||||
$auctionId = Db::name('vs_room_auction')->where(['room_id' => $roomId,'status' => 2])->value('auction_id');
|
||||
$onPit = [];
|
||||
if($auctionId){
|
||||
$onPits = model('api/RoomAuction')->room_auction_list_on($auctionId);
|
||||
//提取数组里面的user_id的值 来判断用户是否在里面
|
||||
$onPit = array_column($onPits,'user_id');
|
||||
//拍卖位 从缓存中取 Cache::get('auction_user_'.$room_id)
|
||||
$onpitNumber_10 = Cache::get('auction_user_'.$roomId);
|
||||
if($onpitNumber_10){
|
||||
$onPit[] = $onpitNumber_10;
|
||||
}
|
||||
}
|
||||
$onpitNumber_9 = Db::name('vs_room_pit')->where(['pit_number' => 9,'room_id' => $roomId])->value('user_id');
|
||||
if($onpitNumber_9){
|
||||
$onPit[] = $onpitNumber_9;
|
||||
}
|
||||
|
||||
if (!in_array($userId,$onPit)){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user