2025-08-07 20:21:47 +08:00
< ? php
namespace app\api\model ;
use think\Db ;
use think\Model ;
class User extends Model
{
private $redis ;
public function __construct ( $data = [])
{
parent :: __construct ( $data );
$this -> redis = \think\Cache :: store ( 'redis' ) -> handler ();
}
//获取用户信息
public function get_user_info ( $uid , $field = [])
{
$user_info = [];
$user_data = db :: name ( 'user_data' ) -> where ([ 'user_id' => $uid ]) -> find ();
if ( empty ( $field ) || in_array ( 'user' , $field )) {
$user_info = $this -> where ( 'id' , $uid ) -> find ();
if ( ! empty ( $user_info )) {
$user_info = $user_info -> toArray ();
$user_info [ 'age' ] = getAge ( $user_info [ 'birthday' ]); //年龄
} else {
return [];
}
$user_info [ 'tag_ids' ] = isset ( $user_data [ 'tag_id' ]) ? $user_data [ 'tag_id' ] : '' ;
$tag_ids = explode ( ',' , $user_info [ 'tag_ids' ]);
$tag_list = model ( 'api/UserTag' ) -> get_tag_by_id ( $tag_ids );
if ( $tag_list ){
$user_info [ 'tag_list' ] = implode ( ',' , $tag_list ) ;
} else {
$user_info [ 'tag_list' ] = '' ;
}
$user_info [ 'alipay_name' ] = isset ( $user_data [ 'alipay_name' ]) ? $user_data [ 'alipay_name' ] : '' ;
$user_info [ 'alipay_account' ] = isset ( $user_data [ 'alipay_account' ]) ? $user_data [ 'alipay_account' ] : '' ;
$user_info [ 'bank_user_name' ] = isset ( $user_data [ 'bank_user_name' ]) ? $user_data [ 'bank_user_name' ] : '' ;
$user_info [ 'bank_card_number' ] = isset ( $user_data [ 'bank_card_number' ]) ? $user_data [ 'bank_card_number' ] : '' ;
$user_info [ 'bank_card' ] = isset ( $user_data [ 'bank_card' ]) ? $user_data [ 'bank_card' ] : '' ;
$user_info [ 'open_bank' ] = isset ( $user_data [ 'open_bank' ]) ? $user_data [ 'open_bank' ] : '' ;
}
if ( empty ( $field ) || in_array ( 'user_auth' , $field )){
//查询用户实名信息
$user_auth = db ( 'user_auth' ) -> where ( 'mobile' , $user_info [ 'mobile' ]) -> find ();
$user_info [ 'is_real' ] = isset ( $user_auth [ 'is_real' ]) ? $user_auth [ 'is_real' ] : 2 ;
$user_info [ 'real_name' ] = isset ( $user_auth [ 'real_name' ]) ? $user_auth [ 'real_name' ] : '' ;
$user_info [ 'card_id' ] = isset ( $user_auth [ 'card_id' ]) ? $user_auth [ 'card_id' ] : '' ;
}
if ( empty ( $field ) || in_array ( 'user_mode' , $field )) {
//青少年模式
$user_mode = db ( 'user_mode' ) -> where ( 'user_id' , $user_info [ 'id' ]) -> find (); //用户青少年模式
$user_info [ 'is_teenager' ] = isset ( $user_mode [ 'is_teenager' ]) ? $user_mode [ 'is_teenager' ] : 2 ; //1开启, 2关闭
$user_info [ 'teenager_password' ] = isset ( $user_mode [ 'teenager_password' ]) ? $user_mode [ 'teenager_password' ] : '' ; //青少年模式密码
}
if ( empty ( $field ) || in_array ( 'user_wallet' , $field )) {
//钱包信息
$user_wallet = db :: name ( 'user_wallet' ) -> where ([ 'user_id' => $uid ]) -> find ();
$user_info [ 'coin' ] = isset ( $user_wallet [ 'coin' ]) ? $user_wallet [ 'coin' ] : 0 ;
$user_info [ 'earnings' ] = isset ( $user_wallet [ 'earnings' ]) ? $user_wallet [ 'earnings' ] : 0 ;
}
if ( empty ( $field ) || in_array ( 'user_decorate' , $field )) {
//装扮
//头像框
$user_info [ 'decoration_head' ] = db :: name ( 'vs_user_decorate' ) -> where ([ 'user_id' => $uid , 'is_using' => 1 , 'type' => 1 , 'end_time' => [ '>=' , time ()]]) -> find ();
//坐骑
$user_info [ 'decoration_mount' ] = db :: name ( 'vs_user_decorate' ) -> where ([ 'user_id' => $uid , 'is_using' => 1 , 'type' => 2 , 'end_time' => [ '>=' , time ()]]) -> find ();
//个人靓号
$special_num = db :: name ( 'vs_user_decorate' ) -> where ([ 'user_id' => $uid , 'is_using' => 1 , 'type' => 6 , 'end_time' => [ '>=' , time ()]]) -> find ();
$user_info [ 'decoration_user_number' ] = $special_num ? $special_num [ 'special_num' ] : '' ;
}
if ( empty ( $field ) || in_array ( 'user_level' , $field )) {
//用户等级信息
//财富等级
$user_info [ 'wealth_level' ] = isset ( $user_data [ 'wealth_level' ]) ? $user_data [ 'wealth_level' ] : 0 ;
//财富经验
$user_info [ 'wealth_exp' ] = isset ( $user_data [ 'wealth_exp' ]) ? $user_data [ 'wealth_exp' ] : 0 ;
//财富等级图标
$user_info [ 'wealth_level_icon' ] = model ( 'api/UserData' ) -> user_wealth_icon ( $uid );
//魅力等级
$user_info [ 'charm_level' ] = isset ( $user_data [ 'charm_level' ]) ? $user_data [ 'charm_level' ] : 0 ;
//魅力经验
$user_info [ 'charm_exp' ] = isset ( $user_data [ 'charm_exp' ]) ? $user_data [ 'charm_exp' ] : 0 ;
//魅力等级图标
$user_info [ 'charm_level_icon' ] = model ( 'api/UserData' ) -> user_charm_icon ( $uid );
}
if ( empty ( $field ) || in_array ( 'user_recharge' , $field )){ //用户充值信息
//充值金额
$user_info [ 'user_recharge_all_money' ] = db :: name ( 'vs_user_recharge' ) -> where ([ 'user_id' => $uid , 'pay_status' => 2 ]) -> sum ( 'money' );
}
if ( empty ( $field ) || in_array ( 'user_follow' , $field )) { //用户关系信息
//关注数
$user_info [ 'follow_num' ] = db :: name ( 'user_follow' ) -> where ([ 'user_id' => $uid ]) -> count ();
//粉丝数
$user_info [ 'fans_num' ] = db :: name ( 'user_follow' ) -> where ([ 'follow_id' => $uid , 'type' => 1 ]) -> count ();
}
if ( empty ( $field ) || in_array ( 'user_invited' , $field )) { //邀请相关信息
//邀请数
$user_info [ 'invited_num' ] = db :: name ( 'vs_user_invited' ) -> where ([ 'user_id' => $uid ]) -> count ();
//邀请收益
$user_info [ 'invited_earnings' ] = db :: name ( 'vs_user_invited_income_log' ) -> where ([ 'user_id' => $uid ]) -> sum ( 'earnings' );
}
return $user_info ;
}
//我的
public function get_me ( $uid )
{
$user_info = db :: name ( 'user' )
2025-11-26 17:52:04 +08:00
-> field ( 'id as user_id,nickname,user_code,avatar,sex,mobile,market_value' )
2025-08-07 20:21:47 +08:00
-> where ( 'id' , $uid ) -> find ();
if ( empty ( $user_info )) {
return [ 'code' => 0 , 'msg' => '用户不存在' , 'data' => null ];
}
//头像判断 路径里面是否有https
if ( strpos ( $user_info [ 'avatar' ], 'https' ) === false ) {
$user_info [ 'avatar' ] = localpath_to_netpath ( $user_info [ 'avatar' ]);
}
$user_info [ 'icon' ][ 0 ] = model ( 'UserData' ) -> user_wealth_icon ( $uid ); //财富图标
$user_info [ 'icon' ][ 1 ] = model ( 'UserData' ) -> user_charm_icon ( $uid ); //魅力图标
2025-11-21 11:32:09 +08:00
//判断是否是歌手 如果是 返回等级图标
$isSinnger = db :: name ( 'vs_singer' ) -> where ([ 'user_id' => $uid , 'status' => 1 ]) -> value ( 'level' );
if ( $isSinnger ){
2025-11-21 14:15:46 +08:00
$user_info [ 'icon' ][ 2 ] = db :: name ( 'vs_singer_level' ) -> where ([ 'level' => $isSinnger , 'deletetime' => 0 ]) -> value ( 'image' ); //等级图标
2025-11-21 11:32:09 +08:00
}
2025-08-07 20:21:47 +08:00
//关注数
$user_info [ 'follow_num' ] = db :: name ( 'user_follow' ) -> where ([ 'user_id' => $uid , 'type' => 1 ]) -> count ();
//粉丝数
$user_info [ 'fans_num' ] = db :: name ( 'user_follow' ) -> where ([ 'follow_id' => $uid , 'type' => 1 ]) -> count ();
//看过我的数
$user_info [ 'look_me_num' ] = db :: name ( 'user_visit_log' ) -> alias ( 'a' )
-> join ( 'user b' , 'a.from_uid = b.id' , 'left' )
-> where ([ 'a.to_id' => $uid , 'a.type' => 1 , 'b.status' => [ '<>' , 0 ]]) -> count ();
//我的魅力等级
$user_info [ 'charm_level' ] = model ( 'UserData' ) -> where ( 'user_id' , $uid ) -> value ( 'charm_level' );
//查询用户是否有使用靓号
$user_info [ 'is_use_code' ] = 0 ;
$liang = db :: name ( 'vs_user_decorate' ) -> where ([ 'user_id' => $uid , 'type' => 6 , 'is_using' => 1 ]) -> where ( 'end_time' ,[ '>=' , time ()], 'or' ) -> find ();
if ( $liang ){
$user_info [ 'is_use_code' ] = 1 ;
$user_info [ 'user_code' ] = $liang [ 'special_num' ];
}
//头像装扮
$user_info [ 'dress' ] = model ( 'Decorate' ) -> user_decorate_detail ( $user_info [ 'user_id' ], 1 );
2025-10-21 17:57:43 +08:00
$user_info [ 'chat_bubble' ] = model ( 'Decorate' ) -> user_decorate_detail ( $user_info [ 'user_id' ], 9 ); //聊天气泡
2025-08-07 20:21:47 +08:00
$user_info [ 'auth' ] = db :: name ( 'user_auth' ) -> where ([ 'mobile' => $user_info [ 'mobile' ], 'is_real' => 1 ]) -> find () ? 1 : 0 ;
2025-10-20 09:59:39 +08:00
//是否可以发布动态
$user_rechange = db :: name ( 'vs_user_recharge' ) -> field ( 'sum(money) as money' ) -> where ([ 'user_id' => $uid , 'pay_status' => 2 ]) -> find ();
//系统配置
$config_money = get_system_config_value ( 'private_chat_recharge_money' );
if (( $config_money > 0 ) && ( $user_rechange [ 'money' ] < $config_money )){
$user_info [ 'is_can_chat' ] = 0 ;
} else {
$user_info [ 'is_can_chat' ] = 1 ;
}
$user_info [ 'can_chat_money' ] = $config_money ;
2025-11-10 14:56:54 +08:00
$Nobility = model ( 'Nobility' ) -> getUserNobilityInfo ( $uid ); //nobility_image
2025-11-10 15:23:10 +08:00
$user_info [ 'nobility_image' ] = $Nobility [ 'play_image' ];
2025-11-10 16:56:13 +08:00
$user_info [ 'nickname_color' ] = $Nobility [ 'nick_name_color' ];
2025-11-11 11:16:33 +08:00
$is_hide = 0 ;
if ( $Nobility [ 'power_list' ]){
foreach ( $Nobility [ 'power_list' ] as $key => $value ){
if ( $value [ 'id' ] == 8 ){
$is_hide = 1 ;
}
}
}
$user_info [ 'is_hide' ] = $is_hide ; //是否可以设置隐藏
$user_info [ 'hide_status' ] = db :: name ( 'user' ) -> where ( 'id' , $uid ) -> value ( 'hide_status' ); //0-取消隐身, 1-隐身进入
2025-11-12 17:10:17 +08:00
//歌手认证
$singer = model ( 'api/SingerSong' ) -> singerAuthStatus ( $uid );
$user_info [ 'singer_status' ] = $singer [ 'status' ]; //歌手认证状态0-待审核, 1-通过, 2-拒绝 -1-未认证
$user_info [ 'singer_level' ] = $singer [ 'level' ];
2025-10-20 09:59:39 +08:00
2025-11-19 18:02:41 +08:00
//cp
//查询用户Cp空间
2025-11-19 18:05:06 +08:00
$res = Db :: name ( 'user_cp_zone' ) -> where ([ 'user_id1' => $uid , 'status' => 1 ]) -> field ( 'user_id1,user_id2,level,exp' ) -> find ();
2025-11-19 18:02:41 +08:00
if ( ! $res ){
2025-11-19 18:05:06 +08:00
$res = Db :: name ( 'user_cp_zone' ) -> where ([ 'user_id2' => $uid , 'status' => 1 ]) -> find ();
2025-11-19 18:02:41 +08:00
}
if ( ! $res ){
$user_info [ 'cp_info' ] = null ;
} else {
$res [ 'user_info1' ] = Db :: name ( 'user' ) -> where ([ 'id' => $res [ 'user_id1' ]]) -> field ( 'id user_id,nickname,avatar' ) -> find ();
$res [ 'user_info1' ][ 'dress' ] = model ( 'api/Decorate' ) -> user_decorate_detail ( $res [ 'user_id1' ], 1 );
$res [ 'user_info2' ] = Db :: name ( 'user' ) -> where ([ 'id' => $res [ 'user_id2' ]]) -> field ( 'id user_id,nickname,avatar' ) -> find ();
$res [ 'user_info2' ][ 'dress' ] = model ( 'api/Decorate' ) -> user_decorate_detail ( $res [ 'user_id2' ], 1 );
//当前等级名称
$res [ 'name' ] = Db :: name ( 'user_cp_level' ) -> where ([ 'level' => $res [ 'level' ]]) -> value ( 'name' );
$res [ 'direction' ] = Db :: name ( 'user_cp_level' ) -> where ([ 'level' => $res [ 'level' ]]) -> value ( 'direction' );
2025-11-21 14:56:44 +08:00
$res [ 'pendant' ] = model ( 'api/Decorate' ) -> user_decorate_detail ( $res [ 'user_id1' ], 11 );
2025-11-19 18:02:41 +08:00
$user_info [ 'cp_info' ] = $res ;
}
2025-12-01 09:42:49 +08:00
//用户师傅
$master = db :: name ( 'vs_user_sign' ) -> where ([ 'sign_user_id' => $uid , 'end_time' => [ '>' , time ()]]) -> value ( 'parent_user_id' );
if ( $master ){
$user_info [ 'master' ] = Db :: name ( 'user' ) -> where ([ 'id' => $master ]) -> field ( 'id user_id,nickname,avatar' ) -> find ();
} else {
$user_info [ 'master' ] = null ;
}
2025-11-19 18:02:41 +08:00
2025-12-02 15:05:06 +08:00
//身价配置
$coin_market_value = explode ( ',' , get_system_config_value ( 'coin_market_value' ));;
$user_info [ 'market_value_coin' ] = $coin_market_value [ 0 ];
$user_info [ 'market_value_market' ] = $coin_market_value [ 1 ];
2025-08-07 20:21:47 +08:00
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $user_info ];
}
//获取用户关注列表
public function get_user_follow_list ( $uid , $page , $page_limit )
{
$page = intval ( $page );
$page_limit = $page_limit < 30 ? $page_limit : 30 ;
$model = Db :: name ( 'user_follow' ) -> alias ( 'a' ) -> join ( 'fa_user b' , 'a.follow_id = b.id' );
$model = $model -> where ( 'a.user_id' , $uid ) -> where ( 'a.type' , 1 );
$list = $model -> field ( 'a.follow_id,a.createtime,b.nickname,b.avatar,b.sex,b.user_code' ) -> order ( 'a.id desc' ) -> page ( $page , $page_limit ) -> select ();
foreach ( $list as $k => & $v ) {
$v [ 'user_id' ] = $v [ 'follow_id' ];
$v [ 'is_online' ] = 0 ;
$v [ 'is_follow' ] = 1 ;
// $is_follow = db::name('user_follow')->where(['user_id' => $v['follow_id'], 'follow_id' => $uid])->find();
// if ($is_follow) {
// $v['is_follow'] = 1;
// }
//等级获取对应图标
$v [ 'icon' ][ 0 ] = model ( 'UserData' ) -> user_wealth_icon ( $v [ 'follow_id' ]); //财富图标
$v [ 'icon' ][ 1 ] = model ( 'UserData' ) -> user_charm_icon ( $v [ 'follow_id' ]); //魅力图标
2025-11-21 11:32:09 +08:00
//判断是否是歌手 如果是 返回等级图标
$isSinnger = db :: name ( 'vs_singer' ) -> where ([ 'user_id' => $v [ 'follow_id' ], 'status' => 1 ]) -> value ( 'level' );
if ( $isSinnger ){
2025-11-21 14:15:46 +08:00
$v [ 'icon' ][ 2 ] = db :: name ( 'vs_singer_level' ) -> where ([ 'level' => $isSinnger , 'deletetime' => 0 ]) -> value ( 'image' ); //等级图标
2025-11-21 11:32:09 +08:00
}
2025-08-07 20:21:47 +08:00
}
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $list ];
}
//获取用户粉丝列表
public function get_user_fans_list ( $uid , $page , $page_limit )
{
$page = intval ( $page );
$page_limit = $page_limit < 30 ? $page_limit : 30 ;
$model = Db :: name ( 'user_follow' ) -> alias ( 'a' ) -> join ( 'fa_user b' , 'a.user_id = b.id' );
$model = $model -> where ( 'a.follow_id' , $uid ) -> where ( 'a.type' , 1 );
$list = $model -> field ( 'a.user_id,a.createtime,b.nickname,b.avatar,b.sex,b.user_code' ) -> order ( 'a.id desc' ) -> page ( $page , $page_limit ) -> select ();
foreach ( $list as $k => & $v ) {
$v [ 'is_online' ] = $this -> redis -> get ( 'user_online_' . $v [ 'user_id' ]) ? 1 : 0 ; //是否在线 在redis里获取
$v [ 'is_follow' ] = 2 ;
$is_follow = db :: name ( 'user_follow' ) -> where ([ 'user_id' => $uid , 'follow_id' => $v [ 'user_id' ], 'type' => 1 ]) -> find ();
if ( $is_follow ) {
$v [ 'is_follow' ] = 1 ;
}
//等级获取对应图标
$v [ 'icon' ][ 0 ] = model ( 'UserData' ) -> user_wealth_icon ( $v [ 'user_id' ]); //财富图标
$v [ 'icon' ][ 1 ] = model ( 'UserData' ) -> user_charm_icon ( $v [ 'user_id' ]); //魅力图标
2025-11-21 11:32:09 +08:00
//判断是否是歌手 如果是 返回等级图标
$isSinnger = db :: name ( 'vs_singer' ) -> where ([ 'user_id' => $v [ 'user_id' ], 'status' => 1 ]) -> value ( 'level' );
if ( $isSinnger ){
2025-11-21 14:15:46 +08:00
$v [ 'icon' ][ 2 ] = db :: name ( 'vs_singer_level' ) -> where ([ 'level' => $isSinnger , 'deletetime' => 0 ]) -> value ( 'image' ); //等级图标
2025-11-21 11:32:09 +08:00
}
2025-08-07 20:21:47 +08:00
}
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $list ];
}
//黑名单
public function get_blacklist ( $uid , $page , $page_limit )
{
$page = intval ( $page );
$page_limit = $page_limit < 30 ? $page_limit : 30 ;
$model = Db :: name ( 'user_black' ) -> alias ( 'a' ) -> join ( 'fa_user b' , 'a.user_id = b.id' );
$model = $model -> where ([ 'a.from_id' => $uid , 'a.type' => 1 ]);
$list = $model -> field ( 'a.id,a.user_id,b.nickname,b.avatar,b.sex,b.createtime' ) -> order ( 'a.id desc' ) -> page ( $page , $page_limit ) -> select ();
foreach ( $list as $k => & $v ) {
//等级获取对应图标
$v [ 'icon' ][ 0 ] = model ( 'UserData' ) -> user_wealth_icon ( $v [ 'user_id' ]); //财富图标
$v [ 'icon' ][ 1 ] = model ( 'UserData' ) -> user_charm_icon ( $v [ 'user_id' ]); //魅力图标
}
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $list ];
}
//添加黑名单
public function add_blacklist ( $uid , $receive_uid )
{
$map = [];
$map [ 'from_id' ] = $uid ;
$map [ 'user_id' ] = $receive_uid ;
if ( db :: name ( 'user_black' ) -> where ( $map ) -> find ()) {
return [ 'code' => 0 , 'msg' => '此用户已存在您的黑名单' , 'data' => null ];
} else {
$data = [];
$data [ 'from_id' ] = $uid ;
$data [ 'user_id' ] = $receive_uid ;
$data [ 'type' ] = 1 ;
$data [ 'createtime' ] = time ();
$res = db :: name ( 'user_black' ) -> insert ( $data );
if ( $res ) {
//腾讯拉黑
model ( 'Tencent' ) -> black_list_add ( 'u' . $uid , 'u' . $receive_uid );
return [ 'code' => 1 , 'msg' => '添加成功' , 'data' => null ];
}
return [ 'code' => 0 , 'msg' => '添加失败' , 'data' => null ];
}
}
//移除黑名单
public function remove_blacklist ( $uid , $receive_uid )
{
$map = [];
$map [ 'from_id' ] = $uid ;
$map [ 'user_id' ] = $receive_uid ;
$res = db :: name ( 'user_black' ) -> where ( $map ) -> delete ();
if ( $res ) {
//腾讯移除黑名单
model ( 'Tencent' ) -> black_list_delete ( 'u' . $uid , 'u' . $receive_uid );
return [ 'code' => 1 , 'msg' => '移除成功' , 'data' => null ];
}
return [ 'code' => 0 , 'msg' => '移除失败' , 'data' => null ];
}
//邀请码生成
public function invite_code (){
$code = 'ABCDEFGHIJKLMNPQRSTUVWXYZ123456789' ;
$reg_code = '' ;
for ( $i = 0 ; $i < 6 ; $i ++ ) {
$reg_code .= $code [ mt_rand ( 0 , strlen ( $code ) - 1 )];
}
$user_info = db :: name ( 'user' ) -> where ([ 'init_code' => $reg_code ]) -> find ();
if ( ! empty ( $user_info )) {
$this -> invite_code ();
}
return $reg_code ;
}
//用户主页
/*
* @ param $uid 用户id
* @ param $from_id 访问者id
*/
public function get_user_home ( $from_uid , $uid )
{
$user_info = db :: name ( 'user' ) -> alias ( 'u' ) -> join ( 'user_data ud' , 'u.id = ud.user_id' )
2025-11-26 17:37:33 +08:00
-> field ( 'u.market_value,u.id as user_id,u.nickname,u.user_code,u.avatar,u.sex,u.birthday,u.profile,ud.tag_id,ud.home_bgimages,u.is_online' )
2025-08-07 20:21:47 +08:00
-> where ([ 'u.id' => $uid , 'u.status' => [ '<>' , 0 ]]) -> find ();
if ( ! $user_info ){
return [ 'code' => 0 , 'msg' => '用户不存在或已注销' , 'data' => null ];
}
//标签
$user_info [ 'tag_list' ] = [];
if ( isset ( $user_info [ 'tag_id' ])) {
$tag_list = db :: name ( 'user_tag' ) -> whereIn ( 'id' , explode ( ',' , $user_info [ 'tag_id' ])) -> field ( 'id,tag_name' ) -> select ();
$user_info [ 'tag_list' ] = $tag_list ;
}
//礼物墙 获取收到的礼物图片名称数量 以及送每个礼物数量最多的用户的头像昵称 数量一样选最后送的用户
$user_info [ 'gift_wall' ] = [];
$user_info [ 'icon' ][ 0 ] = model ( 'UserData' ) -> user_wealth_icon ( $uid ) ? ? '' ; //财富图标
$user_info [ 'icon' ][ 1 ] = model ( 'UserData' ) -> user_charm_icon ( $uid ) ? ? '' ; //魅力图标
2025-11-21 11:32:09 +08:00
//判断是否是歌手 如果是 返回等级图标
$isSinnger = db :: name ( 'vs_singer' ) -> where ([ 'user_id' => $uid , 'status' => 1 ]) -> value ( 'level' );
if ( $isSinnger ){
2025-11-21 14:15:46 +08:00
$user_info [ 'icon' ][ 2 ] = db :: name ( 'vs_singer_level' ) -> where ([ 'level' => $isSinnger , 'deletetime' => 0 ]) -> value ( 'image' ); //等级图标
2025-11-21 11:32:09 +08:00
}
2025-08-07 20:21:47 +08:00
//查询用户是否有使用靓号
$user_info [ 'is_use_code' ] = 0 ;
$liang = db :: name ( 'vs_user_decorate' ) -> where ([ 'user_id' => $uid , 'is_using' => 1 , 'type' => 6 , 'end_time' => [ '>=' , time ()]]) -> find ();
if ( $liang ){
$user_info [ 'is_use_code' ] = 1 ;
$user_info [ 'user_code' ] = $liang [ 'special_num' ] ? ? '' ;
}
//是否关注
$user_info [ 'is_follow' ] = 0 ;
if ( db :: name ( 'user_follow' ) -> where ([ 'user_id' => $from_uid , 'follow_id' => $uid ]) -> find ()) {
$user_info [ 'is_follow' ] = 1 ;
}
//是否在房间
$user_info [ 'room_id' ] = db :: name ( 'vs_room_visitor' ) -> where ([ 'user_id' => $uid , 'is_delete' => 1 ]) -> order ( 'id desc' ) -> value ( 'room_id' ) ? ? 0 ;
//用户年龄
$user_info [ 'age' ] = getAge ( $user_info [ 'birthday' ]);
//头像装扮
$user_info [ 'dress' ] = model ( 'Decorate' ) -> user_decorate_detail ( $user_info [ 'user_id' ], 1 );
2025-10-21 16:30:17 +08:00
//聊天泡
$user_info [ 'chat_bubble' ] = model ( 'Decorate' ) -> user_decorate_detail ( $user_info [ 'user_id' ], 9 ); //聊天气泡
2025-08-07 20:21:47 +08:00
//记录用户访问记录
if ( $from_uid != $uid ){
$this -> add_user_visit_log ( 1 , $from_uid , $uid );
}
2025-08-26 16:14:51 +08:00
//用户所属工会
$guild_id = Db :: name ( 'vs_guild_user' ) -> where ([ 'user_id' => $uid , 'status' => 1 , 'delete_time' => 0 ]) -> value ( 'guild_id' );
if ( $guild_id ){
$user_info [ 'guild' ] = Db :: name ( 'vs_guild' ) -> where ( 'id' , $guild_id ) -> value ( 'guild_name' );
} else {
$user_info [ 'guild' ] = '' ;
}
2025-11-10 16:13:19 +08:00
$Nobility = model ( 'Nobility' ) -> getUserNobilityInfo ( $uid ); //nobility_image
$user_info [ 'nobility_image' ] = $Nobility [ 'play_image' ];
2025-11-10 16:56:13 +08:00
$user_info [ 'nickname_color' ] = $Nobility [ 'nick_name_color' ];
2025-11-19 18:02:41 +08:00
//cp
//查询用户Cp空间
2025-11-19 18:05:06 +08:00
$res = Db :: name ( 'user_cp_zone' ) -> where ([ 'user_id1' => $uid , 'status' => 1 ]) -> field ( 'user_id1,user_id2,level,exp' ) -> find ();
2025-11-19 18:02:41 +08:00
if ( ! $res ){
2025-11-19 18:05:06 +08:00
$res = Db :: name ( 'user_cp_zone' ) -> where ([ 'user_id2' => $uid , 'status' => 1 ]) -> find ();
2025-11-19 18:02:41 +08:00
}
if ( ! $res ){
$user_info [ 'cp_info' ] = null ;
} else {
$res [ 'user_info1' ] = Db :: name ( 'user' ) -> where ([ 'id' => $res [ 'user_id1' ]]) -> field ( 'id user_id,nickname,avatar' ) -> find ();
$res [ 'user_info1' ][ 'dress' ] = model ( 'api/Decorate' ) -> user_decorate_detail ( $res [ 'user_id1' ], 1 );
$res [ 'user_info2' ] = Db :: name ( 'user' ) -> where ([ 'id' => $res [ 'user_id2' ]]) -> field ( 'id user_id,nickname,avatar' ) -> find ();
$res [ 'user_info2' ][ 'dress' ] = model ( 'api/Decorate' ) -> user_decorate_detail ( $res [ 'user_id2' ], 1 );
//当前等级名称
$res [ 'name' ] = Db :: name ( 'user_cp_level' ) -> where ([ 'level' => $res [ 'level' ]]) -> value ( 'name' );
$res [ 'direction' ] = Db :: name ( 'user_cp_level' ) -> where ([ 'level' => $res [ 'level' ]]) -> value ( 'direction' );
2025-11-21 14:56:44 +08:00
$res [ 'pendant' ] = model ( 'api/Decorate' ) -> user_decorate_detail ( $res [ 'user_id1' ], 11 );
2025-11-19 18:02:41 +08:00
$user_info [ 'cp_info' ] = $res ;
}
2025-12-01 09:47:21 +08:00
//用户师傅
$master = db :: name ( 'vs_user_sign' ) -> where ([ 'sign_user_id' => $uid , 'end_time' => [ '>' , time ()]]) -> value ( 'parent_user_id' );
if ( $master ){
$user_info [ 'master' ] = Db :: name ( 'user' ) -> where ([ 'id' => $master ]) -> field ( 'id user_id,nickname,avatar' ) -> find ();
} else {
$user_info [ 'master' ] = null ;
}
2025-12-02 15:05:06 +08:00
//身价配置
$coin_market_value = explode ( ',' , get_system_config_value ( 'coin_market_value' ));;
$user_info [ 'market_value_coin' ] = $coin_market_value [ 0 ];
$user_info [ 'market_value_market' ] = $coin_market_value [ 1 ];
2025-08-07 20:21:47 +08:00
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $user_info ];
}
/**
* 获取用户礼物墙信息
* @ param int $uid 用户ID
* @ return array
*/
public function get_user_gift_wall_info ( $uid )
{
//查询用户礼物墙 以gift_id,send_user_id分组 同一用户送的同一礼物相加
2025-10-20 09:59:39 +08:00
$result = db :: name ( 'vs_give_gift' ) -> alias ( 'a' )
-> join ( 'vs_gift g' , 'a.gift_id = g.gid' )
-> where ([ 'a.gift_user' => $uid , 'g.label' => [ '<>' , 2 ]])
-> field ( 'a.gift_id,a.user_id,sum(a.number) as total' )
-> group ( 'a.gift_id,a.user_id' )
2025-08-07 20:21:47 +08:00
-> order ( 'total desc' )
-> select ();
// var_dump($result);exit;
// 根据礼物二次分组 获取礼物的总数和送的数量最多的三用户
$data = [];
// 按 gift_id 聚合数据
foreach ( $result as $item ) {
$giftId = $item [ 'gift_id' ];
$sendUserId = $item [ 'user_id' ];
$sendUserNickname = db :: name ( 'user' ) -> where ([ 'id' => $sendUserId ]) -> value ( 'nickname' );
$sendUserAvatar = db :: name ( 'user' ) -> where ([ 'id' => $sendUserId ]) -> value ( 'avatar' );
$total = $item [ 'total' ];
if ( ! isset ( $data [ $giftId ])) {
$data [ $giftId ] = [
'gift_id' => $giftId ,
'gift_price' => model ( 'Gift' ) -> where ([ 'gid' => $giftId ]) -> value ( 'gift_price' ),
'gift_name' => model ( 'Gift' ) -> where ([ 'gid' => $giftId ]) -> value ( 'gift_name' ),
'base_image' => model ( 'Gift' ) -> where ([ 'gid' => $giftId ]) -> value ( 'base_image' ),
'total_count' => 0 ,
'top_users' => []
];
}
// 累加总数量
$data [ $giftId ][ 'total_count' ] += $total ;
// 存储用户赠送记录
$data [ $giftId ][ 'top_users' ][] = [
'user_id' => $sendUserId ,
'nickname' => $sendUserNickname ,
'avatar' => $sendUserAvatar ,
'count' => $total
];
}
// 对每个礼物的 top_users 排序并取前三名
foreach ( $data as & $giftData ) {
// 按 count 降序排序
usort ( $giftData [ 'top_users' ], function ( $a , $b ) {
return $b [ 'count' ] <=> $a [ 'count' ];
});
$giftData [ 'top_users_count' ] = count ( $giftData [ 'top_users' ]);
// 取前3位
$giftData [ 'top_users' ] = array_slice ( $giftData [ 'top_users' ], 0 , 3 );
}
$data = array_values ( $data );
//查询所有的礼物
2025-10-20 09:59:39 +08:00
$gift_list = db :: name ( 'vs_gift' ) -> field ( 'gid as gift_id,gift_name,base_image,gift_price' ) -> where ([ 'delete_time' => 0 , 'label' => [ '<>' , 2 ]]) -> select ();
2025-08-07 20:21:47 +08:00
//对比去除$data 里面的礼物
$gift_list = array_filter (( array ) $gift_list , function ( $item ) use ( $data ) {
return ! in_array ( $item [ 'gift_id' ], array_column ( $data , 'gift_id' ));
});
//数组重组 从下标0 开始
$gift_list = array_values ( $gift_list );
$redata [ 'no_liang' ] = $gift_list ;
$redata [ 'liang' ] = $data ;
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $redata ];
}
//添加用户访问记录
/*
* @ param $to_id 被访问对象id
* @ param $from_id 访问者id
* @ param $type 类型: 1 用户主页 2 直播间
*/
public function add_user_visit_log ( $type , $from_uid , $to_uid ){
$visit = db :: name ( 'user_visit_log' ) -> where ([ 'from_uid' => $from_uid , 'to_id' => $to_uid , 'type' => $type ]) -> find ();
if ( $visit ){
return true ;
}
$data = [
'type' => $type ,
'from_uid' => $from_uid ,
'to_id' => $to_uid ,
'createtime' => time (),
];
db :: name ( 'user_visit_log' ) -> insert ( $data );
return true ;
}
//相册列表
public function get_album_list ( $user_id ){
$album_list = db :: name ( 'user_album' ) -> where ([ 'user_id' => $user_id , 'deletetime' => 0 ]) -> field ( 'id,name,image,pwd,read_num,like_num' ) -> select ();
if ( $album_list ){
foreach ( $album_list as $k => $item ){
if ( $item [ 'pwd' ]){
$album_list [ $k ][ 'is_pwd' ] = 1 ;
} else {
$album_list [ $k ][ 'is_pwd' ] = 0 ;
}
$album_list [ $k ][ 'img_num' ] = db :: name ( 'user_album_image' ) -> where ( 'album_id' , $item [ 'id' ]) -> count ();
}
}
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $album_list ];
}
//相册详情
public function get_album_detail ( $user_id , $id , $pwd , $page , $page_limit , $is_admin = 0 ){
$page = intval ( $page );
$page_limit = $page_limit < 30 ? $page_limit : 30 ;
$album_info = db :: name ( 'user_album' ) -> where ([ 'id' => $id ]) -> field ( 'id,image,pwd,read_num,like_num,user_id,like_user,name' ) -> find ();
if ( empty ( $album_info )){
return [ 'code' => 0 , 'msg' => '相册不存在' , 'data' => null ];
}
if ( $is_admin != 1 ){
if ( $album_info [ 'user_id' ] != $user_id ){
if ( $album_info [ 'pwd' ]){
if ( $pwd != $album_info [ 'pwd' ]){
return [ 'code' => 0 , 'msg' => '相册密码错误' , 'data' => null ];
}
}
}
}
//判断是否点赞
$album_info [ 'is_like' ] = 0 ;
if ( ! empty ( $album_info [ 'like_user' ])){
if ( in_array ( $user_id , explode ( ',' , $album_info [ 'like_user' ]))){
$album_info [ 'is_like' ] = 1 ;
}
}
unset ( $album_info [ 'like_user' ]);
$album_info [ 'count' ] = db :: name ( 'user_album_image' )
-> where ([ 'album_id' => $id ])
-> count ();
$album_info [ 'image_list' ] = [];
$image_list = db :: name ( 'user_album_image' )
-> where ([ 'album_id' => $id ])
-> field ( 'id,image,content,createtime' )
-> order ( 'createtime desc' )
-> page ( $page , $page_limit )
-> select ();
if ( $image_list ){
$album_info [ 'image_list' ] = $image_list ;
}
//增加浏览次数
db :: name ( 'user_album' ) -> where ([ 'id' => $id ]) -> setInc ( 'read_num' );
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $album_info ];
}
//创建相册
public function create_album ( $user_id , $name , $pwd , $image ){
if ( empty ( $name )){
return [ 'code' => 0 , 'msg' => '相册名称不能为空' , 'data' => null ];
}
if ( empty ( $image )){
return [ 'code' => 0 , 'msg' => '相册封面图不能为空' , 'data' => null ];
}
$data = [
'user_id' => $user_id ,
'name' => $name ,
'pwd' => $pwd ,
'image' => $image ,
'createtime' => time ()
];
db :: name ( 'user_album' ) -> insert ( $data );
return [ 'code' => 1 , 'msg' => '创建成功' , 'data' => null ];
}
//添加相册图片
public function add_album_content ( $user_id , $album_id , $image , $content ){
if ( empty ( $album_id )){
return [ 'code' => 0 , 'msg' => '相册ID不能为空' , 'data' => null ];
}
// if(empty($content)){
// return ['code' => 0, 'msg' => '内容不能为空', 'data' => null];
// }
//把图片JSON转换成数组
$image = explode ( ',' , $image );
if ( ! empty ( $image )){
foreach ( $image as $v ){
$data = [
'album_id' => $album_id ,
'image' => $v ,
'content' => $content ,
'createtime' => time ()
];
//循环插入数据库
db :: name ( 'user_album_image' ) -> insert ( $data );
}
//首次创建相册并上传9张照片【完成任务】
$user_album_image_count = db :: name ( 'user_album_image' ) -> where ( 'album_id' , $album_id ) -> count ();
if ( $user_album_image_count >= 9 ){
model ( 'DailyTasks' ) -> tasks_complete ( $user_id , 14 );
}
return [ 'code' => 1 , 'msg' => '添加成功' , 'data' => null ];
} else {
return [ 'code' => 0 , 'msg' => '图片不能为空' , 'data' => null ];
}
}
//把普通相册转为私密相册
public function change_album_pwd ( $user_id , $album_id , $pwd ){
if ( empty ( $album_id )){
return [ 'code' => 0 , 'msg' => '相册ID不能为空' , 'data' => null ];
}
if ( empty ( $pwd )){
return [ 'code' => 0 , 'msg' => '相册密码不能为空' , 'data' => null ];
}
$album_info = db :: name ( 'user_album' ) -> where ([ 'id' => $album_id ]) -> find ();
if ( ! $album_info ){
return [ 'code' => 0 , 'msg' => '相册不存在' , 'data' => null ];
} else {
db :: name ( 'user_album' ) -> where ([ 'id' => $album_id ]) -> update ([ 'pwd' => $pwd ]);
return [ 'code' => 1 , 'msg' => '修改成功' , 'data' => null ];
}
}
//移动相册图片
public function move_album_images ( $user_id , $id , $album_id ){
if ( empty ( $id )){
2025-10-20 09:59:39 +08:00
return [ 'code' => 0 , 'msg' => '请选择想要移动的图片' , 'data' => null ];
2025-08-07 20:21:47 +08:00
}
if ( empty ( $album_id )){
return [ 'code' => 0 , 'msg' => '目标相册ID不能为空' , 'data' => null ];
}
$album_info = db :: name ( 'user_album' ) -> where ([ 'id' => $album_id , 'user_id' => $user_id ]) -> find ();
if ( ! $album_info ){
return [ 'code' => 0 , 'msg' => '目标相册不存在' , 'data' => null ];
}
$ids = explode ( ',' , $id );
foreach ( $ids as $v ){
db :: name ( 'user_album_image' ) -> where ([ 'id' => $v ]) -> update ([ 'album_id' => $album_id ]);
}
return [ 'code' => 1 , 'msg' => '移动成功' , 'data' => null ];
}
//删除相册
public function delete_album ( $user_id , $album_id ){
if ( empty ( $album_id )){
return [ 'code' => 0 , 'msg' => '相册ID不能为空' , 'data' => null ];
}
$album_info = db :: name ( 'user_album' ) -> where ([ 'id' => $album_id , 'user_id' => $user_id ]) -> find ();
if ( ! $album_info ){
return [ 'code' => 0 , 'msg' => '相册不存在' , 'data' => null ];
}
db :: name ( 'user_album' ) -> where ([ 'id' => $album_id ]) -> update ([ 'deletetime' => time ()]);
return [ 'code' => 1 , 'msg' => '删除成功' , 'data' => null ];
}
//相册点赞
public function like_album ( $user_id , $album_id ){
if ( empty ( $album_id )){
return [ 'code' => 0 , 'msg' => '相册ID不能为空' , 'data' => null ];
}
$album_info = db :: name ( 'user_album' ) -> where ([ 'id' => $album_id ]) -> find ();
if ( ! $album_info ){
return [ 'code' => 0 , 'msg' => '相册不存在' , 'data' => null ];
}
//把用户的ID添加到相册的点赞用户列表中
if ( in_array ( $user_id , explode ( ',' , $album_info [ 'like_user' ]))){
//把用户的ID删除
$album_info [ 'like_user' ] = str_replace ( $user_id . ',' , '' , $album_info [ 'like_user' ]);
db :: name ( 'user_album' ) -> where ([ 'id' => $album_id ]) -> update ([ 'like_user' => $album_info [ 'like_user' ]]);
//点赞数减一
db :: name ( 'user_album' ) -> where ([ 'id' => $album_id ]) -> setDec ( 'like_num' );
return [ 'code' => 1 , 'msg' => '取消点赞' , 'data' => null ];
} else {
$album_info [ 'like_user' ] .= $user_id . ',' ;
db :: name ( 'user_album' ) -> where ([ 'id' => $album_id ]) -> update ([ 'like_user' => $album_info [ 'like_user' ]]);
db :: name ( 'user_album' ) -> where ([ 'id' => $album_id ]) -> setInc ( 'like_num' );
return [ 'code' => 1 , 'msg' => '点赞成功' , 'data' => null ];
}
}
//删除相册图片
public function delete_album_images ( $user_id , $id ){
if ( empty ( $id )){
return [ 'code' => 0 , 'msg' => '请选择要删除的图片' , 'data' => null ];
}
$ids = explode ( ',' , $id );
foreach ( $ids as $v ){
db :: name ( 'user_album_image' ) -> where ([ 'id' => $v ]) -> delete ();
}
return [ 'code' => 1 , 'msg' => '删除成功' , 'data' => null ];
}
//编辑相册
public function edit_album ( $user_id , $album_id , $name , $pwd , $image ){
if ( empty ( $album_id )){
return [ 'code' => 0 , 'msg' => '相册ID不能为空' , 'data' => null ];
}
if ( empty ( $name )){
return [ 'code' => 0 , 'msg' => '相册名称不能为空' , 'data' => null ];
}
if ( empty ( $image )){
return [ 'code' => 0 , 'msg' => '封面图不能为空' , 'data' => null ];
}
$album_info = db :: name ( 'user_album' ) -> where ([ 'id' => $album_id , 'user_id' => $user_id ]) -> find ();
if ( ! $album_info ){
return [ 'code' => 0 , 'msg' => '相册不存在' , 'data' => null ];
} else {
$data = [
'name' => $name ,
'image' => $image ,
'pwd' => $pwd ,
'updatetime' => time ()
];
db :: name ( 'user_album' ) -> where ([ 'id' => $album_id ]) -> update ( $data );
return [ 'code' => 1 , 'msg' => '修改成功' , 'data' => null ];
}
}
//编辑用户信息
public function edit_user_info ( $user_id , $nickname , $sex , $birthday , $profile , $avatar , $tag_id ){
$data = [];
if ( ! empty ( $nickname )){
//名称中不能有 系统管理 等关键字
if ( ! nickname_filter ( $nickname )){
2025-10-20 09:59:39 +08:00
return [ 'code' => 0 , 'msg' => '名称中不能有 系统、管理、官方 等相关字' , 'data' => null ];
}
$nick_name_info = db :: name ( 'user' ) -> where ([ 'nickname' => $nickname , 'status' => [ '<>' , 0 ]]) -> find ();
if ( ! empty ( $nick_name_info )){
if ( $user_id != $nick_name_info [ 'id' ]){
return [ 'code' => 0 , 'msg' => '该昵称已被占用' , 'data' => null ];
}
2025-08-07 20:21:47 +08:00
}
$data [ 'nickname' ] = $nickname ;
}
if ( ! empty ( $sex )){
$data [ 'sex' ] = $sex ;
}
if ( ! empty ( $birthday )){
$data [ 'birthday' ] = $birthday ;
}
if ( ! empty ( $profile )){
$data [ 'profile' ] = $profile ;
}
if ( ! empty ( $avatar )){
$data [ 'avatar' ] = $avatar ;
}
if ( ! empty ( $tag_id )){
$user_data [ 'tag_id' ] = $tag_id ;
}
//开启事务
db :: startTrans ();
2025-10-20 09:59:39 +08:00
try {
2025-08-07 20:21:47 +08:00
$data [ 'updatetime' ] = time ();
$re = db :: name ( 'user' ) -> where ([ 'id' => $user_id ]) -> update ( $data );
if ( ! $re ){
db :: rollback ();
return [ 'code' => 0 , 'msg' => '修改失败' , 'data' => null ];
}
$user_data [ 'updatetime' ] = time ();
$ree = db :: name ( 'user_data' ) -> where ([ 'user_id' => $user_id ]) -> update ( $user_data );
if ( ! $ree ){
db :: rollback ();
return [ 'code' => 0 , 'msg' => '修改失败了' , 'data' => null ];
}
if ( ! empty ( $avatar )) {
//记录头像修改
$save = db :: name ( 'user_avatar_log' ) -> insert ([ 'user_id' => $user_id , 'avatar' => $avatar , 'createtime' => time ()]);
if ( ! $save ) {
db :: rollback ();
return [ 'code' => 0 , 'msg' => '修改失败!' , 'data' => null ];
}
}
db :: commit ();
//推送信息去所在房间
//查询当前所在房间
$room_id = db :: name ( 'vs_room_visitor' ) -> where ([ 'user_id' => $user_id ]) -> order ( 'id' , 'desc' ) -> value ( 'room_id' );
if ( $room_id ){
//当前用户信息
//推送信息
$text [ 'jia_jia' ] = model ( 'Decorate' ) -> user_decorate_detail ( $user_id , 2 );
$text [ 'FromUserInfo' ] = db :: name ( 'user' ) -> where ( 'id' , $user_id ) -> field ( 'id as user_id,nickname,avatar,sex' ) -> find ();
$text [ 'FromUserInfo' ][ 'dress' ] = model ( 'Decorate' ) -> user_decorate_detail ( $user_id , 1 );
$text [ 'FromUserInfo' ][ 'mic_dress' ] = model ( 'Decorate' ) -> user_decorate_detail ( $user_id , 4 );
$text [ 'FromUserInfo' ][ 'chat_dress' ] = model ( 'Decorate' ) -> user_decorate_detail ( $user_id , 5 );
$text [ 'text' ] = '用户 ' . $text [ 'FromUserInfo' ][ 'nickname' ] . ' 修改了信息' ;
model ( 'Chat' ) -> sendMsg ( 1035 , $room_id , $text , $user_id );
}
2025-10-20 09:59:39 +08:00
2025-08-20 16:07:20 +08:00
//给腾讯同步用户信息
$member_name = db :: name ( 'user' ) -> where ( 'id' , $user_id ) -> value ( 'nickname' );
$member_face_url = db :: name ( 'user' ) -> where ( 'id' , $user_id ) -> value ( 'avatar' );
2025-10-20 09:59:39 +08:00
model ( 'Tencent' ) -> modify_user_infos ( $user_id , $member_name , $member_face_url );
2025-08-20 16:07:20 +08:00
2025-08-07 20:21:47 +08:00
return [ 'code' => 1 , 'msg' => '修改成功' , 'data' => null ];
2025-10-20 09:59:39 +08:00
}
catch ( \Exception $e ){
db :: rollback ();
return [ 'code' => 0 , 'msg' => $e , 'data' => null ];
}
2025-08-07 20:21:47 +08:00
}
//修改用户背景图
public function edit_user_bg ( $user_id , $image ){
$data = [
'home_bgimages' => $image ,
'updatetime' => time ()
];
$re = db :: name ( 'user_data' ) -> where ([ 'user_id' => $user_id ]) -> update ( $data );
if ( ! $re ){
return [ 'code' => 0 , 'msg' => '修改失败' , 'data' => null ];
}
return [ 'code' => 1 , 'msg' => '修改成功' , 'data' => null ];
}
//查询用户修改头像的次数
public function get_user_avatar_num ( $user_id ){
//查询用户本月修改头像的次数
$time = strtotime ( date ( 'Y-m-01' ));
$num = db :: name ( 'user_avatar_log' ) -> where ( 'id' , $user_id ) -> where ( 'createtime' , '>' , $time ) -> count ();
if ( ! $num ){
$num = 0 ;
}
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $num ];
}
//看过我的 魅力等级达到20级以上才能查看
public function get_look_me_list ( $user_id , $page , $limit ){
$user_info = db :: name ( 'user' ) -> where ([ 'id' => $user_id ]) -> find ();
if ( ! $user_info ){
return [ 'code' => 0 , 'msg' => '用户不存在' , 'data' => null ];
}
//魅力等级
$charm_level = model ( 'UserData' ) -> where ( 'user_id' , $user_id ) -> value ( 'charm_level' );
$look_me_level = get_system_config_value ( 'look_me_level' );
if ( $charm_level < $look_me_level ){
return [ 'code' => 0 , 'msg' => '魅力等级不足' , 'data' => null ];
}
$user_data = db :: name ( 'user_visit_log' ) -> alias ( 'a' ) -> join ( 'user b' , 'a.from_uid = b.id' )
-> field ( 'b.id as user_id,b.nickname,b.avatar,b.sex,b.birthday,a.from_uid' )
-> where ( 'a.to_id' , $user_id )
-> where ( 'a.type' , 1 )
-> where ( 'b.status' , '<>' , 0 )
-> page ( $page , $limit ) -> select ();
foreach ( $user_data as & $v ){
//等级获取对应图标
$v [ 'icon' ][ 0 ] = model ( 'UserData' ) -> user_wealth_icon ( $v [ 'from_uid' ]); //财富图标
$v [ 'icon' ][ 1 ] = model ( 'UserData' ) -> user_charm_icon ( $v [ 'from_uid' ]); //魅力图标
}
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $user_data ];
}
//关注(回关)取消关注
public function follow ( $user_id , $to_id , $type ){
if ( empty ( $to_id )){
return [ 'code' => 0 , 'msg' => '要关注的ID不能为空' , 'data' => null ];
}
if ( $type == 1 ){
if ( $user_id == $to_id ){
return [ 'code' => 0 , 'msg' => '不能关注自己' , 'data' => null ];
}
}
$follow_info = db :: name ( 'user_follow' ) -> where ([ 'user_id' => $user_id , 'follow_id' => $to_id , 'type' => $type ]) -> find ();
if ( $follow_info ){
//取消关注
$re = db :: name ( 'user_follow' ) -> where ([ 'user_id' => $user_id , 'follow_id' => $to_id , 'type' => $type ]) -> delete ();
if ( ! $re ){
return [ 'code' => 0 , 'msg' => '取消关注失败' , 'data' => null ];
}
return [ 'code' => 1 , 'msg' => '取消关注成功' , 'data' => null ];
} else {
//关注
$data = [
'user_id' => $user_id ,
'follow_id' => $to_id ,
'type' => $type ,
'createtime' => time ()
];
$re = db :: name ( 'user_follow' ) -> insert ( $data );
if ( ! $re ){
return [ 'code' => 0 , 'msg' => '关注失败' , 'data' => null ];
}
return [ 'code' => 1 , 'msg' => '关注成功' , 'data' => null ];
}
}
2025-10-20 09:59:39 +08:00
//关注房间(红包专用)
public function follow_room ( $user_id , $room_id , $type ){
if ( empty ( $room_id )){
return [ 'code' => 0 , 'msg' => '房间ID不能为空' , 'data' => null ];
}
if ( $type == 0 ){
//取消关注
$re = db :: name ( 'user_follow' ) -> where ([ 'user_id' => $user_id , 'follow_id' => $room_id , 'type' => 2 ]) -> delete ();
if ( ! $re ){
return [ 'code' => 0 , 'msg' => '取消关注失败' , 'data' => null ];
}
return [ 'code' => 1 , 'msg' => '取消关注成功' , 'data' => null ];
} else {
//关注
$data = [
'user_id' => $user_id ,
'follow_id' => $room_id ,
'type' => 2 ,
'createtime' => time ()
];
$re = db :: name ( 'user_follow' ) -> insert ( $data );
if ( ! $re ){
return [ 'code' => 0 , 'msg' => '关注失败' , 'data' => null ];
}
return [ 'code' => 1 , 'msg' => '关注成功' , 'data' => null ];
}
}
2025-08-07 20:21:47 +08:00
//更新用户ip
public function update_user_ip ( $user_id , $ip ){
2025-10-20 09:59:39 +08:00
//判断$ip是否是汉字
if ( preg_match ( '/[\x{4e00}-\x{9fa5}]+/u' , $ip )){
$ip = '未知' ;
}
2025-08-07 20:21:47 +08:00
$data = [
'address_ip' => $ip
];
$re = db :: name ( 'user' ) -> where ([ 'id' => $user_id ]) -> update ( $data );
if ( ! $re ){
return [ 'code' => 0 , 'msg' => '更新失败' , 'data' => null ];
}
return [ 'code' => 1 , 'msg' => '更新成功' , 'data' => null ];
}
//是否可以发起私聊
public function can_start_private_chat ( $user_id ){
$user_rechange = db :: name ( 'vs_user_recharge' ) -> field ( 'sum(money) as money' ) -> where ([ 'user_id' => $user_id , 'pay_status' => 2 ]) -> find ();
//系统配置
$config_money = get_system_config_value ( 'private_chat_recharge_money' );
if ( $user_rechange [ 'money' ] < $config_money ){
return [ 'code' => 0 , 'msg' => '充值金额不足' , 'data' => null ];
}
return [ 'code' => 1 , 'msg' => '可以发起私聊' , 'data' => null ];
}
2025-11-20 15:07:27 +08:00
/*
* 挚友列表
* @ param int $user_id 用户ID
*/
public function get_friend_list ( $user_id , $page , $limit ){
//获取用户当前所拥有的关系
$relation = db :: name ( 'vs_relation' ) -> where ([ 'id' => [ '>' , 0 ], 'delete_time' => 0 ]) -> page ( $page , $limit ) -> select ();
$return_data = [];
2025-11-20 16:10:47 +08:00
$no_cp = [];
2025-11-20 15:33:52 +08:00
if ( $relation ){
2025-11-20 16:10:47 +08:00
foreach ( $relation as $k => $v ){
2025-11-20 17:15:33 +08:00
$relation_list = $this -> relation_card ( $v [ 'id' ], $user_id );
if ( $relation_list ){
$no_cp [ $k ][ 'relation_list' ] = $relation_list ;
$no_cp [ $k ][ 'relation_name' ] = $v [ 'name' ];
} else {
unset ( $relation [ $k ]);
}
2025-11-20 15:07:27 +08:00
}
}
2025-11-20 17:15:33 +08:00
if ( $no_cp ){
//数组重新排序
$no_cp = array_values ( $no_cp );
}
2025-11-20 16:10:47 +08:00
$return_data [ 'no_cp' ] = $no_cp ;
2025-11-20 15:07:27 +08:00
//CP 信息
2025-11-20 15:55:53 +08:00
$res = Db :: name ( 'user_cp_zone' ) -> where ([ 'user_id1' => $user_id , 'status' => 1 ]) -> find ();
2025-11-20 15:07:27 +08:00
if ( ! $res ){
2025-11-20 15:55:53 +08:00
$res = Db :: name ( 'user_cp_zone' ) -> where ([ 'user_id2' => $user_id , 'status' => 1 ]) -> find ();
2025-11-20 15:07:27 +08:00
}
if ( $res ){
2025-11-20 17:03:38 +08:00
$res [ 'name' ] = Db :: name ( 'user_cp_level' ) -> where ([ 'level' => $res [ 'level' ]]) -> value ( 'name' );
2025-11-20 15:07:27 +08:00
$res [ 'user_info1' ] = Db :: name ( 'user' ) -> where ([ 'id' => $res [ 'user_id1' ]]) -> field ( 'id user_id,nickname,avatar' ) -> find ();
$res [ 'user_info2' ] = Db :: name ( 'user' ) -> where ([ 'id' => $res [ 'user_id2' ]]) -> field ( 'id user_id,nickname,avatar' ) -> find ();
}
if ( $res ){
2025-11-20 16:17:47 +08:00
$return_data [ 'cp' ] = $res ;
2025-11-20 15:08:59 +08:00
} else {
2025-11-20 16:17:47 +08:00
$return_data [ 'cp' ] = null ;
2025-11-20 15:07:27 +08:00
}
return [ 'code' => 1 , 'msg' => '获取成功' , 'data' => $return_data ];
}
//关系卡,关系位
2025-11-20 16:10:47 +08:00
public function relation_card ( $relation_id , $user_id , $type = 0 )
2025-11-20 15:07:27 +08:00
{
$room_auction1 = db :: name ( 'vs_room_auction_relation' ) -> alias ( 'a' )
-> join ( 'user b' , 'a.user_id1 = b.id' , 'left' )
-> join ( 'user c' , 'a.user_id2 = c.id' , 'left' )
-> join ( 'vs_relation d' , 'a.relation_id = d.id' , 'left' ) //关系
2025-11-20 15:53:59 +08:00
-> field ( 'a.relation_id,a.cp_room_id,a.id,a.user_id1,a.user_id2,a.updatetime,a.time_day,a.end_time,b.sex as sex1,b.nickname as nickname1,b.avatar as avatar1,c.sex as sex2,c.nickname as nickname2,c.avatar as avatar2,d.name as relation_name,d.icon as image' )
2025-11-20 15:07:27 +08:00
-> where ([ 'a.user_id1' => $user_id , 'a.end_time' => [ '>' , time ()], 'a.delete_time' => 0 , 'a.relation_id' => $relation_id ])
-> order ( 'a.updatetime desc' )
-> select ();
$room_auction2 = db :: name ( 'vs_room_auction_relation' ) -> alias ( 'a' )
-> join ( 'user b' , 'a.user_id1 = b.id' , 'left' )
-> join ( 'user c' , 'a.user_id2 = c.id' , 'left' )
-> join ( 'vs_relation d' , 'a.relation_id = d.id' , 'left' ) //关系
2025-11-20 15:53:59 +08:00
-> field ( 'a.relation_id,a.cp_room_id,a.id,a.user_id1,a.user_id2,a.updatetime,a.time_day,a.end_time,b.sex as sex1,b.nickname as nickname1,b.avatar as avatar1,c.sex as sex2,c.nickname as nickname2,c.avatar as avatar2,d.name as relation_name,d.icon as image' )
2025-11-20 15:07:27 +08:00
-> where ([ 'a.user_id2' => $user_id , 'a.end_time' => [ '>' , time ()], 'a.delete_time' => 0 , 'a.relation_id' => $relation_id ])
-> order ( 'a.updatetime desc' )
-> select ();
$room_auction = array_merge (( array ) $room_auction1 , ( array ) $room_auction2 );
foreach ( $room_auction as & $v ){
$v [ 'delete_me_coin' ] = get_system_config_value ( 'delete_relation_card_money' );
if ( $v [ 'cp_room_id' ] > 1 ){
//查找房间ID
$v [ 'heart_value' ] = db :: name ( 'vs_room' ) -> where ( 'id' , $v [ 'cp_room_id' ]) -> value ( 'hot_value' );
} else {
$v [ 'heart_value' ] = 0 ;
}
if ( db :: name ( 'vs_room_auction_relation_top' ) -> where ([ 'user_id' => $user_id , 'au_re_id' => $v [ 'id' ]]) -> find ()){
$v [ 'is_top' ] = 1 ; //置顶
} else {
$v [ 'is_top' ] = 0 ;
}
}
//数据重组 根据是否置顶排序 然后根据 time_day 倒序
if ( $room_auction ) {
// 对于未置顶的项目,再根据 time_day 倒序排序
$top_qinmi = array_filter ( $room_auction , function ( $item ) { return $item [ 'is_top' ] == 1 ; });
$untop_qinmi = array_filter ( $room_auction , function ( $item ) { return $item [ 'is_top' ] != 1 ; });
usort ( $untop_qinmi , function ( $a , $b ) {
return $b [ 'time_day' ] <=> $a [ 'time_day' ];
});
$room_auction = array_merge ( $top_qinmi , $untop_qinmi );
$room_auction = array_values ( $room_auction );
}
2025-11-20 16:10:47 +08:00
if ( $type == 0 ){
//取前三个值
$room_auction = array_slice ( $room_auction , 0 , 3 );
}
2025-11-20 15:07:27 +08:00
return $room_auction ;
// return ['code' => 1, 'msg' => '操作成功', 'data' => $room_auction];
}
2025-11-20 15:53:59 +08:00
2025-11-20 16:10:47 +08:00
/*
* 挚友列表查看更多
* @ param int $user_id 用户ID
* @ param int $relation_id 关系ID
*/
2025-11-20 16:24:18 +08:00
public function get_friend_list_more ( $user_id , $relation_id ){
2025-11-20 16:10:47 +08:00
$room_auction = $this -> relation_card ( $relation_id , $user_id , 1 );
return [ 'code' => 1 , 'msg' => '操作成功' , 'data' => $room_auction ];
}
2025-11-20 15:53:59 +08:00
2025-08-07 20:21:47 +08:00
}