123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- <?php
- /**
- * @author: xaboy<365615158@qq.com>
- * @day: 2017/11/28
- */
- namespace app\admin\model\system;
- use crmeb\traits\ModelTrait;
- use crmeb\basic\BaseModel;
- /**
- * 管理员操作记录
- * Class SystemLog
- * @package app\admin\model\system
- */
- class SystemLog extends BaseModel
- {
- /**
- * 数据表主键
- * @var string
- */
- protected $pk = 'id';
- /**
- * 模型名称
- * @var string
- */
- protected $name = 'system_log';
- use ModelTrait;
- protected $insert = ['add_time'];
- protected function setAddTimeAttr()
- {
- return time();
- }
- /**
- * 管理员访问记录
- *
- * @param $adminId
- * @param $adminName
- * @param $type
- * @return SystemLog|\think\Model
- */
- public static function adminVisit($adminId, $adminName, $type)
- {
- $request = app('request');
- $module = app('http')->getName();
- $controller = $request->controller();
- $action = $request->action();
- $route = $request->route();
- self::startTrans();
- try {
- $data = [
- 'method' => app('http')->getName(),
- 'admin_id' => $adminId,
- 'add_time' => time(),
- 'admin_name' => $adminName,
- 'path' => SystemMenus::getAuthName($action, $controller, $module, $route),
- 'page' => SystemMenus::getVisitName($action, $controller, $module, $route) ?: '未知',
- 'ip' => $request->ip(),
- 'type' => $type
- ];
- $res = self::create($data);
- if ($res) {
- self::commit();
- return true;
- } else {
- self::rollback();
- return false;
- }
- } catch (\Exception $e) {
- self::rollback();
- return self::setErrorInfo($e->getMessage());
- }
- }
- /**
- * 手动添加管理员当前页面访问记录
- * @param array $adminInfo
- * @param string $page 页面名称
- * @return object
- */
- public static function setCurrentVisit($adminInfo, $page)
- {
- $request = app('request');
- $module = app('http')->getName();
- $controller = $request->controller();
- $action = $request->action();
- $route = $request->route();
- $data = [
- 'method' => $request->method(),
- 'admin_id' => $adminInfo['id'],
- 'path' => SystemMenus::getAuthName($action, $controller, $module, $route),
- 'page' => $page,
- 'ip' => $request->ip()
- ];
- return self::create($data);
- }
- /**
- * 获取管理员访问记录
- * @param array $where
- * @return array
- */
- public static function systemPage($where = array())
- {
- $model = new self;
- $model = $model->alias('l');
- if ($where['pages'] !== '') $model = $model->where('l.page', 'LIKE', "%$where[pages]%");
- if ($where['path'] !== '') $model = $model->where('l.path', 'LIKE', "%$where[path]%");
- if ($where['ip'] !== '') $model = $model->where('l.ip', 'LIKE', "%$where[ip]%");
- if ($where['admin_id'] != '')
- $adminIds = $where['admin_id'];
- else
- $adminIds = SystemAdmin::where('level', '>=', $where['level'])->column('id', 'id');
- $model = $model->where('l.admin_id', 'IN', $adminIds);
- if ($where['data'] !== '') {
- list($startTime, $endTime) = explode(' - ', $where['data']);
- $model = $model->where('l.add_time', '>', strtotime($startTime));
- $model = $model->where('l.add_time', '<', strtotime($endTime));
- }
- $model->where('l.type', 'system');
- $model = $model->order('l.id desc');
- return self::page($model, $where);
- }
- /**
- * 删除超过90天的日志
- * @throws \Exception
- */
- public static function deleteLog()
- {
- $model = new self;
- $model->where('add_time', '<', time() - 7776000);
- $model->delete();
- }
- }
|