新增部门和岗位

This commit is contained in:
yanwenwu 2020-01-12 09:30:56 +08:00
parent 5ec9939cbf
commit 8b93c63883
11 changed files with 100 additions and 11 deletions

View File

@ -6,7 +6,6 @@ use catchAdmin\permissions\OperateLogListener;
use catchAdmin\permissions\PermissionsMiddleware; use catchAdmin\permissions\PermissionsMiddleware;
use catchAdmin\system\event\LoginLogEvent; use catchAdmin\system\event\LoginLogEvent;
use catchAdmin\system\event\OperateLogEvent; use catchAdmin\system\event\OperateLogEvent;
use catchAdmin\user\Auth;
use catcher\command\BackupCommand; use catcher\command\BackupCommand;
use catcher\command\CompressPackageCommand; use catcher\command\CompressPackageCommand;
use catcher\command\CreateModuleCommand; use catcher\command\CreateModuleCommand;
@ -15,7 +14,6 @@ use catcher\command\MigrateRunCommand;
use catcher\command\ModelGeneratorCommand; use catcher\command\ModelGeneratorCommand;
use catcher\command\ModuleCacheCommand; use catcher\command\ModuleCacheCommand;
use catcher\command\SeedRunCommand; use catcher\command\SeedRunCommand;
use catcher\event\AddCreatorId;
use catcher\event\LoadModuleRoutes; use catcher\event\LoadModuleRoutes;
use catcher\validates\Sometimes; use catcher\validates\Sometimes;
use think\facade\Validate; use think\facade\Validate;

View File

@ -63,4 +63,17 @@ class Job extends CatchController
{ {
return CatchResponse::success($this->job->deleteBy($id)); return CatchResponse::success($this->job->deleteBy($id));
} }
/**
* 获取所有
*
* @return \think\response\Json
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getAll()
{
return CatchResponse::success($this->job->field(['id', 'job_name'])->select());
}
} }

View File

@ -28,7 +28,7 @@ class Department extends Migrator
*/ */
public function change() public function change()
{ {
$table = $this->table('department',['engine'=>'Innodb', 'comment' => '部门表', 'signed' => false]); $table = $this->table('departments',['engine'=>'Innodb', 'comment' => '部门表', 'signed' => false]);
$table->addColumn('department_name', 'string',['limit' => 15,'default'=>'','comment'=>'部门名称']) $table->addColumn('department_name', 'string',['limit' => 15,'default'=>'','comment'=>'部门名称'])
->addColumn('parent_id', 'integer',['default'=>0,'comment'=>'父级ID', 'signed' => false]) ->addColumn('parent_id', 'integer',['default'=>0,'comment'=>'父级ID', 'signed' => false])
->addColumn('principal', 'string', ['default' => '', 'comment' => '负责人', 'limit' => 20]) ->addColumn('principal', 'string', ['default' => '', 'comment' => '负责人', 'limit' => 20])

View File

@ -28,7 +28,7 @@ class Job extends Migrator
*/ */
public function change() public function change()
{ {
$table = $this->table('job',['engine'=>'Innodb', 'comment' => '岗位表', 'signed' => false]); $table = $this->table('jobs',['engine'=>'Innodb', 'comment' => '岗位表', 'signed' => false]);
$table->addColumn('job_name', 'string',['limit' => 15,'default'=>'','comment'=>'岗位名称']) $table->addColumn('job_name', 'string',['limit' => 15,'default'=>'','comment'=>'岗位名称'])
->addColumn('coding', 'string', ['default' => '', 'comment' => '编码', 'limit' => 50]) ->addColumn('coding', 'string', ['default' => '', 'comment' => '编码', 'limit' => 50])
->addColumn('creator_id', 'integer',['default' => 0, 'comment'=>'创建人ID']) ->addColumn('creator_id', 'integer',['default' => 0, 'comment'=>'创建人ID'])

View File

@ -5,7 +5,7 @@ use catcher\base\CatchModel;
class Department extends CatchModel class Department extends CatchModel
{ {
protected $name = 'department'; protected $name = 'departments';
protected $field = [ protected $field = [
'id', // 'id', //
@ -31,7 +31,12 @@ class Department extends CatchModel
*/ */
public function getList($params) public function getList($params)
{ {
return $this->when($params['department_name'] ?? false, function ($query) use ($params){ return $this->field([
'id',
'department_name as title', 'parent_id', 'principal', 'mobile', 'email', 'creator_id', 'status', 'sort',
'created_at', 'updated_at'
])
->when($params['department_name'] ?? false, function ($query) use ($params){
$query->whereLike('department_name', '%' . $params['department_name'] . '%'); $query->whereLike('department_name', '%' . $params['department_name'] . '%');
}) })
->when($params['status'] ?? false, function ($query) use ($params){ ->when($params['status'] ?? false, function ($query) use ($params){

View File

@ -0,0 +1,58 @@
<?php
namespace catchAdmin\permissions\model;
trait HasJobsTrait
{
/**
*
* @time 2019年12月08日
* @return mixed
*/
public function jobs()
{
return $this->belongsToMany(Job::class, 'user_has_jobs', 'job_id', 'uid');
}
/**
*
* @time 2019年12月08日
* @param array $fields
* @return mixed
*/
public function getJobs()
{
return $this->jobs()->select();
}
/**
*
* @time 2019年12月08日
* @param array $jobs
* @return mixed
*/
public function attachJobs(array $jobs)
{
if (empty($jobs)) {
return true;
}
sort($jobs);
return $this->jobs()->attach($jobs);
}
/**
*
* @time 2019年12月08日
* @param array $jobs
* @return mixed
*/
public function detachJobs(array $jobs = [])
{
if (empty($jobs)) {
return $this->jobs()->detach();
}
return $this->jobs()->detach($jobs);
}
}

View File

@ -5,7 +5,7 @@ use catcher\base\CatchModel;
class Job extends CatchModel class Job extends CatchModel
{ {
protected $name = 'job'; protected $name = 'jobs';
protected $field = [ protected $field = [
'id', // 'id', //

View File

@ -9,3 +9,5 @@ $router->resource('permissions', '\catchAdmin\permissions\controller\Permission'
$router->resource('departments', '\catchAdmin\permissions\controller\Department'); $router->resource('departments', '\catchAdmin\permissions\controller\Department');
// 岗位 // 岗位
$router->resource('jobs', '\catchAdmin\permissions\controller\Job'); $router->resource('jobs', '\catchAdmin\permissions\controller\Job');
$router->get('jobs/all', '\catchAdmin\permissions\controller\Job@getAll');

View File

@ -81,6 +81,8 @@ class User extends CatchController
$this->user->attach($request->param('roles')); $this->user->attach($request->param('roles'));
$this->user->attachJobs($request->param('jobs'));
return CatchResponse::success('', '添加成功'); return CatchResponse::success('', '添加成功');
} }
@ -94,6 +96,7 @@ class User extends CatchController
{ {
$user = $this->user->findBy($id); $user = $this->user->findBy($id);
$user->roles = $user->getRoles(); $user->roles = $user->getRoles();
$user->jobs = $user->getJobs();
return CatchResponse::success($user); return CatchResponse::success($user);
} }
@ -117,11 +120,14 @@ class User extends CatchController
$user = $this->user->findBy($id); $user = $this->user->findBy($id);
$user->detach(); $user->detach();
$user->detachJobs();
if (!empty($request->param('roles'))) { if (!empty($request->param('roles'))) {
$user->attach($request->param('roles')); $user->attach($request->param('roles'));
} }
if (!empty($request->param('jobs'))) {
$user->attachJobs($request->param('jobs'));
}
return CatchResponse::success(); return CatchResponse::success();
} }
@ -136,8 +142,11 @@ class User extends CatchController
$ids = Utils::stringToArrayBy($id); $ids = Utils::stringToArrayBy($id);
foreach ($ids as $_id) { foreach ($ids as $_id) {
$user = $this->user->findBy($_id);
// 删除角色 // 删除角色
$this->user->findBy($_id)->detach(); $user->detach();
// 删除岗位
$user->detachJobs();
$this->user->deleteBy($_id); $this->user->deleteBy($_id);
} }

View File

@ -33,6 +33,7 @@ class Users extends Migrator
->addColumn('password', 'string',array('limit' => 255,'comment'=>'用户密码')) ->addColumn('password', 'string',array('limit' => 255,'comment'=>'用户密码'))
->addColumn('email', 'string',array('limit' => 100, 'comment'=>'邮箱 登录')) ->addColumn('email', 'string',array('limit' => 100, 'comment'=>'邮箱 登录'))
->addColumn('creator_id', 'integer',['default' => 0, 'comment'=>'创建人ID']) ->addColumn('creator_id', 'integer',['default' => 0, 'comment'=>'创建人ID'])
->addColumn('department_id', 'integer',['default' => 0, 'comment'=>'部门ID'])
->addColumn('status', 'boolean',array('limit' => 1,'default'=> 1,'comment'=>'用户状态 1 正常 2 禁用')) ->addColumn('status', 'boolean',array('limit' => 1,'default'=> 1,'comment'=>'用户状态 1 正常 2 禁用'))
->addColumn('last_login_ip', 'string',array('limit' => 30,'default'=>0,'comment'=>'最后登录IP')) ->addColumn('last_login_ip', 'string',array('limit' => 30,'default'=>0,'comment'=>'最后登录IP'))
->addColumn('last_login_time', 'integer',array('default'=>0,'comment'=>'最后登录时间', 'signed' => false)) ->addColumn('last_login_time', 'integer',array('default'=>0,'comment'=>'最后登录时间', 'signed' => false))

View File

@ -1,12 +1,14 @@
<?php <?php
namespace catchAdmin\user\model; namespace catchAdmin\user\model;
use catchAdmin\permissions\model\HasJobsTrait;
use catchAdmin\permissions\model\HasRolesTrait; use catchAdmin\permissions\model\HasRolesTrait;
use catcher\base\CatchModel; use catcher\base\CatchModel;
class Users extends CatchModel class Users extends CatchModel
{ {
use HasRolesTrait; use HasRolesTrait;
use HasJobsTrait;
protected $name = 'users'; protected $name = 'users';
@ -15,7 +17,8 @@ class Users extends CatchModel
'username', // 用户名 'username', // 用户名
'password', // 用户密码 'password', // 用户密码
'email', // 邮箱 登录 'email', // 邮箱 登录
'creator_id', 'creator_id', // 创建者ID
'department_id', // 部门ID
'status', // 用户状态 1 正常 2 禁用 'status', // 用户状态 1 正常 2 禁用
'last_login_ip', // 最后登录IP 'last_login_ip', // 最后登录IP
'last_login_time', // 最后登录时间 'last_login_time', // 最后登录时间
@ -48,7 +51,7 @@ class Users extends CatchModel
public function getList($search): \think\Paginator public function getList($search): \think\Paginator
{ {
return (($search['trash'] ?? false) ? static::onlyTrashed() : $this) return (($search['trash'] ?? false) ? static::onlyTrashed() : $this)
->field(['id', 'username', 'email', 'status','last_login_time','last_login_ip', 'created_at', 'updated_at']) ->field(['id', 'username', 'email', 'status','last_login_time','last_login_ip', 'department_id','created_at', 'updated_at'])
->when($search['username'] ?? false, function ($query) use ($search){ ->when($search['username'] ?? false, function ($query) use ($search){
$query->whereLike('username', '%' . $search['username'] . '%'); $query->whereLike('username', '%' . $search['username'] . '%');
}) })