续签 收礼返佣

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

@@ -163,6 +163,7 @@ class Sign extends Model
//查询签约用户的身份 是否是第一次被签 是否当前有签
$is_first_sign = db::name('vs_user_sign')->where('sign_user_id',$sign_user_id)->count();
$before_sign_user = null;
$is_sign = null;
if($is_first_sign < 1){
//第一次被签平台抽成
$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_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){
foreach ($is_sign as $k => $v){
if($v['end_time'] >= time()){
$sign_user_type = 2;
$before_sign_user = $v['user_id'];
}
}
$sign_user_type = 2;
$before_sign_user = $is_sign['user_id'];
}
}
//获取签约出价最高的
@@ -278,6 +275,15 @@ class Sign extends Model
db::rollback();
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();
//给前端推送
@@ -307,4 +313,108 @@ class Sign extends Model
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];
}
}