873 lines
37 KiB
PHP
873 lines
37 KiB
PHP
<?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'] =
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
}
|