field('guild_id,SUM(amount) as total_gift_total_price')->whereTime('add_time', 'yesterday')->group('guild_id')->buildSql(); }else if($time == 2){ $build_sql = db::name('room_guild_charm_count_day')->field('guild_id,SUM(amount) as total_gift_total_price')->whereTime('add_time', 'today')->group('guild_id')->buildSql(); }else if($time == 3){ $build_sql = db::name('room_guild_charm_count_day')->field('guild_id,SUM(amount) as total_gift_total_price')->whereTime('add_time', 'week')->group('guild_id')->buildSql(); }else if($time == 4){ $build_sql = db::name('room_guild_charm_count_day')->field('guild_id,SUM(amount) as total_gift_total_price')->whereTime('add_time', 'last week')->group('guild_id')->buildSql(); }else if($time == 5){ $build_sql = db::name('room_guild_charm_count_day')->field('guild_id,SUM(amount) as total_gift_total_price')->whereTime('add_time', 'month')->group('guild_id')->buildSql(); }else{ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } // $build_sql = db::name('user_send_gift')->field('guild_id,SUM(gift_total_price) as total_gift_total_price')->group('guild_id')->buildSql(); $map = []; if(!empty($keywords)){ $map[] = ['a.guild_name|a.id|a.guild_special_id', 'like', '%'.$keywords.'%']; // $map[] = ['a.id', '=', $keywords]; // $map[] = ['a.guild_special_id','=',$keywords]; } $map[] = ['a.is_delete', '=', 1]; $map[] = ['a.is_show', '=', 1]; $list = db::name('guild')->alias('a')->join($build_sql.'b', 'a.id = b.guild_id', 'LEFT')->field('a.id as guild_id, a.guild_name, a.base64_guild_name, a.cover, b.total_gift_total_price, a.num,a.guild_special_id')->where($map)->order('b.total_gift_total_price desc')->page($page, $page_limit)->select(); if(empty($list)){ $data = []; $data['list'] = $list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } foreach ($list as $k => &$v){ $v['guild_name'] = mb_convert_encoding(base64_decode($v['base64_guild_name']), 'UTF-8', 'UTF-8'); $v['cover'] = localpath_to_netpath($v['cover']); if(empty($v['total_gift_total_price'])){ $v['total_gift_total_price'] = 0; }else{ $v['total_gift_total_price'] = (int)$v['total_gift_total_price']; } } $data = []; $data['list'] = $list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //加入公会 public function join_guild($uid, $guild_id){ $user_info = db::name('user')->find($uid); if(!$user_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } //公会是否存在 $guild_info = db::name('guild')->where('id', $guild_id)->find(); if(!$guild_info){ return ['code' => 201, 'msg' => '该公会不存在', 'data' => null]; } //是否已加入过公会 $map = []; $map[] = ['uid', '=', $uid]; $map[] = ['status', '=', 1]; $map[] = ['is_delete', '=', 1]; $is_check_join = db::name('user_guild')->where($map)->find(); if($is_check_join){ return ['code' => 201, 'msg' => '您已加入过公会', 'data' => null]; } //是否提交过 ==》自动同意 // $map = []; // $map[] = ['uid', '=', $uid]; // $map[] = ['guild_id', '=', $guild_id]; // $map[] = ['status', '=', 2]; // $is_join = db::name('user_guild')->where($map)->find(); // if($is_join){ // return ['code' => 201, 'msg' => '该公会您已提交过申请', 'data' => null]; // } //是否被踢出过 $ti_chu = db::name('user_guild')->where(['uid'=>$uid,'guild_id'=>$guild_id,'is_delete'=>2,'quit_type'=>2])->find(); if(!empty($ti_chu)){ return ['code' => 201, 'msg' => '已被踢出,禁止加入!', 'data' => null]; } //退出公会是否超过20天 // $map = []; // $map[] = ['uid', '=', $uid]; // $map[] = ['is_delete', '=', 2]; // $quit_guild_info = Db::name('user_guild')->where($map)->order('quit_time', 'desc')->field('quit_time,guild_id,quit_type')->find(); // $quit_time = 0; // $quit_type = 2; // 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 && $quit_type != 2 && $quit_type != 3) { // // if($quit_guild_info['guild_id'] != $guild_id && $quit_type != 1 && $quit_type != 3) { // $last_time = 20 * 24 * 3600; // if((time() - $last_time) < $quit_time) { // return ['code' => 201, 'msg' => '退出公会未超过20天,不能重新加入其他公会', 'data' => null]; // } // } //退出公会是否超过20天 $map = []; $map[] = ['uid', '=', $uid]; $map[] = ['is_delete', '=', 2]; $map[] = ['quit_type', '=', 1]; $quit_guild_info = Db::name('user_guild')->where($map)->order('quit_time', 'desc')->field('quit_time,guild_id,quit_type')->find(); $quit_time = 0; $quit_type = 2; 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 && $quit_type != 2 && $quit_type != 3) { if($quit_guild_info['guild_id'] != $guild_id) { $last_time = 20 * 24 * 3600; if((time() - $last_time) < $quit_time) { return ['code' => 201, 'msg' => '退出公会未超过20天,不能重新加入其他公会', 'data' => null]; } } } //该用户是否绑定身份证切已进入过别的公会 if(!empty($user_info['card_id'])){ $map = []; // $map[] = ['card_id', '=', $user_info['card_id']]; $map[] = ['uid', '=', $uid]; $map[] = ['status', '=', 1]; $map[] = ['is_delete', '=', 1]; $is_check_joins = db::name('user_guild')->where($map)->order('id desc')->find(); if($is_check_joins){ if($is_check_joins['guild_id'] != $guild_id){ return ['code' => 201, 'msg' => '您无法加入别的公会', 'data' => null]; } } }else{ return ['code' => 201, 'msg' => '请先实名认证', 'data' => null]; } //是否有房间 $rid = 0; $room_info = db::name('room')->where('room_owner_uid', $uid)->find(); if($room_info){ $rid = $room_info['rid']; } //提交申请 // $insert_data = []; // $insert_data['uid'] = $uid; // $insert_data['guild_id'] = $guild_id; // $insert_data['rid'] = $rid; // $insert_data['card_id'] = $user_info['card_id']; // $insert_data['status'] = 2; // $insert_data['is_deacon'] = 2; // $insert_data['add_time'] = time(); $insert_data = []; $insert_data['uid'] = $uid; $insert_data['guild_id'] = $guild_id; $insert_data['rid'] = $rid; $insert_data['card_id'] = $user_info['card_id']; $insert_data['status'] = 1; $insert_data['is_deacon'] = 2; $insert_data['add_time'] = time(); $insert_data['is_show_room'] = 1; $reslut = db::name('user_guild')->insert($insert_data); if($reslut){ //增加公会人数 db::name('guild')->where('id', $guild_info['id'])->inc('num', 1)->update(); return ['code' => 200, 'msg' => '提交成功', 'data' => null]; }else{ return ['code' => 201, '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' => 201, 'msg' => '参数错误', 'data' => null]; } //公会信息 $guild_info = db::name('guild')->where('id', $guild_id)->find(); if(!$guild_info){ return ['code' => 201, 'msg' => '该公会不存在', 'data' => null]; } $map = []; $map[] = ['a.guild_id', '=', $guild_id]; $map[] = ['a.status', '=', 2]; $list = db::name('user_guild')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('a.id, a.uid, a.guild_id, a.rid, a.card_id, a.status, b.nick_name, b.base64_nick_name, b.head_pic')->where($map)->order('id desc')->page($page, $page_limit)->select(); foreach ($list as $k => &$v){ $v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8'); $v['head_pic'] = localpath_to_netpath($v['head_pic']); } $data = []; $data['list'] = $list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } public function txt(){ Db::startTrans(); try { Db::commit(); return ['code' => 200, 'msg' => '申请成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 dump($e); Db::rollback(); return ['code' => 201, 'msg' => '申请失败', 'data' => null]; } } //同意、拒绝申请 public function operate_guild($uid, $apply_id, $type){ return ['code' => 201, 'msg' => '请升级新版本', 'data' => null]; $user_info = db::name('user')->find($uid); if(!$user_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } //该申请是否已被操作 $map = []; $map[] = ['id', '=', $apply_id]; $map[] = ['status', '=', 2]; $is_operate = db::name('user_guild')->where($map)->find(); if(!$is_operate){ return ['code' => 201, 'msg' => '该申请不存在', 'data' => null]; } if(!in_array($type, [1,2])){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } // $guild_info = db::name('guild')->where('id', $is_operate['guild_id'])->find(); if($uid != $guild_info['uid']){ return ['code' => 201, 'msg' => '您没有权限操作', 'data' => null]; } //审核通过 if($type == 1) { $is_join_guild = Db::name('user_guild')->where(['uid' => $is_operate['uid'], 'is_delete' => 1, 'status' => 1])->find(); if(!empty($is_join_guild)) { return ['code' => 201, 'msg' => '已加入其他工会', 'data' => null]; } } Db::startTrans(); try { if($type == 1){//同意 $map = []; $map[] = ['id', '=', $apply_id]; $update_data = []; $update_data['status'] = 1; $update_data['update_time'] = time(); $update_data['is_show_room'] = 1; $reslut = db::name('user_guild')->where($map)->update($update_data); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '操作失败', 'data' => null]; } //增加公会人数 db::name('guild')->where('id', $guild_info['id'])->inc('num', 1)->update(); }else if($type == 2){//拒绝 $map = []; $map[] = ['id', '=', $apply_id]; $update_data = []; $update_data['status'] = 3; $update_data['update_time'] = time(); $reslut = db::name('user_guild')->where($map)->update($update_data); if(!$reslut){ Db::rollback(); return ['code' => 201, 'msg' => '操作失败', 'data' => null]; } } Db::commit(); return ['code' => 200, 'msg' => '操作成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 dump($e); Db::rollback(); return ['code' => 201, 'msg' => '操作失败', 'data' => null]; } } //公会信息 public function get_guild_info($uid, $guild_id, $type, $page, $page_limit){ $page = (int)$page; $page_limit = $page_limit < 30 ? $page_limit : 30; $guild_info = db::name('guild')->where('id', $guild_id)->find(); if(!$guild_id){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } if($type == 1){ $map = []; $map[] = ['a.guild_id', '=', $guild_id]; $map[] = ['a.status', '=', 1]; $map[] = ['a.rid', '>', 0]; $map[] = ['a.is_show_room', '=', 1]; $list = db::name('user_guild')->alias('a')->join('yy_room b', 'a.uid = b.room_owner_uid')->field('a.id,a.uid,a.rid,a.guild_id,b.room_name,b.base64_room_name,b.room_cover,b.today_hot_value')->where($map)->order('b.today_hot_value desc')->page($page, $page_limit)->select(); foreach ($list as $k => &$v){ $v['room_name'] = mb_convert_encoding(base64_decode($v['base64_room_name']), 'UTF-8', 'UTF-8'); $v['room_cover'] = localpath_to_netpath($v['room_cover']); } }else if($type == 2){ $map = []; $map[] = ['a.guild_id', '=', $guild_id]; $map[] = ['a.status', '=', 1]; $list = db::name('user_guild')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('a.id,a.uid,a.rid,a.guild_id,b.nick_name,b.base64_nick_name,b.head_pic')->where($map)->order('a.is_deacon asc, a.id desc')->page($page, $page_limit)->select(); foreach ($list as $k => &$v) { $v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8'); $v['head_pic'] = localpath_to_netpath($v['head_pic']); } } $data = []; $data['list'] = $list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } // if($time == 1){ // $build_sql = db::name('room_guild_charm_count_day')->field('guild_id,SUM(amount) as total_gift_total_price')->whereTime('add_time', 'yesterday')->group('guild_id')->buildSql(); // }else if($time == 2){ // $build_sql = db::name('room_guild_charm_count_day')->field('guild_id,SUM(amount) as total_gift_total_price')->whereTime('add_time', 'today')->group('guild_id')->buildSql(); // }else if($time == 3){ // $build_sql = db::name('room_guild_charm_count_day')->field('guild_id,SUM(amount) as total_gift_total_price')->whereTime('add_time', 'week')->group('guild_id')->buildSql(); // }else if($time == 4){ // $build_sql = db::name('room_guild_charm_count_day')->field('guild_id,SUM(amount) as total_gift_total_price')->whereTime('add_time', 'last week')->group('guild_id')->buildSql(); // }else if($time == 5){ // $build_sql = db::name('room_guild_charm_count_day')->field('guild_id,SUM(amount) as total_gift_total_price')->whereTime('add_time', 'month')->group('guild_id')->buildSql(); // }else{ // return ['code' => 201, 'msg' => '参数错误', 'data' => null]; // } public function get_guild_money_log_list($uid, $guild_id, $type, $time, $page = 1, $page_limit){ $page = (int)$page; $page_limit = $page_limit < 30 ? $page_limit : 30; // $page = $page * $page_limit; //time 1当日 2本周 3本月 if(!in_array($time, [1,2,3,4,5])){ return ['code' => 201, 'msg' => '参数非法1', 'data' => null]; } $user_info = db::name('user')->find($uid); if(!$user_info){ return ['code' => 201, 'msg' => '参数非法2', 'data' => null]; } $guild_info = db::name('guild')->find($guild_id); if(!$guild_info){ return ['code' => 201, 'msg' => '参数非法3', 'data' => null]; } $is_deacon = 2; if($uid == $guild_info['uid']){ $is_deacon = 1; } if($type == 1){//房间 //公会所有房间 $map = []; $map[] = ['c.guild_id', '=', $guild_id]; $map[] = ['c.rid', '>', 0]; $map[] = ['c.is_delete', '=', 1]; $map[] = ['c.is_show_room', '=', 1]; $map[] = ['c.status', '=', 1]; $build_sql = Db::name('room_guild_charm_count_day')->field('SUM(amount) as total_gift_total_price, rid as guild_rid'); if($time == 1){ $build_sql = $build_sql->whereTime('add_time', 'yesterday'); }else if($time == 2){ $build_sql = $build_sql->whereTime('add_time', 'today'); }else if($time == 3){ $build_sql = $build_sql->whereTime('add_time', 'week'); }else if($time == 4){ $build_sql = $build_sql->whereTime('add_time', 'last week'); }else if($time == 5){ $build_sql = $build_sql->whereTime('add_time', 'month'); } $build_sql = $build_sql->where('guild_id', $guild_id)->group('rid')->buildSql(); // dump($map);die; $order_string = 'b.total_gift_total_price desc'; //排序规则 $model = Db::name('user_guild')->alias('c'); $model = $model->where($map); $model = $model->field('a.rid,a.room_owner_uid,a.room_name,a.base64_room_name,a.room_cover,b.total_gift_total_price,a.room_number'); $model = $model->join($build_sql . ' b', 'c.rid = b.guild_rid', 'left'); $model = $model->join('yy_room a', 'c.rid = a.rid'); $list = $model->order($order_string)->page($page, $page_limit)->select(); // dump($list);exit; foreach ($list as $k => &$v){ $v['room_name'] = mb_convert_encoding(base64_decode($v['base64_room_name']), 'UTF-8', 'UTF-8'); $v['room_cover'] = localpath_to_netpath($v['room_cover']); if(empty($v['total_gift_total_price'])){ $v['total_gift_total_price'] = 0; }else{ $v['total_gift_total_price'] = (int)$v['total_gift_total_price']; } } $total_gift_price = Db::name('room_guild_charm_count_day')->where('guild_id', $guild_id); if($time == 1){ $total_gift_price = $total_gift_price->whereTime('add_time', 'yesterday'); }else if($time == 2){ $total_gift_price = $total_gift_price->whereTime('add_time', 'today'); }else if($time == 3){ $total_gift_price = $total_gift_price->whereTime('add_time', 'week'); }else if($time == 4){ $total_gift_price = $total_gift_price->whereTime('add_time', 'last week'); }else if($time == 5){ $total_gift_price = $total_gift_price->whereTime('add_time', 'month'); } // $total_gift_price = '****'; if($is_deacon == 1) { $total_gift_price = $total_gift_price->sum('amount'); } else { $total_gift_price = '****'; } // }else if($type == 2){//个人 //公会用户成员 $map = []; $map[] = ['a.guild_id', '=', $guild_id]; $map[] = ['a.status', '=', 1]; $map[] = ['a.is_delete', '=', 1]; $build_sql = Db::name('user_guild_charm_count_day')->field('SUM(amount) as total_gift_total_price, uid'); if($time == 1){ $build_sql = $build_sql->whereTime('add_time', 'yesterday'); }else if($time == 2){ $build_sql = $build_sql->whereTime('add_time', 'today'); }else if($time == 3){ $build_sql = $build_sql->whereTime('add_time', 'week'); }else if($time == 4){ $build_sql = $build_sql->whereTime('add_time', 'last week'); }else if($time == 5){ $build_sql = $build_sql->whereTime('add_time', 'month'); } $build_sql = $build_sql->group('uid')->buildSql(); $order_string = 'a.is_deacon asc, b.total_gift_total_price desc'; //排序规则 $model = Db::name('user_guild')->alias('a'); $model = $model->field('a.uid,c.base64_nick_name,c.head_pic,b.total_gift_total_price,c.special_uid'); $model = $model->join('yy_user c', 'a.uid = c.uid'); $model = $model->join($build_sql . ' b', 'a.uid = b.uid', 'left'); $model = $model->where($map); $list = $model->order($order_string)->page($page, $page_limit)->select(); // dump($list);exit; foreach ($list as $k => &$v){ $v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8'); $v['head_pic'] = localpath_to_netpath($v['head_pic']); if(empty($v['total_gift_total_price'])){ $v['total_gift_total_price'] = 0; }else{ $v['total_gift_total_price'] = (int)$v['total_gift_total_price']; } } $total_gift_price = Db::name('user_guild_charm_count_day')->where('guild_id', $guild_id); if($time == 1){ $total_gift_price = $total_gift_price->whereTime('add_time', 'yesterday'); }else if($time == 2){ $total_gift_price = $total_gift_price->whereTime('add_time', 'today'); }else if($time == 3){ $total_gift_price = $total_gift_price->whereTime('add_time', 'week'); }else if($time == 4){ $total_gift_price = $total_gift_price->whereTime('add_time', 'last week'); }else if($time == 5){ $total_gift_price = $total_gift_price->whereTime('add_time', 'month'); } // $total_gift_price = $total_gift_price->sum('amount'); if($is_deacon == 1) { $total_gift_price = $total_gift_price->sum('amount'); } else { $total_gift_price = '****'; } } $data = []; $data['is_deacon'] = $is_deacon; $data['list'] = $list; $data['total_gift_price'] = $total_gift_price; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //踢出公会 public function kick_out_guild($uid, $user_id, $guild_id){ $user_info = db::name('user')->find($user_id); if(!$user_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $guild_info = db::name('guild')->find($guild_id); if(!$guild_id){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } if($uid != $guild_info['uid']){ return ['code' => 201, 'msg' => '您没有权限操作','data' => null]; } $map = []; $map[] = ['uid', '=', $user_id]; $map[] = ['guild_id', '=', $guild_id]; $map[] = ['status', '=', 1]; $map[] = ['is_delete', '=', 1]; $user_guild_info = db::name('user_guild')->where($map)->find(); if(!$user_guild_info){ return ['code' => 201, 'msg' => '该用户不在该公会', 'data' => null]; } if($user_guild_info['is_deacon'] == 1){ return ['code' => 201, 'msg' => '会长无法被踢出','data' => null]; } $map = []; $map[] = ['id', '=', $user_guild_info['id']]; $update_data = []; $update_data['is_delete'] = 2; $update_data['update_time'] = time(); $update_data['quit_time'] = time(); $update_data['quit_type'] = 2; $reslut = db::name('user_guild')->where($map)->update($update_data); if($reslut){ //减少公会人数 db::name('guild')->where('id', $guild_info['id'])->inc('num', -1)->update(); return ['code' => 200, 'msg' => '踢出成功','data' => null]; }else{ return ['code' => 201, 'msg' => '踢出失败','data' => null]; } } //退出公会 public function quit_guild($uid, $guild_id){ $config = get_system_config(); $user_info = db::name('user')->find($uid); if(!$user_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $guild_info = db::name('guild')->find($guild_id); if(!$guild_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } // $map = []; $map[] = ['uid', '=', $uid]; $map[] = ['guild_id', '=', $guild_id]; $map[] = ['status', '=', 1]; $map[] = ['is_delete', '=', 1]; $user_guild_info = db::name('user_guild')->where($map)->find(); if(!$user_guild_info){ return ['code' => 201, 'msg' => '用户不在该公会', 'data' => null]; } if($user_guild_info['is_deacon'] == 1){ return ['code' => 201, 'msg' => '会长无法退出公会', 'data' => null]; } $time = 60 * 60 * 24 * $config['quit_guild_time']; $time = $user_guild_info['start_time'] + $time; if($time > time()){ return ['code' => 201, 'msg' => '加入公会'.$config['quit_guild_time'].'天内无法退出', 'data' => null]; } Db::startTrans(); try { if($guild_info['money'] > 0){ if($user_info['integral'] < $guild_info['money']){ return ['code' => 201, 'msg' => '金币不足', 'data' => null]; } //扣除用户金币 $reslut = model('admin/User')->change_user_money_by_user_info($user_info, -$guild_info['money'], 2, 18, "主动退出公会,扣除金币", $user_info['uid'], 0); if ($reslut['code'] != 200) { Db::rollback(); return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } //增加会长金币 $reslut = model('admin/User')->change_user_money_by_uid($guild_info['uid'], $guild_info['money'], 2, 19, "成员退出公会,会长获取金币", $user_info['uid'], 0); if ($reslut['code'] != 200) { Db::rollback(); return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } } $map = []; $map[] = ['id', '=', $user_guild_info['id']]; $update_data = []; $update_data['is_delete'] = 2; $update_data['update_time'] = time(); $update_data['quit_time'] = time(); $update_data['quit_type'] = 1; $reslut = db::name('user_guild')->where($map)->update($update_data); if(!$reslut){ Db::rollback(); return ['code' => 201, '' => '退出失败', 'data' => null]; } //减少公会人数 db::name('guild')->where('id', $guild_info['id'])->inc('num', -1)->update(); Db::commit(); return ['code' => 200, 'msg' => '退出成功', 'data' => null]; } catch (\Exception $e) { // 回滚事务 dump($e); Db::rollback(); return ['code' => 201, 'msg' => '退出失败', 'data' => null]; } } //是否是公会会长 public function user_is_deacon($uid, $guild_id){ $user_info = db::name('user')->find($uid); if(!$user_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $guild_info = db::name('guild')->find($guild_id); if(!$guild_info){ return ['code' => 201, 'msg' => '参数错误', 'data' => null]; } $is_deacon = 2; if($uid == $guild_info['uid']){ $is_deacon = 1; } $map = []; $map[] = ['uid', '=', $uid]; $map[] = ['status', '=', 1]; $map[] = ['is_delete', '=', 1]; $map[] = ['guild_id', '=', $guild_id]; $info = Db::name('user_guild')->where($map)->find(); $is_join_guild = 2; if($info) { $is_join_guild = 1; } $data = []; $data['is_deacon'] = $is_deacon; $data['guild_name'] = mb_convert_encoding(base64_decode($guild_info['base64_guild_name']), 'UTF-8', 'UTF-8'); $data['quit_money'] = $guild_info['money']; $data['is_join_guild'] = $is_join_guild; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //用户公会信息 public function user_guild_info($uid){ $guild_id = 0; $map = []; $map[] = ['uid', '=', $uid]; $map[] = ['status', '=', 1]; $map[] = ['is_delete', '=', 1]; $map[] = ['is_show_room', '=', 1]; $user_guild_info = db::name('user_guild')->where($map)->find(); if($user_guild_info){ $guild_id = $user_guild_info['guild_id']; } return $guild_id; } //解散公会 public function diss_guild($uid,$guild_id){ $guild_info = db::name('guild')->where(['id'=>$guild_id,'uid'=>$uid,'is_delete'=>1])->find(); if(empty($guild_info)){ return ['code' => 201, 'msg' => '公会不存在!', 'data' => null]; } try { Db::startTrans(); //成员解散 db::name('user_guild')->where(['guild_id'=>$guild_id,'status'=>1,'is_delete'=>1])->update(['is_delete'=>2,'quit_type'=>3,'quit_time'=>time()]); //退会 $update_data = []; $update_data['is_deacon'] = 2; $update_data['update_time'] = time(); $reslut = db::name('user')->where('uid', $uid)->update($update_data); //解散公会 db::name('guild')->where('id',$guild_id)->update(['is_delete'=>2,'is_show'=>2,'num'=>0,'guild_special_id'=>""]); Db::commit(); return ['code' => 200, 'msg' => '解散成功!', 'data' => null]; }catch (\Exception $e) { // 回滚事务 Db::rollback(); return ['code' => 201, 'msg' => '解散失败', 'data' => null]; } } //公会合并 public function guild_combine($cancel_guild_id,$join_guild_id){ $guild_info1 = db::name('guild')->where(['id'=>$cancel_guild_id,'is_delete'=>1])->find(); if(empty($guild_info1)){ return ['code' => 201, 'msg' => '被解散公会!', 'data' => null]; } $guild_info2 = db::name('guild')->where(['id'=>$join_guild_id,'is_delete'=>1])->find(); if(empty($guild_info2)){ return ['code' => 201, 'msg' => '合并公会不存在!', 'data' => null]; } try { Db::startTrans(); //a公会成员人数统计 $num = db::name('user_guild')->where(['guild_id'=>$cancel_guild_id,'status'=>1,'is_delete'=>1])->count("*"); //将a公会成员加入b公会 $s_date = date('Y-m-d H:i:s'); db::name('user_guild')->where(['guild_id'=>$cancel_guild_id,'status'=>1,'is_delete'=>1])->update(['guild_id'=>$join_guild_id,'is_deacon'=>2,'remarks'=>"{$s_date}公会id:{$cancel_guild_id}合并到公会id:{$join_guild_id}"]); //增加b公会人数 db::name('guild')->where(['id'=>$join_guild_id,'is_delete'=>1])->inc('num',$num)->update(['update_time'=>time()]); //取消a公会 公会长身份 $update_data = []; $update_data['is_deacon'] = 2; $update_data['update_time'] = time(); $reslut = db::name('user')->where('uid', $guild_info1['uid'])->update($update_data); db::name('guild')->where(['id'=>$cancel_guild_id])->update(['guild_special_id'=>"",'num'=>0,'is_delete'=>2,'is_show'=>2]); Db::commit(); return ['code' => 200, 'msg' => '合并成功!', 'data' => null]; }catch (\Exception $e) { Db::rollback(); return ['code' => 201, 'msg' => '合并失败', 'data' => null]; } } public function get_the_guild_info($guild_id=0){ $guild_info = db::name('guild')->where(['id'=>$guild_id,'is_delete'=>1,'is_show'=>1])->field('id,guild_special_id,uid,base64_guild_name as guild_name,cover,money,num,intro,add_time')->find(); if(empty($guild_info)){ return ['code' => 201, 'msg' => '公会不存在', 'data' => null]; } $guild_info['guild_name'] = mb_convert_encoding(base64_decode($guild_info['guild_name']), 'UTF-8', 'UTF-8'); $guild_info['cover'] = localpath_to_netpath($guild_info['cover']); //贡献值 $guild_info['contribution_value'] = db::name('user_guild_charm_count_day')->where(['guild_id'=>$guild_id])->sum('amount'); //公会长信息 $ghz = db::name('user')->where(['uid'=>$guild_info['uid']])->field('uid,base64_nick_name as nick_name,head_pic,special_uid')->find(); if($ghz){ $ghz['nick_name'] = mb_convert_encoding(base64_decode($ghz['nick_name']), 'UTF-8', 'UTF-8'); $ghz['head_pic'] = localpath_to_netpath($ghz['head_pic']); //获取爵位信息 $map[] = ['a.is_delete', '=', 1]; $map[] = ['a.status', '=', 1]; $map[] = ['a.uid' , '=', $ghz['uid']]; $map[] = ['a.end_time' , '>', time()]; $noblity_image = db::name('user_nobility')->alias('a')->join('yy_user b', 'a.uid = b.uid')->join('yy_nobility c', 'c.lid = a.lid')->where($map)->order('a.lid desc')->value('c.image'); $ghz['noblity_image'] = localpath_to_netpath($noblity_image); //获取用户魅力 财富等级 $reslut = model('api/User')->get_user_charm_contribution_info($ghz['uid']); $ghz['charm_level_image'] = $reslut['data']['charm_level_image']; $ghz['contribution_level_image'] = $reslut['data']['contribution_level_image']; } $guild_info['ghz'] = $ghz; //获取所有房间上周流水 $map = []; $map[] = ['type', '=', 1]; $map[] = ['guild_id', '=', $guild_id]; $last_week_income = db::name('room_guild_charm_count_day')->where($map)->whereTime('add_time', 'last week')->sum('amount'); $guild_info['last_week_income'] = $last_week_income; $week_start = date('Y-m-d', strtotime("last week Monday")); $week_end = date('Y-m-d', strtotime("last week Sunday")); $belong_week = $week_start.'-'.$week_end; $earnings = db::name('guild_week_earnings_log')->where(['guild_id'=>$guild_id,'belong_week'=>$belong_week])->value('earnings'); $guild_info['last_week_income_money'] = $earnings; //上周补贴金额 $map = []; $map[] = ['type', '=', 1]; $map[] = ['guild_id', '=', $guild_id]; $this_week_income = db::name('room_guild_charm_count_day')->where($map)->whereTime('add_time', 'week')->sum('amount'); $guild_info['this_week_income'] = $this_week_income; return ['code' => 200, 'msg' => 'success', 'data' => $guild_info]; // $guild_info['ghz'] = } }