public function initialize() { $this->setConnectionService('db'); // 可修改连接的数据库 $this->addBehavior(new SoftDelete(array('field' => 'isdeleted', 'value' => BaseModel::DELETED))); $operationLog = new OperationLog(); $cacheToken = json_decode($this->getDI()->getSession()->get('token')); if (null !== $cacheToken) { // 一些公共的接口是没有登录信息的 $operationLog->setUserId($cacheToken->user_id); } $this->addBehavior($operationLog); }
/** * 操作日志列表 */ public function ActionOperationLogList() { $criteria = new CDbCriteria(); // 判断查询类型 (分页查询 / 条件查询) $searchType = Yii::app()->request->getParam('searchType'); if ($searchType === 'page') { $search_condition = unserialize(base64_decode(Yii::app()->request->getParam('search_condition'))); // 对分布传来的数据进行还原 } else { // 如有搜索条件 则获取条件并过滤条件数组中的空格与空值 if (!empty($_POST['search'])) { foreach ($_POST['search'] as $key => $val) { $search_condition[$key] = trim($val); } $search_condition = array_filter($search_condition); } else { $search_condition = ''; } } // 增加搜索条件 [S] // 搜索条件中包含时间 则添加时间查询条件 if (!empty($search_condition['start_time']) || !empty($search_condition['end_time'])) { // 如起始时间与结束时间一致 则查询同一个时间点的数据 if (!empty($search_condition['start_time']) && !empty($search_condition['end_time']) && $search_condition['start_time'] == $search_condition['end_time']) { $criteria->addSearchCondition('CreationDate', $search_condition['start_time']); } else { // 1.只按起始时间查询 2.只按结束时间查询 3.按起始+结束时间段查询 if (!empty($search_condition['start_time']) && empty($search_condition['end_time'])) { $criteria->addCondition('CreationDate >= :start_time'); $criteria->params[':start_time'] = $search_condition['start_time'] . ' 23:59:59'; } else { if (empty($search_condition['start_time']) && !empty($search_condition['end_time'])) { $criteria->addCondition('CreationDate <= :end_time'); $criteria->params[':end_time'] = $search_condition['end_time'] . ' 23:59:59'; } else { $criteria->addBetweenCondition('CreationDate', $search_condition['start_time'], $search_condition['end_time']); } } } } // 搜索条件中包含真实姓名 则添加关联查询及条件 if (!empty($search_condition['real_name'])) { $criteria->with = array('account' => array('joinType' => 'INNER JOIN', 'condition' => 'account.RealName="' . $search_condition['real_name'] . '"')); } //增加搜索条件 [E] // 分页配置 $criteria->order = 't.ID DESC'; $count = OperationLog::model()->count($criteria); $pager = new CPagination($count); if (!empty($search_condition)) { //判断是否存在搜索条件,并对搜索条件进行数据处理(便于url传输) $pager->params = array('search_condition' => base64_encode(serialize($search_condition)), 'searchType' => 'page'); } $pager->pageSize = 20; $pager->applyLimit($criteria); // 获取日志列表 $operation_log_list = OperationLog::model()->findAll($criteria); // 跳转至用户操作日志页面 $this->render('list_operation_log', array('operation_log_list' => $operation_log_list, 'pages' => $pager, 'search_condition' => $search_condition)); }
/** * 添加用户操作日志 * @param $log 描述详细操作 * @return bool */ public static function AddOperationLog($log) { if (!empty($log)) { $operation_log = new OperationLog(); $operation_log->Description = $log; // 详细操作 $operation_log->UserId = Yii::app()->user->id; // 用户Id $operation_log->CreationDate = new CDbExpression('NOW()'); // 日志生成时间 $operation_log->save(); // 保存日志 } else { return false; } }