Files
midi-php/application/api/model/User.php
2025-10-14 16:59:37 +08:00

901 lines
38 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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')
->field('id as user_id,nickname,user_code,avatar,sex,mobile')
->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);//魅力图标
//关注数
$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);
$user_info['auth'] = db::name('user_auth')->where(['mobile' => $user_info['mobile'],'is_real' => 1])->find() ? 1 : 0;
//是否可以发布动态
$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;
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']);//魅力图标
}
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']);//魅力图标
}
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')
->field('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')
->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) ?? '';//魅力图标
//查询用户是否有使用靓号
$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);
//记录用户访问记录
if($from_uid != $uid){
$this->add_user_visit_log(1,$from_uid, $uid);
}
//用户所属工会
$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'] = '';
}
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分组 同一用户送的同一礼物相加
$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')
->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);
//查询所有的礼物
$gift_list = db::name('vs_gift')->field('gid as gift_id,gift_name,base_image,gift_price')->where(['delete_time' => 0,'label'=>['<>',2]])->select();
//对比去除$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)){
return ['code' => 0, 'msg' => '请选择想要移动的图片', 'data' => null];
}
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)){
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];
}
}
$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();
try{
$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);
}
//给腾讯同步用户信息
$member_name = db::name('user')->where('id' , $user_id)->value('nickname');
$member_face_url = db::name('user')->where('id' , $user_id)->value('avatar');
model('Tencent')->modify_user_infos($user_id, $member_name, $member_face_url);
return ['code' => 1, 'msg' => '修改成功', 'data' => null];
}
catch(\Exception $e){
db::rollback();
return ['code' => 0, 'msg' => $e, 'data' => null];
}
}
//修改用户背景图
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];
}
}
//关注房间(红包专用)
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];
}
}
//更新用户ip
public function update_user_ip($user_id,$ip){
//判断$ip是否是汉字
if(preg_match('/[\x{4e00}-\x{9fa5}]+/u', $ip)){
$ip = '未知';
}
$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];
}
}