get_user_info($uid); //用户头像 $return['user']['user_avatar'] = $user['avatar']; //当前用户等级信息 $user_level = $this->get_charm_level_to_level($user['charm_level']); // 获取最后等级 $level_last = Db::name('vs_charm_level') ->where('status', 1) ->order('level', 'desc') ->value('level'); //用户当前经验 $return['user']['level'] = $user['charm_level']; $return['user']['level_str'] = 'Lv.'.$user['charm_level']; $return['user']['exp'] = $user['charm_exp']; $return['user']['rights_icon'] = $user_level['rights_icon']; if($user['charm_level'] ==$level_last ){ //距离下个等级需要的经验 $return['user']['next_level'] = 0; $return['user']['next_level_str'] = "满级"; $return['user']['next_exp'] = 0; $return['user']['next_rights_icon'] = ""; }else{ //距离下个等级需要的经验 $return['user']['next_level'] = $user['charm_level']+1; $return['user']['next_level_str'] = 'Lv.'.$return['user']['next_level']; $return['user']['next_exp'] = $user_level['next_level_exp'] - $user['wealth_exp']; $return['user']['next_rights_icon'] = $user_level['next_rights_icon']; } //获取等级 // 获取用户当前等级 $currentUserLevel = $user['charm_level']; if($currentUserLevel == 0){ $level = Db::name('vs_charm_level') ->where('status', 1) ->order('level', 'asc') ->limit(3) ->select(); }elseif($currentUserLevel == $level_last){ $level = Db::name('vs_charm_level') ->where('status', 1) ->order('level', 'asc') ->limit($level_last-2,3) ->select(); }else{ $level = Db::name('vs_charm_level') ->where('status', 1) ->where('level', 'in', [$currentUserLevel - 1, $currentUserLevel, $currentUserLevel + 1]) ->order('level', 'asc') ->select(); } $return['level'] = []; if($level) { foreach ($level as $key => $value) { $return['level'][$key]['level'] = $value['level']; $return['level'][$key]['image'] = $value['image']; $return['level'][$key]['bg_image'] = $value['bg_image']; $return['level'][$key]['color'] = $value['color']; $return['level'][$key]['name'] = $value['name']; $return['level'][$key]['change_value'] = $value['change_value']; //当前用户距离当前段位的距离 $return['level'][$key]['distance'] = $value['change_value'] - $user['wealth_exp']; $return['level'][$key]['rights_icon'] = $value['rights_icon']; } } $return['privilege'] = Db::name('vs_charm_level') ->where('status', 1) ->order('level', 'asc') ->select(); return ['code' => 1, 'msg' => '登录成功', 'data' => $return]; } /* * 财富等级规则说明 */ public function get_wealth_rule($uid) { //规则 $return['rule_url'] = get_system_config_value('web_site')."/api/Page/page_show?id=11"; //用户信息 $user = model('User')->get_user_info($uid); //用户头像 $return['user']['user_avatar'] = $user['avatar']; //当前用户等级信息 $user_level = $this->get_wealth_level_to_level($user['wealth_level']); //用户当前经验 $return['user']['level'] = $user['wealth_level']; $return['user']['level_str'] = 'Lv.'.$user['wealth_level']; $return['user']['exp'] = $user['wealth_exp']; $return['user']['coins'] = $user_level['coins']; //是否已领取金币 $return['user']['is_get_coins'] = 0; $wealth_level_log = Db::name('vs_wealth_level_log') ->where('user_id', $uid) ->where('level', $user['wealth_level']) ->find(); if($wealth_level_log){ $return['user']['is_get_coins'] = 1; } // 获取最后等级 $level_last = Db::name('vs_wealth_level') ->where('status', 1) ->order('level', 'desc') ->value('level'); if($user['wealth_level'] ==$level_last ){ //距离下个等级需要的经验 $return['user']['next_level'] = 0; $return['user']['next_level_str'] = "满级"; $return['user']['next_exp'] = 0; $return['user']['next_coins'] = ""; }else{ //距离下个等级需要的经验 $return['user']['next_level'] = $user['wealth_level']+1; $return['user']['next_level_str'] = 'Lv.'.$return['user']['next_level']; $return['user']['next_exp'] = $user_level['next_level_exp'] - $user['wealth_exp']; $return['user']['next_coins'] = $user_level['next_coins']; } //获取等级 // 获取用户当前等级 $currentUserLevel = $user['wealth_level']; if($currentUserLevel == 0){ $level = Db::name('vs_wealth_level') ->where('status', 1) ->order('level', 'asc') ->limit(3) ->select(); }elseif($currentUserLevel == $level_last){ $level = Db::name('vs_wealth_level') ->where('status', 1) ->order('level', 'asc') ->limit($level_last-2,3) ->select(); }else{ $level = Db::name('vs_wealth_level') ->where('status', 1) ->where('level', 'in', [$currentUserLevel - 1, $currentUserLevel, $currentUserLevel + 1]) ->order('level', 'asc') ->select(); } $return['level'] = []; $return['privilege'] = []; if($level) { foreach ($level as $key => $value) { $return['level'][$key]['level'] = $value['level']; $return['level'][$key]['level_str'] = 'Lv.'.$value['level']; $return['level'][$key]['image'] = $value['image']; $return['level'][$key]['bg_image'] = $value['bg_image']; $return['level'][$key]['color'] = $value['color']; $return['level'][$key]['name'] = $value['name']; $return['level'][$key]['change_value'] = $value['change_value']; //当前用户距离当前段位的距离 $return['level'][$key]['distance'] = $value['change_value'] - $user['wealth_exp']; $return['level'][$key]['coins'] = $value['coins']; //特权 $privilege = Db::name('vs_wealth_level_rights')->alias('a') ->join('vs_decorate b' , 'a.gift_id = b.did') ->field('a.gift_id,b.title,b.base_image') ->where('a.level_id', $value['id']) ->find(); $return['level'][$key]['privilege'] = ''; if($privilege){ $return['level'][$key]['privilege'] = $privilege['title']; $privilege['name'] = $value['name'].'解锁'; $return['privilege'][$key] = $privilege; } } } return ['code' => 1, 'msg' => '成功', 'data' => $return]; } /* * 通过等级获取财富等级信息 */ public function get_wealth_level_to_level($level=0){ $return = []; $level_data = Db::name('vs_wealth_level')->where('level', $level)->find(); $next_level_data = Db::name('vs_wealth_level')->where('level', $level+1)->find(); if($level_data){ $return['level'] = $level_data['level']; $return['level_name'] = $level_data['name']; $return['exp'] = $level_data['change_value']; $return['level_icon'] = $level_data['image']; $return['coins'] = $level_data['coins']; }else{ $return['level'] = 0; $return['level_name'] = ''; $return['exp'] = 0; $return['level_icon'] = ''; $return['coins'] = 0; } if($next_level_data){ $return['next_level'] = $next_level_data['level']; $return['next_level_name'] = $next_level_data['name']; $return['next_level_exp'] = $next_level_data['change_value']; $return['next_level_icon'] = $next_level_data['image']; $return['next_coins'] = $next_level_data['coins']; }else{ $return['next_level'] = 0; $return['next_level_name'] = ''; $return['next_level_exp'] = 0; $return['next_level_icon'] = ''; $return['next_coins'] = 0; } return $return; } /* * 通过等级获取魅力等级信息 * */ public function get_charm_level_to_level($level){ $return = []; $level_data = Db::name('vs_charm_level')->where('level', $level)->find(); $next_level_data = Db::name('vs_charm_level')->where('level', $level+1)->find(); if($level_data){ $return['level'] = $level_data['level']; $return['level_name'] = $level_data['name']; $return['exp'] = $level_data['change_value']; $return['level_icon'] = $level_data['image']; $return['rights_icon'] = $level_data['rights_icon']; }else{ $return['level'] = 0; $return['level_name'] = ''; $return['exp'] = 0; $return['level_icon'] = ''; $return['rights_icon'] = ""; } if($next_level_data){ $return['next_level'] = $next_level_data['level']; $return['next_level_name'] = $next_level_data['name']; $return['next_level_exp'] = $next_level_data['change_value']; $return['next_level_icon'] = $next_level_data['image']; $return['next_rights_icon'] = $next_level_data['rights_icon']; }else{ $return['next_level'] = 0; $return['next_level_name'] = ''; $return['next_level_exp'] = 0; $return['next_level_icon'] = ''; $return['next_rights_icon'] = ""; } return $return; } /* * 用户财富/魅力等级更新 * @param uid 用ID * @param value 金币数 * @param type 类型 1:财富 2:魅力 */ public function user_level_data_update($uid,$icon,$type,$room_id=0){ $user = model('User')->get_user_info($uid,['user_level']); //配置 if($type == 1){//财富 $coin_charm_exp = get_system_config_value('coin_wealth_exp'); $wealth_exp = $icon * $coin_charm_exp;//计算财富增长值 //计算财富等级 $user_wealth_level = $user['wealth_level']; $user_wealth_exp = $user['wealth_exp'] + $wealth_exp; //判断是否达到下一级别 $user_wealth = $this->get_wealth_level_to_level($user_wealth_level); if($user_wealth_exp>= $user_wealth['exp']){ $user_wealth_level= $user_wealth['next_level']; } $update_data = []; $update_data['wealth_level'] = $user_wealth_level; $update_data['wealth_exp'] = $user_wealth_exp; //修改用户信息 $return = db('user_data')->where('user_id',$uid)->update($update_data); if($return){ //发放特权礼物 if($user_wealth_exp>= $user_wealth['exp']){ $wealth_level_rights = db('vs_wealth_level_rights')->where('level_id',$user_wealth_level)->find(); if(isset($wealth_level_rights['type']) && $wealth_level_rights['type'] ==1 ){//发座驾礼物 $log_remark = "财富等级达到".$user_wealth_level."级 发放座驾礼物"; $res = model('Decorate')->pay_decorate($uid,$wealth_level_rights['gift_id'],0,7,""); if($res['code']!=1){ return ['code' => $res['code'], 'msg' => $res['msg'], 'data' => null]; } } } }else{ return ['code' => 0, 'msg' => "失败", 'data' => null]; } }else{//魅力 coin_charm_exp $coin_charm_exp = get_system_config_value('coin_charm_exp'); $charm_exp = $icon * $coin_charm_exp;//魅力增长值 $user_charm_level = $user['charm_level']; $user_charm_exp = $user['charm_exp'] + $charm_exp; //判断是否达到下一级别 $user_charm = $this->get_charm_level_to_level($user_charm_level); if($user_charm_exp>= $user_charm['exp']){ $user_charm_level= $user_charm['next_level']; } $update_data = []; $update_data['charm_level'] = $user_charm_level; $update_data['charm_exp'] = $user_charm_exp; //修改用户信息 $return = db('user_data')->where('user_id',$uid)->update($update_data); if(!$return){ return ['code' => 0, 'msg' => "失败", 'data' => null]; } } //操作房间魅力值 if($room_id){ $return_charm = $this->room_user_charm_exp($uid,$room_id,$icon,$type); if($return_charm['code']==0){ return ['code' => 0, 'msg' => "失败", 'data' => null]; } } return ['code' => 1, 'msg' => "成功", 'data' => null]; } /* * 房间用户魅力值修改 */ public function room_user_charm_exp($uid,$room_id,$exp,$type){ //获取房间用户魅力 $room_user_charm_exp = Db::name('vs_room_user_charm')->where(['user_id'=>$uid,'room_id'=>$room_id])->find(); if($room_user_charm_exp){ if($type == 1){ $coin_charm_exp = get_system_config_value('coin_wealth_exp'); $room_user_charm_exp_data['total_wealth'] = $room_user_charm_exp['total_wealth'] + $exp * $coin_charm_exp; }else{ $coin_charm_exp = get_system_config_value('coin_charm_exp'); $room_user_charm_exp_data['charm'] = $room_user_charm_exp['charm'] + $exp * $coin_charm_exp; $room_user_charm_exp_data['total_charm'] = $room_user_charm_exp['total_charm'] + $exp * $coin_charm_exp; } $room_user_charm_exp_data['updatetime'] = time(); $return = Db::name('vs_room_user_charm')->where(['user_id'=>$uid,'room_id'=>$room_id])->update($room_user_charm_exp_data); }else{ if($type == 1){ $coin_charm_exp = get_system_config_value('coin_wealth_exp'); $room_user_charm_exp_data['total_wealth'] = $exp * $coin_charm_exp; }else{ $coin_charm_exp = get_system_config_value('coin_charm_exp'); $room_user_charm_exp_data['charm'] = $exp * $coin_charm_exp; $room_user_charm_exp_data['total_charm'] = $exp * $coin_charm_exp; } $room_user_charm_exp_data['user_id'] = $uid; $room_user_charm_exp_data['room_id'] = $room_id; $room_user_charm_exp_data['createtime'] = time(); $room_user_charm_exp_data['updatetime'] = time(); $return = Db::name('vs_room_user_charm')->insert($room_user_charm_exp_data); } if($return){ return ['code' => 1, 'msg' => "成功", 'data' => null]; }else{ return ['code' => 0, 'msg' => "失败", 'data' => null]; } } /* * 领取财富等级奖励金币 */ public function get_wealth_level_reward($uid){ $user_info = model('User')->get_user_info($uid,['user_level']); $wealth_level = $user_info['wealth_level']; $wealth_level = db('vs_wealth_level')->where('level',$wealth_level)->find(); if(!$wealth_level){ return ['code' => 0, 'msg' => "失败", 'data' => null]; } if($wealth_level['coins']<=0){ return ['code' => 0, 'msg' => "失败", 'data' => null]; } $wealth_level_log = db('vs_wealth_level_log')->where(['user_id'=>$uid,'level'=>$wealth_level['level']])->find(); if($wealth_level_log){ return ['code' => 0, 'msg' => "你已领取该等级的奖励", 'data' => null]; } //操作用户金币 $res = model('common/UserWallet')->change_user_money($uid, $wealth_level['coins'], model('common/UserWallet')::MONEYTYPECOIN, model('common/UserWallet')::FINANCE_LEVEL_REWARD,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::FINANCE_LEVEL_REWARD)); if($res['code']!=1){ return ['code' => 0, 'msg' => "失败", 'data' => null]; } $return = db('vs_wealth_level_log')->insert([ 'user_id'=>$uid, 'level'=>$wealth_level['level'], 'coins'=>$wealth_level['coins'], 'createtime'=>time()]); if(!$return){ return ['code' => 0, 'msg' => "失败", 'data' => null]; } return ['code' => 1, 'msg' => "成功", 'data' => null]; } }