83 lines
2.5 KiB
PHP
Raw Normal View History

2019-12-03 21:43:37 +08:00
<?php
namespace catchAdmin\user\model;
2019-12-09 16:22:00 +08:00
use catchAdmin\permissions\model\HasRolesTrait;
2019-12-11 20:59:59 +08:00
use catcher\base\CatchModel;
2019-12-03 21:43:37 +08:00
2019-12-11 20:59:59 +08:00
class Users extends CatchModel
2019-12-03 21:43:37 +08:00
{
2019-12-09 16:22:00 +08:00
use HasRolesTrait;
2019-12-03 21:43:37 +08:00
protected $name = 'users';
2019-12-07 17:31:38 +08:00
2019-12-03 21:43:37 +08:00
protected $field = [
'id', //
'username', // 用户名
'password', // 用户密码
'email', // 邮箱 登录
'status', // 用户状态 1 正常 2 禁用
'last_login_ip', // 最后登录IP
'last_login_time', // 最后登录时间
'created_at', // 创建时间
'updated_at', // 更新时间
2019-12-07 17:31:38 +08:00
'deleted_at', // 删除状态0未删除 >0 已删除
2019-12-03 21:43:37 +08:00
2019-12-07 17:31:38 +08:00
];
/**
* set password
*
* @time 2019年12月07日
* @param $value
* @return false|string
*/
public function setPasswordAttr($value)
{
return password_hash($value, PASSWORD_DEFAULT);
}
2019-12-09 16:22:00 +08:00
/**
* 用户列表
*
* @time 2019年12月08日
* @param $search
* @throws \think\db\exception\DbException
* @return \think\Paginator
*/
public function getList($search): \think\Paginator
2019-12-07 17:31:38 +08:00
{
2019-12-11 20:59:59 +08:00
return (($search['trash'] ?? false) ? static::onlyTrashed() : $this)
->field(['id', 'username', 'email', 'status','last_login_time','last_login_ip', 'created_at', 'updated_at'])
->when($search['username'] ?? false, function ($query) use ($search){
2019-12-07 17:31:38 +08:00
return $query->whereLike('username', $search['username']);
})
->when($search['email'] ?? false, function ($query) use ($search){
return $query->whereLike('email', $search['email']);
})
->when($search['status'] ?? false, function ($query) use ($search){
return $query->where('status', $search['status']);
})->paginate($search['limit'] ?? $this->limit);
}
2019-12-12 18:52:24 +08:00
/**
* 获取权限
*
* @time 2019年12月12日
* @param $uid
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @return array
*/
public function getPermissionsBy($uid = 0): array
{
$roles = $uid ? $this->findBy($uid)->getRoles() : $this->getRoles();
$permissionIds = [];
foreach ($roles as $role) {
$permissionIds = array_merge($permissionIds, $role->getPermissions()->column('id'));
}
return array_unique($permissionIds);
}
2019-12-03 21:43:37 +08:00
}