|
|
@ -2,6 +2,7 @@ |
|
|
|
|
|
|
|
namespace app\admin\service; |
|
|
|
|
|
|
|
use app\admin\controller\Admin; |
|
|
|
use app\admin\validate\AdminValidate; |
|
|
|
use app\home\service\BaseHomeService; |
|
|
|
use app\model\AdminLogModel; |
|
|
@ -630,20 +631,82 @@ class AdminService extends AdminBaseService |
|
|
|
} |
|
|
|
|
|
|
|
// 用户访问页面的记录 |
|
|
|
public function getUserAccessLog($param) |
|
|
|
public function getUserAccessLog($adminId, $param) |
|
|
|
{ |
|
|
|
try { |
|
|
|
if (empty($param['page']) || empty($param['limit'])) { |
|
|
|
return $this->toData('400', '缺少分页参数'); |
|
|
|
} |
|
|
|
// 获取账号信息 |
|
|
|
$account = AdminModel::where('id', $adminId)->find(); |
|
|
|
if (empty($account)) { |
|
|
|
return $this->toData('400', '当前账号数据为空'); |
|
|
|
} |
|
|
|
// 获取账号角色信息 |
|
|
|
$role = AuthRoleModel::where(['id'=>$account->role_id])->find(); |
|
|
|
if (empty($role)) { |
|
|
|
return $this->toData('400', '当前账号分配的角色数据为空'); |
|
|
|
} |
|
|
|
// 根据账号角色限制数据查看范围, 超级管理员可以查看所有用户数据,代理可以查看自己所属用户的数据,总监、组长以此类推 |
|
|
|
$whereUser = []; |
|
|
|
switch ($role->name) { |
|
|
|
case AuthRoleModel::NAME_ADMIN: // 超级管理员可以查看所有数据 |
|
|
|
if (!empty($param['user_id'])) { |
|
|
|
$whereUser[] = ['user_id', '=', $param['user_id']]; |
|
|
|
} |
|
|
|
break; |
|
|
|
case AuthRoleModel::NAME_AGENT: // 代理 - 查看代理下可以查看的用户 |
|
|
|
$userIds = UserModel::where('agent_id', $adminId)->column('user_id'); |
|
|
|
if (!empty($param['user_id']) && in_array($param['user_id'], $userIds)) { |
|
|
|
$whereUser[] = ['user_id', '=', $userIds]; |
|
|
|
} else { |
|
|
|
$whereUser[] = ['user_id', 'in', $userIds]; |
|
|
|
} |
|
|
|
break; |
|
|
|
case AuthRoleModel::NAME_DIRECTOR: // 总监 - 查询总监下可以查看的用户 |
|
|
|
$userIds = []; |
|
|
|
$teamHeaders = AdminModel::where('parent_id', $adminId)->find(); // 组长账号 |
|
|
|
if (!empty($teamHeaders)) { |
|
|
|
$customer = AdminModel::where(['parent_id', 'in', $teamHeaders])->find(); // 客服账号 |
|
|
|
if (!empty($customer)) { |
|
|
|
$userIds = UserModel::where(['customer_id', 'in', $customer])->column('user_id'); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!empty($param['user_id']) && in_array($param['user_id'], $userIds)) { |
|
|
|
$whereUser[] = ['user_id', '=', $userIds]; |
|
|
|
} else { |
|
|
|
$whereUser[] = ['user_id', 'in', $userIds]; |
|
|
|
} |
|
|
|
break; |
|
|
|
case AuthRoleModel::NAME_TEAM_HEADER: // 组长 - 查看组长下可以查看的用户 |
|
|
|
$userIds = []; |
|
|
|
$customer = AdminModel::where('parent_id', $adminId)->find(); |
|
|
|
if (!empty($customer)) { |
|
|
|
$userIds = UserModel::where(['customer_id', 'in', $customer])->column('user_id'); |
|
|
|
} |
|
|
|
if (!empty($param['user_id']) && in_array($param['user_id'], $userIds)) { |
|
|
|
$whereUser[] = ['user_id', '=', $userIds]; |
|
|
|
} else { |
|
|
|
$whereUser[] = ['user_id', 'in', $userIds]; |
|
|
|
} |
|
|
|
break; |
|
|
|
case AuthRoleModel::NAME_CUSTOMER: // 客服 - 查看自己操作数据 |
|
|
|
$userIds = UserModel::where(['customer_id', '=', $adminId])->column('user_id'); |
|
|
|
if (!empty($param['user_id']) && in_array($param['user_id'], $userIds)) { |
|
|
|
$whereUser[] = ['user_id', '=', $userIds]; |
|
|
|
} else { |
|
|
|
$whereUser[] = ['user_id', 'in', $userIds]; |
|
|
|
} |
|
|
|
break; |
|
|
|
default: |
|
|
|
return $this->toData('500', '普通角色没有关联用户账号,不能查看用户数'); |
|
|
|
} |
|
|
|
|
|
|
|
$where = []; |
|
|
|
if (!empty($param['module'])) { |
|
|
|
$where['module'] = $param['module']; |
|
|
|
} |
|
|
|
if (!empty($param['user_id'])) { |
|
|
|
$where['user_id'] = $param['user_id']; |
|
|
|
} |
|
|
|
$list = UserAccessLogModel::where($where)->order('id', 'desc')->paginate([ |
|
|
|
$list = UserAccessLogModel::where($whereUser)->where($where)->order('id', 'desc')->paginate([ |
|
|
|
'list_rows' => $param['limit'], |
|
|
|
'page' => $param['page'], |
|
|
|
]); |
|
|
@ -658,16 +721,85 @@ class AdminService extends AdminBaseService |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public function getAdminOperationLog($param) |
|
|
|
public function getAdminOperationLog($adminId, $param) |
|
|
|
{ |
|
|
|
try { |
|
|
|
if (empty($param['page']) || empty($param['limit'])) { |
|
|
|
return $this->toData('400', '缺少分页参数'); |
|
|
|
} |
|
|
|
// 获取账号信息 |
|
|
|
$account = AdminModel::where('id', $adminId)->find(); |
|
|
|
if (empty($account)) { |
|
|
|
return $this->toData('400', '当前账号数据为空'); |
|
|
|
} |
|
|
|
// 获取账号角色信息 |
|
|
|
$role = AuthRoleModel::where(['id'=>$account->role_id])->find(); |
|
|
|
if (empty($role)) { |
|
|
|
return $this->toData('400', '当前账号分配的角色数据为空'); |
|
|
|
} |
|
|
|
// 根据账号角色限制数据查看范围 |
|
|
|
$where = []; |
|
|
|
if (!empty($param['admin_id'])) { |
|
|
|
$where['admin_id'] = $param['admin_id']; |
|
|
|
switch ($role->name) { |
|
|
|
case AuthRoleModel::NAME_ADMIN: // 超级管理员可以查看所有数据 |
|
|
|
if (!empty($param['admin_id'])) { |
|
|
|
$where[] = ['admin_id', '=', $param['admin_id']]; |
|
|
|
} |
|
|
|
break; |
|
|
|
case AuthRoleModel::NAME_AGENT: // 代理 - 查看自己以及下属账号的操作数据 |
|
|
|
$ids = [$adminId]; |
|
|
|
$directors = AdminModel::where('parent_id', $adminId)->column('id'); |
|
|
|
if (!empty($directors)){ |
|
|
|
$ids = array_merge($ids, $directors); |
|
|
|
$teamHeader = AdminModel::where('parent_id', 'in', $directors)->column('id'); |
|
|
|
if (!empty($teamHeader)) { |
|
|
|
$ids = array_merge($ids, $teamHeader); |
|
|
|
$customer = AdminModel::where('parent_id','in', $teamHeader)->column('id'); |
|
|
|
if (!empty($customer)) { |
|
|
|
$ids = array_merge($ids, $customer); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (!empty($param['admin_id']) && in_array($param['admin_id'], $ids)) { |
|
|
|
$where[] = ['admin_id', '=', $param['admin_id']]; |
|
|
|
} else { |
|
|
|
$where[] = ['admin_id', 'in', $ids]; |
|
|
|
} |
|
|
|
break; |
|
|
|
case AuthRoleModel::NAME_DIRECTOR: // 总监 - 查看自己以及下属账号的操作数据 |
|
|
|
$ids = [$adminId]; |
|
|
|
$teamHeader = AdminModel::where('parent_id', $adminId)->column('id'); |
|
|
|
if (!empty($teamHeader)){ |
|
|
|
$ids = array_merge($ids, $teamHeader); |
|
|
|
$customer = AdminModel::where('parent_id','in', $teamHeader)->column('id'); |
|
|
|
if (!empty($customer)) { |
|
|
|
$ids = array_merge($ids, $customer); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!empty($param['admin_id']) && in_array($param['admin_id'], $ids)) { |
|
|
|
$where[] = ['admin_id', '=',$param['admin_id']]; |
|
|
|
} else { |
|
|
|
$where[] = ['admin_id', 'in', $ids]; |
|
|
|
} |
|
|
|
break; |
|
|
|
case AuthRoleModel::NAME_TEAM_HEADER: // 组长 - 查看自己以及下属账号的操作数据 |
|
|
|
$ids = [$adminId]; |
|
|
|
$customer = AdminModel::where('parent_id', $adminId)->column('id'); |
|
|
|
if (!empty($customer)) { |
|
|
|
$ids = array_merge($ids, $customer); |
|
|
|
} |
|
|
|
if (!empty($param['admin_id']) && in_array($param['admin_id'], $ids)) { |
|
|
|
$where[] = ['admin_id', '=', $param['admin_id']]; |
|
|
|
} else { |
|
|
|
$where[] = ['admin_id', 'in', $ids]; |
|
|
|
} |
|
|
|
break; |
|
|
|
case AuthRoleModel::NAME_CUSTOMER: // 客服 - 查看自己操作数据 |
|
|
|
$where[] = ['admin_id', '=', $adminId]; |
|
|
|
break; |
|
|
|
default: |
|
|
|
$where[] = ['admin_id', '=', $adminId]; // 其它角色 - 查看自己的操作数 |
|
|
|
} |
|
|
|
|
|
|
|
$list = AdminLogModel::where($where)->order('id', 'desc')->paginate([ |
|
|
|
'list_rows' => $param['limit'], |
|
|
|
'page' => $param['page'], |
|
|
|