Files
mier-php/application/api/model/Guild.php
2025-08-11 10:22:05 +08:00

873 lines
37 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

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

<?php
namespace app\api\model;
use think\Db;
use think\Model;
use app\common\libs\DealTimeLib;
class Guild extends Model
{
//公会列表
public function get_guild_list($uid, $time, $page = 1, $page_limit){
$keywords = input('keywords', '');
$page = (int)$page;
$page_limit = $page_limit < 20 ? $page_limit : 20;
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];
}
// $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'] =
}
}