# 日志管理
## 功能需求
| 功能 | 说明 |
| ---------- | ------------------------------------------------------------ |
| 管理员日志 | 记录管理员在管控系统操作的日志,**超级管理员可查看所有日志**,分组管理员**只能查看所在分组和下级分组的日志** |
| 筛选查看 | 1、操作模块:按操作模块筛选。超级管理员列出所有可管理的模块,分组管理员只列出被赋予权限的模块查询日期:点击;2、查询日期弹出日期弹窗如下,自选日期默认是7天内(同课堂管理系统的日期查询);3、搜索:可按操作者、账号、ip地址搜索,点击输入框右侧的放大镜图标或Enter键,列出搜索目标 |
| 日志列表 | 1、默认列出最近7天的日志,由时间近及远向下排列;2、操作者:登录管控系统执行该操作的管理员名称;3、账号:登录管控系统执行该操作的管理员账号;4、ip地址:执行该操作的ip地址;5、操作模块:该操作属于哪个模块;6、操作:详情请看下方;7、操作时间:执行该操作时的时间; |
## 模块操作
<table width="100%">
<tr>
<th width="15%">模块</th>
<th width="85%">操作</th>
</tr>
<tr>
<th>登录</th>
<td>1、登录XXX成功(XXX=管理员账号,如登录superadmin)-账号密码正确;<br>2、登录XXX失败(XXX=管理员账号,如登录superadmin)-密码错误</td>
</tr>
<tr>
<th>用户管理</th>
<td>
<h3>用户管理</h3>
<ul>
<li>~~新建用户XXX(XXX=用户账号,如新建用户clxx1)~~</li>
<li>修改用户XXX名称为YYY(XXX=用户账号,YYY=修改后的名称,如修改用户clxx1名称为昌乐小学2)</li>
<li>重置用户XXX密码(XXX=用户账号,如重置用户clxx1密码)</li>
<li>删除用户XXX(XXX=用户账号,如删除用户clxx1)</li>
<li>用户XXX从A迁移至B(XXX=用户账号,A=原分组,B=目标分组,如用户clxx1从天河区项目迁移至昌乐小学)</li>
</ul>
<h3>修改分组</h3>
<ul>
<li>修改分组名称为XXX(XXX=修改后的名称,如修改分组名称为天河区项目组)</li>
</ul>
<h3>创建下级分组</h3>
<ul>
<li>~~创建分组XXX(XXX=分组名称,如创建分组天河区项目组)~~</li>
</ul>
<h3>应用策略</h3>
<ul>
<li>XXX分组添加YYY(XXX=分组名称,YYY=应用名称,如昌乐小学分组添加天河粤教云)</li>
<li>XXX分组移除用YYY(XXX=分组名称,YYY=应用名称,如昌乐小学分组移除天河粤教云)</li>
<li>编辑XXX为YYY(XXX=应用名称,YYY=应用可见性和强制性,如编辑天河粤教云为管控内外可见、必装..)</li>
</ul>
<h3>网络策略</h3>
<ul>
<li>~~XXX分组添加白名单YYY(XXX=分组名称,YYY=网址,如昌乐小学添加白名单yuanfudao.com)~~</li>
<li>XXX分组移除白名单YYY(XXX=分组名称,YYY=网址,如昌乐小学移除白名单yuanfudao.com)</li>
</ul>
<h3>设备策略</h3>
<ul>
<li>修改XXX分组的可用时间段(XXX=分组名称,如修改昌乐小学分组的可用时间段)</li>
<li>设置XXX分组YYY定时关机(XXX=分组名称,YYY=时间,如设置昌乐小学分组22:00定时关机)</li>
<li>设置XXX分组YYY蓝牙/SD卡/移动数据/通话功能/短信功能(XXX=分组名称,YYY=开启or关闭,如设置昌乐小学分组开启蓝牙)</li>
</ul>
</td>
</tr>
<tr>
<th>权限管理</th>
<td>
<ul>
<li>~~新建管理员XXX(XXX=管理员账号,如新建用户GZadmin)~~</li>
<li>修改管理员XXX名称为YYY(XXX=管理员账号,YYY=修改后的名称,如 修改管理员GZadmin名称为广州项目管理员)</li>
<li>重置管理员XXX密码(XXX=用户账号,如 重置管理员GZadmin密码)</li>
<li>删除管理员XXX(XXX=用户账号,如 删除管理员GZadmin)</li>
<li>去掉/增加管理员XXX的YYY权限(XXX=管理员账号,YYY=权限设置里的权限,如增加管理员GZadmin的违规处理权限)</li>
</ul>
</td>
</tr>
<tr>
<th>应用管理</th>
<td>
<ul>
<li>删除XXX(XXX=应用名称,如 删除猿题库)</li>
<li>~~添加应用分类XXX(XXX=应用分类名称,如 添加应用分类浏览器)~~</li>
<li>编辑、删除应用分类同上</li>
</ul>
</td>
</tr>
<tr>
<th>设备管理</th>
<td>
<ul>
<li>操作XXX关机(XXX=设备号,操作WM00000986关机)</li>
重启、退出管控、登录管控、恢复出厂设置同上
<li>操作XXX蓝牙YY(XXX=设备号,YY=动作;操作WM00000986蓝牙开启、操作WM00000986蓝牙关闭、操作WM00000986蓝牙随设备策略)</li>
SD卡、移动数据、通话功能、短信功能、USB传输模式、USB传输模式同上
</ul>
</td>
</tr>
<tr>
<th>网址白名单</th>
<td>
<ul>
<li>添加网址白名单XXX(XXX=白名单名称,添加网址白名单未名课堂)</li>
<li>编辑、删除网址白名单 同上</li>
</ul>
</td>
</tr>
<tr>
<th>系统管理</th>
<td>
<ul>
<li>修改管控系统登录密码</li>
</ul>
</td>
</tr>
<tr>
<th>违规管理</th>
<td>
<ul>
<li>把违规设备(设备号)(违规处理),如 把违规设备WM00000986恢复出厂设置</li>
</ul>
</td>
</tr>
</table>
## 代码分析
### 模块常量定义
```
/** 管理员操作日志模块 */
const ADMIN_OP_USER_MODULE = 1; // 用户管理模块
const ADMIN_OP_AUTH_MODULE = 2; // 权限管理模块
const ADMIN_OP_APP_MODULE = 3; // 应用管理模块
const ADMIN_OP_DEVICE_MODULE = 4; // 设备管理模块
const ADMIN_OP_WHITELIST_MODULE = 5;// 白名单管理模块
const ADMIN_OP_SYS_MODULE = 6; // 系统管理模块
const ADMIN_OP_BAN_MODULE = 7; // 违规管理模块
const ADMIN_OP_LOGIN_MODULE = 8; // 登录模块
```
### 服务类
D:\wamp\www\safe.xo\safemanage\protected\service\MongoLogService.php
```
<?php
class MongoLogService extends AbstractService
{
public static function factory($className = __CLASS__)
{
return parent::factory($className);
}
public function save($collection, $args)
{
/** @var EMongoClient $mongodb */
$mongodb = Yii::app()->mongodb;
$contentRecord = $mongodb->selectCollection($collection);
return $contentRecord->insert($args);
}
// Mongo 保存日志
public function saveOperatorLog($module, $content)
{
// 操作者,账号,IP地址,操作模块,操作,操作时间
$this->save(WK::ADMIN_OP_LOG, array(
'module' => (int)$module,
'content' => $content,
'operatorID' => (int)Yii::app()->admin->id,
'operatorLogin' => Yii::app()->admin->fdLogin,
'operatorName' => Yii::app()->admin->fdName,
'ip' => BrowserUtils::getClientIP(),
'date' => new MongoDate(time()),
'groupID' => (int)Yii::app()->admin->fdAccountGroupID,
'groupLevel' => $this->_getGroupLevelArr(Yii::app()->admin->fdAccountGroupID)
));
}
protected function _getGroupLevelArr($groupID)
{
$data = array();
$groups = AccountService::factory()->getAllGroupAncestors($groupID, true);
foreach ($groups as $group) {
$temp = array();
$temp['id'] = (int)$group['id'];
$temp['lvl'] = (int)$group['level'];
$temp['pid'] = (int)$group['parentID'];
$data[] = $temp;
}
return $data;
}
// 获取管理员日志
public function getOperatorLogs($args)
{
$criteria = array();
if (is_numeric($args['module'])) {
$criteria['module'] = (int)$args['module'];
}
if ($args['begin'] && $args['end']) {
$criteria['date'] = array(
'$gte' => new MongoDate($args['begin'] / 1000 + 8 * 60 * 60),
'$lte' => new MongoDate($args['end'] / 1000 + 8 * 60 * 60),
);
}
if ($args['operatorID']) {
$criteria['operatorID'] = (int)$args['operatorID'];
}
if ($args['keyword']) {
$regex = new MongoRegex("/" . $args['keyword'] . "/");
$criteria['$or'] = array(
array('ip' => $regex),
array('operatorName' => $regex),
array('operatorLogin' => $regex),
);
}
$obj = WAdminOpLog::model()->find($criteria);
if (is_numeric($args['offset'])) {
$obj->skip((int)$args['offset']);
}
if (is_numeric($args['limit'])) {
$obj->limit((int)$args['limit']);
}
$obj->sort(array('_id' => -1));
return $obj;
}
<!-- 设备事件日志 -->
public function saveDeviceLog($number, $content)
{
// 设备号,账号,所属分组,操作详情,操作时间
$this->save('w_device_event_log', array(
'number' => $number,
'content' => $content,
'account' => '',
'group' => '',
'groupID' => 1,
'date' => new MongoDate(time())
));
}
<!-- 应用使用日志 -->
public function saveAppLog()
{
// 应用名称,设备号,账号,所属分组,启动时间,使用时长
...
}
}
```
- 说明
- 开发任务
- 星课-真光
- 课表
- Excel Down
- 调课
- 课表修改
- 课表代码分析
- 课堂
- 课堂:应用商店通信管理协议
- 教师账号强制绑定手机或邮箱
- 强制绑定手机和修改密码的规则
- 学堂
- 课程学习:讨论功能
- 后台:课程讨论管理
- 课程直播接口
- 学习统计功能(旧版)
- 学习统计功能(新版)
- 同步课程统计功能
- 同步课程编辑-新增视频
- 第三方接口
- 学科网
- 安徽第三方
- 大赛
- 管控系统
- 日志管理
- 设备日志
- 平板接口
- 渝教
- 教学总结
- 空白目录
- Yii 1.1
- 学堂架构
- Yii 1.1一些方法的解读
- MVCS结构
- 基础使用语法
- 创建1个新模块
- 关联模型
- CDbCriteria
- 学生-课堂记录
- 学生端页面展示
- 教师端页面展示
- 编辑课程文档
- SQL
- 课堂项目运行入口
- 上传资源示意图
- 行为
- PHPStorm
- 源码阅读
- 会诊答卷页面
- 考点练习
- 资源首页
- 同步课程
- 同步课程:章节信息
- 升学复习
- 统计图-范例
- 模块
- 非法词
- 服务层
- MongoDB类
- 学堂作答记录从Mongo新集合获取数据
- MongoYii
- 错题集
- 小技巧
- 完善资料
- 邮件发送
- K12
- JSpang视频课程
- MongoDB
- 创业
- 项目
- 包包