find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $data = []; $data['is_earnings'] = $room_info['is_earnings']; return ['code' => 200, 'msg' => '成功', 'data' => $data]; } //房间补贴信息 public function room_subsidy_info($uid, $rid){ $config = get_uncache_system_config(); $room_info = db::name('room')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } //房间上周流水 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['type', '=', 1]; $last_week_income = db::name('user_charm_count_day')->where($map)->whereTime('add_time', 'last week')->sum('amount'); $last_week_incomes = $last_week_income / $config['exchange_rate']; //房间本周流水 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['type', '=', 1]; $week_income = db::name('user_charm_count_day')->where($map)->whereTime('add_time', 'week')->sum('amount'); $week_incomes = $week_income / $config['exchange_rate']; //房间补贴信息 $room_subsidy_info = db::name('room_subsidy')->field('id,type,level_name,total_gift_price,money')->where('is_delete', 1)->order('id asc')->select(); //上周补贴奖励金额 $subsidy_money = 0; foreach ($room_subsidy_info as $k => &$v){ $money = $v['money']; if($v['total_gift_price'] > $last_week_income){ break; }else{ if($v['type'] == 1){ $subsidy_money = $v['money']; }else{ $subsidy_money = $last_week_income * $money * 0.001; } } } foreach ($room_subsidy_info as $a => &$b){ if($b['type'] == 2){ $b['money'] = $b['money'].'%'; } $b['total_gift_price'] = $b['total_gift_price']/10; } if($room_info['room_owner_uid'] != $uid || $room_info['is_earnings'] == 2){ $data = []; $data['last_week_income'] = 0; $data['last_week_subsidy_money'] = 0; $data['week_income'] = 0; $data['room_subsidy_info'] = $room_subsidy_info; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } $data = []; $data['last_week_income'] = $last_week_incomes; $data['last_week_subsidy_money'] = $subsidy_money; $data['week_income'] = $week_incomes; $data['room_subsidy_info'] = $room_subsidy_info; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //幸运房间补贴信息 public function room_lucky_subsidy_info($uid, $rid){ $config = get_uncache_system_config(); $room_info = db::name('room')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } //房间上周流水 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['type', '=', 2]; $last_week_income = db::name('user_charm_count_day')->where($map)->whereTime('add_time', 'last week')->sum('amount'); $last_week_incomes = $last_week_income / $config['exchange_rate']; //房间本周流水 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['type', '=', 2]; $week_income = db::name('user_charm_count_day')->where($map)->whereTime('add_time', 'week')->sum('amount'); $week_incomes = $week_income / $config['exchange_rate']; //房间补贴信息 $room_subsidy_info = db::name('room_subsidy_lucky')->field('id,type,level_name,total_gift_price,money')->where('is_delete', 1)->order('id asc')->select(); //本周补贴奖励金额 $subsidy_money = 0; foreach ($room_subsidy_info as $k => &$v){ $money = $v['money']; if($v['total_gift_price'] > $last_week_income){ break; }else{ if($v['type'] == 1){ $subsidy_money = $v['money']; }else{ $subsidy_money = $last_week_income * $money * 0.001; } } } foreach ($room_subsidy_info as $a => &$b){ if($b['type'] == 2){ $b['money'] = $b['money'].'%'; } $b['total_gift_price'] = $b['total_gift_price']/10; } if($room_info['room_owner_uid'] != $uid || $room_info['is_earnings'] == 2){ $data = []; $data['last_week_income'] = 0; $data['last_week_subsidy_money'] = 0; $data['week_income'] = 0; $data['room_subsidy_info'] = $room_subsidy_info; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } $data = []; $data['last_week_income'] = $last_week_incomes; $data['last_week_subsidy_money'] = $subsidy_money; $data['week_income'] = $week_incomes; $data['room_subsidy_info'] = $room_subsidy_info; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //用户搜索 public function user_search($uid, $rid, $keywords, $page, $page_limit){ $page = intval($page); $page_limit = $page_limit < 20 ? $page_limit : 20; $room_info = db::name('room')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } if(empty($keywords)){ $data = []; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } $map = []; if(is_numeric($keywords)){//为纯数字 $map[] = ['uid|special_uid', '=', $keywords]; }else{//不是纯数字 $map[] = ['nick_name', 'like', '%'.$keywords.'%']; } $map[] = ['login_status', '=', 1]; $list = db::name('user')->where($map)->field('uid, nick_name, base64_nick_name, head_pic')->page($page, $page_limit)->select(); foreach ($list as $k => &$v){ $v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8'); $v['head_pic'] = localpath_to_netpath($v['head_pic']); } return ['code' => 200, 'msg' => '获取成功', 'data' => $list]; } //房间补贴用户列表 public function get_room_user_subsidy_list($uid, $rid){ $config = get_uncache_system_config(); $room_info = db::name('room')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } //房间上周流水 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['type', '=', 1]; $last_week_income = db::name('user_charm_count_day')->where($map)->whereTime('add_time', 'last week')->sum('amount'); $last_week_incomes = $last_week_income / $config['exchange_rate']; //房间补贴信息 $room_subsidy_info = db::name('room_subsidy')->field('id,type,level_name,total_gift_price,money')->where('is_delete', 1)->order('id asc')->select(); //上周补贴奖励金额 $subsidy_money = 0; foreach ($room_subsidy_info as $k => &$v){ $money = $v['money']; if($v['total_gift_price'] > $last_week_income){ break; }else{ if($v['type'] == 1){ $subsidy_money = $v['money']; }else{ $subsidy_money = $last_week_income * $money * 0.001; } } } $owner_info = db::name('user')->find($room_info['room_owner_uid']); $room_owner_info['uid'] = $room_info['room_owner_uid']; $room_owner_info['nick_name'] = mb_convert_encoding(base64_decode($owner_info['base64_nick_name']), 'UTF-8', 'UTF-8'); $room_owner_info['head_pic'] = localpath_to_netpath($owner_info['head_pic']); $assigned_ratio = 0; $room_subsidy_list = db::name('room_user_subsidy')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('a.id,a.uid,a.rid,b.nick_name,b.base64_nick_name, b.head_pic, a.ratio')->where('a.rid', $rid)->where('a.is_delete', 1)->select(); foreach ($room_subsidy_list as $k => &$v){ $v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8'); $v['head_pic'] = localpath_to_netpath($v['head_pic']); $v['subsidy_money'] = $subsidy_money * $v['ratio'] * 0.01; $assigned_ratio += $v['ratio']; } $surplus_ratio = 100 - $assigned_ratio; $owner_subsidy_money = $subsidy_money * $surplus_ratio * 0.01; $room_owner_info['ratio'] = $surplus_ratio; $room_owner_info['subsidy_money'] = $owner_subsidy_money; $data = []; $data['room_owner_info'] = $room_owner_info; $data['room_subsidy_list'] = $room_subsidy_list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //添加房间补贴用户 public function add_room_user_subsidy($uid, $rid, $user_id, $ratio){ $room_info = db::name('room')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } if($uid != $room_info['room_owner_uid']){ return ['code' => 201, 'msg' => '无权限添加', 'data' => null]; } if($room_info['is_earnings'] == 2){ return ['code' => 201, 'msg' => '当前房间暂未开放收益,请联系管理人员', 'data' => null]; } if($ratio < 0){ return ['code' => 201, 'msg' => '设置主持比例不能小于0', 'data' => null]; } if(ceil($ratio) != $ratio){ return ['code' => 201, 'msg' => '设置比例必须为整数', 'data' => null]; } if(!empty($ratio) && $ratio > 100){ return ['code' => 201, 'msg' => '设置主持比例最大不能超过100%', 'data' => null]; } $user_info = db::name('user')->find($user_id); if(!$user_info){ return ['code' => 201, 'msg' => '该用户不存在', 'data' => null]; } //是否互为好友 $fans_info = db::name('user_follow')->where('uid', $uid)->where('follow_uid', $user_id)->find(); if(!$fans_info){ return ['code' => 201, 'msg' => '你和该用户没有互相关注', 'data' => null]; } $follow_info = db::name('user_follow')->where('follow_uid', $uid)->where('uid', $user_id)->find(); if(!$follow_info){ return ['code' => 201, 'msg' => '你和该用户没有互相关注', 'data' => null]; } //该用户是否已被添加 $info = db::name('room_user_subsidy')->where('rid', $rid)->where('uid', $user_id)->where('is_delete', 1)->find(); if($info){ return ['code' => 201, 'msg' => '该用户已被添加过', 'data' => null]; } //当前剩余可用比例 $subsidy_money = db::name('room_user_subsidy')->where('rid', $rid)->where('is_delete', 1)->sum('ratio'); if($subsidy_money + $ratio > 100){ return ['code' => 201, 'msg' => '设置比例已达上限', 'data' => null]; } $insert = []; $insert['rid'] = $rid; $insert['uid'] = $user_id; $insert['ratio'] = $ratio; $insert['add_time'] = time(); $reslut = db::name('room_user_subsidy')->insert($insert); if(!$reslut){ return ['code' => 201, 'msg' => '添加失败', 'data' => null]; }else{ return ['code' => 200, 'msg' => '添加成功', 'data' => null]; } } //设置当前房间用户补贴 public function update_room_user_subsidy($uid, $rid, $user_id, $ratio){ $room_info = db::name('room')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } if($uid != $room_info['room_owner_uid']){ return ['code' => 201, 'msg' => '无权限编辑', 'data' => null]; } $now_week = date('w'); if($now_week != 1){ return ['code' => 201, 'msg' => '只有周一可设置补贴比例', 'data' => null]; } if($ratio < 0){ return ['code' => 201, 'msg' => '设置主持比例不能小于0', 'data' => null]; } if(ceil($ratio) != $ratio){ return ['code' => 201, 'msg' => '设置比例必须为整数', 'data' => null]; } if(!empty($ratio) && $ratio > 100){ return ['code' => 201, 'msg' => '设置主持比例最大不能超过100%', 'data' => null]; } $user_info = db::name('user')->find($user_id); if(!$user_info){ return ['code' => 201, 'msg' => '该用户不存在', 'data' => null]; } //该用户是否已被添加 $info = db::name('room_user_subsidy')->where('rid', $rid)->where('uid', $user_id)->where('is_delete', 1)->find(); if(!$info){ return ['code' => 201, 'msg' => '当前信息不存在', 'data' => null]; } $next_update_time = time() - $info['update_time']; if($next_update_time < (60*60)){ return ['code' => 201, 'msg' => '编辑间隔不能小于60分钟', 'data' => null]; } //当前剩余可用比例 $map = []; $map[] = ['rid', '=', $rid]; $map[] = ['uid', 'neq', $user_id]; $map[] = ['is_delete', '=', 1]; $subsidy_money = db::name('room_user_subsidy')->where($map)->sum('ratio'); if($subsidy_money + $ratio > 100){ return ['code' => 201, 'msg' => '设置比例已达上限', 'data' => null]; } $update = []; $update['ratio'] = $ratio; $update['update_time'] = time(); $reslut = db::name('room_user_subsidy')->where('id', $info['id'])->update($update); if(!$reslut){ return ['code' => 201, 'msg' => '编辑失败', 'data' => null]; }else{ return ['code' => 200, 'msg' => '编辑成功', 'data' => null]; } } //删除房间用户补贴 public function del_room_user_subsidy($uid, $id, $rid){ $room_info = db::name('room')->find($rid); if(!$room_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } if($uid != $room_info['room_owner_uid']){ return ['code' => 201, 'msg' => '无权限删除', 'data' => null]; } //该用户是否存在 $info = db::name('room_user_subsidy')->where('id', $id)->where('is_delete', 1)->find(); if(!$info){ return ['code' => 201, 'msg' => '当前信息不存在', 'data' => null]; } $reslut = db::name('room_user_subsidy')->where('id', $id)->update(['is_delete' => 2, 'update_time' => time()]); if(!$reslut){ return ['code' => 201, 'msg' => '删除失败', 'data' => null]; }else{ return ['code' => 200, 'msg' => '删除成功', 'data' => null]; } } //获取当前类型的随机房间ID public function now_room_category($uid, $cate_id){ if(empty($cate_id)){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $room_info = db::name('room')->where('cate_id', $cate_id)->where('room_status', 1)->orderRaw('rand()')->find(); if(!$room_info){ return ['code' => 201, 'msg' => '当前类型房间尚不存在', 'data' => null]; } $data = []; $data['rid'] = $room_info['rid']; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //统计上周房间流水 public function statistics_room_last_week_earnings($type){ set_time_limit(0); ini_set('memory_limit', '1024M'); //房间补贴信息 if($type == 1){ $room_subsidy_info = db::name('room_subsidy')->field('id,type,level_name,total_gift_price,money')->where('is_delete', 1)->order('id asc')->select(); }else{ $room_subsidy_info = db::name('room_subsidy_lucky')->field('id,type,level_name,total_gift_price,money')->where('is_delete', 1)->order('id asc')->select(); } $last_week_time = strtotime('-1 week last sunday', time()); //获取所有房间上周流水 $map = []; $map[] = ['type', '=', $type]; $last_week_income = db::name('user_charm_count_day')->where($map)->field('rid,sum(amount) as amount')->whereTime('add_time', 'last week')->group('rid')->select(); $insert_all = []; if(!empty($last_week_income)){ foreach ($last_week_income as $k => $v){ //当前房间是否有收益 $room_is_earnings = db::name('room')->where('rid', $v['rid'])->value('is_earnings'); if($room_is_earnings == 1){ //上周补贴奖励金额 $subsidy_money = 0; if($type == 1){ foreach ($room_subsidy_info as $a => &$b){ $money = $b['money']; if($b['total_gift_price'] > $v['amount']){ break; }else{ if($b['type'] == 1){ $subsidy_money = $b['money']; }else{ $subsidy_money = $v['amount'] * $money * 0.001; } } } }else{ foreach ($room_subsidy_info as $a => &$b){ $money = $b['money']; if($b['total_gift_price'] > $v['amount']){ break; }else{ if($b['type'] == 1){ $subsidy_money = $b['money']; }else{ $subsidy_money = $v['amount'] * $money * 0.001; } } } } //上周是否已添加 $where = []; $where[] = ['rid', '=', $v['rid']]; $where[] = ['type', '=', $type]; $where[] = ['last_week_time', '=', $last_week_time]; $info = db::name('room_week_earnings_log')->where($where)->find(); if(empty($info)){ $insert = []; $insert['rid'] = $v['rid']; $insert['type'] = $type; $insert['change_value'] = $v['amount']; $insert['earnings'] = $subsidy_money; $insert['add_time'] = time(); $insert['last_week_time'] = $last_week_time; $insert_all[] = $insert; } } } if(!empty($insert_all)){ $reslut = db::name('room_week_earnings_log')->insertAll($insert_all); if(!$reslut){ echo date('Y-m-d H:i:s').'执行失败'; } } } echo date('Y-m-d H:i:s').'执行成功'; } //发送用户收益 public function give_user_room_week_earnings($type){ exit; set_time_limit(0); ini_set('memory_limit', '1024M'); $last_week_time = strtotime('-1 week last sunday', time()); if($type == 1){ $user_money_log = 34; $remarks = '房间补贴收益'; }else{ $user_money_log = 35; $remarks = '幸运补贴收益'; } //获取未发送的房间上周收益 $map = []; $map[] = ['type', '=', $type]; $map[] = ['is_delete', '=', 1]; $map[] = ['last_week_time', '=', $last_week_time]; $list = db::name('room_week_earnings_log')->where($map)->select(); if(!empty($list)){ foreach ($list as $k => $v){ if($v['earnings'] > 0){ Db::startTrans(); try { $insert_all = []; $assigned_ratio = 0; //获取房间补贴用户 $where = []; $where[] = ['rid', '=', $v['rid']]; $where[] = ['ratio', '>', 0]; $where[] = ['is_delete', '=', 1]; $room_subsidy_list = db::name('room_user_subsidy')->where($where)->select(); foreach ($room_subsidy_list as $a => $b){ //增加收益 $user_subsidy_money = $v['earnings'] * $b['ratio'] * 0.01; $reslut = model('admin/User')->change_user_money_by_uid($b['uid'], $user_subsidy_money, 1, $user_money_log, $remarks, $b['uid'], 0, $v['rid']); if ($reslut['code'] == 201) { Db::rollback(); return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } $assigned_ratio += $b['ratio']; $insert = []; $insert['type'] = $type; $insert['user_type'] = 2; $insert['rid'] = $v['rid']; $insert['uid'] = $b['uid']; $insert['ratio'] = $b['ratio']; $insert['change_value'] = $v['change_value']; $insert['room_earnings'] = $v['earnings']; $insert['user_earnings'] = $user_subsidy_money; $insert['add_time'] = time(); $insert['is_delete'] = 2; $insert['last_week_time'] = $last_week_time; $insert_all[] = $insert; } //房主获取房间补贴 $room_owner_uid = db::name('room')->where('rid', $v['rid'])->value('room_owner_uid'); $surplus_ratio = 100 - $assigned_ratio; $owner_subsidy_money = $v['earnings'] * $surplus_ratio * 0.01; $reslut = model('admin/User')->change_user_money_by_uid($room_owner_uid, $owner_subsidy_money, 1, $user_money_log, $remarks, $room_owner_uid, 0, $v['rid']); if ($reslut['code'] == 201) { Db::rollback(); return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } $insert = []; $insert['type'] = $type; $insert['user_type'] = 1; $insert['rid'] = $v['rid']; $insert['uid'] = $room_owner_uid; $insert['ratio'] = $surplus_ratio; $insert['change_value'] = $v['change_value']; $insert['room_earnings'] = $v['earnings']; $insert['user_earnings'] = $owner_subsidy_money; $insert['add_time'] = time(); $insert['is_delete'] = 2; $insert['last_week_time'] = $last_week_time; $insert_all[] = $insert; $reslut = db::name('user_room_week_earnings')->insertAll($insert_all); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '失败', 'data' => null]; } $reslut = db::name('room_week_earnings_log')->where('id', $v['id'])->update(['is_delete' => 2, 'update_time' => time()]); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '失败', 'data' => null]; } Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); } }else{ db::name('room_week_earnings_log')->where('id', $v['id'])->update(['is_delete' => 2, 'update_time' => time()]); } } } echo date('Y-m-d H:i:s').'执行成功'; } //统计用户收益 public function gives_user_room_week_earnings($type){ set_time_limit(0); ini_set('memory_limit', '1024M'); $last_week_time = strtotime('-1 week last sunday', time()); //获取未发送的房间上周收益 $map = []; $map[] = ['type', '=', $type]; $map[] = ['is_delete', '=', 1]; $map[] = ['last_week_time', '=', $last_week_time]; $list = db::name('room_week_earnings_log')->where($map)->select(); if(!empty($list)){ foreach ($list as $k => $v){ if($v['earnings'] > 0){ Db::startTrans(); try { $insert_all = []; $assigned_ratio = 0; //获取房间补贴用户 $where = []; $where[] = ['rid', '=', $v['rid']]; $where[] = ['ratio', '>', 0]; $where[] = ['is_delete', '=', 1]; $room_subsidy_list = db::name('room_user_subsidy')->where($where)->select(); foreach ($room_subsidy_list as $a => $b){ //增加收益 $user_subsidy_money = $v['earnings'] * $b['ratio'] * 0.01; // $reslut = model('admin/User')->change_user_money_by_uid($b['uid'], $user_subsidy_money, 1, $user_money_log, $remarks, $b['uid'], 0, $v['rid']); // if ($reslut['code'] == 201) { // Db::rollback(); // return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; // } $assigned_ratio += $b['ratio']; $insert = []; $insert['type'] = $type; $insert['user_type'] = 2; $insert['rid'] = $v['rid']; $insert['uid'] = $b['uid']; $insert['ratio'] = $b['ratio']; $insert['change_value'] = $v['change_value']; $insert['room_earnings'] = $v['earnings']; $insert['user_earnings'] = $user_subsidy_money; $insert['add_time'] = time(); $insert['is_delete'] = 1; $insert['last_week_time'] = $last_week_time; $insert_all[] = $insert; } //房主获取房间补贴 $room_owner_uid = db::name('room')->where('rid', $v['rid'])->value('room_owner_uid'); $surplus_ratio = 100 - $assigned_ratio; $owner_subsidy_money = $v['earnings'] * $surplus_ratio * 0.01; // $reslut = model('admin/User')->change_user_money_by_uid($room_owner_uid, $owner_subsidy_money, 1, $user_money_log, $remarks, $room_owner_uid, 0, $v['rid']); // if ($reslut['code'] == 201) { // Db::rollback(); // return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; // } $insert = []; $insert['type'] = $type; $insert['user_type'] = 1; $insert['rid'] = $v['rid']; $insert['uid'] = $room_owner_uid; $insert['ratio'] = $surplus_ratio; $insert['change_value'] = $v['change_value']; $insert['room_earnings'] = $v['earnings']; $insert['user_earnings'] = $owner_subsidy_money; $insert['add_time'] = time(); $insert['is_delete'] = 1; $insert['last_week_time'] = $last_week_time; $insert_all[] = $insert; $reslut = db::name('user_room_week_earnings')->insertAll($insert_all); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '失败', 'data' => null]; } $reslut = db::name('room_week_earnings_log')->where('id', $v['id'])->update(['is_delete' => 2, 'update_time' => time()]); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '失败', 'data' => null]; } Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); } }else{ db::name('room_week_earnings_log')->where('id', $v['id'])->update(['is_delete' => 2, 'update_time' => time()]); } } } echo date('Y-m-d H:i:s').'执行成功'; } }