diff --git a/application/api/controller/Guild.php b/application/api/controller/Guild.php index 2019494..5f82243 100644 --- a/application/api/controller/Guild.php +++ b/application/api/controller/Guild.php @@ -41,7 +41,7 @@ class Guild extends BaseCom $guild_id = input('guild_id', 0); $key_name = "api:guild:join_guild:".$uid; redis_lock_exit($key_name); - $reslut = model('Guild')->join_guild($guild_id,$uid); + $reslut = model('Guild')->join_guild_apply($guild_id,$uid); redis_unlock($key_name); return V($reslut['code'],$reslut['msg'], $reslut['data']); } @@ -226,4 +226,15 @@ class Guild extends BaseCom return V($reslut['code'],$reslut['msg'], $reslut['data']); } + /* + * 受邀申请处理 + */ + public function invite_apply_handle(){ + $uid = $this->uid; + $apply_id = input('apply_id', 0); + $type = input('type', 0); + $reslut = model('Guild')->guild_invite_handle($uid, $apply_id, $type); + return V($reslut['code'],$reslut['msg'], $reslut['data']); + } + } diff --git a/application/api/model/Guild.php b/application/api/model/Guild.php index 2f59b59..72861dd 100644 --- a/application/api/model/Guild.php +++ b/application/api/model/Guild.php @@ -115,7 +115,7 @@ class Guild extends Model /* * 加入工会申请 */ - public function join_guild($guild_id,$user_id=0) + public function join_guild_apply($guild_id,$user_id=0) { $user_info = model('User')->get_user_info($user_id); if(!$user_info){ @@ -286,7 +286,9 @@ class Guild extends Model //增加公会人数 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'); model('Tencent')->add_group_member('g'.$is_operate['guild_id'], $is_operate['user_id']); + model('Tencent')->send_group_system_notification('g'.$is_operate['guild_id'],"欢迎".$user_nickname.'加入公会'); }else if($type == 2){//拒绝 $update_data = []; $update_data['status'] = 3; @@ -1037,4 +1039,122 @@ class Guild extends Model } return ['code'=>1,'msg'=>'获取成功','data'=>$guild_data]; } + + /* + * 加入工会——不用申请直接加入 + */ + public function join_guild($guild_id,$user_id=0) + { + $user_info = model('User')->get_user_info($user_id); + if(!$user_info){ + return ['code' => 0, 'msg' => '参数错误', 'data' => null]; + } + if($user_info['is_real']!=1 || empty($user_info['card_id'])){ + 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){ + 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){ + return ['code'=>0,'msg'=>'您已提交申请,请耐心等待', '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)->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(); + //收礼人最终的收益比例 = 未加入工会的收益 + 加入工会的收益 + $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); + //拉用户进入工会群聊 + model('Tencent')->add_group_member('g'.$guild_id, $user_id); + model('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 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']); + 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]; + } + } } diff --git a/application/api/model/UserMessage.php b/application/api/model/UserMessage.php index b24d9f0..1210999 100644 --- a/application/api/model/UserMessage.php +++ b/application/api/model/UserMessage.php @@ -43,19 +43,19 @@ class UserMessage extends Model { //获取系统消息 $system_message = db::name('system_message') - ->where('type', 1)//1系统消息 3公告下的房间推荐,4公告下的活动' + ->where(['type'=>[1, 6]])//1系统消息 3公告下的房间推荐,4公告下的活动' 6工会邀请 ->where('FIND_IN_SET(:user_id, receiving_id)', ['user_id' => $uid]) ->count(); //自己已经阅读过的信息 $user_read_message = db::name('user_message') - ->where(['user_id' => $uid,'type' => 1]) + ->where(['user_id' => $uid,'type' => [1, 6]]) ->count(); $system_no_read_count = $system_message - $user_read_message; $system_last_message = db::name('system_message') ->field('id,type,title,content,url') - ->where('type', 1)//1系统消息 3公告下的房间推荐,4公告下的活动' + ->where('type', [1, 6])//1系统消息 3公告下的房间推荐,4公告下的活动' 6工会邀请 ->where('FIND_IN_SET(:user_id, receiving_id)', ['user_id' => $uid]) ->order('id desc') ->find() ?? null; @@ -104,7 +104,7 @@ class UserMessage extends Model if($type == 1){ - $where['type'] = ['in' , [1, 5, 6]]; + $where['type'] = ['in' , [1, 6]]; }else{ $where['type'] = ['in' , [3, 4]]; } diff --git a/application/guildadmin/controller/SystemMessage.php b/application/guildadmin/controller/SystemMessage.php index 758714b..705a2b4 100644 --- a/application/guildadmin/controller/SystemMessage.php +++ b/application/guildadmin/controller/SystemMessage.php @@ -45,6 +45,7 @@ class SystemMessage extends GuildAdmin $page_limit = input('page_limit', 30); $where['delete_time'] = 0; $where['receiving_id'] = $guild_id; + $where['type'] = 5; $count = db::name('system_message')->where($where)->count(); $lists = db::name('system_message')->where($where)->page($page, $page_limit)->select();