Files

389 lines
15 KiB
PHP
Raw Permalink 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\guildAdmin\controller;
use app\admin\command\Menu;
use app\GuildAdmin\model\AuthGroup;
use app\GuildAdmin\model\AuthGroupAccess;
use app\GuildAdmin\model\AuthRule;
use app\common\controller\GuildAdmin;
use fast\Random;
use fast\Tree;
use think\Cache;
use think\Db;
use think\Exception;
use think\Hook;
use think\Session;
use think\Validate;
/**
* 管理员管理
*
* @icon fa fa-users
* @remark 一个管理员可以有多个角色组,左侧的菜单根据管理员所拥有的权限进行生成
*/
class User extends GuildAdmin
{
protected $noNeedLogin = [];
protected $noNeedRight = [];
protected $layout = '';
protected $table_guild_subsidy_config = 'vs_guild_subsidy_config';
protected $table_guild_subsidy = 'vs_guild_subsidy';
protected $table_guild_user = 'vs_guild_user';
protected $table_guild_data = 'vs_guild_data';
protected $table_guild = 'vs_guild';
public function _initialize()
{
parent::_initialize();
}
// 用户列表
public function index()
{
$guild_id = $this->guildId;
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$search = input('search','');
$search_stime = input('search_stime','');
$search_etime = input('search_etime','');
$where = [];
if($search){
//手机号
if(preg_match('/^1[34578]\d{9}$/',$search)){
$where['b.mobile'] = ['like',$search];
}elseif(is_numeric($search) && strlen($search) <= 10){//ID 数字
$user_id = db::name('user')->where('user_code', $search)->value('id');
$where['a.user_id'] = ['like',$user_id];
}else{
$where['b.nickname'] = ['like',$search];
}
}
if($search_stime){
$where['a.createtime'] = ['>=',strtotime($search_stime)];
}
if($search_etime){
$where['a.createtime'] = ['<=',strtotime($search_etime)];
}
if($this->auth->id != 1) {
$where['a.guild_id'] = $guild_id;
}
$where['a.status'] = 1;
$count = db::name('vs_guild_user')->alias('a')->join('user b', 'a.user_id = b.id')->where($where)->count();
$list = db::name('vs_guild_user')->alias('a')->join('user b', 'a.user_id = b.id')
->field('a.id, a.user_id, a.guild_id, a.room_id,a.is_deacon,b.status, b.nickname, b.avatar,b.user_code,b.sex,b.mobile,a.createtime,a.settlement_ratio,a.quit_type')
->where($where)
->order('id desc')
->page($page, $page_limit)
->select();
$list_data =[];
foreach ($list as $k=>$item){
$list_data[$k]['id'] = $item['id'];
$list_data[$k]['nickname'] = $item['user_code'].'-'.$item['nickname'];
if($item['sex']){
$list_data[$k]['sex'] = $item['sex'] == 1 ? '男' : '女';
}else{
$list_data[$k]['sex'] = '未知';
}
$list_data[$k]['mobile'] = $item['mobile'];
//是否是会长
$list_data[$k]['is_deacon'] = $item['is_deacon'];
//粉丝数量
$list_data[$k]['fans_num'] = db::name('user_follow')->where(['follow_id' => $item['user_id'],'type'=>1])->count();
if($search_stime==""){
$search_stime = strtotime(date('Y-m-d'));
}
if($search_etime==""){
$search_etime = time();
}
$list_data[$k]['fans_num_new'] = db::name('user_follow')->where(['follow_id' => $item['user_id'],'type'=>1])
->where('createtime', '>=', strtotime($search_stime))
->where('createtime', '<=', strtotime($search_etime))
->count();
$list_data[$k]['settlement_ratio'] = $item['settlement_ratio'];
//最高比例
//结算比例
$configs = get_system_config();
$list_data[$k]['max_settlement_ratio'] = $configs['room_gift_ratio'] + $configs['room_gift_guild_ratio'];
$list_data[$k]['createtime'] = date('Y-m-d H:i:s',$item['createtime']);
//状态 1正常2禁止登录0注销
$list_data[$k]['status'] = $item['status'];
$list_data[$k]['status_text'] = $item['status'] == 1 ? '正常' : ($item['status'] == 2 ? '禁止登录' : '注销');
//用户工会状态
$list_data[$k]['guild_status'] = $item['quit_type'];
$list_data[$k]['guild_status_text'] = $item['quit_type'] == 0 ? '正常' : (in_array($item['quit_type'],[1,4]) ? '退出' : '踢出');
}
$return_data =[
'page' => $page,
'limit' => $page_limit,
'count' => $count,
'list' => $list_data
];
return V(1,"成功", $return_data);
}
//用户申请列表
public function apply_list(){
$guild_id = $this->guildId;
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$search = input('search','');
$search_stime = input('search_stime','');
$search_etime = input('search_etime','');
$where = [];
if($search){
//手机号
if(preg_match('/^1[34578]\d{9}$/',$search)){
$where['b.mobile'] = ['like',$search];
}elseif(is_numeric($search) && strlen($search) <= 10){//ID 数字
$user_id = db::name('user')->where('user_code', $search)->value('id');
$where['a.user_id'] = ['like',$user_id];
}else{
$where['b.nickname'] = ['like',$search];
}
}
if($search_stime){
$where['a.createtime'] = ['>=',strtotime($search_stime)];
}
if($search_etime){
$where['a.createtime'] = ['<=',strtotime($search_etime)];
}
if($this->auth->id != 1) {
$where['a.guild_id'] = $guild_id;
}
$where['a.status'] = ['in','2,3'];
$count = db::name('vs_guild_user')->alias('a')->join('user b', 'a.user_id = b.id')->where($where)->count();
$list = db::name('vs_guild_user')->alias('a')->join('user b', 'a.user_id = b.id')
->field('a.id, a.user_id, a.guild_id, a.room_id, a.status, b.nickname, b.avatar,b.user_code,b.sex,b.mobile,a.createtime')
->where($where)
->order('id desc')
->page($page, $page_limit)
->select();
$list_data =[];
foreach ($list as $k=>$item){
$list_data[$k]['id'] = $item['id'];
$list_data[$k]['nickname'] = $item['user_code'].'-'.$item['nickname'];
if($item['sex']){
$list_data[$k]['sex'] = $item['sex'] == 1 ? '男' : '女';
}else{
$list_data[$k]['sex'] = '未知';
}
$list_data[$k]['mobile'] = $item['mobile'];
//粉丝数量
$list_data[$k]['fans_num'] = db::name('user_follow')->where(['follow_id' => $item['user_id'],'type'=>1])->count();
if($search_stime==""){
$search_stime = strtotime(date('Y-m-d'));
}
if($search_etime==""){
$search_etime = time();
}
$list_data[$k]['fans_num_new'] = db::name('user_follow')->where(['follow_id' => $item['user_id'],'type'=>1])
->where('createtime', '>=', strtotime($search_stime))
->where('createtime', '<=', strtotime($search_etime))
->count();
$list_data[$k]['createtime'] = date('Y-m-d H:i:s',$item['createtime']);
$list_data[$k]['status'] = $item['status'];
$list_data[$k]['status_text'] = $item['status'] == 2 ? '待审核' : '审核失败';
}
$return_data =[
'page' => $page,
'limit' => $page_limit,
'count' => $count,
'list' => $list_data
];
return V(1,"成功", $return_data);
}
/*
* 同意,拒绝申请
*/
public function operate_guild(){
$id = input('id','');
$status = input('status','');
$remarks = input('remarks','');
if(!$id){
return V(0,"参数错误");
}
$guild_user = db::name('vs_guild_user')->where(['id'=>$id])->find();
if(!$guild_user){
return V(0,"参数错误");
}
$result = model('api/Guild')->operate_guild($id, $status,0,$remarks);
if($result['code'] == 1){
return V(1,"操作成功");
}else{
return V(0,$result['msg']);
}
}
//结算比例编辑
public function settlement_ratio_edit(){
$id = input('id','');
$settlement_ratio = input('settlement_ratio','');
if(!$id){
return V(0,"参数错误");
}
$guild_user = db::name('vs_guild_user')->where(['id'=>$id])->find();
if(!$guild_user){
return V(0,"参数错误");
}
$configs = get_system_config();
$ratio = $configs['room_gift_ratio'] + $configs['room_gift_guild_ratio'];
if($settlement_ratio > $ratio){
return V(0,"最高比例不能超过".$ratio);
}
$result = db::name('vs_guild_user')->where(['id'=>$id])->update(['settlement_ratio'=>$settlement_ratio]);
if($result){
return V(1,"操作成功");
}else{
return V(0,"操作失败");
}
}
//踢出工会
public function kick_out_user(){
$id = input('id','');
if(!$id){
return V(0,"参数错误");
}
$guild_user = db::name('vs_guild_user')->where(['id'=>$id])->find();
$guild = db::name('vs_guild')->where(['id'=>$guild_user['guild_id']])->find();
$result = model('api/Guild')->kick_out_guild($guild['user_id'],$guild_user['user_id'], $guild_user['guild_id']);
if($result['code'] == 1){
return V(1,"操作成功");
}else{
return V(0,$result['msg']);
}
}
//退出申请列表
public function quit_apply_list(){
$guild_id = $this->guildId;
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$search = input('search','');
$search_stime = input('search_stime','');
$search_etime = input('search_etime','');
$where = [];
if($search){
//手机号
if(preg_match('/^1[34578]\d{9}$/',$search)){
$where['b.mobile'] = ['like',$search];
}elseif(is_numeric($search) && strlen($search) <= 10){//ID 数字
$user_id = db::name('user')->where('user_code', $search)->value('id');
$where['a.user_id'] = ['like',$user_id];
}else{
$where['b.nickname'] = ['like',$search];
}
}
if($search_stime){
$where['a.createtime'] = ['>=',strtotime($search_stime)];
}
if($search_etime){
$where['a.createtime'] = ['<=',strtotime($search_etime)];
}
if($this->auth->id != 1) {
$where['a.guild_id'] = $guild_id;
}
$list = db::name('vs_guild_user_quit_log')->alias('a')->join('user b', 'a.user_id = b.id')
->field('a.id, a.user_id, a.guild_id,a.createtime,a.status,b.nickname, b.avatar,b.user_code,b.mobile,a.type')
->where($where)
->order('id desc')
->page($page, $page_limit)
->select();
$count = db::name('vs_guild_user_quit_log')->alias('a')->join('user b', 'a.user_id = b.id')->where($where)->count();
$list_data = [];
foreach ($list as $k => $item){
$list_data[$k]['id'] = $item['id'];
$list_data[$k]['nickname'] = $item['user_code'].'-'.$item['nickname'];
$list_data[$k]['mobile'] = $item['mobile'];
$list_data[$k]['type'] = $item['type']==1?'主动退出':'付费退出';
$list_data[$k]['createtime'] = date('Y-m-d H:i:s',$item['createtime']);
// 审核状态 0默认待审核 1已通过 2已拒绝
$list_data[$k]['status'] = $item['status'];
$list_data[$k]['status_text'] = $item['status'] == 0 ? '待审核' : ($item['status'] == 1 ? '已通过' : '已拒绝');
}
$return_data =[
'page' => $page,
'limit' => $page_limit,
'count' => $count,
'list' => $list_data
];
return V(1,"成功", $return_data);
}
//退出申请审核
public function quit_apply_operate(){
$id = input('id','');
$status = input('status',1);
if(!$id){
return V(0,"参数错误");
}
$quit_apply = db::name('vs_guild_user_quit_log')->where(['id'=>$id])->find();
if(!$quit_apply){
return V(0,"参数错误");
}
$result = model('api/Guild')->quit_apply_audit($quit_apply['user_id'],$id,$status);
if($result['code'] == 1){
return V(1,"操作成功");
}else{
return V(0,$result['msg']);
}
}
//邀请用户加入工会
public function invite_user_join_guild(){
$guild_id = $this->guildId;
$user_code = input('user_code','');
$mobile = input('mobile','');
if(!$user_code){
return V(0,"参数错误");
}
if(!$mobile){
return V(0,"请输入手机号");
}
$user = db::name('user')->where(['user_code'=>$user_code])->find();
if(!$user){
return V(0,"用户不存在");
}
if($user['mobile']!=$mobile){
return V(0,"此手机号用用户不一致");
}
$user_id = $user['id'];
$guild = db::name('vs_guild')->where(['id'=>$guild_id])->find();
$guild_user = db::name('vs_guild_user')->where(['user_id'=>$user_id])->find();
if($guild_user){
if($guild_user['guild_id'] == $guild_id){
return V(0,"该用户已加入工会");
}else{
return V(0,"该用户已加入其它工会");
}
}
$result = db::name('vs_guild_user_invited')->where(['user_id'=>$user_id])->find();
if($result && $result['status'] == 0){
return V(0,"该用户已发送邀请,请等待对方同意");
}
$data =[];
//发送系统消息
$data['type'] = 6;
$data['title'] = '工会邀请';
$data['admin_id'] = Session::get('admin_id');
$data['receiving_id'] = $user_id;
$data['content'] = $guild['guild_name'].' 公会邀请您加入工会呢,您是否同意!';
$data['createtime'] = time();
$res = db::name('system_message')->insertGetId($data);
if(!$res){
return V(0,"操作失败");
}
$result = db::name('vs_guild_user_invited')->insert([
'user_id' => $user_id,
'mobile' => $mobile,
'guild_id' => $guild_id,
'status' => 0,
'message_id' => $res,
'createtime' => time()
]);
if($result){
return V(1,"操作成功");
}else{
return V(0,"操作失败");
}
}
}