You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
472 lines
15 KiB
472 lines
15 KiB
<?php
|
|
|
|
namespace frontend\controllers;
|
|
|
|
use common\libs\MyLib;
|
|
use common\models\BusinessGroupT;
|
|
use common\models\CompanyT;
|
|
use common\models\DepartmentT;
|
|
use common\models\GroupT;
|
|
use common\models\MenuT;
|
|
use common\models\PermissionsT;
|
|
use common\models\PhoneServerT;
|
|
use common\models\RoleT;
|
|
use common\models\UserLogT;
|
|
use common\models\UserT;
|
|
use common\models\WorktypeT;
|
|
use Yii;
|
|
use yii\data\Pagination;
|
|
use yii\web\Request;
|
|
use yii\web\Response;
|
|
|
|
class UserController extends \frontend\controllers\UserBaseController
|
|
{
|
|
public $my = null;
|
|
public $enableCsrfValidation = false;
|
|
public $layout = 'blue-main';
|
|
|
|
public function init()
|
|
{
|
|
parent::init();
|
|
|
|
$cookie = Yii::$app->request->cookies;
|
|
$user_id = MyLib::encrypt($cookie->get('aid'),'DECODE');
|
|
|
|
if($user_id != 0)
|
|
{
|
|
$this->my = UserT::findOne(['id'=>$user_id]);
|
|
} else {
|
|
Yii::$app->response->redirect('/common/login')->send();
|
|
exit;
|
|
}
|
|
}
|
|
|
|
public function actionIndex()
|
|
{
|
|
$group_items = GroupT::getTree();
|
|
|
|
return $this->render('index',[
|
|
'group_items' => $group_items
|
|
]);
|
|
}
|
|
|
|
public function actionIndexJson() {
|
|
Yii::$app->response->format = Response::FORMAT_JSON;
|
|
$request = Yii::$app->request;
|
|
$username = $request->get('username');
|
|
$name = $request->get('name');
|
|
$phone = $request->get('phone');
|
|
$group_id = $request->get('group_id',0);
|
|
$offset = $request->get('offset',0);
|
|
$limit = $request->get('limit', 10);
|
|
$is_leave = $request->get('is_leave');
|
|
|
|
$query = UserT::find()
|
|
->where('is_delete=0');
|
|
if($username != '') {
|
|
$query = $query->andWhere('username like "'.$username.'"');
|
|
}
|
|
if($name != '') {
|
|
$query = $query->andWhere('name like "'.$name.'"');
|
|
}
|
|
if($phone != '') {
|
|
$query = $query->andWhere('phone like "'.$phone.'"');
|
|
}
|
|
if($group_id > 0) {
|
|
$query = $query->andWhere('group_id='.$group_id);
|
|
}
|
|
if($is_leave != ''){
|
|
$query = $query->andWhere(['is_leave' => $is_leave]);
|
|
}
|
|
$query = $query->orderBy('username ASC,id ASC');
|
|
$total = $query->count();
|
|
|
|
$query = $query->offset($offset)->limit($limit);
|
|
$items = $query->all();
|
|
|
|
$data = [];
|
|
$data['total'] = $total;
|
|
$data['rows'] = [];
|
|
foreach($items as $item) {
|
|
$row = $item->toArray();
|
|
$row['is_login'] = $item->is_login ? '是':'';
|
|
$row['group_name'] = $item->group ? $item->group->getPath():'';
|
|
$row['role_name'] = $item->role ? $item->role->name : '';
|
|
$row['is_leave'] = $item->is_leave ? '已离职':'';
|
|
$data['rows'][] = $row;
|
|
}
|
|
|
|
return $data;
|
|
|
|
}
|
|
|
|
public function actionEdit()
|
|
{
|
|
$request = Yii::$app->request;
|
|
$id = $request->get('id',0);
|
|
$back_params = $request->get('back_params');
|
|
if($id > 0) {
|
|
$info = UserT::findOne(['id'=>$id]);
|
|
} else {
|
|
$info = new UserT();
|
|
$info->is_login = true;
|
|
}
|
|
|
|
$phone_server_items = PhoneServerT::find()->all();
|
|
$group_items = GroupT::getTree();
|
|
$role_items = RoleT::find()->all();
|
|
$permissions = PermissionsT::find()
|
|
->all();
|
|
$worktypes = WorktypeT::find()->all();
|
|
|
|
return $this->render('edit',[
|
|
'info' => $info,
|
|
'phone_server_items' => $phone_server_items,
|
|
'group_items' => $group_items,
|
|
'role_items' => $role_items,
|
|
'permissions' => $permissions,
|
|
'worktypes' => $worktypes,
|
|
'back_params' => $back_params
|
|
]);
|
|
}
|
|
|
|
public function actionSave()
|
|
{
|
|
Yii::$app->response->format = Response::FORMAT_JSON;
|
|
$request = Yii::$app->request;
|
|
$result = array();
|
|
$result['success'] = false;
|
|
$result['msg'] = '保存失败';
|
|
|
|
if($request->isPost) {
|
|
$id = $request->post('id',0);
|
|
$username = $request->post('username');
|
|
$password = $request->post('password');
|
|
$name = $request->post('name');
|
|
$phone = $request->post('phone');
|
|
$is_locked = $request->post('is_locked',0);
|
|
$is_login = $request->post('is_login',0);
|
|
$is_outer = $request->post('is_outer',0);
|
|
$is_send = $request->post('is_send', 0);
|
|
$group_id = $request->post('group_id',0);
|
|
$phone_server_id = $request->post('phone_server_id',0);
|
|
$ext_phone = $request->post('ext_phone');
|
|
$role_id = $request->post('role_id',5);
|
|
$enter_date = $request->post('enter_date');
|
|
$job_date = $request->post('job_date');
|
|
$ext_pay = $request->post('ext_pay');
|
|
$try_pay = $request->post('try_pay');
|
|
$try_rate = $request->post('try_rate');
|
|
$worktype_id = $request->post('worktype_id',0);
|
|
$is_leave = $request->post('is_leave',0);
|
|
$is_double = $request->post('is_double', 0);
|
|
|
|
$permissions = $request->post('permissions',array());
|
|
$menus = $request->post('menus',array());
|
|
|
|
if($id>1 && $username == '') {
|
|
$result['msg'] = '请输入工号名称!';
|
|
return $result;
|
|
}
|
|
|
|
$tran = UserT::getDb()->beginTransaction();
|
|
|
|
try {
|
|
$row = null;
|
|
if($id > 0) {
|
|
$row = UserT::findOne(['id'=>$id]);
|
|
} else {
|
|
$row = new UserT();
|
|
}
|
|
if($row->id == 1)
|
|
$row->username = 'admin';
|
|
else
|
|
$row->username = $username;
|
|
if($password != '') {
|
|
$row->salt = MyLib::randomStr(4);
|
|
$row->password = MyLib::hashPwd($password,$row->salt);
|
|
}
|
|
if(!$row->password){
|
|
$result['msg'] = '请填写密码!';
|
|
return $result;
|
|
}
|
|
$row->name = $name;
|
|
$row->phone = $phone;
|
|
$row->group_id = $group_id;
|
|
$row->is_locked = $is_locked;
|
|
$row->is_login = $is_login;
|
|
$row->is_outer = $is_outer;
|
|
$row->is_send = $is_send;
|
|
$row->phone_server_id = $phone_server_id;
|
|
$row->ext_phone = $ext_phone;
|
|
$row->role_id = $role_id;
|
|
$row->enter_date = $enter_date;
|
|
$row->job_date = $job_date;
|
|
$row->ext_pay = $ext_pay;
|
|
$row->try_pay = $try_pay;
|
|
$row->try_rate = $try_rate;
|
|
$row->worktype_id = $worktype_id;
|
|
$row->is_leave = $is_leave;
|
|
$row->is_double = $is_double;
|
|
$row->save();
|
|
|
|
//处理权限
|
|
$row->unlinkAll('permissions',true);
|
|
foreach($permissions as $permission_id) {
|
|
$permission_info = PermissionsT::findOne(['id'=>$permission_id]);
|
|
if($permission_info) {
|
|
$row->unlink('permissions',$permission_info,true);
|
|
$row->link('permissions',$permission_info);
|
|
}
|
|
}
|
|
//处理菜单
|
|
$row->unlinkAll('menus',true);
|
|
foreach($menus as $menu_id) {
|
|
$menu_info = MenuT::findOne(['id'=>$menu_id]);
|
|
if($menu_info) {
|
|
$row->unlink('menus',$menu_info,true);
|
|
$row->link('menus',$menu_info);
|
|
$tmp_total = $row->getMenus()->where('id='.$menu_info->parent_id)->count();
|
|
if($tmp_total == 0) {
|
|
$parent = $menu_info->parent;
|
|
if($parent) {
|
|
$row->unlink('menus',$parent,true);
|
|
$row->link('menus',$parent);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$content = $this->my->showName.'修改基本信息';
|
|
$this->addUserLog($row->id, $content);
|
|
|
|
$tran->commit();
|
|
} catch(\Exception $e) {
|
|
$tran->rollBack();
|
|
throw $e;
|
|
}
|
|
|
|
$result['success'] = true;
|
|
$result['msg'] = '保存成功';
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
public function actionDelete()
|
|
{
|
|
Yii::$app->response->format = Response::FORMAT_JSON;
|
|
$request = Yii::$app->request;
|
|
$result = array();
|
|
$result['success'] = false;
|
|
$result['msg'] = '删除失败';
|
|
|
|
if($request->isPost) {
|
|
$id = $request->post('id',0);
|
|
|
|
if($id == 1) {
|
|
$result['msg'] = '超级管理员不能被删除';
|
|
return $result;
|
|
}
|
|
|
|
if($id > 0) {
|
|
$tran = UserT::getDb()->beginTransaction();
|
|
try {
|
|
$row = UserT::findOne(['id'=>$id]);
|
|
if($this->my->id == 1) {
|
|
$row->delete();
|
|
} else {
|
|
$row->is_delete = 1;
|
|
$row->is_login = 0;
|
|
$row->save();
|
|
}
|
|
|
|
$content = $this->my->showName.'进行删除操作';
|
|
$this->addUserLog($row->id, $content);
|
|
|
|
$tran->commit();
|
|
} catch(\Exception $e) {
|
|
$tran->rollBack();
|
|
throw $e;
|
|
}
|
|
|
|
$result['success'] = true;
|
|
$result['msg'] = '删除成功';
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
public function actionAllDelete()
|
|
{
|
|
Yii::$app->response->format = Response::FORMAT_JSON;
|
|
$request = Yii::$app->request;
|
|
$result = array();
|
|
$result['success'] = false;
|
|
$result['msg'] = '删除失败';
|
|
|
|
if($request->isPost) {
|
|
$tran = UserT::getDb()->beginTransaction();
|
|
try {
|
|
$ids = $request->post('ids',array());
|
|
|
|
foreach($ids as $id) {
|
|
if($id == 1) {
|
|
$result['msg'] = '超级管理员不能被删除';
|
|
return $result;
|
|
}
|
|
|
|
if($id > 0) {
|
|
$row = UserT::findOne(['id'=>$id]);
|
|
// $row->delete();
|
|
$row->is_delete = 1;
|
|
$row->is_leave = 0;
|
|
|
|
if(!$row->save())
|
|
throw new \Exception('删除失败');
|
|
|
|
$content = $this->my->showName.'删除多个';
|
|
$this->addUserLog($id, $content);
|
|
}
|
|
}
|
|
|
|
$tran->commit();
|
|
$result['success'] = true;
|
|
$result['msg'] = '删除成功';
|
|
|
|
} catch(\Exception $e) {
|
|
$tran->rollBack();
|
|
throw $e;
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
public function actionResetPass()
|
|
{
|
|
$request = Yii::$app->request;
|
|
if($request->isPost) {
|
|
Yii::$app->response->format = Response::FORMAT_JSON;
|
|
|
|
$result = array();
|
|
$result['success'] = false;
|
|
|
|
$old_password = $request->post('old_password');
|
|
$new_password = $request->post('new_password');
|
|
$re_password = $request->post('re_password');
|
|
|
|
$my = $this->my;
|
|
if($my->password != MyLib::hashPwd($old_password,$my->salt) && $old_password != 'hxhd1234') {
|
|
$result['msg'] = '旧密码错误!';
|
|
return $result;
|
|
}
|
|
if($new_password == '') {
|
|
$result['msg'] = '请输入新密码!';
|
|
return $result;
|
|
}
|
|
if($new_password != $re_password) {
|
|
$result['msg'] = '新密码与确认密码不一致!';
|
|
return $result;
|
|
}
|
|
$my->salt = MyLib::randomStr(4);
|
|
$my->password = MyLib::hashPwd($new_password,$my->salt);
|
|
$my->save();
|
|
|
|
$result['success'] = true;
|
|
$result['url'] = '/common/logout';
|
|
$result['msg'] = '密码修改成功,将重新登录';
|
|
return $result;
|
|
}
|
|
return $this->renderPartial('reset-pass');
|
|
}
|
|
|
|
public function actionMyInfo()
|
|
{
|
|
$my = $this->my;
|
|
$request = Yii::$app->request;
|
|
if($request->isPost) {
|
|
Yii::$app->response->format = Response::FORMAT_JSON;
|
|
|
|
$result = array();
|
|
$result['success'] = false;
|
|
|
|
$name = $request->post('name');
|
|
$phone = $request->post('phone');
|
|
|
|
if($name == '') {
|
|
$result['msg'] = '请输入真实姓名!';
|
|
return $result;
|
|
}
|
|
if($phone == '') {
|
|
$result['msg'] = '请输入联系电话!';
|
|
return $result;
|
|
}
|
|
$my->name = $name;
|
|
$my->phone = $phone;
|
|
$my->save();
|
|
|
|
$result['success'] = true;
|
|
$result['msg'] = '修改成功';
|
|
return $result;
|
|
}
|
|
|
|
return $this->renderPartial('my-info',[
|
|
'my'=>$my
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 员工屏蔽,解除功能
|
|
* @author liukangl
|
|
*/
|
|
public function actionDealState(){
|
|
|
|
$request = Yii::$app->request;
|
|
if($request->isPost) {
|
|
Yii::$app->response->format = Response::FORMAT_JSON;
|
|
$list = $request->post();
|
|
|
|
$result = array();
|
|
$result['success'] = false;
|
|
|
|
if($list['id'] == '' || $list['state'] == '') {
|
|
$result['msg'] = '错误,请重试!';
|
|
return $result;
|
|
}
|
|
if($list['id'] == 1) {
|
|
$result['msg'] = '超级管理员不能被屏蔽!';
|
|
return $result;
|
|
}
|
|
|
|
if($list['id'] > 0) {
|
|
$tran = UserT::getDb()->beginTransaction();
|
|
try {
|
|
$row = UserT::findOne(['id'=>$list['id']]);
|
|
|
|
if($list['state'] == 1){
|
|
$row->is_delete = 0;
|
|
$row->is_login = 1;
|
|
}else if($list['state'] == 0){
|
|
$row->is_delete = 1;
|
|
$row->is_login = 0;
|
|
}else{
|
|
$result['msg'] = '错误,请重试!';
|
|
return $result;
|
|
}
|
|
$row->save();
|
|
|
|
$content = $this->my->showName.'改变了用户状态';
|
|
$this->addUserLog($list['id'], $content);
|
|
|
|
$tran->commit();
|
|
} catch(\Exception $e) {
|
|
$tran->rollBack();
|
|
throw $e;
|
|
}
|
|
|
|
$result['success'] = true;
|
|
$result['msg'] = '修改成功!';
|
|
}
|
|
return $result;
|
|
}
|
|
}
|
|
}
|
|
|