2025-08-07 20:21:47 +08:00
< ? php
namespace app\adminapi\controller ;
use app\admin\model\AdminLog ;
use app\common\controller\adminApi ;
use think\Config ;
use think\Db ;
use think\Hook ;
use think\Session ;
use think\Validate ;
2026-01-03 14:17:47 +08:00
use app\common\library\Token as TokenLib ;
2025-08-07 20:21:47 +08:00
/**
* 后台首页
* @ internal
*/
class User extends adminApi
{
protected $noNeedLogin = [];
protected $noNeedRight = [];
public function _initialize ()
{
parent :: _initialize ();
}
/**
* 会员列表
*/
public function user_lists (){
$page = input ( 'page' , 1 );
$page_limit = input ( 'page_limit' , 30 );
$search_str = input ( 'search' , '' );
$search_user_code = input ( 'search_user_code' , '' );
2025-12-20 18:42:00 +08:00
$order_type = input ( 'order_type' , 'id' );
2025-12-20 19:35:28 +08:00
$order_type_val = input ( 'order_type_val' , '' );
2025-08-07 20:21:47 +08:00
$where [ 'a.is_robot' ] = 0 ;
2025-12-18 15:25:05 +08:00
// $where['a.delete_time'] = 0;
2025-08-07 20:21:47 +08:00
//如果是手机号查手机号
if ( $search_str !== '' ){
if ( is_numeric ( $search_str )) {
$where [ 'a.mobile' ] = [ 'like' , '%' . $search_str . '%' ];
} else {
$where [ 'a.nickname' ] = [ 'like' , '%' . $search_str . '%' ];
}
}
//是否官方账号
$is_sys_tester = input ( 'is_sys_tester' , '' );
if ( $is_sys_tester !== '' ){
if ( $is_sys_tester == 1 ) {
$where [ 'a.is_sys_tester' ] = 1 ;
} else {
$where [ 'a.is_sys_tester' ] = 0 ;
}
}
//实名状态
$is_real = input ( 'is_real' , '' );
if ( $is_real !== '' ){
if ( $is_real == 1 ) {
$where [ 'b.is_real' ] = 1 ;
} else {
2025-12-20 18:42:00 +08:00
$where [ 'b.is_real' ] = [[ '<>' , 1 ],[ 'null' , null ], 'or' ];
2025-08-07 20:21:47 +08:00
}
}
//高级搜索
//靓号,//登录设备,//昵称, //状态,//金币,//主持时间
$search_type = [ 'user_code' , 'login_device' , 'nickname' , 'status' , 'coin1' , 'coin2' , 'createtime' ];
foreach ( $search_type as $v ) {
$input_data = input ( $v , '' );
if ( $input_data !== " " ){
if ( $v == 'coin1' ){
$where [ 'c.coin' ] = [ '>=' , $input_data ];
} elseif ( $v == 'coin2' ){
2025-10-29 09:26:57 +08:00
if ( $input_data ){
$where [ 'c.coin' ] = [ '<=' , $input_data ];
}
2025-08-07 20:21:47 +08:00
} elseif ( $v == 'createtime' ){
2025-10-20 09:59:39 +08:00
$where [ 'a.createtime' ] = [ '>=' , strtotime ( $input_data )];
$where [ 'a.createtime' ] = [ '<=' , strtotime ( $input_data )];
2025-08-07 20:21:47 +08:00
} else {
$where [ 'a.' . $v ] = $input_data ;
}
}
}
$field = '
a . id ,
a . avatar ,
a . mobile ,
a . nickname ,
a . sex ,
a . user_code ,
a . login_device ,
a . loginip ,
c . coin ,
2026-01-07 17:07:20 +08:00
d . earnings ,
2025-08-07 20:21:47 +08:00
b . is_real ,
a . init_code ,
a . status
' ;
2025-12-20 19:35:28 +08:00
if ( $order_type_val == 2 ){
2025-12-20 18:42:00 +08:00
$order_type_val_str = 'asc' ;
2025-12-20 19:35:28 +08:00
} else {
$order_type_val_str = 'desc' ;
2025-12-20 18:42:00 +08:00
}
$order = 'a.id ' . $order_type_val_str ;
if ( $order_type == 'coin' ){
$order = " c.coin " . $order_type_val_str ;
} elseif ( $order_type == 'earnings' ){
2026-01-07 17:07:20 +08:00
$order = " d.earnings " . $order_type_val_str ;
2025-12-20 18:42:00 +08:00
}
2025-08-07 20:21:47 +08:00
$user_data = db :: name ( 'user' ) -> alias ( 'a' )
-> join ( '(SELECT * FROM fa_user_auth WHERE id IN (SELECT MAX(id) FROM fa_user_auth GROUP BY mobile)) b' , 'a.mobile = b.mobile' , 'LEFT' )
2026-01-07 17:07:20 +08:00
-> join ( 'user_wallet_coin c' , 'a.id = c.user_id' , 'LEFT' )
-> join ( 'user_wallet_earnings d' , 'a.id = d.user_id' , 'LEFT' )
2025-08-07 20:21:47 +08:00
-> where ( $where )
-> field ( $field )
2025-12-20 18:42:00 +08:00
-> order ( $order );
2025-08-07 20:21:47 +08:00
$lists = $user_data -> page ( $page , $page_limit ) -> select ();
$count = db :: name ( 'user' ) -> alias ( 'a' )
-> join ( '(SELECT * FROM fa_user_auth WHERE id IN (SELECT MAX(id) FROM fa_user_auth GROUP BY mobile)) b' , 'a.mobile = b.mobile' , 'LEFT' )
2026-01-07 17:07:20 +08:00
-> join ( 'user_wallet_coin c' , 'a.id = c.user_id' , 'LEFT' )
-> join ( 'user_wallet_earnings d' , 'a.id = d.user_id' , 'LEFT' )
2025-08-07 20:21:47 +08:00
-> where ( $where )
-> field ( $field )
2025-12-20 18:42:00 +08:00
-> count ();
2025-08-07 20:21:47 +08:00
foreach ( $lists as $key => $value ) {
2025-12-18 15:25:05 +08:00
if ( $value [ 'status' ] == 1 ){
$lists [ $key ][ 'status_str' ] = '正常' ;
} elseif ( $value [ 'status' ] == 2 ){
$lists [ $key ][ 'status_str' ] = '禁用' ;
} else {
$lists [ $key ][ 'status_str' ] = '注销' ;
}
2025-08-07 20:21:47 +08:00
$lists [ $key ][ 'is_real_str' ] = $value [ 'is_real' ] == 1 ? '已实名' : '未实名' ;
//禁用状态
//1:禁用账号 2:禁用设备号 3:禁用IP
$lists [ $key ][ 'is_block_user' ] = $lists [ $key ][ 'is_block_mobile' ] = $lists [ $key ][ 'is_block_ip' ] = 0 ;
$is_block_user = Db :: name ( 'block' ) -> where ([ 'type_text' => $value [ 'id' ], 'type' => 1 , 'block_time' => [ '>=' , time ()]]) -> find ();
// $is_block_mobile = Db::name('block')->where(['type_text' => $value['login_device'],'type'=>2,'block_time'=>['>=',time ()]])->find();
// $is_block_ip = Db::name('block')->where(['type_text' => $value['loginip'],'type'=>3,'block_time'=>['>=',time ()]])->find();
$lists [ $key ][ 'user_block_time' ] = '' ;
$lists [ $key ][ 'mobile_block_time' ] = '' ;
$lists [ $key ][ 'ip_block_time' ] = '' ;
if ( $is_block_user ){
$lists [ $key ][ 'is_block_user' ] = 1 ;
if ( $is_block_user [ 'block_time' ] == 0 ){
$lists [ $key ][ 'user_block_time' ] = '永久封禁' ;
} else {
$lists [ $key ][ 'user_block_time' ] = date ( 'Y-m-d H:i:s' , $is_block_user [ 'block_time' ]);
}
}
// if($is_block_mobile){
// $lists[$key]['is_block_mobile'] = 1;
// $lists[$key]['mobile_block_time'] = date('Y-m-d H:i:s',$is_block_mobile['block_time']);
// }
// if($is_block_ip){
// $lists[$key]['is_block_ip'] = 1;
// $lists[$key]['ip_block_time'] = date('Y-m-d H:i:s',$is_block_ip['block_time']);
// }
//靓号处理
//查询用是否有靓号
$special_num = db :: name ( 'vs_user_decorate' ) -> where ([ 'user_id' => $value [ 'id' ], 'type' => 6 , 'is_using' => 1 ]) -> where ( 'end_time' ,[ '>=' , time ()], 'or' ) -> value ( 'special_num' );
if ( $special_num ){
$lists [ $key ][ 'special_num' ] = $special_num ;
} else {
$lists [ $key ][ 'special_num' ] = " 无 " ;
}
}
2025-12-18 16:30:46 +08:00
$total_coin = db :: name ( 'user' ) -> alias ( 'a' )
-> join ( '(SELECT * FROM fa_user_auth WHERE id IN (SELECT MAX(id) FROM fa_user_auth GROUP BY mobile)) b' , 'a.mobile = b.mobile' , 'LEFT' )
2026-01-07 17:07:20 +08:00
-> join ( 'user_wallet_coin c' , 'a.id = c.user_id' , 'LEFT' )
-> join ( 'user_wallet_earnings d' , 'a.id = d.user_id' , 'LEFT' )
2025-12-19 18:40:29 +08:00
-> where ([ 'a.delete_time' => 0 ])
2025-12-18 16:30:46 +08:00
-> where ( $where )
-> field ( $field )
-> sum ( 'c.coin' );
$total_earnings = db :: name ( 'user' ) -> alias ( 'a' )
-> join ( '(SELECT * FROM fa_user_auth WHERE id IN (SELECT MAX(id) FROM fa_user_auth GROUP BY mobile)) b' , 'a.mobile = b.mobile' , 'LEFT' )
2026-01-07 17:07:20 +08:00
-> join ( 'user_wallet_coin c' , 'a.id = c.user_id' , 'LEFT' )
-> join ( 'user_wallet_earnings d' , 'a.id = d.user_id' , 'LEFT' )
2025-12-19 18:40:29 +08:00
-> where ([ 'a.delete_time' => 0 ])
2025-12-18 16:30:46 +08:00
-> where ( $where )
-> field ( $field )
2026-01-07 17:07:20 +08:00
-> sum ( 'd.earnings' );
2025-08-07 20:21:47 +08:00
$return_data = [
'page' => $page ,
'page_limit' => $page_limit ,
2025-12-18 16:30:46 +08:00
'total_coin' => $total_coin ,
'total_earnings' => $total_earnings ,
2025-08-07 20:21:47 +08:00
'count' => $count ,
'lists' => $lists
];
return V ( 1 , " 成功 " , $return_data );
}
/*
* 删除用户
*/
public function delUser (){
$user_id = input ( 'user_id' , 0 );
if ( ! $user_id ){
return V ( 0 , " 用户不存在 " );
}
$res = model ( 'User' ) -> where ( 'id' , $user_id ) -> update ([ 'status' => 0 , 'delete_time' => time ()]);
if ( ! $res ) {
return V ( 0 , " 删除失败 " );
}
return V ( 1 , " 成功 " , null );
}
/*
* 封禁用户
* @ type 1 : 禁用账号 2 : 禁用设备号 3 : 禁用IP
*/
public function banUser (){
//获取管理员ID
$admin_id = Session :: get ( 'id' );
$user_id = input ( 'user_id' , 0 );
$type = input ( 'type' , 0 );
$time = input ( 'time' , 0 );
$status = input ( 'status' , 1 );
2026-01-22 17:25:48 +08:00
$ban_eason = input ( 'ban_eason' , 0 );
$ban_day = input ( 'ban_day' , 0 );
2026-01-26 19:29:09 +08:00
if ( empty ( $time )){
if ( ! empty ( $ban_day )){
$time = date ( 'Y-m-d H:i:s' , time () + $ban_day * 86400 );
} else {
$time = " " ;
}
}
2025-08-07 20:21:47 +08:00
$user_info = model ( 'User' ) -> where ( 'id' , $user_id ) -> find ();
if ( ! $user_info ){
return V ( 0 , " 用户不存在 " );
}
if ( $status == 1 ){
$type_text = " " ;
if ( $type == 1 ){
$res = model ( 'User' ) -> where ( 'id' , $user_id ) -> update ([ 'status' => 2 ]);
if ( ! $res ) {
return V ( 0 , " 禁用失败 " );
}
$type_text = $user_id ;
}
if ( $type == 2 ){
$type_text = $user_info [ 'login_device' ];
}
if ( $type == 3 ){
$type_text = $user_info [ 'loginip' ];
}
if ( $time ){
$block_time = strtotime ( $time );
} else {
$block_time = '' ; //永久
}
//插入fa_block 表
$res = Db :: name ( 'block' ) -> insert ([
'admin_id' => $admin_id ,
'type' => $type ,
'type_text' => $type_text ,
'block_time' => $block_time ,
'createtime' => time (),
2026-01-26 19:29:09 +08:00
'ban_eason' => $ban_eason ,
'ban_day' => $ban_day ,
2025-08-07 20:21:47 +08:00
]);
if ( ! $res ) {
return V ( 0 , " 添加失败 " );
}
2026-01-26 19:29:09 +08:00
//加推送单聊消息
2026-01-27 10:42:00 +08:00
if ( $block_time ){
$content = " 您的账号因 含有 " . model ( 'Block' ) -> getBanReason ()[ $ban_eason ] . " 内容 于 " . date ( 'Y-m-d H:i:s' , time ()) . " 被封禁 " . model ( 'Block' ) -> getBanTime ()[ $ban_day ] . " , " . date ( 'Y-m-d H:i:s' , $block_time ) . " 解封,如对处罚有异议请及时联系管理员申诉 " ;
} else {
$content = " 您的账号因 含有 " . model ( 'Block' ) -> getBanReason ()[ $ban_eason ] . " 内容 于 " . date ( 'Y-m-d H:i:s' , time ()) . " 被永久封禁 " . model ( 'Block' ) -> getBanTime ()[ $ban_day ] . " ,请及时联系管理员申诉 " ;
}
2026-01-26 19:29:09 +08:00
$text = [
'MsgType' => 404 ,
'ToUserId' => $user_id ,
2026-01-27 09:35:31 +08:00
'Text' => [
'text' => $content
]
2026-01-26 19:29:09 +08:00
];
//谁发送给谁, 什么消息, 是否同步到发送者1是, 2否, 消息是否只下发给在线用户 1 是, 0 否
2026-01-27 11:47:46 +08:00
model ( 'api/Tencent' ) -> user_sendmsg ( " administrator " , $user_id , json_encode ( $text ), 2 , 1 );
2025-08-07 20:21:47 +08:00
} else {
if ( $type == 1 ) {
$res = model ( 'User' ) -> where ( 'id' , $user_id ) -> update ([ 'status' => 1 ]);
$type_text = $user_id ;
}
if ( $type == 2 ){
$type_text = $user_info [ 'login_device' ];
}
if ( $type == 3 ){
$type_text = $user_info [ 'loginip' ];
}
$map = [
'type' => $type ,
'type_text' => $type_text ,
];
2025-10-20 09:59:39 +08:00
Db :: name ( 'block' ) -> where ( $map ) -> delete ();
Db :: name ( 'sms_error' ) -> where ([ 'mobile' => $user_info [ 'mobile' ]]) -> delete ();
2025-08-07 20:21:47 +08:00
}
2026-01-03 14:17:47 +08:00
$token = db :: name ( 'user_token' ) -> where ( 'user_id' , $user_id ) -> value ( 'token' );
// 删除这个Token, 使其失效
TokenLib :: delete ( $token );
2025-08-07 20:21:47 +08:00
return V ( 1 , " 成功 " , null );
}
2026-01-26 19:29:09 +08:00
//封禁理由
public function getBanEason (){
$list = model ( 'Block' ) -> getBanReason ();
return V ( 1 , " 成功 " , $list );
}
//封禁时长
public function getBanDay (){
$list = model ( 'Block' ) -> getBanTime ();
return V ( 1 , " 成功 " , $list );
}
2025-08-07 20:21:47 +08:00
/*
* 设为官方账号
*/
public function setSysTester (){
$user_id = input ( 'user_id' , 0 );
if ( ! $user_id ){
return V ( 0 , " 用户不存在 " );
}
$res = model ( 'User' ) -> where ( 'id' , $user_id ) -> update ([ 'is_sys_tester' => 1 ]);
if ( ! $res ) {
return V ( 0 , " 添加失败 " );
}
return V ( 1 , " 成功 " , null );
}
/*
* 修改密码
*
*/
public function changePwd (){
$user_id = input ( 'user_id' , 0 );
if ( ! $user_id ){
return V ( 0 , " 用户不存在 " );
}
$new_pwd = input ( 'new_pwd' , '' );
if ( ! $new_pwd ){
return V ( 0 , " 请输入新密码 " );
}
$res = model ( 'User' ) -> where ( 'id' , $user_id ) -> update ([ 'password' => md5 ( $new_pwd )]);
if ( ! $res ) {
return V ( 0 , " 修改失败 " );
}
return V ( 1 , " 成功 " , null );
}
/*
* 设置资金
*/
public function setMoney (){
$user_id = input ( 'user_id' , 0 );
$money_type = input ( 'money_type' , '' );
$change_value = input ( 'change_value' , 0 );
$secondary_password = input ( 'secondary_password' , '' );
$remark = input ( 'remarks' , '' );
if ( ! $user_id ){
return V ( 0 , " 用户不存在 " );
}
if ( ! $money_type ){
return V ( 0 , " 请选择类型 " );
}
$check_pass = model ( 'adminapi/admin' ) -> check_secondary_password ( $secondary_password );
if ( $check_pass [ 'code' ] == 0 ){
return v ( $check_pass [ 'code' ], $check_pass [ 'msg' ], $check_pass [ 'data' ]);
}
if ( ! $change_value ){
return V ( 0 , " 请输入金额 " );
}
if ( $remark ){
$remarks = model ( 'common/UserWallet' ) :: ChangeTypeLable ( model ( 'common/UserWallet' ) :: OPERATION_SYSTEM ) . " 备注: " . $remark ;
} else {
$remarks = model ( 'common/UserWallet' ) :: ChangeTypeLable ( model ( 'common/UserWallet' ) :: OPERATION_SYSTEM );
}
if ( $change_value < 0 ){
$remarks = " 后台扣除- " . $remarks ;
}
$res = model ( 'common/UserWallet' ) -> change_user_money ( $user_id , $change_value , $money_type , model ( 'common/UserWallet' ) :: OPERATION_SYSTEM , $remarks );
if ( $res [ 'code' ] == 0 ){
return V ( $res [ 'code' ], $res [ 'msg' ]);
}
$return = db :: name ( 'vs_admin_recharge_log' ) -> insert ([
'user_id' => $user_id ,
'type' => $money_type ,
'change_value' => $change_value ,
'remarks' => $remark ,
'createtime' => time (),
'admin_id' => Session :: get ( 'admin_id' )
]);
if ( ! $return ){
return v ( 0 , '添加失败' );
}
return v ( 1 , '添加成功' );
}
/*
* 用户信息
*/
public function userInfo (){
$user_id = input ( 'user_id' , 0 );
$user = model ( 'api/User' ) -> get_user_info ( $user_id );
if ( ! $user ){
return V ( 0 , " 用户不存在 " );
}
//数据处理
$user_data [ 'user_info' ][ 'avatar' ] = $user [ 'avatar' ];
$user_data [ 'user_info' ][ 'nickname' ] = $user [ 'nickname' ];
$user_data [ 'user_info' ][ 'charm_level_icon' ] = $user [ 'charm_level_icon' ];
$user_data [ 'user_info' ][ 'wealth_level_icon' ] = $user [ 'wealth_level_icon' ];
$user_data [ 'user_info' ][ 'user_code' ] = $user [ 'user_code' ];
$user_data [ 'user_info' ][ 'mobile' ] = $user [ 'mobile' ];
2026-01-07 15:36:44 +08:00
$user_data [ 'user_info' ][ 'sex' ] = $user [ 'sex' ];
2025-08-07 20:21:47 +08:00
$user_data [ 'user_info' ][ 'birthday' ] = $user [ 'birthday' ];
$user_data [ 'user_info' ][ 'system' ] = $user [ 'system' ];
$user_data [ 'user_info' ][ 'age' ] = $user [ 'age' ];
$user_data [ 'user_info' ][ 'profile' ] = $user [ 'profile' ];
$user_data [ 'user_info' ][ 'status' ] = $user [ 'status' ];
//状态 1正常, 2禁止登录, 0注销
$user_data [ 'user_info' ][ 'status_str' ] = $user [ 'status' ] == 1 ? '正常' : ( $user [ 'status' ] == 2 ? '禁止登录' : '注销' );
$user_data [ 'user_info' ][ 'red_status' ] = $user [ 'red_status' ];
$user_data [ 'user_info' ][ 'red_status_str' ] = $user [ 'red_status' ] == 1 ? '开启' : '禁止' ;
//标签
$user_data [ 'user_info' ][ 'tag' ] = $user [ 'tag_list' ];
2025-11-25 18:57:05 +08:00
$user_data [ 'user_info' ][ 'createtime' ] = date ( 'Y-m-d H:i:s' , $user [ 'createtime' ]); //注册时间
//师傅 老师
$user_sign = db :: name ( 'vs_user_sign' ) -> where ( 'sign_user_id' , $user_id ) -> find ();
$user_data [ 'user_info' ][ 'teacher_id' ] = 0 ;
$user_data [ 'user_info' ][ 'teacher_nickname' ] = '--' ;
if ( $user_sign ){
$teacher_id = $user_sign [ 'parent_user_id' ];
$user_data [ 'user_info' ][ 'teacher_id' ] = $teacher_id ;
$user_data [ 'user_info' ][ 'teacher_nickname' ] = db :: name ( 'user' ) -> where ( 'id' , $teacher_id ) -> value ( 'nickname' );
}
2025-08-07 20:21:47 +08:00
//统计相关:
$user_data [ 'follow_num' ][ 'user_recharge_all_money' ] = $user [ 'user_recharge_all_money' ];
$user_data [ 'follow_num' ][ 'coin' ] = $user [ 'coin' ];
$user_data [ 'follow_num' ][ 'earnings' ] = $user [ 'earnings' ];
$user_data [ 'follow_num' ][ 'follow_num' ] = $user [ 'follow_num' ];
$user_data [ 'follow_num' ][ 'fans_num' ] = $user [ 'fans_num' ];
$user_data [ 'follow_num' ][ 'invited_num' ] = $user [ 'invited_num' ];
$user_data [ 'follow_num' ][ 'invited_earnings' ] = $user [ 'invited_earnings' ];
//收藏话题【咱无】
//收藏评论【咱无】
$user_data [ 'follow_num' ][ 'is_real' ] = $user [ 'is_real' ] == 1 ? '已实名' : '未实名' ;;
$user_data [ 'follow_num' ][ 'real_name' ] = $user [ 'real_name' ];
$user_data [ 'follow_num' ][ 'card_id' ] = $user [ 'card_id' ];
return V ( 1 , " 成功 " , $user_data );
}
/*
* 编辑用户信息
*/
public function editUser (){
$user_id = input ( 'user_id' , 0 );
$user = model ( 'User' ) -> get ( $user_id );
if ( ! $user ) {
return V ( 0 , " 用户不存在 " );
}
$up_user = [];
$nickname = input ( 'nickname' , '' );
if ( $nickname ) {
$up_user [ 'nickname' ] = $nickname ;
}
$sex = input ( 'sex' , '' );
if ( $sex ) {
$up_user [ 'sex' ] = $sex ;
}
$birthday = input ( 'birthday' , '' );
if ( $birthday ) {
$up_user [ 'birthday' ] = $birthday ;
}
$profile = input ( 'profile' , '' );
if ( $profile ) {
$up_user [ 'profile' ] = $profile ;
}
$status = input ( 'status' , '' );
if ( $status ) {
$up_user [ 'status' ] = $status ;
}
$red_status = input ( 'red_status' , '' );
if ( $red_status != " " ){
$up_user [ 'red_status' ] = $red_status ;
}
$up_user_data = [];
$real_name = input ( 'real_name' , '' );
if ( $real_name ) {
$up_user_data [ 'real_name' ] = $real_name ;
}
$card_id = input ( 'card_id' , '' );
if ( $card_id ) {
$up_user_data [ 'card_id' ] = $card_id ;
}
$is_real = input ( 'is_real' , '' );
if ( $is_real ) {
$up_user_data [ 'is_real' ] = $is_real ;
}
$init_code = input ( 'init_code' , '' );
if ( $init_code ){
//绑定
$reslut = model ( 'api/Invited' ) -> invited_bind ( $init_code , $user_id );
if ( $reslut [ 'code' ] == 0 ) {
return v ( $reslut [ 'code' ], $reslut [ 'msg' ], $reslut [ 'data' ]);
}
}
if ( $up_user ){
$reslut = DB :: name ( 'user' ) -> where ( 'id' , $user_id ) -> update ( $up_user );
}
if ( $up_user_data ){
2025-12-29 10:36:48 +08:00
$user_auth = DB :: name ( 'user_auth' ) -> where ( 'mobile' , $user [ 'mobile' ]) -> find ();
if ( $user_auth ){
$res = DB :: name ( 'user_auth' ) -> where ( 'mobile' , $user [ 'mobile' ]) -> update ( $up_user_data );
} else {
$up_user_data [ 'mobile' ] = $user [ 'mobile' ];
if ( $real_name && $card_id ){
$res = DB :: name ( 'user_auth' ) -> insert ( $up_user_data );
2025-12-17 13:04:04 +08:00
}
2025-12-17 12:57:36 +08:00
}
2025-08-07 20:21:47 +08:00
}
return V ( 1 , '操作成功' );
}
/*
* 会员收支日志
*/
public function money_log_list (){
$user_id = input ( 'user_id' );
$page = input ( 'page' , 1 );
$page_limit = input ( 'page_limit' , 10 );
$type = input ( 'type' , '' );
2025-10-21 09:56:36 +08:00
$stime = input ( 'stime' , '' );
$etime = input ( 'etime' , '' );
$change_type = input ( 'change_type' , '' );
$seach = [
'stime' => $stime ,
'etime' => $etime ,
'change_type' => $change_type
];
$return = model ( 'UserWallet' ) -> money_change_log ( $user_id , $seach , $type , $page , $page_limit );
2025-08-07 20:21:47 +08:00
$list = [];
foreach ( $return [ 'list' ] as $k => $v ){
$list [ $k ] = [
'title' => $v [ 'change_type' ],
'change_time' => $v [ 'createtime' ],
'type' => $v [ 'change_in_out' ],
'content' => $v [ 'remarks' ],
'change_money' => $v [ 'change_value' ],
];
}
$return_data = [
'page' => $page ,
'page_limit' => $page_limit ,
'count' => $return [ 'count' ],
'lists' => $list
];
return V ( 1 , " 操作成功 " , $return_data );
}
2025-10-21 09:56:36 +08:00
/*
* 获取用户资金类型
*/
public function get_money_type (){
$reslut = model ( 'UserWallet' ) -> getChangeTypeLableList ();
return V ( 1 , " 操作成功 " , $reslut );
}
2025-08-07 20:21:47 +08:00
/*
* 相册列表
*/
public function get_album_list (){
$user_id = input ( 'user_id' , 0 );
$reslut = model ( 'api/user' ) -> get_album_list ( $user_id );
return V ( $reslut [ 'code' ], $reslut [ 'msg' ], $reslut [ 'data' ]);
}
/*
* 相册详情
*/
public function get_album_detail ()
{
$album_id = input ( 'album_id' , 0 );
$user_id = input ( 'user_id' , 0 );
$pwd = input ( 'pwd' , '' );
$page = input ( 'page' , 1 );
$page_limit = input ( 'page_limit' , 30 );
$reslut = model ( 'api/user' ) -> get_album_detail ( $user_id , $album_id , $pwd , $page , $page_limit , 1 );
return V ( $reslut [ 'code' ], $reslut [ 'msg' ], $reslut [ 'data' ]);
}
//删除相册
public function delete_album ()
{
$album_id = input ( 'album_id' , 0 );
$user_id = input ( 'user_id' , 0 );
$reslut = model ( 'api/user' ) -> delete_album ( $user_id , $album_id );
return V ( $reslut [ 'code' ], $reslut [ 'msg' ], $reslut [ 'data' ]);
}
/**
* 机器人列表
*/
public function get_robot_list (){
$page = input ( 'page' , 1 );
$page_limit = input ( 'page_limit' , 30 );
$search_mobile = input ( 'search_mobile' , '' );
$search_nickname = input ( 'search_nickname' , '' );
$search_id = input ( 'search_id' , '' );
$where [ 'is_robot' ] = 1 ;
$where [ 'a.delete_time' ] = 0 ;
$where [ 'a.status' ] = 1 ;
if ( $search_id !== " " ){
$where [ 'user_code' ] = $search_id ;
}
if ( $search_mobile !== '' ){
$where [ 'a.mobile' ] = [ 'like' , '%' . $search_mobile . '%' ];
}
if ( $search_nickname !== '' ){
$where [ 'a.nickname' ] = [ 'like' , '%' . $search_nickname . '%' ];
}
$field = '
a . id ,
a . avatar ,
a . mobile ,
a . nickname ,
a . sex ,
a . user_code ,
a . login_device ,
c . coin ,
2026-01-12 14:58:35 +08:00
d . earnings ,
2025-08-07 20:21:47 +08:00
b . is_real ,
a . init_code ,
a . status ,
a . createtime
' ;
$count = db :: name ( 'user' ) -> alias ( 'a' )
-> join ( 'fa_user_auth b' , 'a.mobile = b.mobile' , 'LEFT' )
2026-01-12 14:58:35 +08:00
-> join ( 'user_wallet_coin c' , 'a.id = c.user_id' , 'LEFT' )
-> join ( 'user_wallet_earnings d' , 'a.id = d.user_id' , 'LEFT' )
2025-08-07 20:21:47 +08:00
-> where ( $where )
-> count ();
$user_data = db :: name ( 'user' ) -> alias ( 'a' )
-> join ( 'fa_user_auth b' , 'a.mobile = b.mobile' , 'LEFT' )
2026-01-12 14:58:35 +08:00
-> join ( 'user_wallet_coin c' , 'a.id = c.user_id' , 'LEFT' )
-> join ( 'user_wallet_earnings d' , 'a.id = d.user_id' , 'LEFT' )
2025-08-07 20:21:47 +08:00
-> where ( $where )
-> field ( $field )
-> order ( 'a.id desc' );
$lists = $user_data -> page ( $page , $page_limit ) -> select ();
foreach ( $lists as $key => $value ) {
$lists [ $key ][ 'createtime' ] = date ( 'Y-m-d H:i:s' , $value [ 'createtime' ]);
}
$return_data = [
'page' => $page ,
'page_limit' => $page_limit ,
'count' => $count ,
'lists' => $lists
];
return V ( 1 , " 成功 " , $return_data );
}
/**
* 批量生成机器人
*/
public function get_robot_detail (){
$num = 20 ;
for ( $i = 1 ; $i <= $num ; $i ++ ){
$user_name = $this -> hao_duan_create ();
$reslut = model ( 'User' ) -> user_reg ( $user_name );
}
return V ( 1 , " 操作成功 " , null );
}
//单个生成账号
public function create_robot (){
//根据号段生成账号
$user_name = $this -> hao_duan_create ();
$reslut = model ( 'User' ) -> user_reg ( $user_name );
return V ( $reslut [ 'code' ], $reslut [ 'msg' ], $reslut [ 'data' ]);
}
//虚拟号段
public function hao_duan_create (){
$user_name = generateRandomPhoneNumber ();
$user_name_exist = db :: name ( 'user' ) -> where ( 'username' , '=' , $user_name ) -> field ( 'id' ) -> find ();
if ( ! empty ( $user_name_exist )){
return $this -> hao_duan_create ();
// return false;
}
return $user_name ;
}
/*
* 删除机器人
*/
public function delete_robot (){
$user_id = input ( 'user_id' , 0 );
if ( ! $user_id ){
return V ( 0 , " 用户不存在 " );
}
$res = model ( 'User' ) -> where ( 'id' , $user_id ) -> update ([ 'status' => 0 , 'delete_time' => time ()]);
if ( ! $res ) {
return V ( 0 , " 删除失败 " );
}
return V ( 1 , " 成功 " , null );
}
/*
* 背包列表
*/
public function get_backpack_list (){
$user_id = input ( 'user_id' , 0 );
$gid = input ( 'gid' , 0 );
$page = input ( 'page' , 1 );
$page_limit = input ( 'page_limit' , 10 );
$where [ 'a.is_tester' ] = 1 ;
if ( $user_id ){
2025-12-18 16:30:46 +08:00
$where [ 'b.user_code' ] = $user_id ;
2025-08-07 20:21:47 +08:00
}
if ( $gid ){
$where [ 'a.gid' ] = $gid ;
}
2025-12-18 16:30:46 +08:00
$count = db :: name ( 'vs_user_gift_pack' )
-> alias ( 'a' )
-> join ( 'user b' , 'a.user_id = b.id' )
-> join ( 'vs_gift c' , 'a.gid = c.gid' )
-> where ( $where )
-> where ([ 'a.num' => [ '>' , 0 ]])
-> count ();
2025-08-07 20:21:47 +08:00
$list = db :: name ( 'vs_user_gift_pack' )
-> alias ( 'a' )
-> join ( 'user b' , 'a.user_id = b.id' )
-> join ( 'vs_gift c' , 'a.gid = c.gid' )
2025-12-18 16:30:46 +08:00
-> field ( 'a.*,b.user_code,b.nickname,c.gift_name,c.base_image,c.gift_price' )
-> where ( $where )
-> where ([ 'a.num' => [ '>' , 0 ]])
-> order ( 'a.pid' , " desc " )
-> page ( $page , $page_limit )
-> select ();
$gift_total = 0 ;
$gift_count = 0 ;
2025-08-07 20:21:47 +08:00
foreach ( $list as $key => & $value ) {
2025-12-29 12:39:04 +08:00
$value [ 'createtime' ] = date ( 'Y-m-d H:i:s' , $value [ 'updatetime' ]);
2025-12-18 16:30:46 +08:00
$value [ 'nickname' ] = $value [ 'nickname' ] . '-' . $value [ 'user_code' ];
$value [ 'gift_id_name' ] = $value [ 'gift_name' ] . '-' . $value [ 'gid' ];
2025-08-07 20:21:47 +08:00
}
2025-12-18 16:30:46 +08:00
//礼物种类个数
$gift_kinds = db :: name ( 'vs_user_gift_pack' ) -> alias ( 'a' ) -> join ( 'user b' , 'a.user_id = b.id' ) -> where ( $where ) -> where ([ 'num' => [ '>' , 0 ]]) -> group ( 'a.gid' ) -> count ();
$gift_count = db :: name ( 'vs_user_gift_pack' )
-> alias ( 'a' )
-> join ( 'user b' , 'a.user_id = b.id' )
2025-08-07 20:21:47 +08:00
-> join ( 'vs_gift c' , 'a.gid = c.gid' )
2025-12-18 16:30:46 +08:00
-> where ( $where )
-> where ([ 'a.num' => [ '>' , 0 ]])
-> sum ( 'a.num' );
2025-12-29 11:23:36 +08:00
// $gift_total = db::name('vs_user_gift_pack')
// ->alias('a')
// ->join('user b', 'a.user_id = b.id')
// ->join('vs_gift c', 'a.gid = c.gid')
// ->where($where)
// ->where(['a.num'=>['>',0]])
// ->sum('c.gift_price');
$listss = Db :: name ( 'vs_user_gift_pack' ) -> alias ( 'a' )
2025-12-18 16:30:46 +08:00
-> join ( 'user b' , 'a.user_id = b.id' )
-> join ( 'vs_gift c' , 'a.gid = c.gid' )
-> where ( $where )
2025-12-29 11:23:36 +08:00
-> field ( 'a.num,c.gift_price' )
-> select ();
foreach ( $listss as $v ) {
$gift_total += $v [ 'num' ] * $v [ 'gift_price' ];
}
2025-08-07 20:21:47 +08:00
$return_data = [
'page' => $page ,
'page_limit' => $page_limit ,
'count' => $count ,
2025-12-18 16:30:46 +08:00
'gift_kinds' => $gift_kinds ,
2025-08-07 20:21:47 +08:00
'gift_count' => $gift_count ,
'gift_total' => $gift_total ,
'lists' => $list
];
return V ( 1 , " 操作成功 " , $return_data );
}
/*
* 禁用列表
*/
public function get_forbidden_list (){
$user_id = input ( 'user_id' ,);
$seach_value = input ( 'seach_value' , '' );
$search_user_id = input ( 'search_user_id' , '' );
$page = input ( 'page' , 1 );
$page_limit = input ( 'page_limit' , 30 );
$where = [ 'is_delete' => 0 , 'type' => [ '<>' , 1 ]];
//判断seach_value是否是IP地址
if ( $seach_value != '' ){
if ( filter_var ( $seach_value , FILTER_VALIDATE_IP )){
$type = 3 ;
} else {
$type = 2 ;
}
$where [ 'type' ] = $type ;
$where [ 'type_text' ] = $seach_value ;
}
// if($search_user_id!=''){
// $type = 1;
// $where['type'] = $type;
// $where['type_text'] = $search_user_id;
// }
$list = Db :: name ( 'block' ) -> where ( $where ) -> order ( 'id desc' ) -> page ( $page , $page_limit ) -> select ();
$count = Db :: name ( 'block' ) -> where ( $where ) -> count ();
$type_arr = [
1 => '账号' ,
2 => '设备' ,
3 => 'ip' ,
4 => '禁言' ,
];
foreach ( $list as $key => & $value ) {
//封禁类型 1账号, 2设备, 3ip 4禁言
$value [ 'type_str' ] = $type_arr [ $value [ 'type' ]];
if ( $value [ 'block_time' ] == 0 ){
$value [ 'block_time' ] = '永久封禁' ;
$value [ 'status_str' ] = '封禁中' ;
$value [ 'status' ] = 1 ;
} else {
$value [ 'block_time' ] = date ( 'Y-m-d H:i:s' , $value [ 'block_time' ]);
if ( $value [ 'block_time' ] > time ()){
$value [ 'status_str' ] = '封禁中' ;
$value [ 'status' ] = 1 ;
} else {
$value [ 'status_str' ] = '已解封' ;
$value [ 'status' ] = 2 ;
}
}
$value [ 'createtime' ] = date ( 'Y-m-d H:i:s' , $value [ 'createtime' ]);
}
$return_data = [
'page' => $page ,
'page_limit' => $page_limit ,
'count' => $count ,
'lists' => $list
];
return V ( 1 , " 成功 " , $return_data );
}
/*
* 封禁添加
*/
public function add_forbidden (){
$type = input ( 'type' , 1 );
$type_text = input ( 'type_text' , '' );
$block_time = input ( 'block_time' , 0 );
2026-01-29 16:24:58 +08:00
$ban_eason = input ( 'ban_eason' , 0 );
2025-08-07 20:21:47 +08:00
$admin_id = Session :: get ( 'admin_id' );
//插入fa_block 表
$res = Db :: name ( 'block' ) -> insert ([
'admin_id' => $admin_id ,
'type' => $type ,
'type_text' => $type_text ,
'block_time' => strtotime ( $block_time ),
'createtime' => time (),
2026-01-29 16:24:58 +08:00
'ban_eason' => $ban_eason ,
2025-08-07 20:21:47 +08:00
]);
if ( ! $res ) {
return V ( 0 , " 添加失败 " );
}
2026-01-29 16:24:58 +08:00
//1账号, 2设备, 3ip 4禁言
if ( $type == 1 ){
$user_id = db :: name ( 'user' ) -> where ( 'user_code' , $type_text ) -> value ( 'id' );
}
if ( $type == 2 ){
$user_id = db :: name ( 'user' ) -> where ( 'login_device' , $type_text ) -> value ( 'id' );
}
if ( $type == 3 ){
$user_id = db :: name ( 'user' ) -> where ( 'loginip' , $type_text ) -> value ( 'id' );
}
if ( isset ( $user_id )){
$token = db :: name ( 'user_token' ) -> where ( 'user_id' , $user_id ) -> value ( 'token' );
// 删除这个Token, 使其失效
TokenLib :: delete ( $token );
}
2025-08-07 20:21:47 +08:00
return V ( 1 , " 添加成功 " , null );
}
/*
* 解封
*/
public function del_forbidden (){
$id = input ( 'id' , 0 );
if ( ! $id ) {
return V ( 0 , " 参数错误 " );
}
$res = Db :: name ( 'block' ) -> where ([ 'id' => $id ]) -> delete ();
if ( ! $res ) {
return V ( 0 , " 解封失败 " );
}
return V ( 1 , " 解封成功 " , null );
}
/*
* 用户列表
*/
public function get_user_list (){
2025-10-20 09:59:39 +08:00
$user_code = input ( 'user_code' , 0 );
$where = [];
if ( $user_code ){
$where [ 'user_code' ] = $user_code ;
}
$user = db :: name ( 'user' ) -> field ( 'id,nickname,avatar' ) -> where ( $where ) -> where ([ 'status' => 1 , 'is_robot' => 0 , 'delete_time' => 0 ]) -> select ();
2025-08-07 20:21:47 +08:00
return V ( 1 , " 操作成功 " , $user );
}
2025-12-18 15:25:05 +08:00
//注销用户找回
2025-12-18 15:44:50 +08:00
public function cancel_user_recovery (){
2025-12-18 15:25:05 +08:00
$mobile = input ( 'mobile' , 0 );
if ( ! $mobile ){
return V ( 0 , " 手机号不能为空 " );
}
$user = db :: name ( 'user' ) -> where ([ 'mobile' => $mobile , 'delete_time' => [ '<>' , 0 ], 'status' => 0 ]) -> find ();
if ( ! $user ){
return V ( 0 , " 该手机号未注销 " );
}
$user_count = db :: name ( 'user' ) -> where ([ 'mobile' => $mobile , 'delete_time' => 0 ]) -> count ();
if ( $user_count > 3 ){
return V ( 0 , " 该手机号绑定账号超限了 " );
}
$user_del = db :: name ( 'user' ) -> where ([ 'mobile' => $mobile , 'delete_time' => [ '<>' , 0 ]]) -> count ();
if ( $user_del > 1 ){
return V ( 0 , " 相关注销超过1个, 暂不支持找回 " );
}
//开启事务
db :: startTrans ();
try {
$user_id = db :: name ( 'user' ) -> where ([ 'mobile' => $mobile , 'delete_time' => [ '<>' , 0 ]]) -> value ( 'id' );
db :: name ( 'user' ) -> where ([ 'id' => $user_id ]) -> update ([
'delete_time' => 0 ,
'status' => 1 ,
'nickname' => '游客_' . $user_id . rand ( 1000 , 9999 ),
'avatar' => get_system_config_value ( 'web_site' ) . '/data/avatar/head_pic.png' ,
'updatetime' => time (),
]);
db :: name ( 'user_data' ) -> where ([ 'user_id' => $user_id ]) -> update ([
'deletetime' => 0 ,
'updatetime' => time (),
]);
//查询创建的房间
$room_list = db :: name ( 'vs_room' ) -> where ([ 'user_id' => $user_id , 'type_id' => [ '<>' , 6 ]]) -> find ();
if ( $room_list ){
db :: name ( 'vs_room' ) -> where ([ 'id' => $room_list [ 'id' ]]) -> update ([
'room_status' => 1 ,
'updatetime' => time (),
]);
}
//查他的钱包
2026-01-12 14:58:35 +08:00
//清空金币表
$wallet_coin = db :: name ( 'user_wallet_coin' ) -> where ([ 'user_id' => $user_id ]) -> find ();
if ( $wallet_coin ){
db :: name ( 'user_wallet_coin' ) -> where ([ 'id' => $wallet_coin [ 'id' ]]) -> update ([
2025-12-18 15:25:05 +08:00
'coin' => 0 ,
2026-01-12 14:58:35 +08:00
'updatetime' => time (),
]);
}
//清空钻石表
$wallet_earnings = db :: name ( 'user_wallet_earnings' ) -> where ([ 'user_id' => $user_id ]) -> find ();
if ( $wallet_earnings ){
db :: name ( 'user_wallet_earnings' ) -> where ([ 'id' => $wallet_earnings [ 'id' ]]) -> update ([
2025-12-18 15:25:05 +08:00
'earnings' => 0 ,
'updatetime' => time (),
]);
}
2026-01-12 14:58:35 +08:00
2025-12-18 15:25:05 +08:00
//他的装扮
$dress = db :: name ( 'vs_user_decorate' ) -> where ([ 'user_id' => $user_id ]) -> select ();
if ( $dress ){
foreach ( $dress as $key => $value ) {
if ( $value [ 'end_time' ] > time ()){
2026-01-12 10:18:34 +08:00
db :: name ( 'vs_user_decorate' ) -> where ([ 'udid' => $value [ 'udid' ]]) -> update ([
2025-12-18 15:25:05 +08:00
'is_perpetual' => 2 ,
'end_time' => time (),
'updatetime' => time (),
]);
}
}
}
db :: commit ();
return V ( 1 , " 操作成功 " , null );
} catch ( \Exception $e ){
db :: rollback ();
return V ( 0 , " 操作失败, " . $e -> getMessage ());
}
}
2025-12-25 16:29:14 +08:00
//家族成员
public function get_family_member (){
$user_id = input ( 'user_id' , 0 );
$page = input ( 'page' , 1 );
$page_limit = input ( 'page_limit' , 30 );
if ( ! $user_id ){
return V ( 0 , " 参数错误 " );
}
$user_sign = db :: name ( 'vs_user_sign' ) -> where ([ 'parent_user_id' => $user_id , 'end_time' => [ '>' , time ()]]) -> select ();
$count = db :: name ( 'vs_user_sign' ) -> where ([ 'parent_user_id' => $user_id , 'end_time' => [ '>' , time ()]]) -> count ();
$list = [];
foreach ( $user_sign as $key => $value ) {
$sign_user = db :: name ( 'user' ) -> field ( 'id,user_code,nickname,market_value' ) -> where ([ 'id' => $value [ 'sign_user_id' ]]) -> find ();
$list [ $key ][ 'id' ] = $value [ 'id' ];
$list [ $key ][ 'user_id' ] = $sign_user [ 'id' ];
$list [ $key ][ 'user_code' ] = $sign_user [ 'user_code' ];
$list [ $key ][ 'nickname' ] = $sign_user [ 'nickname' ];
$list [ $key ][ 'createtime' ] = date ( 'Y-m-d H:i:s' , $value [ 'createtime' ]);
$list [ $key ][ 'end_time' ] = date ( 'Y-m-d H:i:s' , $value [ 'end_time' ]);
//剩余天数
$list [ $key ][ 'surplus_days' ] = ceil (( $value [ 'end_time' ] - time ()) / 86400 );
//免费续约次数
$list [ $key ][ 'free_renewal_times' ] = 3 - $value [ 'sign_times' ];
if ( $list [ $key ][ 'free_renewal_times' ] <= 0 ){
$list [ $key ][ 'free_renewal_times' ] = 0 ;
}
//当前身价
$list [ $key ][ 'market_value' ] = $sign_user [ 'market_value' ];
}
$return_data = [
'page' => $page ,
'page_limit' => $page_limit ,
'count' => $count ,
'lists' => $list
];
return V ( 1 , " 成功 " , $return_data );
}
//解约
public function cancel_contract (){
$user_sign_id = input ( 'id' , 0 );
if ( ! $user_sign_id ){
return V ( 0 , " 参数错误 " );
}
$user_sign = db :: name ( 'vs_user_sign' ) -> where ([ 'id' => $user_sign_id ]) -> find ();
if ( ! $user_sign ){
return V ( 0 , " 参数错误 " );
}
$resultt = db :: name ( 'vs_user_sign' )
-> where ([ 'id' => $user_sign_id ])
2025-12-25 16:49:55 +08:00
-> update ([ 'end_time' => time (), 'sign_user_type' => 4 , 'type' => 4 , 'status' => 2 ]);
2025-12-25 16:29:14 +08:00
if ( ! $resultt ){
return V ( 0 , " 操作失败 " );
}
2025-12-25 16:49:55 +08:00
//处理家族
$myFamily = db :: name ( 'vs_family' )
-> where ([ 'user_id' => $user_sign [ 'sign_user_id' ], 'type' => 0 , 'pid' => $user_sign [ 'parent_user_id' ], 'deletetime' => 0 ]) -> find ();
if ( $myFamily ){
$mySignFamily = db :: name ( 'vs_family' ) -> where ([ 'user_id' => $user_sign [ 'parent_user_id' ], 'type' => 1 ]) -> find ();
//删除群成员
model ( 'api/Tencent' ) -> delete_group_member ( 'f' . $mySignFamily [ 'id' ], $user_sign [ 'sign_user_id' ]);
//退出家族
db :: name ( 'vs_family' ) -> where ( 'id' , $myFamily [ 'id' ]) -> update ([ 'deletetime' => time ()]);
}
2025-12-25 16:29:14 +08:00
return V ( 1 , " 操作成功 " );
}
2026-01-22 17:25:48 +08:00
//cp关系列表
public function user_cp_list (){
$user_id = input ( 'user_id' , 0 );
$page = input ( 'page' , 1 );
$page_limit = input ( 'page_limit' , 30 );
if ( ! $user_id ){
return V ( 0 , " 参数错误 " );
}
$count = db :: name ( 'user_cp_zone' )
-> where ([ 'user_id1' => $user_id ])
-> whereOr ([ 'user_id2' => $user_id ])
-> count ();
$list = db :: name ( 'user_cp_zone' ) -> where ([ 'user_id1' => $user_id ]) -> whereOr ([ 'user_id2' => $user_id ]) -> select ();
foreach ( $list as $key => $value ) {
$user1 = db :: name ( 'user' ) -> field ( 'id,nickname,user_code' ) -> where ([ 'id' => $value [ 'user_id1' ]]) -> find ();
$user2 = db :: name ( 'user' ) -> field ( 'id,nickname,user_code' ) -> where ([ 'id' => $value [ 'user_id2' ]]) -> find ();
$list [ $key ][ 'user1_nickname' ] = $user1 [ 'nickname' ];
$list [ $key ][ 'user1_user_code' ] = $user1 [ 'user_code' ];
$list [ $key ][ 'user2_nickname' ] = $user2 [ 'nickname' ];
$list [ $key ][ 'user3_user_code' ] = $user2 [ 'user_code' ];
$list [ $key ][ 'createtime' ] = date ( 'Y-m-d H:i:s' , $value [ 'createtime' ]);
$list [ $key ][ 'status_str' ] = $value [ 'status' ] == 1 ? '已建立' : '已取消' ;
}
$return_data = [
'page' => $page ,
'page_limit' => $page_limit ,
'count' => $count ,
'lists' => $list
];
return V ( 1 , " 成功 " , $return_data );
}
//用户关系列表
public function user_relation_list (){
$user_id = input ( 'user_id' , 0 );
$page = input ( 'page' , 1 );
$page_limit = input ( 'page_limit' , 30 );
if ( ! $user_id ){
return V ( 0 , " 参数错误 " );
}
$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' ) //关系
-> 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 ,a.delete_time' )
-> where ([ 'a.user_id1' => $user_id , 'a.end_time' => [ '>' , time ()]])
-> 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' ) //关系
-> 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,a.delete_time' )
-> where ([ 'a.user_id2' => $user_id , 'a.end_time' => [ '>' , time ()]])
-> order ( 'a.updatetime desc' )
-> select ();
$room_auction = array_merge (( array ) $room_auction1 , ( array ) $room_auction2 );
foreach ( $room_auction as $key => $value ) {
//是否有效
$room_auction [ $key ][ 'is_valid' ] = $value [ 'delete_time' ] == 0 && $value [ 'end_time' ] > time () ? 1 : 0 ;
$room_auction [ $key ][ 'end_time' ] = date ( 'Y-m-d H:i:s' , $value [ 'end_time' ]);
$room_auction [ $key ][ 'add_time' ] = date ( 'Y-m-d H:i:s' , $value [ 'updatetime' ]);
}
$return_data = [
'lists' => $room_auction
];
return V ( 1 , " 成功 " , $return_data );
}
2025-08-07 20:21:47 +08:00
}