我的家族 签约过期
This commit is contained in:
@@ -85,10 +85,16 @@ class Family extends Model
|
||||
$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');
|
||||
|
||||
$lists= db::name('vs_user_sign')->alias('a')
|
||||
->join('user b','a.sign_user_id = b.id')
|
||||
->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()]])
|
||||
// $lists= db::name('vs_user_sign')->alias('a')
|
||||
// ->join('user b','a.sign_user_id = b.id')
|
||||
// ->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()]])
|
||||
// ->select();
|
||||
$lists= db::name('vs_family')->alias('a')
|
||||
->join('user b','a.user_id = b.id')
|
||||
->join('vs_user_sign c','a.user_id = c.sign_user_id')
|
||||
->field('b.is_online,b.market_value,b.nickname,b.avatar,b.user_code,c.type,c.end_time,c.sign_user_type,a.user_id')
|
||||
->where(['a.pid' => $myFamily['user_id'],'a.deletetime' => ['<>',0],'a.type' => 0])
|
||||
->select();
|
||||
if($lists){
|
||||
foreach ($lists as $k => $v){
|
||||
@@ -142,6 +148,4 @@ class Family extends Model
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -180,173 +180,192 @@ class Sign extends Model
|
||||
if($sign['sign_type'] != 1){
|
||||
return ['code' => 0, 'msg' => '该场次签约已结束', 'data' => null];
|
||||
}
|
||||
|
||||
$before_sign_user = null;
|
||||
$is_sign = null;
|
||||
//查询签约用户的身份 是否是第一次被签 是否当前有签
|
||||
$is_first_sign = db::name('vs_user_sign')->where('sign_user_id',$sign_user_id)->count();
|
||||
if($is_first_sign < 1){
|
||||
//第一次被签平台抽成
|
||||
$sign_app_ratio = get_system_config_value('first_sign_app_ratio');
|
||||
$sign_user_type = 0;
|
||||
$sign_times = get_system_config_value('first_sign_times');
|
||||
}else{
|
||||
//不是第一次被签平台抽成
|
||||
$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,'end_time' => ['>',time()]])->find();
|
||||
if($is_sign){
|
||||
$sign_user_type = 2;
|
||||
$before_sign_user = $is_sign['user_id'];
|
||||
}
|
||||
$sign_times = get_system_config_value('sign_times');
|
||||
}
|
||||
//获取签约出价最高的
|
||||
$max_sign_user = db::name('vs_user_sign_auction')->where(['room_id' => $room_id,'sign_time' => $sign_time])->order('sign_value desc')->find();
|
||||
//开启事务
|
||||
db::startTrans();
|
||||
//修改他的状态
|
||||
$result = db::name('vs_user_sign_auction')->where(['id' => $max_sign_user['id']])->update(['type' => 1,'signtime' => time()]);
|
||||
//签约
|
||||
$data = [
|
||||
'parent_user_id' => $max_sign_user['user_id'],
|
||||
'sign_user_id' => $max_sign_user['sign_user_id'],
|
||||
'sign_user_type' => $sign_user_type,
|
||||
'sign_times' => $sign_times*24*60*60,
|
||||
'end_time' => time() + $sign_times*24*60*60,
|
||||
'createtime' => time(),
|
||||
];
|
||||
$result1 = db::name('vs_user_sign')->insert($data);
|
||||
if(!$result || !$result1){
|
||||
db::rollback();
|
||||
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
|
||||
}
|
||||
//查看当前出价用户是否创建家族
|
||||
$is_create_family = db::name('vs_family')->where(['user_id' => $max_sign_user['user_id'],'type' => 1])->find();
|
||||
if($is_create_family){
|
||||
//拉进家族和群聊
|
||||
$data2 = [
|
||||
'name' => $is_create_family['name'],
|
||||
'pid' => $max_sign_user['user_id'],
|
||||
'user_id' => $max_sign_user['sign_user_id'],
|
||||
if($max_sign_user){
|
||||
$before_sign_user = null;
|
||||
$is_sign = null;
|
||||
//查询签约用户的身份 是否是第一次被签 是否当前有签
|
||||
$is_first_sign = db::name('vs_user_sign')->where('sign_user_id',$sign_user_id)->count();
|
||||
if($is_first_sign < 1){
|
||||
//第一次被签平台抽成
|
||||
$sign_app_ratio = get_system_config_value('first_sign_app_ratio');
|
||||
$sign_user_type = 0;
|
||||
$sign_times = get_system_config_value('first_sign_times');
|
||||
}else{
|
||||
//不是第一次被签平台抽成
|
||||
$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,'end_time' => ['>',time()]])->find();
|
||||
if($is_sign){
|
||||
$sign_user_type = 2;
|
||||
$before_sign_user = $is_sign['user_id'];
|
||||
}
|
||||
$sign_times = get_system_config_value('sign_times');
|
||||
}
|
||||
//开启事务
|
||||
db::startTrans();
|
||||
//修改他的状态
|
||||
$result = db::name('vs_user_sign_auction')->where(['id' => $max_sign_user['id']])->update(['type' => 1,'signtime' => time()]);
|
||||
//签约
|
||||
$data = [
|
||||
'parent_user_id' => $max_sign_user['user_id'],
|
||||
'sign_user_id' => $max_sign_user['sign_user_id'],
|
||||
'sign_user_type' => $sign_user_type,
|
||||
'sign_times' => $sign_times*24*60*60,
|
||||
'end_time' => time() + $sign_times*24*60*60,
|
||||
'createtime' => time(),
|
||||
];
|
||||
$result22 = db::name('vs_family')->insert($data2);
|
||||
if(!$result22){
|
||||
db::rollback();
|
||||
return ['code' => 0, 'msg' => '网络错误,请重试!!', 'data' => null];
|
||||
}
|
||||
//拉入群聊
|
||||
model('Tencent')->add_group_member('f'.$is_create_family['id'], $max_sign_user['sign_user_id']);
|
||||
}
|
||||
|
||||
//其他的出价退回到用户的钱包 这个是为了防止上面并发产生的没退款用户
|
||||
$refund = db::name('vs_user_sign_auction')->where(['room_id' => $room_id,'sign_time' => $sign_time,'type' => 0])->select();
|
||||
if($refund){
|
||||
foreach ($refund as $k => $v){
|
||||
if($v['id'] != $max_sign_user['id']){
|
||||
//给用户退回签约金额记录行为日志
|
||||
$result2[$k] = model('api/GiveGift') -> change_user_cion_or_earnings_log($v['user_id'],$v['sign_value'],$room_id,1,51,'签约失败退款');
|
||||
if(!$result2[$k]){
|
||||
db::rollback();
|
||||
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
|
||||
}
|
||||
$result3[$k] = db::name('vs_user_sign_auction')->where('id',$v['id'])->update(['type' => 2,'refundtime' => time()]);
|
||||
if(!$result3[$k]){
|
||||
db::rollback();
|
||||
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//根据被签约的用户类型计算给响应用户的金额
|
||||
//减去平台抽成 剩余的给相应的人
|
||||
$sign_user_cion = $max_sign_user['sign_value'] * (100 - $sign_app_ratio) / 100;//金币数
|
||||
//计算收益
|
||||
$shouyizs = coin_earning($sign_user_cion,100 - $sign_app_ratio);
|
||||
if($sign_user_type == 0){
|
||||
//首次签约 给被签约的人
|
||||
$result4 = model('api/GiveGift') -> change_user_cion_or_earnings_log($max_sign_user['sign_user_id'],$shouyizs,$room_id,2,52,'被首次签约成功收入');
|
||||
if(!$result4){
|
||||
$result1 = db::name('vs_user_sign')->insert($data);
|
||||
if(!$result || !$result1){
|
||||
db::rollback();
|
||||
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
|
||||
}
|
||||
}elseif ($sign_user_type == 1){
|
||||
//签过 给被签约的人分七天给他
|
||||
// 数据插入 循环插入7条数据 day 取值是今天开始连续七天 的每一天的值 到天
|
||||
for ($i = 0; $i < 7; $i++){
|
||||
$data1 = [
|
||||
//查看当前出价用户是否创建家族
|
||||
$is_create_family = db::name('vs_family')->where(['user_id' => $max_sign_user['user_id'],'type' => 1])->find();
|
||||
if($is_create_family){
|
||||
//拉进家族和群聊
|
||||
$data2 = [
|
||||
'name' => $is_create_family['name'],
|
||||
'pid' => $max_sign_user['user_id'],
|
||||
'user_id' => $max_sign_user['sign_user_id'],
|
||||
'value' => round($shouyizs/7, 4),
|
||||
'day' => date('Y-m-d', strtotime("+$i days")), // 从今天开始连续七天的日期
|
||||
'times' => $i+1,
|
||||
'createtime' => time()
|
||||
'createtime' => time(),
|
||||
];
|
||||
// 插入数据库
|
||||
$result[$i] = db::name('vs_user_sign_task')->insert($data1);
|
||||
if(!$result[$i]){
|
||||
$result22 = db::name('vs_family')->insert($data2);
|
||||
if(!$result22){
|
||||
db::rollback();
|
||||
return ['code' => 0, 'msg' => '网络错误,请重试!!', 'data' => null];
|
||||
}
|
||||
//拉入群聊
|
||||
model('Tencent')->add_group_member('f'.$is_create_family['id'], $max_sign_user['sign_user_id']);
|
||||
}
|
||||
|
||||
//其他的出价退回到用户的钱包 这个是为了防止上面并发产生的没退款用户
|
||||
$refund = db::name('vs_user_sign_auction')->where(['room_id' => $room_id,'sign_time' => $sign_time,'type' => 0])->select();
|
||||
if($refund){
|
||||
foreach ($refund as $k => $v){
|
||||
if($v['id'] != $max_sign_user['id']){
|
||||
//给用户退回签约金额记录行为日志
|
||||
$result2[$k] = model('api/GiveGift') -> change_user_cion_or_earnings_log($v['user_id'],$v['sign_value'],$room_id,1,51,'签约失败退款');
|
||||
if(!$result2[$k]){
|
||||
db::rollback();
|
||||
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
|
||||
}
|
||||
$result3[$k] = db::name('vs_user_sign_auction')->where('id',$v['id'])->update(['type' => 2,'refundtime' => time()]);
|
||||
if(!$result3[$k]){
|
||||
db::rollback();
|
||||
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//根据被签约的用户类型计算给响应用户的金额
|
||||
//减去平台抽成 剩余的给相应的人
|
||||
$sign_user_cion = $max_sign_user['sign_value'] * (100 - $sign_app_ratio) / 100;//金币数
|
||||
//计算收益
|
||||
$shouyizs = coin_earning($sign_user_cion,100 - $sign_app_ratio);
|
||||
if($sign_user_type == 0){
|
||||
//首次签约 给被签约的人
|
||||
$result4 = model('api/GiveGift') -> change_user_cion_or_earnings_log($max_sign_user['sign_user_id'],$shouyizs,$room_id,2,52,'被首次签约成功收入');
|
||||
if(!$result4){
|
||||
db::rollback();
|
||||
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
|
||||
}
|
||||
}
|
||||
}elseif ($sign_user_type == 2){
|
||||
//签过没过期 给上任签约者
|
||||
$result4 = model('api/GiveGift') -> change_user_cion_or_earnings_log($before_sign_user,$shouyizs,$room_id,2,54,'解约补偿');
|
||||
if(!$result4){
|
||||
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){
|
||||
}elseif ($sign_user_type == 1){
|
||||
//签过 给被签约的人分七天给他
|
||||
// 数据插入 循环插入7条数据 day 取值是今天开始连续七天 的每一天的值 到天
|
||||
for ($i = 0; $i < 7; $i++){
|
||||
$data1 = [
|
||||
'user_id' => $max_sign_user['sign_user_id'],
|
||||
'value' => round($shouyizs/7, 4),
|
||||
'day' => date('Y-m-d', strtotime("+$i days")), // 从今天开始连续七天的日期
|
||||
'times' => $i+1,
|
||||
'createtime' => time()
|
||||
];
|
||||
// 插入数据库
|
||||
$result[$i] = db::name('vs_user_sign_task')->insert($data1);
|
||||
if(!$result[$i]){
|
||||
db::rollback();
|
||||
return ['code' => 0, 'msg' => '网络错误,请重试', 'data' => null];
|
||||
}
|
||||
}
|
||||
}elseif ($sign_user_type == 2){
|
||||
//签过没过期 给上任签约者
|
||||
$result4 = model('api/GiveGift') -> change_user_cion_or_earnings_log($before_sign_user,$shouyizs,$room_id,2,54,'解约补偿');
|
||||
if(!$result4){
|
||||
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];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//修改房间信息
|
||||
$res1 = db::name('vs_room')->where('id',$room_id)->update([
|
||||
'sign_type' => 0,
|
||||
'updatetime' => time()
|
||||
]);
|
||||
//修改房间签约信息
|
||||
$res2 = db::name('vs_room_sign')->where(['id' => $sign_time])
|
||||
->update([
|
||||
//修改房间信息
|
||||
$res1 = db::name('vs_room')->where('id',$room_id)->update([
|
||||
'sign_type' => 0,
|
||||
'end_time' => time()
|
||||
'updatetime' => time()
|
||||
]);
|
||||
if(!$res1 || !$res2){
|
||||
db::rollback();
|
||||
return ['code' => 0, 'msg' => '网络错误,请重试.!', 'data' => null];
|
||||
}
|
||||
db::commit();
|
||||
//给前端推送
|
||||
$FromUserInfo = db::name('user')->where('id',$max_sign_user['user_id'])->field('id as user_id,nickname,avatar,sex')->find();
|
||||
$FromUserInfo['icon'][0] = model('api/UserData')->user_wealth_icon($max_sign_user['user_id']);//财富图标
|
||||
$FromUserInfo['icon'][1] = model('api/UserData')->user_charm_icon($max_sign_user['user_id']);//魅力图标
|
||||
//判断是否是歌手 如果是 返回等级图标
|
||||
$isSinnger = db::name('vs_singer')->where(['user_id' => $max_sign_user['user_id'],'status' => 1])->value('level');
|
||||
if($isSinnger){
|
||||
$FromUserInfo['icon'][2] = db::name('vs_singer_level')->where(['level' => $isSinnger,'deletetime' => 0])->value('image');//等级图标
|
||||
}
|
||||
$ToUserInfo = db::name('user')->where('id',$max_sign_user['sign_user_id'])->field('id as user_id,nickname,avatar,sex')->find();
|
||||
$ToUserInfo['icon'][0] = model('api/UserData')->user_wealth_icon($max_sign_user['sign_user_id']);//财富图标
|
||||
$ToUserInfo['icon'][1] = model('api/UserData')->user_charm_icon($max_sign_user['sign_user_id']);//魅力图标
|
||||
//判断是否是歌手 如果是 返回等级图标
|
||||
$isSinnger = db::name('vs_singer')->where(['user_id' => $max_sign_user['sign_user_id'],'status' => 1])->value('level');
|
||||
if($isSinnger){
|
||||
$ToUserInfo['icon'][2] = db::name('vs_singer_level')->where(['level' => $isSinnger,'deletetime' => 0])->value('image');//等级图标
|
||||
//修改房间签约信息
|
||||
$res2 = db::name('vs_room_sign')->where(['id' => $sign_time])
|
||||
->update([
|
||||
'sign_type' => 0,
|
||||
'end_time' => time()
|
||||
]);
|
||||
if(!$res1 || !$res2){
|
||||
db::rollback();
|
||||
return ['code' => 0, 'msg' => '网络错误,请重试.!', 'data' => null];
|
||||
}
|
||||
db::commit();
|
||||
//给前端推送
|
||||
$FromUserInfo = db::name('user')->where('id',$max_sign_user['user_id'])->field('id as user_id,nickname,avatar,sex')->find();
|
||||
$FromUserInfo['icon'][0] = model('api/UserData')->user_wealth_icon($max_sign_user['user_id']);//财富图标
|
||||
$FromUserInfo['icon'][1] = model('api/UserData')->user_charm_icon($max_sign_user['user_id']);//魅力图标
|
||||
//判断是否是歌手 如果是 返回等级图标
|
||||
$isSinnger = db::name('vs_singer')->where(['user_id' => $max_sign_user['user_id'],'status' => 1])->value('level');
|
||||
if($isSinnger){
|
||||
$FromUserInfo['icon'][2] = db::name('vs_singer_level')->where(['level' => $isSinnger,'deletetime' => 0])->value('image');//等级图标
|
||||
}
|
||||
$ToUserInfo = db::name('user')->where('id',$max_sign_user['sign_user_id'])->field('id as user_id,nickname,avatar,sex')->find();
|
||||
$ToUserInfo['icon'][0] = model('api/UserData')->user_wealth_icon($max_sign_user['sign_user_id']);//财富图标
|
||||
$ToUserInfo['icon'][1] = model('api/UserData')->user_charm_icon($max_sign_user['sign_user_id']);//魅力图标
|
||||
//判断是否是歌手 如果是 返回等级图标
|
||||
$isSinnger = db::name('vs_singer')->where(['user_id' => $max_sign_user['sign_user_id'],'status' => 1])->value('level');
|
||||
if($isSinnger){
|
||||
$ToUserInfo['icon'][2] = db::name('vs_singer_level')->where(['level' => $isSinnger,'deletetime' => 0])->value('image');//等级图标
|
||||
}
|
||||
|
||||
$text['text'] = '签约出价最高用户';
|
||||
$text['FromUserInfo'] = $FromUserInfo;
|
||||
$text['ToUserInfo'] = $ToUserInfo;
|
||||
$text['sign_value'] = $max_sign_user['sign_value'];
|
||||
model('api/Chat')->sendMsg(1092,$room_id,$text);
|
||||
}else{
|
||||
//修改房间信息
|
||||
$res1 = db::name('vs_room')->where('id',$room_id)->update([
|
||||
'sign_type' => 0,
|
||||
'updatetime' => time()
|
||||
]);
|
||||
//修改房间签约信息
|
||||
$res2 = db::name('vs_room_sign')->where(['id' => $sign_time])
|
||||
->update([
|
||||
'sign_type' => 0,
|
||||
'end_time' => time()
|
||||
]);
|
||||
$text['text'] = '流拍';
|
||||
$text['FromUserInfo'] = null;
|
||||
$text['ToUserInfo'] = null;
|
||||
$text['sign_value'] = 0;
|
||||
model('api/Chat')->sendMsg(1094,$room_id,$text);
|
||||
}
|
||||
|
||||
$text['text'] = '签约出价最高用户';
|
||||
$text['FromUserInfo'] = $FromUserInfo;
|
||||
$text['ToUserInfo'] = $ToUserInfo;
|
||||
$text['sign_value'] = $max_sign_user['sign_value'];
|
||||
model('api/Chat')->sendMsg(1092,$room_id,$text);
|
||||
//处理麦位
|
||||
$this->pit_number($room_id,0,0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user