续签 收礼返佣

This commit is contained in:
2025-11-27 11:48:53 +08:00
parent 7c950d0a0e
commit 0f867666e7
6 changed files with 188 additions and 18 deletions

View File

@@ -65,4 +65,38 @@ class Sign extends BaseCom
return V($reslut['code'], $reslut['msg'], $reslut['data']); return V($reslut['code'], $reslut['msg'], $reslut['data']);
} }
//免费续约
public function free_re_sign()
{
$sign_user_id = input('user_id', 0);
if ($sign_user_id <= 0) {
return ['code' => 0, 'msg' => '参数错误'];
}
$reslut = model('Sign')->free_re_sign($this->uid, $sign_user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//续签
public function re_sign()
{
$sign_user_id = input('user_id', 0);
if ($sign_user_id <= 0) {
return ['code' => 0, 'msg' => '参数错误'];
}
$reslut = model('Sign')->re_sign($this->uid, $sign_user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//才艺列表
public function skill_list()
{
$skill_list = [
'唱歌','脱口秀','口技','喊麦','相声'
];
return ['code' => 1, 'msg' => '成功', 'data' => $skill_list];
}
} }

View File

@@ -82,12 +82,12 @@ class Family extends Model
$myFamily['group_owner_info']['nobility_image'] = $Nobility['play_image']; $myFamily['group_owner_info']['nobility_image'] = $Nobility['play_image'];
$myFamily['group_owner_info']['nickname_color'] = $Nobility['nick_name_color']; $myFamily['group_owner_info']['nickname_color'] = $Nobility['nick_name_color'];
$myFamily['group_members_num'] = db::name('vs_user_sign')->where(['parent_user_id' => $myFamily['user_id'],'end_time' => ['>',time()]])->count(); $myFamily['group_members_num'] = db::name('vs_user_sign')->where(['parent_user_id' => $myFamily['user_id']])->count();
$myFamily['group_earnings'] = db::name('vs_user_sign_earnings')->where('user_id',$myFamily['user_id'])->sum('earnings'); $myFamily['group_earnings'] = db::name('vs_user_sign_earnings')->where('user_id',$myFamily['user_id'])->sum('earnings');
$lists= db::name('vs_user_sign')->alias('a') $lists= db::name('vs_user_sign')->alias('a')
->join('user b','a.sign_user_id = b.id') ->join('user b','a.sign_user_id = b.id')
->field('b.market_value,b.nickname,b.avatar,b.user_code,a.sign_user_id as user_id,a.type,a.end_time,a.sign_user_type') ->field('b.is_online,b.market_value,b.nickname,b.avatar,b.user_code,a.sign_user_id as user_id,a.type,a.end_time,a.sign_user_type')
->where(['parent_user_id' => $myFamily['user_id'],'end_time' => ['>',time()]]) ->where(['parent_user_id' => $myFamily['user_id'],'end_time' => ['>',time()]])
->select(); ->select();
if($lists){ if($lists){
@@ -117,7 +117,22 @@ class Family extends Model
$lists[$k]['yesterday_earnings'] = db::name('vs_user_money_log') $lists[$k]['yesterday_earnings'] = db::name('vs_user_money_log')
->where(['user_id' => $v['user_id'],'money_type' => 2,'change_type' =>11,'createtime' => ['between',[strtotime(date('Y-m-d',strtotime('-1 day'))),strtotime(date('Y-m-d'))]]]) ->where(['user_id' => $v['user_id'],'money_type' => 2,'change_type' =>11,'createtime' => ['between',[strtotime(date('Y-m-d',strtotime('-1 day'))),strtotime(date('Y-m-d'))]]])
->sum('change_value'); ->sum('change_value');
$lists[$k]['is_show_sign'] = $v['end_time'] - time() < 48*3600 ? 1 : 0;
$lists[$k]['sign_times'] = get_system_config_value('sign_times');//非首签签约时长
$lists[$k]['sign_user_ratio'] = get_system_config_value('sign_user_ratio');//签约者身价的百分比
//end_time 换算为天数不足1天按小时显示
$remaining_time = $v['end_time'] - time();
if ($remaining_time > 0) {
$days = floor($remaining_time / (24 * 3600));
if ($days > 0) {
$lists[$k]['end_day'] = $days . '天';
} else {
$hours = ceil($remaining_time / 3600);
$lists[$k]['end_day'] = $hours . '小时';
}
} else {
$lists[$k]['end_day'] = '已过期';
}
} }
} }

View File

@@ -202,6 +202,9 @@ class GiveGift extends Model
$change_value = ceil($gift_price / ($coin_market_values[0] ?? 100) * ($coin_market_values[1] ?? 1)); $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/MarketValue')->change($to_id,$change_value,0);
//收礼人是否被签约 给上级返佣
model('api/Sign')->check_sign_gift($to_id,$gid,$num,$gift_price,$from_id);
//1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 5系统任务 6-cp房间送礼 //1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 5系统任务 6-cp房间送礼
if($from_type == 1 || $from_type == 2 || $from_type == 3 ||$from_type == 4 || $from_type == 6){ if($from_type == 1 || $from_type == 2 || $from_type == 3 ||$from_type == 4 || $from_type == 6){
//增加收益并记录日志 //增加收益并记录日志
@@ -908,8 +911,8 @@ class GiveGift extends Model
// 1.系统调节 2.充值 3.提现 4.金币转增(送出) 5.每日任务奖励 6.充值返利 7.购买装扮 // 1.系统调节 2.充值 3.提现 4.金币转增(送出) 5.每日任务奖励 6.充值返利 7.购买装扮
// 8.礼盒奖励 9.房间补贴 10.购买礼物 11.收礼增加收益 12.工会补贴 13.转赠金币(接收) 14.收益兑换 // 8.礼盒奖励 9.房间补贴 10.购买礼物 11.收礼增加收益 12.工会补贴 13.转赠金币(接收) 14.收益兑换
// 15.首充 16.天降好礼充值 17.退出工会扣款 18.房主收益 19.主持人收益 20.抢头条 21.公会长收益22.提现驳回或提现失败返还23.财富等级奖励金币领取24.删除关系扣金币, // 15.首充 16.天降好礼充值 17.退出工会扣款 18.房主收益 19.主持人收益 20.抢头条 21.公会长收益22.提现驳回或提现失败返还23.财富等级奖励金币领取24.删除关系扣金币,
//50-签约,51-签约失败退回,52-首次被签约收入54-叛徒补偿 //50-签约,51-签约失败退回,52-首次被签约收入54-叛徒补偿55-徒弟收礼返佣56-续约
if(in_array($change_type,[1,2,3,4,5,6,7,8,12,13,14,15,16,17,20])){ if(in_array($change_type,[1,2,3,4,5,6,7,8,12,13,14,15,16,17,20,56])){
$room_ids = 0; $room_ids = 0;
}else{ }else{
$room_ids = $room_id; $room_ids = $room_id;
@@ -935,7 +938,7 @@ class GiveGift extends Model
//增加用户金币类型 //增加用户金币类型
$in_types = [2,5,6,8,13,14,15,16,51]; $in_types = [2,5,6,8,13,14,15,16,51];
//减少用户金币类型 //减少用户金币类型
$out_types = [4,7,10,17,20,50]; $out_types = [4,7,10,17,20,50,56];
if(in_array($change_type,$in_types)){ if(in_array($change_type,$in_types)){
//增加用户金币 //增加用户金币
$res1 = Db::name('user_wallet')->where(['user_id'=>$user_id])->setInc('coin',$money); $res1 = Db::name('user_wallet')->where(['user_id'=>$user_id])->setInc('coin',$money);
@@ -951,7 +954,7 @@ class GiveGift extends Model
} }
}elseif ($money_type == 2){//2钻石 }elseif ($money_type == 2){//2钻石
//增加用户钻石类型 //增加用户钻石类型
$in_types = [9,11,12,18,19,21,52,54]; $in_types = [9,11,12,18,19,21,52,54,55];
//减少用户钻石类型 //减少用户钻石类型
$out_types = [3,14]; $out_types = [3,14];
if(in_array($change_type,$in_types)){ if(in_array($change_type,$in_types)){

View File

@@ -163,6 +163,7 @@ class Sign extends Model
//查询签约用户的身份 是否是第一次被签 是否当前有签 //查询签约用户的身份 是否是第一次被签 是否当前有签
$is_first_sign = db::name('vs_user_sign')->where('sign_user_id',$sign_user_id)->count(); $is_first_sign = db::name('vs_user_sign')->where('sign_user_id',$sign_user_id)->count();
$before_sign_user = null; $before_sign_user = null;
$is_sign = null;
if($is_first_sign < 1){ if($is_first_sign < 1){
//第一次被签平台抽成 //第一次被签平台抽成
$sign_app_ratio = get_system_config_value('first_sign_app_ratio'); $sign_app_ratio = get_system_config_value('first_sign_app_ratio');
@@ -172,14 +173,10 @@ class Sign extends Model
$sign_app_ratio = get_system_config_value('sign_app_ratio'); $sign_app_ratio = get_system_config_value('sign_app_ratio');
//查找该用户是否在约 //查找该用户是否在约
$sign_user_type = 1; $sign_user_type = 1;
$is_sign = db::name('vs_user_sign')->where(['sign_user_id' => $sign_user_id])->select(); $is_sign = db::name('vs_user_sign')->where(['sign_user_id' => $sign_user_id,'end_time' => ['>',time()]])->find();
if($is_sign){ if($is_sign){
foreach ($is_sign as $k => $v){ $sign_user_type = 2;
if($v['end_time'] >= time()){ $before_sign_user = $is_sign['user_id'];
$sign_user_type = 2;
$before_sign_user = $v['user_id'];
}
}
} }
} }
//获取签约出价最高的 //获取签约出价最高的
@@ -278,6 +275,15 @@ class Sign extends Model
db::rollback(); db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null]; return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
} }
//上任签约信息修改
if($is_sign){
$result5 = db::name('vs_user_sign')->where(['id' => $is_sign['id']])
->update(['end_time' => time(),'type' => 3]);
if(!$result5){
db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
}
} }
db::commit(); db::commit();
//给前端推送 //给前端推送
@@ -307,4 +313,108 @@ class Sign extends Model
return ['code' => 1, 'msg' => '操作成功', 'data' => null]; return ['code' => 1, 'msg' => '操作成功', 'data' => null];
} }
/*
* 收礼检查是否有被签约和在合约期内 给上级返佣
* @param $user_id 用户id
* @param $gift_id 礼物id
* @param $gift_num 礼物数量
* @param $gift_price 礼物价格
* @param $room_id 房间id
*/
public function check_sign_gift($user_id,$gift_id,$gift_num,$gift_price,$room_id){
//获取用户签约信息
$sign_info = db::name('vs_user_sign')->where(['sign_user_id' => $user_id,'end_time' => ['>',time()]])->find();
if(!$sign_info){
return true;
}
$give_sign_ratio = get_system_config_value('give_sign_ratio');
$earnings = $gift_price * $give_sign_ratio / 100;
$data = [
'user_id' => $sign_info['parent_user_id'],
'sign_user_id' => $user_id,
'gift_id' => $gift_id,
'gift_num' => $gift_num,
'earnings' => $earnings,
'createtime' => time()
];
$result = db::name('vs_user_sign_earnings')->insert($data);
if($result){
$result4 = model('api/GiveGift') -> change_user_cion_or_earnings_log($sign_info['parent_user_id'],$earnings,$room_id,2,55,'签约用户收礼返佣');
if(!$result4){
return true;
}
}
return true;
}
/*
* 免费续签
* @param $user_id 用户id
* @param $sign_user_id 签约麦的用户id
*/
public function free_re_sign($user_id,$sign_user_id){
$first_sign_info = db::name('vs_user_sign')
->where(['sign_user_id' => $sign_user_id])->count();
if($first_sign_info > 1){
return ['code' => 0, 'msg' => '该用户已不满足免费续签条件', 'data' => null];
}
$sign_info = db::name('vs_user_sign')
->where(['user_id' => $user_id,'sign_user_id' => $sign_user_id,'end_time' => ['>',time()]])->find();
if(!$sign_info){
return ['code' => 0, 'msg' => '您没有签约该用户或该用户已解约', 'data' => null];
}
if($sign_info['type'] >= 3){
return ['code' => 0, 'msg' => '免费续签次数已用完', 'data' => null];
}
$end_time = $sign_info['end_time'] + 86400 * get_system_config_value('free_re_sign_day');
$res = db::name('vs_user_sign')->where(['id' => $sign_info['id']])->update(['type' => $sign_info['type']+1,'end_time' => $end_time]);
if(!$res){
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
return ['code' => 1, 'msg' => '操作成功', 'data' => null];
}
/*
* 续签
* @param $user_id 用户id
* @param $sign_user_id 签约麦的用户id
*/
public function re_sign($user_id,$sign_user_id){
$sign_info = db::name('vs_user_sign')
->where(['user_id' => $user_id,'sign_user_id' => $sign_user_id,'end_time' => ['>',time()]])->find();
if(!$sign_info){
return ['code' => 0, 'msg' => '您没有签约该用户或该用户已解约', 'data' => null];
}
//获取被签约用户当前身价
$market_value = db::name('user')->where('id',$sign_user_id)->value('market_value');
//获取系统配置的签约身价百分比
$sign_market_value = get_system_config_value('sign_user_ratio');
//获取系统配置非首签签约时长
$sign_times = get_system_config_value('sign_times');
//获取签约者的金币
$coin = db::name('user_wallet')->where('user_id',$user_id)->value('coin');
if($coin < $market_value * $sign_market_value){
return ['code' => 0, 'msg' => '您的金币不足', 'data' => null];
}
$end_time = $sign_info['end_time'] + 86400 * $sign_times;
//开启事务
db::startTrans();
$res = db::name('vs_user_sign')->where(['id' => $sign_info['id']])->update(['type' => 1,'end_time' => $end_time]);
if(!$res){
db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
$res2 = model('api/GiveGift') -> change_user_cion_or_earnings_log($user_id,$market_value * $sign_market_value,0,2,56,'续约');
if(!$res2){
db::rollback();
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
}
db::commit();
return ['code' => 1, 'msg' => '操作成功', 'data' => null];
}
} }

View File

@@ -51,16 +51,16 @@ class UserWallet extends Model
// 8.礼盒奖励 9.房间补贴 10.购买礼物 11.收礼增加收益 12.工会补贴 13.转赠金币(接收) 14.收益兑换 // 8.礼盒奖励 9.房间补贴 10.购买礼物 11.收礼增加收益 12.工会补贴 13.转赠金币(接收) 14.收益兑换
// 15.首充 16.天降好礼充值 17.退出工会扣款 18.房主收益 19.主持人收益20.发布头条扣除余额,21.公会长收益,22.提现驳回或提现失败返还,23.财富等级奖励金币领取,24.删除关系扣金币 // 15.首充 16.天降好礼充值 17.退出工会扣款 18.房主收益 19.主持人收益20.发布头条扣除余额,21.公会长收益,22.提现驳回或提现失败返还,23.财富等级奖励金币领取,24.删除关系扣金币
//27.小时榜获得28-新人充值好礼,32-发红包金币29-发红包钻石30-抢红包金币31-抢红包(钻石) 33-红包剩余退回金币34-红包剩余退回(钻石) //27.小时榜获得28-新人充值好礼,32-发红包金币29-发红包钻石30-抢红包金币31-抢红包(钻石) 33-红包剩余退回金币34-红包剩余退回(钻石)
//50-签约 51-签约失败退回,52-首次被签约收入 53-师徒签到 54-叛徒补偿 //50-签约 51-签约失败退回,52-首次被签约收入 53-师徒签到 54-叛徒补偿,55-徒弟收礼返佣56-续约
if($gift_type == 1){ //1金币2收益钻石 if($gift_type == 1){ //1金币2收益钻石
if($in_out_type == 1){//1收入 if($in_out_type == 1){//1收入
$in_out_types = [2,5,6,8,13,14,15,16,22,23,26,27,30,28,33,51]; $in_out_types = [2,5,6,8,13,14,15,16,22,23,26,27,30,28,33,51];
}elseif($in_out_type == 2){//2支出 }elseif($in_out_type == 2){//2支出
$in_out_types = [4,7,10,17,20,24,25,32,50]; $in_out_types = [4,7,10,17,20,24,25,32,50,56];
} }
}elseif($gift_type == 2){ //1金币2收益钻石 }elseif($gift_type == 2){ //1金币2收益钻石
if($in_out_type == 1){//1收入 if($in_out_type == 1){//1收入
$in_out_types = [6,9,11,12,18,19,21,22,31,28,34,52,53,54]; $in_out_types = [6,9,11,12,18,19,21,22,31,28,34,52,53,54,55];
}elseif($in_out_type == 2){//2支出 }elseif($in_out_type == 2){//2支出
$in_out_types = [3,14,29]; $in_out_types = [3,14,29];
} }

View File

@@ -102,6 +102,10 @@ class UserWallet extends Model
const SIGN_MASTER_DAILY_RETURN = 53; const SIGN_MASTER_DAILY_RETURN = 53;
//叛徒补偿 //叛徒补偿
const BELIEVER_COMPENSATION = 54; const BELIEVER_COMPENSATION = 54;
//被签约者收礼返佣给上级
const SIGN_BE_SIGNED_INCOME = 55;
//续约
const RENEWAL = 56;
//金币支出类型数组 //金币支出类型数组
@@ -114,6 +118,7 @@ class UserWallet extends Model
self::TRANSFER_COIN, self::TRANSFER_COIN,
self::RED_PACKET_COIN, self::RED_PACKET_COIN,
self::SIGN, self::SIGN,
self::RENEWAL,
]; ];
//钻石支出类型数组 //钻石支出类型数组
public $diamond_consumption_type_array = [ public $diamond_consumption_type_array = [
@@ -181,7 +186,10 @@ class UserWallet extends Model
self::SIGN_FAILURE => '签约失败退回', self::SIGN_FAILURE => '签约失败退回',
self::FIRST_SIGN_INCOME => '首次被签约收入', self::FIRST_SIGN_INCOME => '首次被签约收入',
self::SIGN_MASTER_DAILY_RETURN => '签约师傅每日返还', self::SIGN_MASTER_DAILY_RETURN => '签约师傅每日返还',
self::BELIEVER_COMPENSATION => '解约补偿' self::BELIEVER_COMPENSATION => '解约补偿',
self::SIGN_BE_SIGNED_INCOME => '被签约者收礼返佣给上级',
self::RENEWAL => '续约'
]; ];
if($type){ if($type){
return $status[$type] ?? ''; return $status[$type] ?? '';