851 lines
36 KiB
PHP
851 lines
36 KiB
PHP
<?php
|
||
|
||
namespace app\api\model;
|
||
|
||
use think\Db;
|
||
use think\Log;
|
||
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;
|
||
|
||
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')
|
||
->where(['gift_user' => $uid])
|
||
->field('gift_id,user_id,sum(number) as total')
|
||
->group('gift_id,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,'is_show' => 1])->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];
|
||
}
|
||
$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);
|
||
}
|
||
Log::record("修改用户信息:".$user_id,"infos");
|
||
//给腾讯同步用户信息
|
||
$member_name = db::name('user')->where('id' , $user_id)->value('nickname');
|
||
$member_face_url = db::name('user')->where('id' , $user_id)->value('avatar');
|
||
model('api/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];
|
||
}
|
||
}
|
||
|
||
|
||
//更新用户ip
|
||
public function update_user_ip($user_id,$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];
|
||
}
|
||
|
||
} |