# 日志管理
## 功能需求
| 功能 | 說明 |
| ---------- | ------------------------------------------------------------ |
| 管理員日志 | 記錄管理員在管控系統操作的日志,**超級管理員可查看所有日志**,分組管理員**只能查看所在分組和下級分組的日志** |
| 篩選查看 | 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
- 創業
- 項目
- 包包