['like',$search.'%']]; //通过工会ID搜索 }else{ $where = ['guild_name'=>['like',$search.'%']]; } $list = []; $list = Db::name('vs_guild') ->field('id,guild_special_id,user_id,guild_name,cover,num,intro,createtime,income') ->where(['is_show'=>1,'delete_time'=>0]) ->where($where) ->page($page, $page_limit) ->order('num desc') ->select(); $count = Db::name('vs_guild') ->where(['is_show'=>1,'delete_time'=>0]) ->where($where) ->count(); if($list){ foreach ($list as $key => &$value) { $list[$key]['cover'] = localpath_to_netpath( $value['cover']); $list[$key]['createtime'] = date('Y-m-d H:i:s',$value['createtime']); //会长信息 $list[$key]['user_name'] = Db::name('user')->where(['id'=>$value['user_id']])->value('nickname');//会长昵称 $list[$key]['user_avatar'] = Db::name('user')->where(['id'=>$value['user_id']])->value('avatar');//会长头像 //当前用户是否加入该公会 $guild_user = Db::name('vs_guild_user')->where(['guild_id'=>$value['id'],'user_id'=>$user_id,'status'=>1,'delete_time'=>0])->value('id'); $list[$key]['is_join'] = $guild_user ? 1 : 0; //公会用户头像 $guild_user_list = Db::name('vs_guild_user')->alias('a') ->join('user b','a.user_id = b.id') ->field('a.user_id,b.avatar') ->where(['a.guild_id'=>$value['id'],'a.delete_time'=>0,'a.status'=>1,'a.is_deacon'=>2]) ->order('a.coin desc') ->limit(3) ->select(); $list[$key]['guild_user_list'] = $guild_user_list; //工会总流水 $list[$key]['total_transaction'] = $value['income']; //公会靓号处理 $list[$key]['guild_special_id'] = model('api/Decorate')->user_decorate_detail($value['id'], 8); } } $data =[ 'page' => $page, 'limit' => $page_limit, 'count' => $count, 'list' => $list ]; return ['code'=>1,'msg'=>'获取成功','data'=>$data]; } /* * 获取公会详情 * @param $id * @param $user_id */ public function get_guild_info($id,$user_id=0) { $info = Db::name('vs_guild') ->field('id,guild_special_id,user_id,guild_name,cover,num,intro,createtime,income') ->where(['id'=>$id,'is_show'=>1,'delete_time'=>0]) ->find(); if($info){ $info['cover'] = localpath_to_netpath( $info['cover']); $info['createtime'] = date('Y-m-d H:i:s',$info['createtime']); //当前用户是否是会长 $info['is_leader'] = $info['user_id'] == $user_id ? 1 : 0; //当前用户是否加入当前工会 $info['is_join'] = Db::name('vs_guild_user')->where(['user_id'=>$user_id,'guild_id'=>$id,'status'=>1,'delete_time'=>0])->value('guild_id')> 0 ? 1 : 0; //工会总流水 $info['total_transaction'] = $info['income']; //工会房间数 $info['room_num'] = Db::name('vs_guild_user')->where(['guild_id'=>$id,'status'=>1,'delete_time'=>0,'room_id'=>['<>',0]])->count(); //付费退出公会所需金 $info['quit_guild_gold'] = get_system_config_value('quit_guild_gold'); //工会群组ID $info['group_id'] = "g".$info['id']; //会长信息 $user_data = Db::name('user')->where(['id'=>$info['user_id']])->field('id,nickname,avatar')->find(); $info['user_data']['nickname'] = $user_data['nickname']; $info['user_data']['avatar'] = localpath_to_netpath($user_data['avatar']); $info['user_data']['icon'][0] = model('UserData')->user_wealth_icon($info['user_id']);//财富图标 $info['user_data']['icon'][1] = model('UserData')->user_charm_icon($info['user_id']);//魅力图标 //公会靓号处理 $info['guild_special_id'] = model('api/Decorate')->user_decorate_detail($info['id'], 8); }else{ $info = []; } return ['code'=>1,'msg'=>'获取成功','data'=>$info]; } /* * 加入工会申请 */ public function join_guild_apply($guild_id,$user_id=0) { //查询是否实名认证 $is_real = model('api/UserData')->real_name_info($user_id); if($is_real['code']==0){ return ['code' => 0, 'msg' => '请先实名认证','data' => null]; }else{ if($is_real['data']['is_real'] !=1){ return ['code' => 0, 'msg' => '请先实名认证','data' => null]; } } //公会是否存在 $guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'delete_time'=>0])->find(); if(!$guild_info){ return ['code' => 0, 'msg' => '该公会不存在', 'data' => null]; } $is_check_join = Db::name('vs_guild_user')->where(['user_id'=>$user_id,'delete_time'=>0])->order('id desc')->find(); if($is_check_join && $is_check_join['guild_id']==$guild_id && $is_check_join['status']==1){ return ['code'=>0,'msg'=>'您已加入该工会', 'data' => null]; } if($is_check_join && $is_check_join['guild_id']==$guild_id && $is_check_join['status']==2){ return ['code'=>0,'msg'=>'您已提交申请,请耐心等待', 'data' => null]; } if($is_check_join && $is_check_join['guild_id']!=$guild_id && $is_check_join['status']==1){ return ['code'=>0,'msg'=>'您已加入别的工会,请先退出公会再加入', 'data' => null]; } if($is_check_join && $is_check_join['guild_id']!=$guild_id && $is_check_join['status']==2){ $other_guild_name = Db::name('vs_guild')->where(['id'=>$is_check_join['guild_id']])->value('guild_name'); return ['code'=>0,'msg'=>'您已申请加入工会'.$other_guild_name.',请等待会长审核', 'data' => null]; } //是否被踢出过 $ti_chu = db::name('vs_guild_user')->where(['user_id'=>$user_id,'guild_id'=>$guild_id,'delete_time'=>['<>',0],'quit_type'=>2])->find(); if(!empty($ti_chu)){ return ['code' => 0, 'msg' => '已被踢出,禁止加入!', 'data' => null]; } //退出公会是否超过30天 $map = []; $map['user_id'] = $user_id; $map['delete_time'] = ['<>',0]; $map['quit_type'] = 1; $quit_guild_info = Db::name('vs_guild_user')->where($map)->order('quit_time', 'desc')->field('quit_time,guild_id,quit_type')->find(); if(!empty($quit_guild_info)) { $quit_time = empty($quit_guild_info['quit_time']) ? 0 : $quit_guild_info['quit_time']; $quit_type = $quit_guild_info['quit_type']; if($quit_guild_info['guild_id'] != $guild_id) { $last_time = 30 * 24 * 3600; if((time() - $last_time) <= $quit_time) { return ['code' => 0, 'msg' => '退出公会未超过30天,不能重新加入其他公会', 'data' => null]; } } } //是否有房间 $rid = 0; $room_info = db::name('vs_room')->where(['user_id'=>$user_id,'delete_time'=>0,'type_id'=>['<>',6]])->find(); if($room_info){ $rid = $room_info['id']; } $insert_data = []; $insert_data['user_id'] = $user_id; $insert_data['guild_id'] = $guild_id; $insert_data['room_id'] = $rid; $insert_data['status'] = 2; $insert_data['is_deacon'] = 2; $insert_data['createtime'] = time(); // $update_data['apply_time'] = time(); $insert_data['is_show_room'] = 1; $reslut = db::name('vs_guild_user')->insert($insert_data); if($reslut){ //增加公会人数 db::name('vs_guild')->where('id', $guild_info['id'])->setInc('num', 1); //拉用户进入工会群聊 // model('api/Tencent')->add_group_member('g'.$guild_id, $user_id); // model('api/Tencent')->send_group_system_notification('g'.$guild_id,"欢迎".$user_info['nickname'].'加入公会'); return ['code' => 1, 'msg' => '提交成功', 'data' => null]; }else{ return ['code' => 0, 'msg' => '提交失败', 'data' => null]; } } /* * 申请列表 */ public function get_apply_guild_list($uid, $guild_id, $page, $page_limit){ $page = (int)$page; $page_limit = $page_limit < 30 ? $page_limit : 30; $user_info = db::name('user')->find($uid); if(!$user_info){ return ['code' => 0, 'msg' => '参数错误', 'data' => null]; } //公会信息 $guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'delete_time'=>0])->find(); if(!$guild_info){ return ['code' => 0, 'msg' => '该公会不存在', 'data' => null]; } $map = []; $map = [ 'a.guild_id' => $guild_id, 'a.status' => 2 ]; $count = db::name('vs_guild_user')->alias('a')->join('user b', 'a.user_id = b.id')->where($map)->count(); $list = db::name('vs_guild_user')->alias('a')->join('user b', 'a.user_id = b.id') ->field('a.id, a.user_id, a.guild_id, a.room_id, a.status, b.nickname, b.avatar,b.user_code') ->where($map) ->order('id desc') ->page($page, $page_limit) ->select(); foreach ($list as $k => &$v){ $v['user_code'] = model('Decorate')->user_decorate_detail($v['user_id'],6); } $data = []; $data =[ 'page' => $page, 'limit' => $page_limit, 'count' => $count, 'list' => $list, ]; return ['code' => 200, 'msg' => '获取成功', $data]; } /* * 同意,拒绝申请 */ public function operate_guild($apply_id, $type,$uid=0,$remarks=""){ if($uid != 0){ $user_info = db::name('user')->find($uid); if(!$user_info){ return ['code' => 0, 'msg' => '参数错误', 'data' => null]; } } //该申请是否已被操作 $is_operate = db::name('vs_guild_user')->where(['id'=>$apply_id,'status'=>2])->find(); if(!$is_operate){ return ['code' => 201, 'msg' => '该申请不存在', 'data' => null]; } if(!in_array($type, [1,2])){ return ['code' => 0, 'msg' => '参数错误', 'data' => null]; } $guild_info = db::name('vs_guild')->where('id', $is_operate['guild_id'])->find(); if($uid!=0 && $uid != $guild_info['user_id']){ return ['code' => 0, 'msg' => '您没有权限操作', 'data' => null]; } //审核通过 if($type == 1) { $is_join_guild = Db::name('vs_guild_user')->where(['user_id' => $is_operate['user_id'], 'delete_time' => 0, 'status' => 1])->find(); if(!empty($is_join_guild)) { return ['code' => 0, 'msg' => '已加入其他工会', 'data' => null]; } } Db::startTrans(); try { if($type == 1){//同意 $update_data = []; $update_data['status'] = 1; $update_data['updatetime'] = time(); $update_data['is_show_room'] = 1; $update_data['apply_time'] = time(); $update_data['remarks'] = $remarks; //结算比例 $configs = get_system_config(); //未加入工会的收益 $ratiogr = $configs['room_gift_ratio']; //收益增加 加入工会的收益 $ratiog = $configs['room_gift_guild_ratio']; //收礼人最终的收益比例 $ratio = $ratiogr + $ratiog; $update_data['settlement_ratio'] = $ratio; $reslut = db::name('vs_guild_user')->where(['id'=>$apply_id])->update($update_data); if(!$reslut){ Db::rollback(); return ['code' => 0, 'msg' => '操作失败', 'data' => null]; } //增加公会人数 db::name('vs_guild')->where('id', $guild_info['id'])->setInc('num', 1); //拉用户进入工会群聊 $user_nickname = db::name('user')->where('id', $is_operate['user_id'])->value('nickname'); if($is_operate['guild_id']<=95){ //事故处理-114以前的群被删了 $guild_id = "g".$is_operate['guild_id']; }else{ $guild_id = $is_operate['guild_id']; } model('api/Tencent')->add_group_member('g'.$guild_id, $is_operate['user_id']); model('api/Tencent')->send_group_system_notification('g'.$guild_id,"欢迎".$user_nickname.'加入公会'); //发系统信息 $content = "恭喜加入{$guild_info['guild_name']}工会,您的个人收益增加{$ratiog}%,目前总收益{$ratio}%"; model('api/UserMessage')->send_system_message($is_operate['user_id'], "加入公会成功通知", $content, 1); //处理新手任务 model('api/Tasks')->tasks_complete($is_operate['user_id'],11); }else if($type == 2){//拒绝 $update_data = []; $update_data['status'] = 3; $update_data['updatetime'] = time(); $update_data['apply_time'] = time(); $update_data['remarks'] = $remarks; $reslut = db::name('vs_guild_user')->where(['id'=>$apply_id])->update($update_data); if(!$reslut){ Db::rollback(); return ['code' => 0, 'msg' => '操作失败', 'data' => null]; } } Db::commit(); return ['code' => 1, 'msg' => '操作成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 Db::rollback(); return ['code' => 0, 'msg' => '操作失败', 'data' => null]; } } /* * 踢出工会 */ public function kick_out_guild($uid,$user_id, $guild_id){ $user_info = db::name('user')->find($user_id); if(!$user_info){ return ['code' => 0, 'msg' => '参数错误', 'data' => null]; } $guild_info = db::name('vs_guild')->find($guild_id); if(!$guild_id){ return ['code' => 0, 'msg' => '参数错误', 'data' => null]; } if($uid != $guild_info['user_id']){ return ['code' => 0, 'msg' => '您没有权限操作','data' => null]; } $map = []; $map['user_id'] = $user_id; $map['guild_id'] = $guild_id; $map['status'] = 1; $map['delete_time'] = 0; $user_guild_info = db::name('vs_guild_user')->where($map)->find(); if(!$user_guild_info){ return ['code' => 0, 'msg' => '该用户不在该公会', 'data' => null]; } if($user_guild_info['is_deacon'] == 1){ return ['code' => 0, 'msg' => '会长无法被踢出','data' => null]; } $update_data = []; $update_data['delete_time'] = time(); $update_data['updatetime'] = time(); $update_data['quit_time'] = time(); $update_data['quit_type'] = 2; $reslut = db::name('vs_guild_user')->where('id', $user_guild_info['id'])->update($update_data); if($reslut){ //减少公会人数 db::name('vs_guild')->where('id', $guild_info['id'])->setDec('num'); model('api/Tencent')->delete_group_member('g'.$guild_id, $user_id); return ['code' => 1, 'msg' => '踢出成功','data' => null]; }else{ return ['code' => 0, 'msg' => '踢出失败','data' => null]; } } //退出公会 public function quit_guild($uid, $guild_id,$type){ $config = get_system_config(); $user_info = db::name('user')->find($uid); if(!$user_info){ return ['code' => 0, 'msg' => '参数错误', 'data' => null]; } $guild_info = db::name('vs_guild')->find($guild_id); if(!$guild_info){ return ['code' => 0, 'msg' => '参数错误', 'data' => null]; } $map = []; $map['user_id'] = $uid; $map['guild_id'] = $guild_id; $map['status'] = 1; $map['delete_time'] = 0; $user_guild_info = db::name('vs_guild_user')->where($map)->find(); if(!$user_guild_info){ return ['code' => 0, 'msg' => '用户不在该公会', 'data' => null]; } if($user_guild_info['is_deacon'] == 1){ return ['code' => 0, 'msg' => '会长无法退出公会', 'data' => null]; } $time = 60 * 60 * 24 * $config['quit_guild_time']; $time = $user_guild_info['createtime'] + $time; if($time > time() && $type != 2){ return ['code' => 0, 'msg' => '加入公会'.$config['quit_guild_time'].'天内无法退出', 'data' => null]; } Db::startTrans(); try { $update_data = []; if($type ==2){ //付费退出 //扣款 $quit_guild_gold = $config['quit_guild_gold']; $res = model('common/UserWallet')->change_user_money($uid, $quit_guild_gold, model('common/UserWallet')::MONEYTYPECOIN, model('common/UserWallet')::GUILD_EXIT,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::GUILD_EXIT)); if($res['code'] == 0){ Db::rollback(); return ['code' => 0, 'msg' => $res['msg'], 'data' => null]; } $update_data['quit_type'] = 4; $update_data['quit_time'] = time(); $update_data['delete_time'] = time(); $update_data['updatetime'] = time(); $reslut = db::name('vs_guild_user')->where('id',$user_guild_info['id'])->update($update_data); if(!$reslut){ Db::rollback(); return ['code' => 0, '' => '退出失败', 'data' => null]; } //加入审核表 $insert_data = []; $insert_data['guid'] = $user_guild_info['id']; $insert_data['user_id'] = $uid; $insert_data['guild_id'] = $guild_id; $insert_data['status'] = 1; $insert_data['type'] = 2; $insert_data['createtime'] = time(); $insert_data['updatetime'] = time(); $res = db::name('vs_guild_user_quit_log')->insert($insert_data); if(!$res){ Db::rollback(); return ['code' => 0, '' => '退出失败', 'data' => null]; } //减少公会人数 db::name('vs_guild')->where('id', $guild_info['id'])->setDec('num'); model('api/Tencent')->delete_group_member('g'.$guild_id, $uid); //付费退出费用给公会长 $res = model('common/UserWallet')->change_user_money($guild_info['user_id'], $quit_guild_gold, model('common/UserWallet')::MONEYTYPECOIN, model('common/UserWallet')::GUILD_EXIT_DEACON_INCOME,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::GUILD_EXIT_DEACON_INCOME)); Db::commit(); return ['code' => 1, 'msg' => '退出成功', 'data' => null]; }else{ $quit_log = db::name('vs_guild_user_quit_log')->where(['guild_id'=>$guild_id,'user_id'=>$uid,'status'=>0])->find(); if($quit_log){ return ['code' => 0, 'msg' => '您已提交退出申请,请等待会长审核', 'data' => null]; } //加入审核表 $insert_data = []; $insert_data['guid'] = $user_guild_info['id']; $insert_data['user_id'] = $uid; $insert_data['guild_id'] = $guild_id; $insert_data['status'] = 0; $insert_data['type'] = 1; $insert_data['createtime'] = time(); $insert_data['updatetime'] = time(); $res = db::name('vs_guild_user_quit_log')->insert($insert_data); if(!$res){ Db::rollback(); return ['code' => 0, '' => '退出失败', 'data' => null]; } Db::commit(); return ['code' => 1, 'msg' => '退出成功,等待会长审核', 'data' => null]; } } catch (\Exception $e) { // 回滚事务 dump($e); Db::rollback(); return ['code' => 0, 'msg' => '退出失败', 'data' => null]; } } /* * 退出申请列表 * */ public function quit_apply_list($uid,$guild_id,$page, $page_limit){ $guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'delete_time'=>0])->find(); if(empty($guild_info)){ return ['code' => 0, 'msg' => '公会不存在!', 'data' => null]; } if($guild_info['user_id'] != $uid){ // return ['code' => 0, 'msg' => '您不是该公会会长,无法访问权限', 'data' => null]; } //申请主动退出工会的列表 $map = ['a.guild_id' => $guild_id]; $list = db::name('vs_guild_user_quit_log')->alias('a')->join('user b', 'a.user_id = b.id') ->field('a.id, a.user_id, a.guild_id,a.createtime,a.status,b.nickname, b.avatar,b.user_code') ->where($map) ->order('id desc') ->page($page, $page_limit) ->select(); $count = db::name('vs_guild_user_quit_log')->alias('a')->join('user b', 'a.user_id = b.id')->where($map)->count(); foreach ($list as $k => &$v){ $v['apply_quit_time'] = (72*60*60 - (time() - $v['createtime']))/(60*60); //申请退出结束时间(时) $v['user_code'] = model('Decorate')->user_decorate_detail($v['user_id'],6); } $data = []; $data =[ 'page' => $page, 'limit' => $page_limit, 'count' => $count, 'list' => $list, ]; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } /* * quit_apply_audit * 退出申请审核 * @param int $uid 用户id * @param int $guild_id 公会id * @param int $type 审核状态 1通过 2拒绝 * */ public function quit_apply_audit($uid,$apply_id,$type){ $user_info = db::name('user')->find($uid); if(!$user_info){ return ['code' => 0, 'msg' => '参数错误', 'data' => null]; } $apply_info = db::name('vs_guild_user_quit_log')->where(['id'=>$apply_id,'status'=>0])->find(); if(!$apply_info){ return ['code' => 0, 'msg' => '申请不存在', 'data' => null]; } try { Db::startTrans(); if($type == 1){ $update_data = []; $update_data['status'] = 1; $update_data['updatetime'] = time(); $res = db::name('vs_guild_user_quit_log')->where('id',$apply_id)->update($update_data); if($res){ $update_data['quit_type'] = 1; $update_data['quit_time'] = time(); $update_data['delete_time'] = time(); $update_data['updatetime'] = time(); $reslut = db::name('vs_guild_user')->where('id',$apply_info['guid'])->update($update_data); if(!$reslut){ Db::rollback(); return ['code' => 0, 'msg' => '审核失败', 'data' => null]; } } else { Db::rollback(); return ['code' => 0, 'msg' => '审核失败', 'data' => null]; } //减少公会人数 db::name('vs_guild')->where('id', $apply_info['guild_id'])->setDec('num'); model('api/Tencent')->delete_group_member('g'.$apply_info['guild_id'], $apply_info['user_id']); } else { $update_data = []; $update_data['status'] = 2; $update_data['updatetime'] = time(); $res = db::name('vs_guild_user_quit_log')->where('id',$apply_id)->update($update_data); if(!$res){ Db::rollback(); return ['code' => 0, 'msg' => '审核失败', 'data' => null]; } } Db::commit(); return ['code' => 1, 'msg' => '审核成功', 'data' => null]; }catch (\Exception $e) { // 回滚事务 Db::rollback(); return ['code' => 0, 'msg' => '审核失败', 'data' => null]; } } //解散公会 public function diss_guild($uid,$guild_id){ $guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'user_id'=>$uid,'delete_time'=>0])->find(); if(empty($guild_info)){ return ['code' => 0, 'msg' => '公会不存在!', 'data' => null]; } try { Db::startTrans(); //成员解散 db::name('vs_guild_user')->where(['guild_id'=>$guild_id,'status'=>1,'delete_time'=>0])->update(['delete_time'=>time(),'quit_type'=>3,'quit_time'=>time()]); //解散公会 db::name('vs_guild')->where('id',$guild_id)->update(['delete_time'=>time(),'status'=>2]); //解散群 model('api/Tencent')->delete_group('g'.$guild_id); Db::commit(); return ['code' => 1, 'msg' => '解散成功!', 'data' => null]; }catch (\Exception $e) { // 回滚事务 Db::rollback(); return ['code' => 0, 'msg' => '解散失败', 'data' => null]; } } /* * 工会房间列表 * @param int $guild_id 公会id * @param int $page 分页 * @param int $page_limit 每页数量 */ public function get_guild_room_list($guild_id, $page = 1, $page_limit = 20){ $map = []; $map['guild_id'] = $guild_id; $map['status'] = 1; $list = db::name('vs_guild_user')->where($map)->where("delete_time",0)->order('createtime desc')->page($page, $page_limit)->select(); $data = []; foreach ($list as $k => $v){ //房间信息 $room_info = db::name('vs_room')->where(['id'=>$v['room_id'],'room_status'=>1,'delete_time'=>0])->find(); if($room_info){ $data[$k]['room_id'] = $room_info['id']; $data[$k]['room_number'] = model('Decorate')->user_decorate_detail($room_info['id'],7); $data[$k]['room_name'] = $room_info['room_name']; $data[$k]['room_cover'] = localpath_to_netpath($room_info['room_cover']); } } return ['code' => 1, 'msg' => '获取成功', 'data' => $data]; } /* * 工会补贴列表 * @param int $guild_id 公会id * @param int $page 分页 * int $page_limit 每页数量 * @return array */ public function get_guild_subsidy_list($guild_id, $page = 1, $page_limit = 20){ $guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'delete_time'=>0])->find(); if(empty($guild_info)){ return ['code' => 0, 'msg' => '公会不存在!', 'data' => null]; } $list = db::name('vs_guild_subsidy') ->where("guild_id",$guild_id) ->order('createtime asc') ->page($page, $page_limit) ->select(); $count = db::name('vs_guild_subsidy')->where("guild_id",$guild_id)->count(); $data = []; foreach ($list as $k => $v){ $data[$k]['time'] = date('m.d',strtotime($v['start_time']))."-".date('m.d',strtotime($v['end_time'])); $data[$k]['total_transaction'] = $v['total_transaction']; $data[$k]['subsidy_amount'] = $v['subsidy_amount']; $data[$k]['status_str'] = $v['status']==1 ? "已发放" : "未发放"; } $return_data =[ 'page' => $page, 'limit' => $page_limit, 'count' => $count, 'list' => $data, ]; return ['code' => 1, 'msg' => '获取成功', 'data' => $return_data]; } /* * 工会补贴 * @param int $guild_id 公会id * @param int $page 分页 * int $page_limit 每页数量 * @return array */ public function get_guild_subsidy($guild_id){ $guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'delete_time'=>0])->find(); if(empty($guild_info)){ return ['code' => 0, 'msg' => '公会不存在!', 'data' => null]; } //规则 $data['rule'] = get_system_config_value('web_site').'/api/Page/page_show?id=15'; //上周流水 $week_start = date('Y-m-d 00:00:00', strtotime('last week Monday')); $week_end = date('Y-m-d 23:59:59', strtotime('last week Monday +6 days')); $guild_subsidy = db::name('vs_guild_subsidy') ->where(["guild_id"=>$guild_id,'start_time' => $week_start, 'end_time' => $week_end]) ->find(); $data['list'] = []; $data['list'][0]['name'] = "上周流水"; $data['list'][0]['total_transaction'] = isset($guild_subsidy['total_transaction'])?$guild_subsidy['total_transaction']:0; $data['list'][0]['subsidy_amount'] = isset($guild_subsidy['subsidy_amount'])?$guild_subsidy['subsidy_amount']:0; $data['list'][0]['status_str'] = isset( $guild_subsidy['status'])&& $guild_subsidy['status']==1 ? "已发放" : "未发放"; //本周流水 //本周的第一天 $week = strtotime(date('Y-m-d 00:00:00', strtotime('this week Monday'))); // $guild_user = db::name('vs_guild_user')->where(['guild_id' => $guild_id])->select(); // $transaction = 0; // foreach ($guild_user as $k => $v){ // $week_start_time_seach = $week; // $week_end_time_seach = time(); // if($v['createtime'] && $week_start_time_seach < $v['createtime']){ // $week_start_time_seach = $v['createtime']; // } // if($v['quit_time'] && ($week_end_time_seach > $v['quit_time'])){ // $week_end_time_seach = $v['quit_time']; // } // $transaction_one = db::name('vs_give_gift') // ->whereIn('from_id',$v['room_id']) // ->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$week_start_time_seach, $week_end_time_seach]]]) // ->sum('total_price'); // $transaction += $transaction_one; // // } // $total_transaction = $transaction; $total_transaction = db::name('vs_guild_flow') ->where(['guild_id' => $guild_id]) ->where(['createtime' => ['between', [$week, time()]]]) ->sum('flow_price'); $ss = 0; if($total_transaction){ //根据工会流水 获取补贴比例 单位% //获取补贴配置 $config = db::name('vs_guild_subsidy_config')->where(['status' => 1])->order('end_amount desc')->select(); //配置查询 foreach ($config as $k => $v) { if ($total_transaction >= $v['end_amount']) { $subsidy_ratio = $v['subsidy_ratio']; $ss = ($total_transaction * ($subsidy_ratio / 100)) / get_system_config_value('rmb_coin_ratio');//转为钻石 break; // 找到匹配项后提前退出循环 } } } //待开发 $data['list'][1]['name'] = "本周流水"; $data['list'][1]['total_transaction'] = isset($total_transaction)?$total_transaction:0; $data['list'][1]['subsidy_amount'] = $ss; $data['list'][1]['status_str'] = "未发放"; return ['code' => 1, 'msg' => '获取成功', 'data' => $data]; } /* * 获取公会成员列表 */ public function get_guild_member_list($guild_id, $start_time = 0, $end_time = 0, $page = 1, $page_limit = 20) { $coin_consumption_type_array = model('common/UserWallet')->coin_consumption_type_array; $coin_consumption_type_array = array_diff($coin_consumption_type_array, [model('common/UserWallet')::OPERATION_CONSUME]); // 总消费 - 需要按时间限制并只统计加入工会后的消费 if (!$start_time || !$end_time) { // 如果没有指定时间范围,则查询所有记录 $start_time_filter = 0; $end_time_filter = time(); } else { $start_time_filter = strtotime($start_time." 00:00:00"); $end_time_filter = strtotime($end_time." 23:59:59"); } // 所有工会成员 $all_guild_user = db::name('vs_guild_user')->where(['guild_id' => $guild_id,'status'=>1,"delete_time"=>0])->select(); $total_consumption = 0; foreach ($all_guild_user as $key => $value) { // 计算时间范围:取工会加入时间和指定时间范围的较大值作为开始时间 $actual_start_time = max($value['createtime'], $start_time_filter); $actual_end_time = $end_time_filter; // 如果开始时间大于结束时间,则跳过该用户 if ($actual_start_time > $actual_end_time) { continue; } $consumption = db::name('vs_user_money_log') ->whereIn('change_type',$coin_consumption_type_array) ->where(['money_type'=>1,'user_id' => $value['user_id']]) ->where('createtime', '>=', $actual_start_time) ->where('createtime', '<=', $actual_end_time) ->sum('change_value'); $total_consumption = $total_consumption + ($consumption ?: 0); } if (!$start_time || !$end_time) { // 如果没有指定时间范围,则查询所有记录 $start_time = 0; $end_time = time(); }else{ $start_time = strtotime($start_time." 00:00:00"); $end_time = strtotime($end_time." 23:59:59"); } // 查询成员列表及各自消费 $list = Db::name('vs_guild_user') ->alias('a') ->join('user b', 'a.user_id = b.id') ->join('vs_user_money_log c', 'a.user_id = c.user_id AND c.money_type = 1 AND c.change_type IN (' . implode(',', $coin_consumption_type_array) . ') AND c.createtime >= a.createtime' . ($start_time ? ' AND c.createtime >= ' . $start_time : '') . ($end_time ? ' AND c.createtime <= ' . $end_time : ''), 'LEFT') ->field('a.id, a.user_id, a.guild_id, a.room_id, a.status, a.is_deacon, b.nickname, b.avatar, b.user_code, a.createtime, a.apply_time, SUM(c.change_value) AS total_consumption') ->where(['a.guild_id' => $guild_id, 'a.status' => 1,'a.delete_time' => 0]) ->group('a.user_id') ->order('a.id asc') ->page($page, $page_limit) ->select(); $count = Db::name('vs_guild_user') ->alias('a') ->join('user b', 'a.user_id = b.id') ->join('vs_user_money_log c', 'a.user_id = c.user_id AND c.money_type = 1 AND c.change_type IN (' . implode(',', $coin_consumption_type_array) . ') AND c.createtime >= a.createtime' . ($start_time ? ' AND c.createtime >= ' . $start_time : '') . ($end_time ? ' AND c.createtime <= ' . $end_time : ''), 'LEFT') ->field('a.id, a.user_id, a.guild_id, a.room_id, a.status, a.is_deacon, b.nickname, b.avatar, b.user_code, a.createtime, a.apply_time, SUM(c.change_value) AS total_consumption') ->where(['a.guild_id' => $guild_id, 'a.status' => 1,'a.delete_time' => 0]) ->group('a.user_id') ->count(); $data = []; foreach ($list as $k => $v) { $data[$k]['id'] = $v['id']; $data[$k]['guild_id'] = $v['guild_id']; $data[$k]['user_id'] = $v['user_id']; $data[$k]['nickname'] = $v['nickname']; $data[$k]['avatar'] = localpath_to_netpath($v['avatar']); $data[$k]['user_code'] = model('Decorate')->user_decorate_detail($v['user_id'], 6); $data[$k]['is_deacon'] = $v['is_deacon']; $data[$k]['total_consumption'] = $v['total_consumption'] ?: 0; } $return_data =[ 'page' => $page, 'limit' => $page_limit, 'count' => $count, 'total_consumption' => $total_consumption, 'list' => $data, ]; return ['code' => 200, 'msg' => '获取成功', 'data' => $return_data]; } /* * 工会流水查询 * @return array */ public function get_guild_transaction($guild_id,$seach_start_time,$seach_end_time,$page,$page_limit){ $guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'delete_time'=>0])->find(); if(empty($guild_info)){ return ['code' => 0, 'msg' => '公会不存在!', 'data' => null]; } //工会总流水 // $all_guild_room = db::name('vs_guild_user')->where(['guild_id' => $guild_id,'status'=>1,"delete_time"=>0])->select(); // $total_transaction = 0; // foreach ($all_guild_room as $key => $value) { // $start_time = $seach_start_time; // $end_time = $seach_end_time; // if(!$start_time){ // $start_time_all = $value['createtime']; // $end_time_all = time(); // }else{ // $start_time_all = strtotime($start_time." 00:00:00"); // $end_time_all = strtotime($end_time." 23:59:59"); // } // if($value['createtime'] && $start_time_all < $value['createtime']){ // $start_time_all = $value['createtime']; // } // if($value['quit_time'] && ($end_time_all > $value['quit_time'])){ // $end_time_all = $value['quit_time']; // } // $transaction = db::name('vs_give_gift') // ->where('from_id',$value['room_id']) // ->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$start_time_all, $end_time_all]]]) // ->sum('total_price'); // $total_transaction = $total_transaction+$transaction; // } //查询工会所有房间流水 $list = db::name('vs_guild_user')->where(['guild_id'=>$guild_id,'delete_time'=>0,'status'=>1,'room_id'=>['<>',0]]) ->order('id asc') ->page($page, $page_limit) ->select(); $count = db::name('vs_guild_user')->where(['guild_id'=>$guild_id,'delete_time'=>0,'status'=>1,'room_id'=>['<>',0]])->count(); $room_data = []; $i=0; foreach ($list as $k=>$v){ // $start_time = $seach_start_time; // $end_time = $seach_end_time; // if(!$start_time){ // $start_time_seach = $value['createtime']; // $end_time_seach = time(); // }else{ // $start_time_seach = strtotime($start_time." 00:00:00"); // $end_time_seach = strtotime($end_time." 23:59:59"); // } // if($value['createtime'] && $start_time_all < $value['createtime']){ // $start_time_seach = $value['createtime']; // } // if($value['quit_time'] && ($end_time_all > $value['quit_time'])){ // $end_time_seach = $value['quit_time']; // } $room_info = db::name('vs_room')->where(['id'=>$v['room_id'],'room_status'=>1,'delete_time'=>0])->find(); if($room_info){ $room_data[$i]['room_id'] = $room_info['id']; $room_data[$i]['room_number'] = model('Decorate')->user_decorate_detail($room_info['id'],7); $room_data[$i]['room_name'] = $room_info['room_name']; $room_data[$i]['room_cover'] = localpath_to_netpath($room_info['room_cover']); $room_data[$i]['total_price'] = db::name('vs_guild_flow') ->where('room_id',$v['room_id']) ->where(['createtime' => ['between', [$seach_start_time, $seach_end_time]]]) ->sum('flow_price'); $i++; } } $return_data = []; $return_data =[ 'page' => $page, 'limit' => $page_limit, 'count' => $count, 'total_transaction' => $guild_info['income'] ? $guild_info['income'] : 0, 'list' => $room_data, ]; return ['code' => 1, 'msg' => '获取成功', 'data' => $return_data]; } /* * 用户是否加入工会 * @param $user_id 用户id * @param $guild_id 工会id * @return array */ public function user_is_join($user_id){ $guild = Db::name('vs_guild_user')->where(['user_id'=>$user_id,'delete_time'=>0])->order('id desc,apply_time desc')->find(); if(empty($guild)){ return 0; }else{ $guild_data['guild_id'] = $guild['guild_id']; $guild_data['status'] = $guild['status']; //1已通过 2已提交 3已拒绝 $guild_data['status_str'] = $guild['status'] == 1 ? '已通过' : ($guild['status'] == 2 ? '已提交' : '已拒绝'); $guild_data['is_deacon'] = $guild['is_deacon']; return $guild_data; } } /* * 获取公会成员列表 */ public function get_guild_user_list($guild_ids,$user_id,$page=1,$page_limit=30,$seach=""){ //获取$guild_id的第一个字母 $guild_id_first_letter = substr($guild_ids, 0, 1); if (substr($guild_ids, 0, 2) === 'gg') { $guild_id = substr($guild_ids, 2); } elseif (substr($guild_ids, 0, 1) === 'g') { $guild_id = substr($guild_ids, 1); } else { $guild_id = substr($guild_ids, 1); } $seach_where = []; if($seach){ if(is_numeric($seach)){ $seach_where = ['b.user_code' => ['like', $seach . '%']]; }else{ $seach_where = ['b.nickname' => ['like', '%' . $seach . '%']]; } } if($guild_id_first_letter == 'g'){ $count = Db::name('vs_guild_user') ->alias('a') ->join('user b','a.user_id = b.id') ->where($seach_where) ->where(['a.guild_id'=>$guild_id,'a.status'=>1,'a.delete_time'=>0]) ->count(); $list = Db::name('vs_guild_user') ->alias('a') ->join('user b', 'a.user_id = b.id') ->field('a.id, a.user_id, a.guild_id, b.nickname, b.avatar, b.user_code, a.createtime') ->where($seach_where) ->where(['a.guild_id' => $guild_id, 'a.status' => 1,'a.delete_time' => 0]) ->order('a.id asc') ->page($page, $page_limit) ->select(); }else{ $myFamilyPid = db::name('vs_family')->where(['id' => $guild_id])->value('user_id'); $list = db::name('vs_family')->alias('a') ->join('user b','a.user_id = b.id') ->field('b.is_online,b.market_value,b.nickname,b.avatar,b.user_code,a.user_id,a.createtime') ->where($seach_where) ->where(['a.pid' => $myFamilyPid,'a.deletetime' => 0,'a.type' => 0]) ->order('a.id asc') ->page($page, $page_limit) ->select(); $count = db::name('vs_family')->alias('a') ->join('user b','a.user_id = b.id') ->where($seach_where) ->where(['a.pid' => $myFamilyPid,'a.deletetime' => 0,'a.type' => 0]) ->count(); } if($list){ $member_array = array_column($list, 'user_id'); $member_array_str = []; foreach ($member_array as $k=> $v){ $member_array_str[] = 'u' . $v; } $group_member_info = model('api/Tencent')->get_group_member_info($guild_ids,$member_array_str); if($group_member_info['code'] == 0){ return V($group_member_info['code'],$group_member_info['msg'], $group_member_info['data']); } $member = []; foreach ($group_member_info['data'] as $k=> $v){ $member[$v['Member_Account']] = $v['Role']; } //Owner(群主),Admin(群管理员),Member(普通群成员),NotMember(非群成员)。 $role = [ 'Owner'=>'群主', 'Admin'=>'群管理员', 'Member'=>'普通群成员', 'NotMember'=>'非群成员' ]; //禁言用户列表 $mute_list = model('api/Tencent')->get_group_mute_list($guild_ids); $mute_user_list = []; if($mute_list['code'] == 1){ $mute_user_list = array_column($mute_list['data'], 'Member_Account'); } foreach ($list as $key => $value) { if($user_id == $value['user_id']){ $list[$key]['is_self'] = 1; }else{ $list[$key]['is_self'] = 0; } $list[$key]['user_code'] = model('Decorate')->user_decorate_detail($value['user_id'], 6); //角色: $list[$key]['role'] = $member['u'.$value['user_id']]; $list[$key]['role_str'] = $role[$list[$key]['role']]; $list[$key]['createtime'] = date('Y-m-d H:i:s',$value['createtime']); //当前用户是否在房间 $in_room = db::name('vs_room_visitor')->alias('a') ->join('vs_room b', 'a.room_id = b.id') ->field('a.room_id') ->where(['b.type_id' =>['<>',6]]) ->where(['a.user_id' => $value['user_id'], 'a.is_delete' => 1]) ->find(); $list[$key]['in_room_id'] = $in_room['room_id'] ?? 0; //用户是否被禁言 if(in_array('u'.$value['user_id'], $mute_user_list)){ $list[$key]['is_mute'] = 1; }else{ $list[$key]['is_mute'] = 0; } } } $return_data =[ 'page' => $page, 'limit' => $page_limit, 'count' => $count, 'list' => $list, ]; return ['code' => 1, 'msg' => '获取成功', 'data' => $return_data]; } /* * 群聊详情 */ public function guild_info($guild_ids,$user_id=0){ if(!$guild_ids){ return ['code' => 0, 'msg' => '参数错误']; } if (substr($guild_ids, 0, 2) === 'gg') { $guild_id = substr($guild_ids, 2); $guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'status'=>1,'delete_time'=>0])->find(); $cover = $guild_info['cover'] ?? ""; } elseif (substr($guild_ids, 0, 1) === 'g') { $guild_id = substr($guild_ids, 1); $guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'status'=>1,'delete_time'=>0])->find(); $cover = $guild_info['cover'] ?? ""; } else { $guild_id = substr($guild_ids, 1); $guild_info = db::name('vs_family')->where(['id'=>$guild_id])->find(); $cover = db::name('user')->where(['id'=>$guild_info['user_id']])->value('avatar'); } //获取字符串里有几个g // $guild_id_count = substr_count($guild_ids, 'g'); // $guild_id_first_letter = substr($guild_ids, 0, 1); // if($guild_id_count == 2){ // //获取$guild_id的第一个字母 // $guild_id = substr($guild_ids, 2); // }else{ // //获取$guild_id的第一个字母 // $guild_id = substr($guild_ids, 1); // } // if($guild_id_first_letter == 'g'){ // $guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'status'=>1,'delete_time'=>0])->find(); // $cover = $guild_info['cover'] ?? ""; // }else{ // $guild_info = db::name('vs_family')->where(['id'=>$guild_id])->find(); // $cover = db::name('user')->where(['id'=>$guild_info['user_id']])->value('avatar'); // } $group_member_info = model('api/Tencent')->get_group_info($guild_ids); if($group_member_info['code']!=1){ return ['code' => 0, 'msg' => '群聊不存在',null]; } $user_list = $this->get_guild_user_list($guild_ids,0,1,10); $is_deacon = 2; if($guild_info['user_id'] ==$user_id){ $is_deacon = 1; } $return_data =[ 'guild_id' => $guild_ids, 'guild_cover' => $cover, 'is_deacon' => $is_deacon, 'user_list' => $user_list['data']['list'], 'name' => $group_member_info['data'][0]['Name'], 'notification' => $group_member_info['data'][0]['Notification'], 'mute_all_member' => $group_member_info['data'][0]['MuteAllMember'] == 'On' ? 1 : 0, ]; return ['code' => 1, 'msg' => '获取成功', 'data' => $return_data]; } /* * 设置群聊信息 */ public function set_guild_info($guild_id,$name,$notice,$avatar){ $guild_id = 'g'.$guild_id; $return = model('api/Tencent')->modify_group_base_info($guild_id, $name,$avatar, $notice); return ['code' => $return['code'], 'msg' => $return['msg'], 'data' => $return['data']]; } /* * 我的公会 * @param $id * @param $user_id */ public function my_guild($user_id) { $guild_user = Db::name('vs_guild_user')->where(['user_id'=>$user_id,'status'=>1,'delete_time'=>0]) ->order('createtime desc') ->find(); if(empty($guild_user)){ return ['code' => 0, 'msg' => '您没有加入任何公会', 'data'=>null]; } $info = Db::name('vs_guild') ->field('id,guild_special_id,user_id,guild_name,cover,num,intro,createtime,income') ->where(['id'=>$guild_user['guild_id'],'is_show'=>1,'delete_time'=>0]) ->find(); $guild_data = []; if($info){ //用户信息 $user_data = Db::name('user')->where(['id'=>$user_id])->field('id,nickname,avatar')->find(); $guild_data['user_id'] = $user_data['id']; $guild_data['user_nickname'] = $user_data['nickname']; $guild_data['user_code'] = model('Decorate')->user_decorate_detail($user_id, 6); $guild_data['user_avatar'] = localpath_to_netpath($user_data['avatar']); $guild_data['is_leader'] = $info['user_id'] == $user_id ? 1 : 0;//当前用户是否是会长 $guild_data['guild_id'] = $info['id']; $guild_data['guild_code'] = $info['guild_special_id']; $guild_data['guild_name'] = $info['guild_name']; //加入公会时间 $guild_data['join_time'] = date('Y-m-d H:i:s',$guild_user['apply_time']); //本周金额 //本周的第一天 $week = strtotime(date('Y-m-d 00:00:00', strtotime('this week Monday'))); $week_end_time = time(); $guild_data['week_income'] = db::name('vs_guild_flow')->where(['guild_id'=>$info['id']]) ->where(['createtime' => ['between', [$week, $week_end_time]]]) ->sum('flow_price'); //厅主收益 $guild_data['room_author_ratio'] = $guild_user['room_id']==0 ? 0 : get_system_config_value('room_author_ratio'); //礼物分成 $guild_data['settlement_ratio'] = $guild_user['settlement_ratio']; //付费退出公会所需金 $guild_data['quit_guild_gold'] = get_system_config_value('quit_guild_gold'); //工会群组ID if($info['id']<=95){ $guild_id = "g".$info['id']; }else{ $guild_id = $info['id']; } $guild_data['guild_group_id'] = $guild_id; $guild_data['guild_id'] = $guild_id; //工会基础信息 $guild_data_info = Db::name('vs_guild_data')->where(['guild_id'=>$info['id']])->find(); $guild_data['agreement'] = $guild_data_info['agreement'] ?? ''; } return ['code'=>1,'msg'=>'获取成功','data'=>$guild_data]; } /* * 加入工会——不用申请直接加入 */ public function join_guild($guild_id,$user_id=0,$settlement_ratio = 0) { $user_info = db::name('user')->where(['id'=>$user_id])->find(); if(!$user_info){ return ['code' => 0, 'msg' => '参数错误', 'data' => null]; } //查询是否实名认证 $is_real = model('api/UserData')->real_name_info($user_id); if($is_real['code']==0){ return ['code' => 0, 'msg' => '请先实名认证','data' => null]; }else{ if($is_real['data']['is_real'] !=1){ return ['code' => 0, 'msg' => '请先实名认证','data' => null]; } } //公会是否存在 $guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'delete_time'=>0])->find(); if(!$guild_info){ return ['code' => 0, 'msg' => '该公会不存在', 'data' => null]; } $is_check_join = Db::name('vs_guild_user')->where(['user_id'=>$user_id,'delete_time'=>0])->find(); if($is_check_join && $is_check_join['guild_id']==$guild_id && $is_check_join['status']==1){ return ['code'=>0,'msg'=>'您已加入该工会', 'data' => null]; } if($is_check_join && $is_check_join['guild_id']==$guild_id && $is_check_join['status']==2){ return ['code'=>0,'msg'=>'您已提交申请,请耐心等待', 'data' => null]; } if($is_check_join && $is_check_join['guild_id']!=$guild_id && $is_check_join['status']==1){ return ['code'=>0,'msg'=>'您已加入别的工会,请先退出公会再加入', 'data' => null]; } if($is_check_join && $is_check_join['guild_id']!=$guild_id && $is_check_join['status']==2){ $other_guild_name = Db::name('vs_guild')->where(['id'=>$is_check_join['guild_id']])->value('guild_name'); return ['code'=>0,'msg'=>'您已申请加入工会'.$other_guild_name.',请等待会长审核', 'data' => null]; } //是否被踢出过 // $ti_chu = db::name('vs_guild_user')->where(['user_id'=>$user_id,'guild_id'=>$guild_id,'delete_time'=>['<>',0],'quit_type'=>2])->find(); // if(!empty($ti_chu)){ // return ['code' => 0, 'msg' => '已被踢出,禁止加入!', 'data' => null]; // } //退出公会是否超过30天 $map = []; $map['user_id'] = $user_id; $map['delete_time'] = ['<>',0]; $map['quit_type'] = 1; $quit_guild_info = Db::name('vs_guild_user')->where($map)->order('quit_time', 'desc')->field('quit_time,guild_id,quit_type')->find(); if(!empty($quit_guild_info)) { $quit_time = empty($quit_guild_info['quit_time']) ? 0 : $quit_guild_info['quit_time']; $quit_type = $quit_guild_info['quit_type']; if($quit_guild_info['guild_id'] != $guild_id) { $last_time = 30 * 24 * 3600; if((time() - $last_time) <= $quit_time) { return ['code' => 0, 'msg' => '退出公会未超过30天,不能重新加入其他公会', 'data' => null]; } } } //是否有房间 $rid = 0; $room_info = db::name('vs_room')->where(['user_id'=>$user_id,'delete_time'=>0,'type_id'=>['<>',6]])->find(); if($room_info){ $rid = $room_info['id']; } $insert_data = []; $insert_data['user_id'] = $user_id; $insert_data['guild_id'] = $guild_id; $insert_data['room_id'] = $rid; $insert_data['status'] = 1; $insert_data['is_deacon'] = 2; $insert_data['createtime'] = time(); $insert_data['apply_time'] = time(); $insert_data['is_show_room'] = 1; //结算比例 $configs = get_system_config(); //收礼人最终的收益比例 = 未加入工会的收益 + 加入工会的收益 if($settlement_ratio){ $insert_data['settlement_ratio'] = $settlement_ratio; }else{ $insert_data['settlement_ratio'] = $configs['room_gift_ratio'] + $configs['room_gift_guild_ratio']; } $reslut = db::name('vs_guild_user')->insert($insert_data); if($reslut){ //增加公会人数 db::name('vs_guild')->where('id', $guild_info['id'])->setInc('num', 1); //拉用户进入工会群聊 if($guild_id<=95){ //事故处理-114以前的群被删了 $guild_id = "g".$guild_id; } model('api/Tencent')->add_group_member('g'.$guild_id, $user_id); model('api/Tencent')->send_group_system_notification('g'.$guild_id,"欢迎".$user_info['nickname'].'加入公会'); //发系统信息 $content = "恭喜加入{$guild_info['guild_name']}工会,您的个人收益增加{$configs['room_gift_guild_ratio']}%,目前总收益{$insert_data['settlement_ratio']}%"; model('api/UserMessage')->send_system_message($user_id, "加入公会成功通知", $content, 1); //处理新手任务 model('api/Tasks')->tasks_complete($user_id,11); return ['code' => 1, 'msg' => '提交成功', 'data' => null]; }else{ return ['code' => 0, 'msg' => '提交失败', 'data' => null]; } } //工会邀请用户处理 public function guild_invite_handle($user_id,$message_id,$status){ $guild_user_invited = Db::name('vs_guild_user_invited')->where(['message_id'=>$message_id,'delete_time'=>0])->find(); if(empty($guild_user_invited)){ return ['code' => 0, 'msg' => '邀请信息不存在', 'data' => null]; } if($user_id != $guild_user_invited['user_id']){ return ['code' => 0, 'msg' => '您没有权限处理此信息', 'data' => null]; } if($guild_user_invited['status'] != 0){ return ['code' => 0, 'msg' => '此邀请信息已处理过', 'data' => null]; } if($status == 1){ //加入工会 $res = $this->join_guild($guild_user_invited['guild_id'],$guild_user_invited['user_id'],$guild_user_invited['settlement_ratio']); if($res['code'] != 1){ return ['code' => 0, 'msg' => $res['msg'], 'data' => null]; } $guild_user_invited_data = [ 'status' => 1, 'apply_time' => time(), 'updatetime' => time(), ]; }else{ $guild_user_invited_data = [ 'status' => 2, 'apply_time' => time(), 'updatetime' => time(), ]; } $guild_user_invited_res = Db::name('vs_guild_user_invited')->where(['message_id'=>$message_id,'delete_time'=>0])->update($guild_user_invited_data); if($guild_user_invited_res){ return ['code' => 1, 'msg' => '处理成功', 'data' => null]; }else{ return ['code' => 0, 'msg' => '处理失败', 'data' => null]; } } //公会调整收益审核接口 public function user_ratio_up_apply($user_id,$message_id,$status){ $guild_user_ratio_up = Db::name('vs_guild_user_ratio_up_log')->where(['message_id'=>$message_id,'delete_time'=>0])->find(); if(empty($guild_user_ratio_up)){ return ['code' => 0, 'msg' => '邀请信息不存在', 'data' => null]; } if($user_id != $guild_user_ratio_up['user_id']){ return ['code' => 0, 'msg' => '您没有权限处理此信息', 'data' => null]; } if($guild_user_ratio_up['status'] != 0){ return ['code' => 0, 'msg' => '此邀请信息已处理过', 'data' => null]; } if($status == 1){ //处理结算比例 $res = db::name('vs_guild_user')->where(['id'=>$guild_user_ratio_up['guild_user_id']])->update(['settlement_ratio'=>$guild_user_ratio_up['settlement_ratio']]); if($res){ $data = [ 'status' => 1, 'apply_time' => time(), 'updatetime' => time(), ]; $guild_user_res = Db::name('vs_guild_user_ratio_up_log')->where(['message_id'=>$message_id,'delete_time'=>0])->update($data); if($guild_user_res){ return ['code' => 1, 'msg' => '处理成功', 'data' => null]; }else{ return ['code' => 0, 'msg' => '处理失败', 'data' => null]; } } }else{ $data = [ 'status' => 2, 'apply_time' => time(), 'updatetime' => time(), ]; $guild_user_res = Db::name('vs_guild_user_ratio_up_log')->where(['message_id'=>$message_id,'delete_time'=>0])->update($data); if($guild_user_res){ return ['code' => 1, 'msg' => '处理成功', 'data' => null]; }else{ return ['code' => 0, 'msg' => '处理失败', 'data' => null]; } } } //公会流水记录 public function guild_flow($room_id,$flow_price,$give_gift_id=0){ if($room_id<=0 || $flow_price<=0){ return ['code' => 0, 'msg' => '参数错误', 'data' => null]; } $guild_user_info = Db::name('vs_guild_user')->where(['room_id' => $room_id, 'delete_time' => 0, 'status' => 1, 'quit_time' => 0])->find(); if ($guild_user_info) { //记录流水 $data = [ 'guild_id' => $guild_user_info['guild_id'], 'room_id' => $guild_user_info['room_id'], 'give_gift_id' => $give_gift_id, 'flow_price' => $flow_price, 'day' => date('Y-m-d'), 'createtime' => time(), 'updatetime' => time(), ]; $res = Db::name('vs_guild_flow')->insert($data); if (!$res) { return ['code' => 0, 'msg' => '提交失败', 'data' => null]; } //增加用户公会流水 Db::name('vs_guild_user')->where(['id' => $guild_user_info['id']])->setInc('coin', $flow_price); //增加公会总流水 Db::name('vs_guild')->where(['id' => $guild_user_info['guild_id']])->setInc('income', $flow_price); return ['code' => 1, 'msg' => '提交成功', 'data' => null]; } } }