|
@@ -1,79 +1,84 @@
|
|
<?php
|
|
<?php
|
|
|
|
+
|
|
namespace catchAdmin\permissions\model;
|
|
namespace catchAdmin\permissions\model;
|
|
|
|
|
|
|
|
+use catchAdmin\api\Listen;
|
|
use catchAdmin\permissions\model\search\UserSearch;
|
|
use catchAdmin\permissions\model\search\UserSearch;
|
|
use catcher\base\CatchModel;
|
|
use catcher\base\CatchModel;
|
|
use catcher\exceptions\FailedException;
|
|
use catcher\exceptions\FailedException;
|
|
use catcher\Utils;
|
|
use catcher\Utils;
|
|
use catchAdmin\permissions\model\DataRangScopeTrait;
|
|
use catchAdmin\permissions\model\DataRangScopeTrait;
|
|
use think\facade\Db;
|
|
use think\facade\Db;
|
|
|
|
+
|
|
class Users extends CatchModel
|
|
class Users extends CatchModel
|
|
{
|
|
{
|
|
use HasRolesTrait;
|
|
use HasRolesTrait;
|
|
use HasJobsTrait;
|
|
use HasJobsTrait;
|
|
use UserSearch;
|
|
use UserSearch;
|
|
- //权限过滤
|
|
|
|
- use DataRangScopeTrait;
|
|
|
|
|
|
+ //权限过滤
|
|
|
|
+ use DataRangScopeTrait;
|
|
protected $name = 'users';
|
|
protected $name = 'users';
|
|
|
|
|
|
protected $field = [
|
|
protected $field = [
|
|
- 'id', //
|
|
|
|
- 'username', // 用户名
|
|
|
|
- 'password', // 用户密码
|
|
|
|
- 'email', // 邮箱 登录
|
|
|
|
- 'avatar', // 头像
|
|
|
|
- 'remember_token',
|
|
|
|
- 'creator_id', // 创建者ID
|
|
|
|
- 'department_id', // 部门ID
|
|
|
|
- 'status', // 用户状态 1 正常 2 禁用
|
|
|
|
- 'last_login_ip', // 最后登录IP
|
|
|
|
- 'last_login_time', // 最后登录时间
|
|
|
|
- 'created_at', // 创建时间
|
|
|
|
- 'updated_at', // 更新时间
|
|
|
|
- 'deleted_at', // 删除状态,0未删除 >0 已删除
|
|
|
|
- 'area_id', // 区域ID
|
|
|
|
- 'phone', // 手机号
|
|
|
|
- 'wxmp_open_id',
|
|
|
|
- 'wx_open_id',
|
|
|
|
- 'wx_union_id',
|
|
|
|
- 'school_id',
|
|
|
|
- 'grade_id',
|
|
|
|
- 'class_id',
|
|
|
|
- 'passive_rfid',
|
|
|
|
- 'realname',
|
|
|
|
- 'idcard',
|
|
|
|
- 'active_rfid',
|
|
|
|
- 'active_rfid_code',
|
|
|
|
- 'rfid_expire_date',
|
|
|
|
- 'student_no',
|
|
|
|
- 'card_status',
|
|
|
|
- 'rules_id',
|
|
|
|
- 'parents_id',
|
|
|
|
- 'sex',
|
|
|
|
- 'age',
|
|
|
|
- 'online_time',
|
|
|
|
- 'alarm_status',
|
|
|
|
- 'last_station_mac',
|
|
|
|
- 'birthday',
|
|
|
|
- 'addr',
|
|
|
|
- 'classes',
|
|
|
|
- 'manage_classes',
|
|
|
|
- 'subjects',
|
|
|
|
- 'card_type',
|
|
|
|
- 'student_type',
|
|
|
|
- 'student_status',
|
|
|
|
- 'voice',
|
|
|
|
- 'voice_size',
|
|
|
|
- 'voice_time',
|
|
|
|
- 'imei',
|
|
|
|
- 'battery_level',
|
|
|
|
- 'accesskey',
|
|
|
|
- 'secretkey',
|
|
|
|
- 'remark',
|
|
|
|
- 'dept_name',
|
|
|
|
- 'asset_admin',
|
|
|
|
- 'wifi_macs',
|
|
|
|
- 'user_no'
|
|
|
|
|
|
+ 'id', //
|
|
|
|
+ 'username', // 用户名
|
|
|
|
+ 'password', // 用户密码
|
|
|
|
+ 'email', // 邮箱 登录
|
|
|
|
+ 'avatar', // 头像
|
|
|
|
+ 'remember_token',
|
|
|
|
+ 'creator_id', // 创建者ID
|
|
|
|
+ 'department_id', // 部门ID
|
|
|
|
+ 'status', // 用户状态 1 正常 2 禁用
|
|
|
|
+ 'last_login_ip', // 最后登录IP
|
|
|
|
+ 'last_login_time', // 最后登录时间
|
|
|
|
+ 'created_at', // 创建时间
|
|
|
|
+ 'updated_at', // 更新时间
|
|
|
|
+ 'deleted_at', // 删除状态,0未删除 >0 已删除
|
|
|
|
+ 'area_id', // 区域ID
|
|
|
|
+ 'phone', // 手机号
|
|
|
|
+ 'wxmp_open_id',
|
|
|
|
+ 'wx_open_id',
|
|
|
|
+ 'wx_union_id',
|
|
|
|
+ 'school_id',
|
|
|
|
+ 'grade_id',
|
|
|
|
+ 'class_id',
|
|
|
|
+ 'passive_rfid',
|
|
|
|
+ 'realname',
|
|
|
|
+ 'idcard',
|
|
|
|
+ 'active_rfid',
|
|
|
|
+ 'active_rfid_code',
|
|
|
|
+ 'rfid_expire_date',
|
|
|
|
+ 'student_no',
|
|
|
|
+ 'card_status',
|
|
|
|
+ 'rules_id',
|
|
|
|
+ 'parents_id',
|
|
|
|
+ 'sex',
|
|
|
|
+ 'age',
|
|
|
|
+ 'online_time',
|
|
|
|
+ 'alarm_status',
|
|
|
|
+ 'last_station_mac',
|
|
|
|
+ 'birthday',
|
|
|
|
+ 'addr',
|
|
|
|
+ 'classes',
|
|
|
|
+ 'manage_classes',
|
|
|
|
+ 'subjects',
|
|
|
|
+ 'card_type',
|
|
|
|
+ 'student_type',
|
|
|
|
+ 'student_status',
|
|
|
|
+ 'voice',
|
|
|
|
+ 'voice_size',
|
|
|
|
+ 'voice_time',
|
|
|
|
+ 'imei',
|
|
|
|
+ 'battery_level',
|
|
|
|
+ 'accesskey',
|
|
|
|
+ 'secretkey',
|
|
|
|
+ 'remark',
|
|
|
|
+ 'dept_name',
|
|
|
|
+ 'asset_admin',
|
|
|
|
+ 'wifi_macs',
|
|
|
|
+ 'user_no',
|
|
|
|
+ //设备密码
|
|
|
|
+ 'equ_password'
|
|
];
|
|
];
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -97,23 +102,23 @@ class Users extends CatchModel
|
|
*/
|
|
*/
|
|
public function getList(): \think\Paginator
|
|
public function getList(): \think\Paginator
|
|
{
|
|
{
|
|
- $no_display_roles = Db::table('roles')->whereIn('identify','personal,group_card_user,group_badge_user')->column('id');
|
|
|
|
|
|
+ $no_display_roles = Db::table('roles')->whereIn('identify', 'personal,group_card_user,group_badge_user')->column('id');
|
|
$user = request()->user();
|
|
$user = request()->user();
|
|
$res = $this->dataRange()
|
|
$res = $this->dataRange()
|
|
- ->withoutField(['updated_at'], true)
|
|
|
|
- ->catchSearch()
|
|
|
|
- ->alias('u')
|
|
|
|
- ->join('user_has_roles r','u.id=r.uid')
|
|
|
|
- // ->distinct(true)
|
|
|
|
- ->group('u.id')
|
|
|
|
- ->where('u.id','<>',1) //超级管理员账号不显示
|
|
|
|
- ->where('u.id','<>',$user->id) //不显示自己
|
|
|
|
- ->whereNotIn('r.role_id',$no_display_roles)
|
|
|
|
- ->catchLeftJoin(Department::class, 'id', 'department_id', ['department_name'])
|
|
|
|
- ->order($this->aliasField('id'), 'desc')
|
|
|
|
- ->paginate();
|
|
|
|
- // var_dump($this->getLastSql());
|
|
|
|
- return $res;
|
|
|
|
|
|
+ ->withoutField(['updated_at'], true)
|
|
|
|
+ ->catchSearch()
|
|
|
|
+ ->alias('u')
|
|
|
|
+ ->join('user_has_roles r', 'u.id=r.uid')
|
|
|
|
+ // ->distinct(true)
|
|
|
|
+ ->group('u.id')
|
|
|
|
+ ->where('u.id', '<>', 1) //超级管理员账号不显示
|
|
|
|
+ ->where('u.id', '<>', $user->id) //不显示自己
|
|
|
|
+ ->whereNotIn('r.role_id', $no_display_roles)
|
|
|
|
+ ->catchLeftJoin(Department::class, 'id', 'department_id', ['department_name'])
|
|
|
|
+ ->order($this->aliasField('id'), 'desc')
|
|
|
|
+ ->paginate();
|
|
|
|
+ // var_dump($this->getLastSql());
|
|
|
|
+ return $res;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -142,8 +147,8 @@ class Users extends CatchModel
|
|
|
|
|
|
return array_unique($permissionIds);
|
|
return array_unique($permissionIds);
|
|
}
|
|
}
|
|
-
|
|
|
|
- /**
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
* 后台根据权限标识判断用户是否拥有某个权限
|
|
* 后台根据权限标识判断用户是否拥有某个权限
|
|
* @param string $permission_mark
|
|
* @param string $permission_mark
|
|
* @return bool
|
|
* @return bool
|
|
@@ -156,12 +161,12 @@ class Users extends CatchModel
|
|
public function can($permission_mark)
|
|
public function can($permission_mark)
|
|
{
|
|
{
|
|
// 超级管理员直接返回true
|
|
// 超级管理员直接返回true
|
|
- if (Utils::isSuperAdmin()){
|
|
|
|
|
|
+ if (Utils::isSuperAdmin()) {
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
// 查询当前用户的权限
|
|
// 查询当前用户的权限
|
|
return in_array(
|
|
return in_array(
|
|
- Permissions::where('permission_mark',$permission_mark)->value('id') ? : 0,
|
|
|
|
|
|
+ Permissions::where('permission_mark', $permission_mark)->value('id') ?: 0,
|
|
$this->getPermissionsBy()
|
|
$this->getPermissionsBy()
|
|
);
|
|
);
|
|
}
|
|
}
|
|
@@ -179,23 +184,22 @@ class Users extends CatchModel
|
|
*/
|
|
*/
|
|
public function getUserByDepart($value)
|
|
public function getUserByDepart($value)
|
|
{
|
|
{
|
|
-
|
|
|
|
|
|
+
|
|
return $this
|
|
return $this
|
|
- ->where('department_id', $value)
|
|
|
|
- ->field('id as value,username as text')
|
|
|
|
- ->select();
|
|
|
|
|
|
+ ->where('department_id', $value)
|
|
|
|
+ ->field('id as value,username as text')
|
|
|
|
+ ->select();
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 根据多个部门ID获取用户Ids
|
|
* 根据多个部门ID获取用户Ids
|
|
*/
|
|
*/
|
|
public function getUserByDepartIds($value)
|
|
public function getUserByDepartIds($value)
|
|
{
|
|
{
|
|
-
|
|
|
|
|
|
+
|
|
return $this
|
|
return $this
|
|
- ->whereIn('department_id', $value)
|
|
|
|
- ->column('id');
|
|
|
|
-
|
|
|
|
|
|
+ ->whereIn('department_id', $value)
|
|
|
|
+ ->column('id');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -204,21 +208,21 @@ class Users extends CatchModel
|
|
public function getPushUserList()
|
|
public function getPushUserList()
|
|
{
|
|
{
|
|
// 查出非家长、学生角色id
|
|
// 查出非家长、学生角色id
|
|
- $allowed_roles = Db::table('roles')->whereNotIn('identify',['personal','group_card_user','group_badge_user'])->column('id');
|
|
|
|
|
|
+ $allowed_roles = Db::table('roles')->whereNotIn('identify', ['personal', 'group_card_user', 'group_badge_user'])->column('id');
|
|
$allowed_roles_text = join(',', $allowed_roles);
|
|
$allowed_roles_text = join(',', $allowed_roles);
|
|
// 查出有这些角色的用户信息
|
|
// 查出有这些角色的用户信息
|
|
$res = $this->dataRange()
|
|
$res = $this->dataRange()
|
|
- ->catchSearch()
|
|
|
|
- ->alias('u')
|
|
|
|
- ->field('u.*')
|
|
|
|
- ->where('u.id','<>',1) //超级管理员账号不显示
|
|
|
|
- ->distinct(true)
|
|
|
|
- ->join('user_has_roles uhr', "uhr.role_id in ({$allowed_roles_text}) and uhr.uid = u.id")
|
|
|
|
- ->select()
|
|
|
|
- ->toArray();
|
|
|
|
|
|
+ ->catchSearch()
|
|
|
|
+ ->alias('u')
|
|
|
|
+ ->field('u.*')
|
|
|
|
+ ->where('u.id', '<>', 1) //超级管理员账号不显示
|
|
|
|
+ ->distinct(true)
|
|
|
|
+ ->join('user_has_roles uhr', "uhr.role_id in ({$allowed_roles_text}) and uhr.uid = u.id")
|
|
|
|
+ ->select()
|
|
|
|
+ ->toArray();
|
|
// 非管理员,可能存在是管理员添加的账号,查不到自己,追加自己
|
|
// 非管理员,可能存在是管理员添加的账号,查不到自己,追加自己
|
|
// var_dump($this->getLastSql());
|
|
// var_dump($this->getLastSql());
|
|
- if (!Utils::isSuperAdmin()){
|
|
|
|
|
|
+ if (!Utils::isSuperAdmin()) {
|
|
$has_self = false;
|
|
$has_self = false;
|
|
foreach ($res as $user) {
|
|
foreach ($res as $user) {
|
|
if ($user['id'] == request()->user()->id) {
|
|
if ($user['id'] == request()->user()->id) {
|
|
@@ -231,4 +235,81 @@ class Users extends CatchModel
|
|
}
|
|
}
|
|
return $res;
|
|
return $res;
|
|
}
|
|
}
|
|
|
|
+ //下发设备
|
|
|
|
+ /**
|
|
|
|
+ * @Descripttion: 将用户下发给设备
|
|
|
|
+ * @name: likang
|
|
|
|
+ * @param {*} $user 用户数组
|
|
|
|
+ * @return {*}
|
|
|
|
+ */
|
|
|
|
+ public function equUserUpdate($user)
|
|
|
|
+ {
|
|
|
|
+ $roleid = [7, 9, 10];
|
|
|
|
+ $content = null;
|
|
|
|
+ $equ_user = [];
|
|
|
|
+ $where = [];
|
|
|
|
+ $wheres = [];
|
|
|
|
+ $permissions = null;
|
|
|
|
+ $where[] = ['uid', '=', $user['id']];
|
|
|
|
+ $where[] = ['role_id', 'in', $roleid];
|
|
|
|
+ $wheres[] = ['ContentType', '=', 'Users'];
|
|
|
|
+ $wheres[] = ['ContentId', '=', $user['id']];
|
|
|
|
+ $data = Db::name('user_has_roles')->where($where)->find();
|
|
|
|
+ $pubulish = Db::name('publish')->where($wheres)->find();
|
|
|
|
+ $time = msectime();
|
|
|
|
+ //是否存在该设备
|
|
|
|
+ if ($data) {
|
|
|
|
+ if ($data['role_id'] == 7) {
|
|
|
|
+ $permissions = 10;
|
|
|
|
+ } else if ($data['role_id'] == 9) {
|
|
|
|
+ $permissions = 11;
|
|
|
|
+ } else if ($data['role_id'] == 10) {
|
|
|
|
+ $permissions = 12;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ $equ_user = [
|
|
|
|
+ 'id' => intval($user['id']),
|
|
|
|
+ 'name' => strval($user['username']),
|
|
|
|
+ 'pwd' => strval($user['equ_password']),
|
|
|
|
+ 'perm' => intval($permissions)
|
|
|
|
+ ];
|
|
|
|
+ //判断下发的数据库中是否存在
|
|
|
|
+ if ($pubulish) {
|
|
|
|
+ $content = [
|
|
|
|
+ 'Type' => 'update',
|
|
|
|
+ 'ContentType' => 'Users',
|
|
|
|
+ 'ContentId' => $user['id'],
|
|
|
|
+ 'Version' => $time,
|
|
|
|
+ 'Status' => 1,
|
|
|
|
+ 'Content' => json_encode($equ_user)
|
|
|
|
+ ];
|
|
|
|
+ Db::name('publish')->where($wheres)->update($content);
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ $content = [
|
|
|
|
+ 'Type' => 'add',
|
|
|
|
+ 'ContentType' => 'Users',
|
|
|
|
+ 'ContentId' => $user['id'],
|
|
|
|
+ 'Version' => $time,
|
|
|
|
+ 'AddTime' => $time,
|
|
|
|
+ 'Status' => 1,
|
|
|
|
+ 'Content' => json_encode($equ_user)
|
|
|
|
+ ];
|
|
|
|
+ Db::name('publish')->save($content);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if ($pubulish) {
|
|
|
|
+
|
|
|
|
+ $content = [
|
|
|
|
+ 'Type' => 'delete',
|
|
|
|
+ 'Version' => $time,
|
|
|
|
+ 'Status' => 1,
|
|
|
|
+ 'Content' => json_encode($data)
|
|
|
|
+ ];
|
|
|
|
+ Db::name('publish')->where($wheres)->update($content);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
}
|
|
}
|