| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 | 
							- <?php
 
- if (!defined('BASEPATH'))exit('No direct script access allowed');
 
- include_once(FCPATH . 'application/models/Base_model.php');
 
- class Syslog_model extends Base_model {
 
-     protected $table = 'syslog';
 
-     public function __construct() {
 
-         parent::__construct();
 
-     }
 
-     public function set_read($id){
 
-     	return $this->db->where('id',$id)->update($this->table,array('is_read'=>1));
 
-     }
 
-     
 
-     // 获取日志列表
 
-     public function getList($filter,$page = null,$limit = null,$field="S.*",$type = 0){
 
-     	$where_sql = "";
 
- 		
 
-     	if (isset($filter['id']) || isset($filter['realname'])  || isset($filter['username'])){
 
-     		$arrUserIds = $this->getUserIds($filter);
 
-     		if (empty($arrUserIds)){
 
-     			$arrUserIds[] = 0;
 
-     		}
 
-     		$where_sql  .= " AND S.userid IN(".implode(',', $arrUserIds).") ";
 
-     	}
 
-     
 
-     	if(isset($filter['starttime']) && isset($filter['endtime'])){
 
-     		$starttime = date('Y-m-d 00:00:00',strtotime($filter['starttime']));
 
-     		$endtime   = date('Y-m-d 23:59:59',strtotime($filter['endtime']));
 
-     		$where_sql  .= " AND S.time >= '".$starttime."' AND S.time <='".$endtime."' ";
 
-     	}
 
-     	
 
-     	if (isset($filter['optype']) && !empty($filter['optype'])){
 
-     		
 
-     		if($filter['optype'] == 'login'){
 
-     			$where_sql  .= " AND S.optype IN('login','logout') ";
 
-     		}else{
 
-     			$where_sql  .= " AND S.optype='".$filter['optype']."'";
 
-     		}
 
-     		
 
-     	}
 
-     	// 获取未读日志
 
-     	// if (isset($filter['is_read'])){
 
-     	// 	$filter['is_read'] = empty($filter['is_read']) ? 0 : $filter['is_read'];
 
-     		
 
-     	// 	$where_sql .= " AND S.is_read = ".$filter['is_read'];
 
-     	// }
 
-     	if (isset($filter['keyword']) && !empty($filter['keyword'])){
 
-     		
 
-     		$where_sql .= " AND (S.time LIKE binary \"%{$filter['keyword']}%\"";
 
-     		$where_sql .= " OR U.username LIKE binary \"%{$filter['keyword']}%\"";
 
-             $where_sql .= " OR U.realname LIKE binary \"%{$filter['keyword']}%\"";
 
-     		$where_sql .= " OR S.content LIKE binary \"%{$filter['keyword']}%\")";
 
-     	}
 
-         if (!empty($filter['startDate']) && !empty($filter['endDate'])) {
 
-             $where_sql .= " AND S.time >= '{$filter['startDate']}'";
 
-             $where_sql .= " AND S.time <= '{$filter['endDate']}'";
 
-         }
 
-     	
 
-         if (!empty($filter['typeArr']) && is_array($filter['typeArr'])) {
 
-             $typeStr = implode(',', $filter['typeArr']);
 
-             $where_sql .= " AND S.optype in({$typeStr})";
 
-         }
 
-         if (isset($filter['language'])) {
 
-             $where_sql .= " AND S.language = {$filter['language']}";
 
-         }
 
-         if (!empty($filter['companyid'])) {
 
-             $where_sql .= " AND S.companyid = {$filter['companyid']}";
 
-         }
 
-         if (!empty($filter['userid'])) {
 
-             $where_sql .= " AND S.userid = {$filter['userid']}";
 
-         }
 
-     	$sql = "SELECT {$field},
 
-     				U.username AS username,
 
-     				U.realname AS realname 
 
-     			FROM syslog AS S JOIN user AS U ON S.userid=U.id
 
-     			WHERE 1=1 ";
 
-     	$limit_sql = "";
 
-         if (empty($type) && $limit < 1000) {
 
-             if ($page != null && $limit != null){
 
-                 $limit_sql = " LIMIT ".($page-1)*$limit.",".$limit;
 
-             }
 
-         }else{
 
-             if (isset($page) && isset($limit)){
 
-                 $limit_sql = " LIMIT ".$page.",".$limit;
 
-             }
 
-         }
 
-     	
 
-     	 
 
-     	$query  = $sql.$where_sql."  ORDER BY time DESC ".$limit_sql;
 
-     	$query  = $this->db->query($query);
 
-     	return  $query->result_array();
 
-     }
 
-     
 
-     // 获取日志总数
 
- 	public function getTotal($filter){
 
-     	$where_sql = "";
 
-         
 
-         if (isset($filter['id']) || isset($filter['realname'])  || isset($filter['username'])){
 
-             $arrUserIds = $this->getUserIds($filter);
 
-             if (empty($arrUserIds)){
 
-                 $arrUserIds[] = 0;
 
-             }
 
-             $where_sql  .= " AND S.userid IN(".implode(',', $arrUserIds).") ";
 
-         }
 
-     
 
-         if(isset($filter['starttime']) && isset($filter['endtime'])){
 
-             $starttime = date('Y-m-d 00:00:00',strtotime($filter['starttime']));
 
-             $endtime   = date('Y-m-d 23:59:59',strtotime($filter['endtime']));
 
-             $where_sql  .= " AND S.time >= '".$starttime."' AND S.time <='".$endtime."' ";
 
-         }
 
-         
 
-         if (isset($filter['optype']) && !empty($filter['optype'])){
 
-             
 
-             if($filter['optype'] == 'login'){
 
-                 $where_sql  .= " AND S.optype IN('login','logout') ";
 
-             }else{
 
-                 $where_sql  .= " AND S.optype='".$filter['optype']."'";
 
-             }
 
-             
 
-         }
 
-         // 获取未读日志
 
-         // if (isset($filter['is_read'])){
 
-         //  $filter['is_read'] = empty($filter['is_read']) ? 0 : $filter['is_read'];
 
-             
 
-         //  $where_sql .= " AND S.is_read = ".$filter['is_read'];
 
-         // }
 
-         if (isset($filter['keyword']) && !empty($filter['keyword'])){
 
-             
 
-             $where_sql .= " AND (S.time LIKE binary \"%{$filter['keyword']}%\"";
 
-             $where_sql .= " OR U.username LIKE binary \"%{$filter['keyword']}%\"";
 
-             $where_sql .= " OR U.realname LIKE binary \"%{$filter['keyword']}%\"";
 
-             $where_sql .= " OR S.content LIKE binary \"%{$filter['keyword']}%\")";
 
-         }
 
-         if (!empty($filter['startDate']) && !empty($filter['endDate'])) {
 
-             $where_sql .= " AND S.time >= '{$filter['startDate']}'";
 
-             $where_sql .= " AND S.time <= '{$filter['endDate']}'";
 
-         }
 
-         
 
-         if (!empty($filter['typeArr']) && is_array($filter['typeArr'])) {
 
-             $typeStr = implode(',', $filter['typeArr']);
 
-             $where_sql .= " AND S.optype in({$typeStr})";
 
-         }
 
-         if (isset($filter['language'])) {
 
-             $where_sql .= " AND S.language = {$filter['language']}";
 
-         }
 
-         if (!empty($filter['companyid'])) {
 
-             $where_sql .= " AND S.companyid = {$filter['companyid']}";
 
-         }
 
-         if (!empty($filter['userid'])) {
 
-             $where_sql .= " AND S.userid = {$filter['userid']}";
 
-         }
 
-         $sql = "SELECT count(*) as total 
 
-                 FROM syslog AS S JOIN user AS U ON S.userid=U.id
 
-                 WHERE 1=1 ";
 
-     	// $limit_sql = "";
 
-     	
 
-     	$query  = $sql.$where_sql;
 
-     	$query  = $this->db->query($query);
 
-     	$row =   $query->row_array();
 
-     	return   $row['total'];
 
-     }
 
-     
 
- 	public function getUserIds($filter){
 
- 		
 
- 		$arrIds = array();
 
- 		if (isset($filter['realname']) && !empty($filter['realname'])){
 
- 			$sql        = "SELECT id FROM user WHERE realname LIKE '%".$filter['realname']."%' ";
 
- 			$query      = $this->db->query($sql);
 
- 			$userList   = $query->result_array();
 
- 			if (empty($userList)){
 
- 				return $arrIds;
 
- 			}
 
- 			
 
- 			foreach ($userList as $v){
 
- 				if (!in_array($v['id'], $arrIds)){
 
- 					$arrIds[]  = $v['id'];
 
- 				}
 
- 			}
 
- 			return $arrIds;
 
- 		}
 
- 		
 
- 		if (isset($filter['username']) && !empty($filter['username'])){
 
- 			$sql        = "SELECT id FROM user WHERE username LIKE '%".$filter['username']."%' ";
 
- 			$query  = $this->db->query($sql);
 
- 			$userList   = $query->result_array();
 
- 			if (empty($userList)){
 
- 				return $arrIds;
 
- 			}
 
- 			
 
- 			foreach ($userList as $v){
 
- 				if (!in_array($v['id'], $arrIds)){
 
- 					$arrIds[]  = $v['id'];
 
- 				}
 
- 			}
 
- 			return $arrIds;
 
- 		}
 
- 		
 
- 		if (isset($filter['id']) && !empty($filter['id'])){
 
- 			$sql    = "SELECT id,role FROM user WHERE id={$filter['id']}";
 
- 			$query  = $this->db->query($sql);
 
- 			$user   = $query->row_array();
 
- 			if (empty($user)){
 
- 				return $arrIds;
 
- 			}
 
- 			$arrIds[] = $filter['id'];
 
- 			
 
- 			// 超级管理员
 
- 			if($user['role'] == 1){
 
- 				$sql        = "SELECT id FROM user WHERE parentid={$filter['id']}";
 
- 				$query      = $this->db->query($sql);
 
- 				$userList   = $query->result_array();
 
- 				if (empty($userList)){
 
- 					return $arrIds;
 
- 				}
 
- 				
 
- 				$arrIds2 = array();
 
- 				foreach ($userList as $v){
 
- 					$arrIds2[] = $v['id'];
 
- 					if (!in_array($v['id'], $arrIds)){
 
- 						$arrIds[]  = $v['id'];
 
- 					}
 
- 				}
 
- 				
 
- 				$sql        = "SELECT id FROM user WHERE parentid IN (".implode(',', $arrIds2).")";
 
- 				$query      = $this->db->query($sql);
 
- 				$userList   = $query->result_array();
 
- 				if (empty($userList)){
 
- 					return $arrIds;
 
- 				}
 
- 				
 
- 				foreach ($userList as $v){
 
- 					if (!in_array($v['id'], $arrIds)){
 
- 						$arrIds[]  = $v['id'];
 
- 					}
 
- 				}
 
- 				return $arrIds;
 
- 			}elseif ($user['role'] == 2){
 
- 				$sql        = "SELECT id FROM user WHERE parentid={$filter['id']}";
 
- 				$query      = $this->db->query($sql);
 
- 				$userList   = $query->result_array();
 
- 				if (empty($userList)){
 
- 					return $arrIds;
 
- 				}
 
- 				
 
- 				foreach ($userList as $v){
 
- 					if (!in_array($v['id'], $arrIds)){
 
- 						$arrIds[]  = $v['id'];
 
- 					}
 
- 					
 
- 				}
 
- 				$arrIds[]  = $v['id'];
 
- 			}else {
 
- 				return $arrIds;
 
- 			}
 
- 		}
 
- 	}
 
- }
 
 
  |