603 lines
16 KiB
PHP
603 lines
16 KiB
PHP
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | 小说系统 [ WE CAN DO IT JUST THINK IT ]
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace app\admin\controller;
|
|
use app\common\controller\Admin;
|
|
|
|
class User extends Admin {
|
|
|
|
/**
|
|
* 用户管理首页
|
|
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
|
|
*/
|
|
public function index() {
|
|
$keyword = input('keyword');
|
|
$group = input('group');
|
|
$wxmpid = input('wxmpid');
|
|
$uid = input('uid');
|
|
$map['status'] = array('egt', 0);
|
|
|
|
$map['uid|nickname|username|mobile'] = array('like', '%' . $keyword . '%');
|
|
|
|
if($uid){
|
|
$map['uid'] = $uid;
|
|
}
|
|
if(isset($wxmpid)&&$wxmpid!=''){
|
|
$temp_wxmpid = $wxmpid==1?0:$wxmpid;
|
|
$map['wxmpid'] = $temp_wxmpid;
|
|
}
|
|
|
|
if($group){
|
|
if($group==88){
|
|
$map['is_author'] = 1;
|
|
}else{
|
|
$map['group'] = $group;
|
|
}
|
|
|
|
}else{
|
|
$map['group'] = array('not in',999);
|
|
}
|
|
|
|
$order = "uid desc";
|
|
$list = model('User')->where($map)->order($order)->paginate(15,false,['query' => ['keyword'=>$keyword,'group'=>$group,'wxmpid'=>$wxmpid]]);
|
|
|
|
$wxmp = db('wxmp')->where('status=1')->column("id,nickname");
|
|
$group_list = db('auth_group')->field('id,title')->where(array('title'=>array('neq','管理员')))->select();
|
|
|
|
$data = array(
|
|
'keyword' => input('keyword'),
|
|
'group' => $group,
|
|
'list' => $list,
|
|
'wxmpid' => $wxmpid,
|
|
'wxmp' => $wxmp,
|
|
'page' => $list->render(),
|
|
'group_list' => $group_list,
|
|
);
|
|
//当前在线人数统计
|
|
$mp=array();
|
|
$time = time() - 60*10;
|
|
$mp['update_time'] = ['>',$time];
|
|
$user_count = db('history')->field('count(DISTINCT uid) as user')->where($mp)->select();
|
|
$user_count_s = $user_count[0]['user'];
|
|
$this->assign('user_count',$user_count_s);
|
|
$this->assign($data);
|
|
$this->setMeta('用户信息');
|
|
return $this->fetch();
|
|
}
|
|
|
|
/**
|
|
* 添加用户
|
|
* @author netlife <40150501@qq.com>
|
|
*/
|
|
public function add() {
|
|
$model = \think\Loader::model('User');
|
|
if (IS_POST) {
|
|
$data = $this->request->param();
|
|
//创建注册用户
|
|
$result = $model->register($data['username'], $data['password'], $data['repassword'], $data['email'], false);
|
|
if ($result) {
|
|
return $this->success('用户添加成功!', url('admin/user/index'));
|
|
} else {
|
|
return $this->error($model->getError());
|
|
}
|
|
} else {
|
|
$data = array(
|
|
'keyList' => $model->addfield,
|
|
);
|
|
|
|
$this->assign($data);
|
|
$this->setMeta("添加用户");
|
|
return $this->fetch('edit');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 修改昵称初始化
|
|
* @author huajie <banhuajie@163.com>
|
|
*/
|
|
public function edit() {
|
|
$model = model('User');
|
|
if (IS_POST) {
|
|
$data = $this->request->post();
|
|
|
|
$reuslt = $model->editUser($data, true);
|
|
|
|
if (false !== $reuslt) {
|
|
return $this->success('修改成功!', url('admin/user/index'));
|
|
} else {
|
|
return $this->error($model->getError(), '');
|
|
}
|
|
} else {
|
|
$info = $this->getUserinfo();
|
|
|
|
$data = array(
|
|
'info' => $info,
|
|
'keyList' => $model->editfield,
|
|
);
|
|
$this->assign($data);
|
|
$this->setMeta("编辑用户");
|
|
return $this->fetch('public/edit');
|
|
}
|
|
}
|
|
|
|
public function info() {
|
|
$model = model('User');
|
|
|
|
$info = $this->getUserinfo();
|
|
|
|
$percentage = db('member_extend')->where('uid',$info['uid'])->value('percentage');
|
|
|
|
|
|
$data = array(
|
|
'percentage' => $percentage,
|
|
'info' => $info,
|
|
'keyList' => $model->editfield,
|
|
);
|
|
|
|
$this->assign($data);
|
|
$this->setMeta("个人资料");
|
|
return $this->fetch('user/info');
|
|
|
|
}
|
|
|
|
/**
|
|
* del
|
|
* @author colin <colin@tensent.cn>
|
|
*/
|
|
public function del($id) {
|
|
|
|
$uid = array('IN', is_array($id) ? implode(',', $id) : $id);
|
|
|
|
if(in_array(1,$uid)){
|
|
return $this->error("超级管理员账号不能删除!");
|
|
}
|
|
//获取用户信息
|
|
$find = $this->getUserinfo($uid);
|
|
model('User')->where(array('uid' => $uid))->delete();
|
|
db('MemberUserapi')->where(array('uid' => $uid))->delete();
|
|
return $this->success('删除用户成功!');
|
|
}
|
|
|
|
public function auth() {
|
|
$access = model('AuthGroupAccess');
|
|
$group = model('AuthGroup');
|
|
|
|
if (IS_POST) {
|
|
$uid = input('uid', '', 'trim,intval');
|
|
$access->where(array('uid' => $uid))->delete();
|
|
$group_type = config('user_group_type');
|
|
foreach ($group_type as $key => $value) {
|
|
$group_id = input($key, '', 'trim,intval');
|
|
if ($group_id) {
|
|
$add = array(
|
|
'uid' => $uid,
|
|
'group_id' => $group_id,
|
|
);
|
|
$access->save($add);
|
|
db('member')->where('uid='.$uid)->setField('group',$group_id);
|
|
}
|
|
}
|
|
return $this->success("设置成功!",url('admin/user/index'));
|
|
} else {
|
|
$uid = input('id', '', 'trim,intval');
|
|
$row = $group::select();
|
|
$auth = $access::where(array('uid' => $uid))->select();
|
|
|
|
$auth_list = array();
|
|
foreach ($auth as $key => $value) {
|
|
$auth_list[] = $value['group_id'];
|
|
}
|
|
|
|
foreach ($row as $key => $value) {
|
|
if($value['id']!=3&&$value['id']!=4){
|
|
$list[$value['module']][] = $value;
|
|
}
|
|
|
|
}
|
|
|
|
$data = array(
|
|
'uid' => $uid,
|
|
'auth_list' => $auth_list,
|
|
'list' => $list,
|
|
);
|
|
$this->assign($data);
|
|
$this->setMeta("用户分组");
|
|
return $this->fetch();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取某个用户的信息
|
|
* @var uid 针对状态和删除启用
|
|
* @var pass 是查询password
|
|
* @var errormasg 错误提示
|
|
* @author colin <colin@tensent.cn>
|
|
*/
|
|
private function getUserinfo($uid = null, $pass = null, $errormsg = null) {
|
|
$user = model('User');
|
|
$uid = $uid ? $uid : input('id');
|
|
//如果无UID则修改当前用户
|
|
$uid = $uid ? $uid : session('user_auth.uid');
|
|
|
|
$map['uid'] = $uid;
|
|
if ($pass != null) {
|
|
unset($map);
|
|
$map['password'] = $pass;
|
|
}
|
|
$list = $user::where($map)->find();
|
|
if (!$list) {
|
|
return $this->error($errormsg ? $errormsg : '不存在此用户!');
|
|
}
|
|
return $list;
|
|
}
|
|
|
|
/**
|
|
* 修改昵称提交
|
|
* @author huajie <banhuajie@163.com>
|
|
*/
|
|
public function submitNickname() {
|
|
|
|
//获取参数
|
|
$nickname = input('post.nickname');
|
|
$password = input('post.password');
|
|
if (empty($nickname)) {
|
|
return $this->error('请输入昵称');
|
|
}
|
|
if (empty($password)) {
|
|
return $this->error('请输入密码');
|
|
}
|
|
|
|
//密码验证
|
|
$User = new UserApi();
|
|
$uid = $User->login(UID, $password, 4);
|
|
if ($uid == -2) {
|
|
return $this->error('密码不正确');
|
|
}
|
|
|
|
$Member = model('User');
|
|
$data = $Member->create(array('nickname' => $nickname));
|
|
if (!$data) {
|
|
return $this->error($Member->getError());
|
|
}
|
|
|
|
$res = $Member->where(array('uid' => $uid))->save($data);
|
|
|
|
if ($res) {
|
|
$user = session('user_auth');
|
|
$user['username'] = $data['nickname'];
|
|
session('user_auth', $user);
|
|
session('user_auth_sign', data_auth_sign($user));
|
|
return $this->success('修改昵称成功!');
|
|
} else {
|
|
return $this->error('修改昵称失败!');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 修改密码初始化
|
|
* @author huajie <banhuajie@163.com>
|
|
*/
|
|
public function editpwd() {
|
|
if (IS_POST) {
|
|
$user = model('User');
|
|
$data = $this->request->post();
|
|
|
|
$res = $user->editpw($data);
|
|
if ($res) {
|
|
return $this->success('修改密码成功!');
|
|
} else {
|
|
return $this->error($user->getError());
|
|
}
|
|
} else {
|
|
$this->setMeta('修改密码');
|
|
return $this->fetch();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 会员状态修改
|
|
* @author 朱亚杰 <zhuyajie@topthink.net>
|
|
*/
|
|
public function changeStatus($method = null) {
|
|
$id = array_unique((array) input('id', 0));
|
|
if (in_array(config('user_administrator'), $id)) {
|
|
return $this->error("不允许对超级管理员执行该操作!");
|
|
}
|
|
$id = is_array($id) ? implode(',', $id) : $id;
|
|
if (empty($id)) {
|
|
return $this->error('请选择要操作的数据!');
|
|
}
|
|
$map['uid'] = array('in', $id);
|
|
switch (strtolower($method)) {
|
|
case 'forbiduser':
|
|
$this->forbid('Member', $map);
|
|
break;
|
|
|
|
case 'resumeuser':
|
|
$this->resume('Member', $map);
|
|
break;
|
|
|
|
case 'deleteuser':
|
|
$this->delete('Member', $map);
|
|
break;
|
|
|
|
default:
|
|
return $this->error('参数非法');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* percentage [阅读币修改]
|
|
*
|
|
* @return type
|
|
**/
|
|
public function setegold() {
|
|
|
|
if (IS_POST) {
|
|
$uid= input('id');
|
|
$egold = input('post.egold');
|
|
$jgold = input('post.jgold');
|
|
|
|
if($egold){
|
|
$result = db('member')->where('uid',$uid)->setInc('egold', $egold);
|
|
}
|
|
if($jgold>0){
|
|
db('member')->where('uid',$uid)->setDec('zb', $jgold);
|
|
$result = db('member')->where('uid',$uid)->setDec('egold', $jgold);
|
|
}elseif($jgold=="0"){
|
|
$result = db('member')->where('uid',$uid)->update(['zb'=>0]);
|
|
$result = db('member')->where('uid',$uid)->update(['egold'=>0]);
|
|
}
|
|
|
|
if ($result) {
|
|
|
|
if($egold){
|
|
return $this->success("充值成功!", url('admin/user/index'));
|
|
}else{
|
|
return $this->success("减阅读币成功!", url('admin/user/index'));
|
|
}
|
|
|
|
} else {
|
|
return $this->error($this->model->getError(), url('admin/user/index'));
|
|
}
|
|
} else {
|
|
$this->setMeta("手工充值");
|
|
return $this->fetch();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* percentage [阅读币修改]
|
|
*
|
|
* @return type
|
|
**/
|
|
public function setvip() {
|
|
|
|
if (IS_POST) {
|
|
$uid= input('id');
|
|
$data['is_vip'] = input('post.is_vip');
|
|
if($data['is_vip']==1){
|
|
$vtime = 3600*24*30;
|
|
}elseif($data['is_vip']==2){
|
|
$vtime = 3600*24*90;
|
|
}elseif($data['is_vip']==3){
|
|
$vtime = 3600*24*365;
|
|
}elseif($data['is_vip']==4){
|
|
$vtime = 0;
|
|
}elseif($data['is_vip']==5){
|
|
$vtime = 3600*24*15;
|
|
}
|
|
|
|
if($vtime==0){
|
|
$result = db('member')->where('uid',$uid)->update(array(
|
|
'vip_enddate'=>0,
|
|
'is_vip'=>0
|
|
));
|
|
}else{
|
|
$istime = db('member')->where('uid',$uid)->value('vip_enddate');
|
|
if($istime && $istime>time()){
|
|
$result = db('member')->where('uid',$uid)->setInc('vip_enddate',$vtime);
|
|
}else{
|
|
$data['vip_enddate'] = time()+$vtime;
|
|
$result = db('member')->where('uid',$uid)->update($data);
|
|
}
|
|
}
|
|
|
|
|
|
if ($result) {
|
|
return $this->success("操作成功!", url('admin/user/index'));
|
|
} else {
|
|
return $this->error($this->model->getError(), url('admin/user/index'));
|
|
}
|
|
} else {
|
|
$uid= input('id');
|
|
$username = db('member')->where('uid',$uid)->value('username');
|
|
$this->assign('username',$username);
|
|
$this->assign('uid',$uid);
|
|
$this->setMeta("开通包月/包季/包年用户");
|
|
return $this->fetch();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* gathering [收款信息]
|
|
*
|
|
* @return type
|
|
**/
|
|
public function gatherinfo() {
|
|
|
|
$uid= session('user_auth.uid');
|
|
$info = db('member_extend')->where('uid',$uid)->find();
|
|
|
|
$this->assign('info',$info);
|
|
$this->assign('uid',$uid);
|
|
$this->setMeta("收款信息");
|
|
return $this->fetch();
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* daili [代理管理]
|
|
*
|
|
* @return type
|
|
**/
|
|
public function agent() {
|
|
$nickname = input('keyword');
|
|
$level = input('level');
|
|
$map['m.status'] = array('egt', 0);
|
|
$map['m.group'] = array('in','3,4');
|
|
|
|
if (is_numeric($nickname)) {
|
|
$map['m.uid'] = $nickname;
|
|
} else {
|
|
$map['m.nickname|m.username'] = array('like', '%' . (string) $nickname . '%');
|
|
}
|
|
if(session('user_auth.group')!=999){
|
|
$info = $this->getUserinfo();
|
|
if($info['is_top'] ==1){
|
|
$map['m.s_uid'] = session('user_auth.uid');
|
|
}else{
|
|
$map['m.uid'] = session('user_auth.uid');
|
|
}
|
|
}
|
|
//$map['m.username|m.nickname'] = array('like', '%' . (string) $nickname . '%');
|
|
$order = "m.uid desc";
|
|
|
|
$list = db('member')->alias('m')->join('cps_member_extend e','e.uid = m.uid')->where($map)->order($order)->paginate(15);
|
|
|
|
$data = array(
|
|
'list' => $list,
|
|
'page' => $list->render(),
|
|
);
|
|
|
|
$this->assign($data);
|
|
$this->assign('level',$level);
|
|
$this->setMeta("下线管理");
|
|
return $this->fetch();
|
|
}
|
|
|
|
public function addagent() {
|
|
$model = \think\Loader::model('User');
|
|
if (IS_POST) {
|
|
$data = $this->request->param();
|
|
|
|
//创建注册用户
|
|
$result = $model->register($data['username'], $data['password'], $data['repassword'], $data['email'], false);
|
|
if ($result) {
|
|
return $this->success('用户添加成功!', url('admin/user/agent'));
|
|
} else {
|
|
return $this->error($model->getError());
|
|
}
|
|
} else {
|
|
$info = $this->getUserinfo();
|
|
$data = array(
|
|
'keyList' => $model->addfield,
|
|
'info'=>$info,
|
|
);
|
|
$this->assign($data);
|
|
$this->setMeta("添加代理");
|
|
return $this->fetch();
|
|
}
|
|
}
|
|
|
|
// 公众号推送
|
|
public function userpush(){
|
|
$id = input('id');
|
|
$nickname = db('member')->where('uid',$id)->value('username');
|
|
$pay = db('pay_setting')->field('id,price')->where('status',0)->select();
|
|
$this->setMeta('推送');
|
|
$this->assign('nickname',$nickname);
|
|
$this->assign('uid',$id);
|
|
$this->assign('pay',$pay);
|
|
return $this->fetch();
|
|
}
|
|
|
|
// 开始推送
|
|
public function startpush(){
|
|
$data = input('');
|
|
if($data){
|
|
import("Wechatpush.Wechatpush", EXTEND_PATH,'.php');
|
|
$wxid = db('member')->where('uid',$data['uid'])->value('wxid');
|
|
if($wxid!=0){
|
|
$wx_config = db('wxopen_account')->field('appid,appsecret')->where('id',$wxid)->find();
|
|
$appid = $wx_config['appid'];
|
|
$secret= $wx_config['appsecret'];
|
|
$wx = new \Wechatpush($appid,$secret);
|
|
$link = urlencode($data['content']);
|
|
$openid[] = db('member_userapi')->where('uid',$data['uid'])->value('wxmpid');
|
|
$wx->kefu($openid,$link);
|
|
exit(json_encode(array('status'=>1,'reg'=>'推送成功')));
|
|
}else{
|
|
exit(json_encode(array('status'=>2,'reg'=>'未绑定公众号')));
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
// 黑白名单设置
|
|
public function setUserStatus(){
|
|
$d = input('');
|
|
if($d){
|
|
$st = $d['t']==0?2:$d['t'];
|
|
$res = db('member')->where('uid',$d['id'])->update([
|
|
'status'=>$st
|
|
]);
|
|
if($res){
|
|
exit(json_encode(array('status'=>1,'reg'=>'成功')));
|
|
}else{
|
|
exit(json_encode(array('status'=>2,'reg'=>'失败')));
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getregreturn(){
|
|
$radio1 = input('radio1');
|
|
if($radio1){
|
|
if($radio1=='今日'){
|
|
$tims = $this->timType(1);
|
|
}elseif($radio1=='昨日'){
|
|
$tims = $this->timType(2);
|
|
}
|
|
$startdata = $tims['startdata'];
|
|
$enddata = $tims['enddata'];
|
|
$info['loginNum'] = db('member_regreturn')->where(['type'=>2])->where('addtime', 'between', [$startdata,$enddata])->count('id');
|
|
$info['regNum'] = db('member_regreturn')->where(['type'=>1])->where('addtime', 'between', [$startdata,$enddata])->count('id');
|
|
$data = db('member_regreturn')->where('addtime', 'between', [$startdata,$enddata])->order('id desc')->limit(100)->select();
|
|
if($data){
|
|
foreach($data as $k=>$v){
|
|
$data[$k]['addtime'] = date('Y-m-d H:i:s',$v['addtime']);
|
|
}
|
|
}
|
|
exit(json_encode(array('status'=>1,'data'=>$data,'info'=>$info)));
|
|
}else{
|
|
$this->setMeta('注册回传详情');
|
|
return $this->fetch();
|
|
}
|
|
}
|
|
|
|
public function timType($t){
|
|
if($t==1){
|
|
$startdata = date('Y-m-d 0:0:0'); //今日凌晨
|
|
$enddata = strtotime(date('Y-m-d H:i:s')); //现在
|
|
$f = date('i');
|
|
$enddata = $enddata+((60-$f)*60);
|
|
$enddata = date('Y-m-d H:i:s',$enddata);
|
|
}elseif($t==2){
|
|
$startdata=mktime(0,0,0,date('m'),date('d')-1,date('Y'));
|
|
$startdata = date('Y-m-d H:i:s',$startdata);
|
|
$enddata=mktime(0,0,0,date('m'),date('d'),date('Y'));
|
|
$enddata = date('Y-m-d H:i:s',$enddata);
|
|
}
|
|
return array(
|
|
'startdata'=>strtotime($startdata),
|
|
'enddata'=>strtotime($enddata)
|
|
);
|
|
}
|
|
|
|
|
|
} |