单人送礼 直插数据库,多人送礼队列

This commit is contained in:
2026-01-13 17:13:16 +08:00
parent ffbf0c0f37
commit 1623277e26

View File

@@ -5,6 +5,7 @@ namespace app\api\model;
use app\common\controller\Push;
use app\common\library\GiftQueue;
use app\common\library\Snowflake;
use app\common\model\GiveGiftBase;
use think\Log;
use think\Model;
use think\Db;
@@ -899,7 +900,7 @@ class SendGift extends Model
if($gift_box){
foreach ($gift_box as $i => $v){
//记录一下收礼记录
$give_gift = $this -> change_user_give_gift_log($uid,$v['gift_id'],$v['gift_price'],1,$to_uid,2,$type,$room_id,'',0,2);
$give_gift = $this -> change_user_give_gift_logs($uid,$v['gift_id'],$v['gift_price'],1,$to_uid,2,$type,$room_id,'',0,2);
if(!$give_gift){
Db::rollback();
return ['code' => 0, 'msg' => '送礼失败,请重试!!', 'data' => null];
@@ -908,7 +909,7 @@ class SendGift extends Model
}
}else{
//收礼记录行为日志
$give_gift = $this -> change_user_give_gift_log($uid,$gid,$gift_price,$num,$to_uid,2,$type,$room_id,'');
$give_gift = $this -> change_user_give_gift_logs($uid,$gid,$gift_price,$num,$to_uid,2,$type,$room_id,'');
if(!$give_gift){
Db::rollback();
return ['code' => 0, 'msg' => '送礼失败,请重试!', 'data' => null];
@@ -1414,8 +1415,7 @@ class SendGift extends Model
}
//记录用户送礼日志
//记录用户送礼日志(送单人)
public function change_user_give_gift_log($uid,$gid,$gift_price,$num,$to_id,$from_type,$type,$from_id,$remarks,$pit_number = 0,$gitf_type =1)
{
$data = [
@@ -1434,6 +1434,122 @@ class SendGift extends Model
'createtime' => time(),
];
// 插入数据库
$model = new GiveGiftBase();
$result = $model->addGiftRecord($data);
if($result !== false){
//记录小时榜
model('api/RoomHourRanking')->addGiftHourlySum($from_id,$gift_price);
//记录房间流水 ($roomId, $amount)
model('api/RoomDailyIncome')->addDailyIncome($from_id,$gift_price);
//收礼人认证歌手等级升级
model('api/SingerSong')->singerLevelUp($to_id,$gift_price);
//收礼人身价计算 这里的增长身价是收礼物的价值按比率产生的身价值 身价=收礼产生的身价+签约时的溢价
$coin_market_value = get_system_config_value('coin_market_value');
if(!$coin_market_value){
$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);
//收礼人是否被签约 给上级返佣
model('api/Sign')->check_sign_gift($to_id,$gid,$num,$gift_price,$from_id);
//记录公会流水
if($from_id > 0){
model('api/Guild')->guild_flow($from_id,$gift_price,$data['id']);
}
//查询是否第一次送礼
$is_first_gift = db::name('user_data')->where(['user_id'=>$uid])->value('first_give_gift');
if($is_first_gift == 0){
//任务7-第一次送礼
model('api/Tasks')->tasks_complete($uid,7);
db::name('user_data')->where(['user_id'=>$uid])->update(['first_give_gift'=>1]);
}
//查询是否第一次收礼
$is_first_receive_gift = db::name('user_data')->where(['user_id'=>$uid])->value('first_receive_gift');
if($is_first_receive_gift == 0){
//任务8-第一次收礼
model('api/Tasks')->tasks_complete($to_id,8);
db::name('user_data')->where(['user_id'=>$uid])->update(['first_receive_gift'=>1]);
}
//查询收礼人和送礼人的师徒关系
//获取系统配置的特殊礼物
$special_gift = explode(',',get_system_config_value('master_special_gift'));
//收礼人是否是送礼人的师父
$is_master = db::name('vs_user_sign')->where(['parent_user_id'=>$to_id,'sign_user_id'=>$uid,'end_time' => ['>=',time()]])->find();
if($is_master){
if(in_array($gid,$special_gift)){
//任务14-每日给师傅送一个特定的礼物
model('api/Tasks')->tasks_complete($uid,14);
//查询今天是否送过礼物了
$is_today_gift = db::name('vs_give_gift')
->where(['user_id'=>$uid,'gift_user'=>$to_id,'createtime' => ['>=',strtotime(date('Y-m-d'))],'gift_id' => ['in',$special_gift]])->count();
if($is_today_gift <= 1){
//任务13-每日收到至少3个徒弟的特殊徐礼物
model('api/Tasks')->tasks_complete($to_id,13);
}
}
}
//收礼人是否是送礼人的徒弟
$is_student = db::name('vs_user_sign')->where(['parent_user_id'=>$uid,'sign_user_id'=>$to_id,'end_time' => ['>=',time()]])->find();
if($is_student){
if(in_array($gid,$special_gift)){
//查询徒弟是否是首签的徒弟 sign_user_type:被签用户的类型0-首次被签1-签约过期2-违约签
$is_students = db::name('vs_user_sign')
->where(['parent_user_id' => $uid,'sign_user_id' => $to_id,'sign_user_type' => 0,'end_time' => ['>',time()]])->value('id');
if($is_students){
//获取房间的类型
$room_type = db::name('vs_room')->where(['id' => $from_id])->value('type_id');
if($room_type == 2){
//任务21-邀请徒弟在拍卖房停留0/5分钟并送给徒弟0/1 ,特殊礼物)
model('api/Tasks')->tasks_complete($uid,21,2,$to_id);
}
if($room_type == 9){
//任务22-邀请徒弟在点唱房点歌0/1并送给徒弟0/1 ,特殊礼物)
model('api/Tasks')->tasks_complete($uid,22,2,$to_id);
}
if($room_type == 7) {
//任务23-邀请徒弟在交友房停留0/5分钟并送给徒弟0/1 ,特殊礼物)
model('api/Tasks')->tasks_complete($uid, 23, 2,$to_id);
}
}
}
}
return $data['id'];
}else{
return false;
}
}
//记录用户送礼日志 (送多人)
public function change_user_give_gift_logs($uid,$gid,$gift_price,$num,$to_id,$from_type,$type,$from_id,$remarks,$pit_number = 0,$gitf_type =1)
{
$data = [
'id' => Snowflake::generate(),// 生成雪花ID
'user_id' => $uid,
'gift_id' => $gid,
'gift_type' => $gitf_type,
'number' => $num,
'gift_user' => $to_id,
'pit_number' => $pit_number,
'from_id' => $from_id,//来源ID房间ID或动态ID
'total_price' => $gift_price,
'from' => $from_type,//1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 6Cp电影房
'type' => $type,//1金币购买 2送背包礼物
'remarks' => $remarks??'',
'createtime' => time(),
];
GiftQueue::push($data);//推入队列
//记录小时榜
model('api/RoomHourRanking')->addGiftHourlySum($from_id,$gift_price);