419 lines
15 KiB
PHP
Executable File
419 lines
15 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Admin\Controller;
|
|
|
|
use Gy_Library\GyListController;
|
|
use Gy_Library\DBCont;
|
|
|
|
class UserController extends GyListController
|
|
{
|
|
|
|
public function test()
|
|
{
|
|
D('TeamMember')->isMember(136, 2);
|
|
}
|
|
|
|
public function index($status = DBCont::NORMAL_STATUS)
|
|
{
|
|
// 搜索
|
|
$keyword = I('keyword', '', 'string');
|
|
$condition = array('like', '%' . $keyword . '%');
|
|
$map['id|nick_name|email|telephone'] = array(
|
|
$condition,
|
|
$condition,
|
|
$condition,
|
|
$condition,
|
|
'_multi' => true
|
|
);
|
|
|
|
$map['status'] = $status;
|
|
$map['user_type'] = 'system';
|
|
|
|
$user_model = D('User');
|
|
$count = $user_model->getListForCount($map);
|
|
$per_page = C('ADMIN_PER_PAGE_NUM', null, false);
|
|
if ($per_page === false) {
|
|
$page = new \Gy_Library\GyPage($count);
|
|
} else {
|
|
$page = new \Gy_Library\GyPage($count, $per_page);
|
|
}
|
|
|
|
$data_list = $user_model->getListForPage($map, $page->nowPage, $page->listRows, 'register_date desc');
|
|
foreach ($data_list as &$data) {
|
|
$role_ids = D('RoleUser')->where('user_id=' . $data['id'])->getField('role_id', true);
|
|
if ($role_ids) {
|
|
$role_map['id'] = array('in', $role_ids);
|
|
$role_map['status'] = DBCont::NORMAL_STATUS;
|
|
$data['role'] = D('Role')->where($role_map)->getField('name', true);
|
|
$data['role'] = implode(',', (array)$data['role']);
|
|
}
|
|
$user_avatar = $user_model->getUserAvatar($data['id']);
|
|
if ($user_avatar) {
|
|
$data['avatar'] = $user_avatar['avatar'];
|
|
$data['address'] = $user_avatar['address'];
|
|
$data['career'] = $user_avatar['career'];
|
|
}
|
|
}
|
|
|
|
|
|
// 设置Tab导航数据列表
|
|
$user_status_list = DBCont::getUserStatusList();
|
|
foreach ($user_status_list as $key => $val) {
|
|
$tab_list[$key]['title'] = $val;
|
|
$tab_list[$key]['href'] = U('index', array('status' => $key));
|
|
}
|
|
|
|
// 使用Builder快速建立列表页面。
|
|
$builder = new \Qscmf\Builder\ListBuilder();
|
|
|
|
$builder = $builder->setMetaTitle('账号列表') // 设置页面标题
|
|
->addTopButton('addnew') // 添加新增按钮
|
|
->addSearchItem('keyword', 'text', 'id/昵称/email/手机号');
|
|
|
|
switch ($status) {
|
|
case DBCont::NORMAL_STATUS;
|
|
$builder = $builder->addTopButton('forbid'); // 添加禁用按钮
|
|
break;
|
|
case DBCont::FORBIDDEN_STATUS;
|
|
$builder = $builder->addTopButton('resume'); // 添加启用按钮
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
$builder->addTopButton('delete') // 添加删除按钮
|
|
->setNID(5)
|
|
->setTabNav($tab_list, $status) // 设置页面Tab导航
|
|
->addTableColumn('id', 'ID')
|
|
->addTableColumn('nick_name', '用户名')
|
|
->addTableColumn('email', '邮箱')
|
|
->addTableColumn('telephone', '手机')
|
|
->addTableColumn('role', '用户组')
|
|
->addTableColumn('avatar', '头像', 'picture')
|
|
->addTableColumn('address', '地址')
|
|
->addTableColumn('career', '职业')
|
|
->addTableColumn('right_button', '操作', 'btn')
|
|
->setTableDataList($data_list) // 数据列表
|
|
->setTableDataPage($page->show()) // 数据列表分页
|
|
->addRightButton('edit') // 添加编辑按钮
|
|
->addRightButton('self', array('title' => '修改密码', 'href' => '#', 'data-id' => '__data_id__', 'class' => 'label label-default repwd-btn', 'data-toggle' => 'modal', 'data-target' => '#changepassword'))
|
|
->addRightButton('self', array('title' => '激活', 'href' => U('active', array('ids' => '__data_id__')), 'class' => 'label label-primary', '{key}' => 'status', '{condition}' => 'eq', '{value}' => '2'))
|
|
->addRightButton('forbid') // 添加禁用/启用按钮
|
|
->addRightButton('delete') // 添加删除按钮
|
|
->setExtraHtml($this->fetch('User/repwd'))
|
|
->display();
|
|
}
|
|
|
|
|
|
public function add()
|
|
{
|
|
if (IS_POST) {
|
|
parent::autoCheckToken();
|
|
$data = I('post.');
|
|
|
|
if ($data['pwd'] != $data['pwd1']) {
|
|
$this->error('密码不一致');
|
|
}
|
|
|
|
$data['status'] = DBCont::NORMAL_STATUS;
|
|
$data['user_type'] = 'system';
|
|
$data['last_expire_time'] = date('Y-m-d H:i:s', strtotime('+1 day'));
|
|
// dd($data);
|
|
$user_model = D('User');
|
|
$user_id = $user_model->newUser($data);
|
|
if ($user_id === false) {
|
|
$this->error($user_model->getError());
|
|
} else {
|
|
//插入用户组信息
|
|
$this->_addRole($user_id);
|
|
|
|
$avatar_model = D('UserAvatar');
|
|
$avatar_id = $avatar_model->newAvatar($data, $user_id);
|
|
|
|
sysLogs('新增用户id:' . $user_id);
|
|
|
|
$this->success(l('add') . l('success'), U(CONTROLLER_NAME . '/index'));
|
|
}
|
|
} else {
|
|
// 使用FormBuilder快速建立表单页面。
|
|
$role = new \Common\Model\RoleModel();
|
|
$map['status'] = DBCont::NORMAL_STATUS;
|
|
$role_list = $role->getRoleList($map);
|
|
foreach ($role_list as $role) {
|
|
$role_options[$role['id']] = $role['name'];
|
|
}
|
|
$builder = new \Qscmf\Builder\FormBuilder();
|
|
$builder->setMetaTitle('新增用户') //设置页面标题
|
|
->setNID(5)
|
|
->setPostUrl(U('add')) //设置表单提交地址
|
|
->addFormItem('nick_name', 'text', '用户名*')
|
|
->addFormItem('email', 'text', '电子邮箱*')
|
|
->addFormItem('telephone', 'text', '手机')
|
|
->addFormItem('pwd', 'password', '密码*')
|
|
->addFormItem('pwd1', 'password', '重复密码*')
|
|
->addFormItem('address', 'text', '地址')
|
|
->addFormItem('career', 'text', '职业')
|
|
->addFormItem('avatar', 'picture', '头像', '格式JPG、PNG、JPEG')
|
|
->addFormItem('role', 'select', '用户组', '', $role_options)
|
|
->display();
|
|
}
|
|
}
|
|
|
|
public function edit($id)
|
|
{
|
|
if (IS_POST) {
|
|
parent::autoCheckToken();
|
|
$user_id = I('post.id');
|
|
$data = I('post.');
|
|
$user_model = D('User');
|
|
if (!$user_id) {
|
|
E('缺少user_id');
|
|
}
|
|
|
|
$user_ent = $user_model->getOne($user_id);
|
|
if (!$user_ent) {
|
|
E('不存在用户');
|
|
}
|
|
|
|
//需要更新的fields
|
|
$user_ent['nick_name'] = $data['nick_name'];
|
|
$user_ent['email'] = $data['email'];
|
|
$user_ent['telephone'] = $data['telephone'];
|
|
$user_ent['portrait'] = $data['portrait'];
|
|
|
|
if ($user_model->createSave($user_ent) === false) {
|
|
$this->error($user_model->getError());
|
|
} else {
|
|
$this->_addRole($user_id);
|
|
|
|
$avatar_model = D('UserAvatar');
|
|
$avatar_id = $avatar_model->updateAvatar($data, $user_id);
|
|
|
|
sysLogs('修改用户id:' . $user_id);
|
|
$this->success('修改成功', U('index'));
|
|
}
|
|
} else {
|
|
// 获取账号信息
|
|
$info = D('User')->getOne($id);
|
|
$role_user_ent = D('RoleUser')->getByUser_id($id);
|
|
$info['role'] = $role_user_ent['role_id'];
|
|
$avatar = D('User')->getUserAvatar($id);
|
|
if ($avatar) {
|
|
$info['avatar'] = $avatar['avatar'];
|
|
$info['address'] = $avatar['address'];
|
|
$info['career'] = $avatar['career'];
|
|
}
|
|
|
|
$role = new \Common\Model\RoleModel();
|
|
$map['status'] = DBCont::NORMAL_STATUS;
|
|
$role_list = $role->getRoleList($map);
|
|
foreach ($role_list as $role) {
|
|
$role_options[$role['id']] = $role['name'];
|
|
}
|
|
|
|
// 使用FormBuilder快速建立表单页面。
|
|
$builder = new \Qscmf\Builder\FormBuilder();
|
|
$builder->setMetaTitle('编辑用户') // 设置页面标题
|
|
->setPostUrl(U('edit')) // 设置表单提交地址
|
|
->setNID(5)
|
|
->addFormItem('id', 'hidden', 'ID')
|
|
->addFormItem('nick_name', 'text', '用户名*')
|
|
->addFormItem('email', 'text', '电子邮箱*')
|
|
->addFormItem('telephone', 'text', '手机')
|
|
->addFormItem('address', 'text', '地址')
|
|
->addFormItem('career', 'text', '职业')
|
|
->addFormItem('avatar', 'picture', '头像', '格式JPG、PNG、JPEG')
|
|
->addFormItem('role', 'select', '用户组', '', $role_options)
|
|
->setFormData($info)
|
|
->display();
|
|
}
|
|
}
|
|
|
|
//插入用户组信息
|
|
private function _addRole($user_id)
|
|
{
|
|
$role_id = I('role');
|
|
$role_user = D('RoleUser');
|
|
$data_arr = array();
|
|
$data_arr[] = array('role_id' => $role_id, 'user_id' => $user_id);
|
|
$r = $role_user->where(array('user_id' => $user_id))->delete();
|
|
if ($r === false) {
|
|
$this->error($role_user->getError());
|
|
}
|
|
if (!empty($data_arr)) {
|
|
$r = $role_user->addAll($data_arr);
|
|
if ($r === false) {
|
|
$this->error($role_user->getError());
|
|
}
|
|
}
|
|
}
|
|
|
|
private function _addAvatar($user_id)
|
|
{
|
|
$avatar_id = I('avatar');
|
|
dd($avatar_id);
|
|
$avatar_user = D('UserAvatar');
|
|
}
|
|
|
|
//激活用户
|
|
public function active()
|
|
{
|
|
$ids = I('ids');
|
|
if (!$ids) {
|
|
$this->error('请选择要激活的用户');
|
|
}
|
|
$user_model = D('User');
|
|
$map['id'] = array('in', $ids);
|
|
$r = $user_model->where($map)->setField('status', DBCont::NORMAL_STATUS);
|
|
//设置默认分组
|
|
$default_ent = D('DefaultRole')->find();
|
|
if ($default_ent) {
|
|
$user_ents = $user_model->where($map)->select();
|
|
foreach ($user_ents as $v) {
|
|
D('RoleUser')->where('user_id=' . $v['id'] . ' and role_id=' . $default_ent['role_id'])->delete();
|
|
D('RoleUser')->add(array('role_id' => $default_ent['role_id'], 'user_id' => $v['id']));
|
|
}
|
|
}
|
|
if ($r === false) {
|
|
$this->error($user_model->getError());
|
|
} else {
|
|
sysLogs('用户id: ' . $ids . ' 激活');
|
|
$this->success('激活成功', U(CONTROLLER_NAME . '/index'));
|
|
}
|
|
}
|
|
|
|
public function forbid()
|
|
{
|
|
$ids = I('ids');
|
|
if (!$ids) {
|
|
$this->error('请选择要禁用的数据');
|
|
}
|
|
$r = parent::_forbid($ids);
|
|
if ($r !== false) {
|
|
sysLogs('用户id: ' . $ids . ' 禁用');
|
|
$this->success('禁用成功', U(CONTROLLER_NAME . '/index'));
|
|
} else {
|
|
$this->error($this->_getError());
|
|
}
|
|
}
|
|
|
|
public function resume()
|
|
{
|
|
$ids = I('ids');
|
|
if (!$ids) {
|
|
$this->error('请选择要启用的数据');
|
|
}
|
|
$r = parent::_resume($ids);
|
|
if ($r !== false) {
|
|
sysLogs('用户id: ' . $ids . ' 启用');
|
|
$this->success('启用成功', U(CONTROLLER_NAME . '/index'));
|
|
} else {
|
|
$this->error($this->_getError());
|
|
}
|
|
}
|
|
|
|
public function delete()
|
|
{
|
|
$ids = I('ids');
|
|
if (!$ids) {
|
|
$this->error('请选择要删除的数据');
|
|
}
|
|
$r = parent::_del($ids);
|
|
if ($r === false) {
|
|
$this->error($this->_getError());
|
|
} else {
|
|
sysLogs('用户id: ' . $ids . ' 删除');
|
|
$this->success('删除成功', U(MODULE_NAME . '/' . CONTROLLER_NAME . '/index'));
|
|
}
|
|
}
|
|
|
|
public function repwd()
|
|
{
|
|
|
|
if (IS_POST) {
|
|
parent::autoCheckToken();
|
|
|
|
$user_model = new \Common\Model\UserModel();
|
|
|
|
if (I('post.pwd') != I('post.pwd1')) {
|
|
$this->error('密码不一致');
|
|
}
|
|
|
|
$user_ent = $user_model->getOne(I('post.id'));
|
|
if (!$user_ent) {
|
|
$this->error('用户不存在');
|
|
}
|
|
|
|
$r = $user_model->modifyPwdByAdmin(I('post.id'), I('post.pwd'));
|
|
if ($r === false) {
|
|
$this->error($user_model->getError());
|
|
} else {
|
|
syslogs('修改密码, 用户id:' . I('id'));
|
|
$this->success('修改密码成功');
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 登陆者编辑自己的资料
|
|
*/
|
|
public function editUser()
|
|
{
|
|
$id = session('auth_id');
|
|
if (IS_POST) {
|
|
parent::autoCheckToken();
|
|
$data = I('post.');
|
|
if ($data['pwd'] != $data['pwd1']) {
|
|
$this->error('密码不一致');
|
|
}
|
|
$user_model = D('User');
|
|
$user_ent = $user_model->getOne($id);
|
|
if (!$user_ent) {
|
|
E('不存在用户');
|
|
}
|
|
$user_model->startTrans();
|
|
try {
|
|
$save = [
|
|
'id' => $id,
|
|
'nick_name' => $data['nick_name'],
|
|
'email' => $data['email'],
|
|
'telephone' => $data['telephone'],
|
|
];
|
|
if ($user_model->createSave($save) === false) {
|
|
E($user_model->getError());
|
|
}
|
|
if (!empty($data['pwd'])) {
|
|
if ($user_model->modifyPwdByAdmin($id, $data['pwd']) === false) {
|
|
E($user_model->getError());
|
|
}
|
|
}
|
|
$user_model->commit();
|
|
} catch (\Exception $e) {
|
|
$user_model->rollback();
|
|
$this->error($e->getMessage());
|
|
}
|
|
if (empty($data['referer'])) {
|
|
$this->success('修改成功', U('admin/dashboard/index'));
|
|
} else {
|
|
$this->success('修改成功', $data['referer']);
|
|
}
|
|
} else {
|
|
// 获取账号信息
|
|
$info = D('User')->getOne($id);
|
|
unset($info['pwd']);
|
|
$info['referer'] = $_SERVER['HTTP_REFERER'];
|
|
$builder = new \Qscmf\Builder\FormBuilder();
|
|
$builder->setMetaTitle('编辑用户') // 设置页面标题
|
|
->setPostUrl(U(''))
|
|
->addFormItem('nick_name', 'text', '用户名*')
|
|
->addFormItem('email', 'text', '电子邮箱')
|
|
->addFormItem('telephone', 'text', '手机')
|
|
->addFormItem('pwd', 'password', '密码')
|
|
->addFormItem('pwd1', 'password', '重复密码')
|
|
->addFormItem('referer', 'hidden', '跳转地址')
|
|
->setFormData($info)
|
|
->display();
|
|
}
|
|
}
|
|
}
|