cqpCow 1 year ago
parent
commit
1f3ecf71e4

+ 42 - 0
app/Http/Controllers/Api/SystemRecordController.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\SystemRecordService;
+use Illuminate\Http\Request;
+
+class SystemRecordController extends BaseController
+{
+    public function orderList(Request $request){
+        $service = new SystemRecordService();
+        list($status,$data) = $service->orderList($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function warningList(Request $request){
+        $service = new SystemRecordService();
+        list($status,$data) = $service->warningList($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function warningEdit(Request $request){
+        $service = new SystemRecordService();
+        list($status,$data) = $service->warningEdit($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 34 - 0
app/Http/Middleware/CheckLogin.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Middleware;
 
+use App\Model\SystemRecord;
 use App\Service\EmployeeService;
 use Closure;
 use App\Service\TokenService;
@@ -40,6 +41,39 @@ class CheckLogin
         //写入user信息
         $request->userData = $data;
 
+        //系统操作日志
+        $this->insert($request->path(),$data);
+
         return $next($request);
     }
+
+    public function insert($uri,$data){
+        if (getenv('HTTP_CLIENT_IP')) {
+            $ip = getenv('HTTP_CLIENT_IP');
+        }
+        elseif (getenv('HTTP_X_REAL_IP')) {
+            $ip = getenv('HTTP_X_REAL_IP');
+        } elseif (getenv('HTTP_X_FORWARDED_FOR')) {
+            $ip = getenv('HTTP_X_FORWARDED_FOR');
+            $ips = explode(',', $ip);
+            $ip = $ips[0];
+        } elseif (getenv('REMOTE_ADDR')) {
+            $ip = getenv('REMOTE_ADDR');
+        } else {
+            $ip = '0.0.0.0';
+        }
+
+        $map = config("routemap.map");
+        if(isset($map[$uri])){
+            $content = $map[$uri];
+            $account  = $data['account'];
+
+            SystemRecord::insert([
+                'account' => $account,
+                'crt_time' => time(),
+                'ip' => $ip,
+                'content' => $content
+            ]);
+        }
+    }
 }

+ 16 - 1
app/Http/Middleware/RequestLog.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Middleware;
 
+use App\Model\SystemRecord;
 use Closure;
 use Illuminate\Support\Facades\Log;
 
@@ -31,7 +32,21 @@ class RequestLog
             $ip = '0.0.0.0';
         }
         $params = $request->all();
-        Log::channel('request')->info('request', ['param'=>json_encode($params),'ip' => $ip,'uri'=>$request->path()]);
+        $uri = $request->path();
+        Log::channel('request')->info('request', ['param'=>json_encode($params),'ip' => $ip,'uri'=>$uri]);
+
+        $map = config("routemap.map");
+        if($uri == 'api/login'){
+            $content = $map[$uri];
+            $account = '';
+            if(! empty($params['account'])) $account = $params['account'];
+            SystemRecord::insert([
+                'account' => $account,
+                'crt_time' => time(),
+                'ip' => $ip,
+                'content' => $content
+            ]);
+        }
 
         return $next($request);
     }

+ 14 - 0
app/Model/SystemRecord.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class SystemRecord extends Model
+{
+    protected $table = "system_record"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = null;
+    protected $dateFormat = 'U';
+}
+

+ 23 - 7
app/Service/Service.php

@@ -9,7 +9,6 @@ namespace App\Service;
  */
 class Service
 {
-
     public $log;
     public $total = 0;
 
@@ -30,7 +29,6 @@ class Service
         return $data;
     }
 
-
     //抽象一个查询条件,省的每天写很多行
     protected function is_exist_db($data, $word, $words, $db, $formula = '=', $type = '')
     {
@@ -62,7 +60,6 @@ class Service
         return $db;
     }
 
-
     //判断是否为空
     protected function isEmpty($data, $word)
     {
@@ -70,7 +67,6 @@ class Service
         return true;
     }
 
-
     //递归处理数据成子父级关系
     public function makeTree($parentId, &$node)
     {
@@ -102,7 +98,6 @@ class Service
         return $data;
     }
 
-
     //根据编码规则获取每一级的code
     public function get_rule_code($code, $rule)
     {
@@ -119,8 +114,6 @@ class Service
         return $rules;
     }
 
-
-
     function curlOpen($url, $config = array())
     {
         $arr = array('post' => false,'referer' => $url,'cookie' => '', 'useragent' => 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; customie8)', 'timeout' => 100, 'return' => true, 'proxy' => '', 'userpwd' => '', 'nobody' => false,'header'=>array(),'gzip'=>true,'ssl'=>true,'isupfile'=>false,'returnheader'=>false,'request'=>'post');
@@ -232,4 +225,27 @@ class Service
 
         return $result;
     }
+
+    //前端传来的时间转换为时间戳 关于时间段 2023-09-17T16:00:00.000Z
+    function changeDateToTimeStampAboutRange($time_range){
+        if(empty($time_range[0]) || empty($time_range[1])) return [];
+
+        // 创建一个 DateTime 对象并设置时区为 UTC
+        $dateTime = new \DateTime($time_range[0], new \DateTimeZone('UTC'));
+        $dateTime1 = new \DateTime($time_range[1], new \DateTimeZone('UTC'));
+
+        // 将时区设置为 PRC
+        $dateTime->setTimezone(new \DateTimeZone('Asia/Shanghai'));
+        $dateTime1->setTimezone(new \DateTimeZone('Asia/Shanghai'));
+
+        // 将日期时间格式化为特定格式
+        $formattedDate = $dateTime->format('Y-m-d');
+        $formattedDate1 = $dateTime1->format('Y-m-d');
+
+        $return = [];
+        $return[] = strtotime($formattedDate . " 00:00:00");
+        $return[] = strtotime($formattedDate1 . " 23:59:59");
+
+        return $return;
+    }
 }

+ 34 - 0
app/Service/SystemRecordService.php

@@ -0,0 +1,34 @@
+<?php
+
+namespace App\Service;
+
+use App\Model\SystemRecord;
+use App\Model\Warning;
+
+class SystemRecordService extends Service
+{
+    public function orderList($data){
+        $model = SystemRecord::select('account','crt_time','ip','content')
+            ->orderBy('id','desc');
+        if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])){
+            $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
+            $model->where('crt_time','>=',$return[0]);
+            $model->where('crt_time','<',$return[1]);
+        }
+        if(! empty($data['content'])) $model->where('content', 'LIKE', '%'.$data['content'].'%');
+
+        $list = $this->limit($model,'',$data);
+        $list = $this->fillData($list);
+        return [true,$list];
+    }
+
+    public function fillData($data){
+        if(empty($data['data'])) return $data;
+
+        foreach ($data['data'] as $key => $value){
+            $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
+        }
+
+        return $data;
+    }
+}

+ 18 - 0
config/routemap.php

@@ -0,0 +1,18 @@
+<?php
+//状态码
+return [
+    'map' => [
+        'api/login' => '登录',
+        'api/employeeAdd' => '账户添加',
+        'api/employeeEdit' => '账户编辑',
+        'api/employeeDel' => '账户删除',
+        'api/roleAdd' => '角色添加',
+        'api/roleEdit' => '角色编辑',
+        'api/roleDel' => '角色删除',
+        'api/roleMenu' => '角色绑定菜单',
+        'api/menuAdd' => '菜单添加',
+        'api/menuEdit' => '菜单编辑',
+        'api/menuDel' => '菜单删除',
+        'api/menuMove' => '菜单位置排序变更',
+    ]
+];

+ 4 - 2
routes/api.php

@@ -20,6 +20,9 @@ Route::middleware('auth:api')->get('/user', function (Request $request) {
 Route::any('login', 'Api\LoginController@login');
 
 Route::group(['middleware'=> []],function ($route){
+    //操作日志
+    $route->any('systemRecordList', 'Api\SystemRecordController@orderList');
+
     //菜单
     $route->any('menuAdd', 'Api\SysMenuController@add');
     $route->any('menuEdit', 'Api\SysMenuController@edit');
@@ -33,6 +36,7 @@ Route::group(['middleware'=> []],function ($route){
     $route->any('employeeDel', 'Api\EmployeeController@employeeDel');
     $route->any('employeeList', 'Api\EmployeeController@employeeList');
     $route->any('employeeManagerDepart', 'Api\EmployeeController@employeeManagerDepart');
+    $route->any('employeeDepart', 'Api\EmployeeController@employeeDepart');
 
     //部门
     $route->any('departAdd', 'Api\EmployeeController@departAdd');
@@ -45,6 +49,4 @@ Route::group(['middleware'=> []],function ($route){
     $route->any('roleEdit', 'Api\EmployeeController@roleEdit');
     $route->any('roleDel', 'Api\EmployeeController@roleDel');
     $route->any('roleList', 'Api\EmployeeController@roleList');
-
-    $route->any('employeeDepart', 'Api\EmployeeController@employeeDepart');
 });