mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-04-06 03:58:04 +08:00
批量操作日志处理
This commit is contained in:
parent
67ed38ffda
commit
6f956670f0
@ -14,8 +14,21 @@
|
|||||||
// +----------------------------------------------------------------------
|
// +----------------------------------------------------------------------
|
||||||
|
|
||||||
use think\admin\service\AdminService;
|
use think\admin\service\AdminService;
|
||||||
|
use think\admin\service\SystemService;
|
||||||
use think\helper\Str;
|
use think\helper\Str;
|
||||||
|
|
||||||
|
/*! 全局操作日志数据 */
|
||||||
|
$GLOBALS['oplogs'] = [];
|
||||||
|
|
||||||
|
/*! 操作日志批量写入日志 */
|
||||||
|
app()->event->listen('HttpEnd', function () {
|
||||||
|
if (is_array($GLOBALS['oplogs']) && count($GLOBALS['oplogs']) > 0) {
|
||||||
|
foreach (array_chunk($GLOBALS['oplogs'], 100) as $items) {
|
||||||
|
app()->db->name('SystemOplog')->insertAll($items);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
/*! SQL 监听分析记录日志 */
|
/*! SQL 监听分析记录日志 */
|
||||||
app()->db->listen(function ($sqlstr) {
|
app()->db->listen(function ($sqlstr) {
|
||||||
[$type,] = explode(' ', $sqlstr);
|
[$type,] = explode(' ', $sqlstr);
|
||||||
@ -24,18 +37,18 @@ app()->db->listen(function ($sqlstr) {
|
|||||||
if (preg_match('/^INSERT\s+INTO\s+`(.*?)`\s+SET\s+(.*?)\s*$/i', $sqlstr, $matches)) {
|
if (preg_match('/^INSERT\s+INTO\s+`(.*?)`\s+SET\s+(.*?)\s*$/i', $sqlstr, $matches)) {
|
||||||
if (stripos($matches[1] = Str::studly($matches[1]), 'SystemOplog') === false) {
|
if (stripos($matches[1] = Str::studly($matches[1]), 'SystemOplog') === false) {
|
||||||
$matches[2] = substr(str_replace(['`', '\''], '', $matches[2]), 0, 200);
|
$matches[2] = substr(str_replace(['`', '\''], '', $matches[2]), 0, 200);
|
||||||
return sysoplog("添加数据 {$matches[1]}", "添加数据:{$matches[2]}");
|
$GLOBALS['oplogs'][] = SystemService::instance()->getOplog("添加数据 {$matches[1]}", "添加数据:{$matches[2]}");
|
||||||
}
|
}
|
||||||
} elseif (preg_match('/^UPDATE\s+`(.*?)`\s+SET\s+(.*?)\s+WHERE\s+(.*?)\s*$/i', $sqlstr, $matches)) {
|
} elseif (preg_match('/^UPDATE\s+`(.*?)`\s+SET\s+(.*?)\s+WHERE\s+(.*?)\s*$/i', $sqlstr, $matches)) {
|
||||||
if (stripos($matches[1] = Str::studly($matches[1]), 'SystemOplog') === false) {
|
if (stripos($matches[1] = Str::studly($matches[1]), 'SystemOplog') === false) {
|
||||||
$matches[3] = substr(str_replace(['`', '\''], '', $matches[3]), 0, 200);
|
$matches[3] = substr(str_replace(['`', '\''], '', $matches[3]), 0, 200);
|
||||||
$matches[2] = substr(str_replace(['`', '\''], '', $matches[2]), 0, 200);
|
$matches[2] = substr(str_replace(['`', '\''], '', $matches[2]), 0, 200);
|
||||||
return sysoplog("更新数据 {$matches[1]}( {$matches[3]} )", "更新内容:{$matches[2]}");
|
$GLOBALS['oplogs'][] = SystemService::instance()->getOplog("更新数据 {$matches[1]}( {$matches[3]} )", "更新内容 {$matches[2]}");
|
||||||
}
|
}
|
||||||
} elseif (preg_match('/^DELETE\s*FROM\s*`(.*?)`\s*WHERE\s*(.*?)\s*$/i', $sqlstr, $matches)) {
|
} elseif (preg_match('/^DELETE\s*FROM\s*`(.*?)`\s*WHERE\s*(.*?)\s*$/i', $sqlstr, $matches)) {
|
||||||
if (stripos($matches[1] = Str::studly($matches[1]), 'SystemOplog') === false) {
|
if (stripos($matches[1] = Str::studly($matches[1]), 'SystemOplog') === false) {
|
||||||
$matches[2] = str_replace(['`', '\''], '', $matches[2]);
|
$matches[2] = str_replace(['`', '\''], '', $matches[2]);
|
||||||
return sysoplog("删除数据 {$matches[1]}", "删除条件:{$matches[2]}");
|
$GLOBALS['oplogs'][] = SystemService::instance()->getOplog("删除数据 {$matches[1]}", "删除条件 {$matches[2]}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ class TruckService extends Service
|
|||||||
*/
|
*/
|
||||||
public function query($code, $number)
|
public function query($code, $number)
|
||||||
{
|
{
|
||||||
return $this->_getInterface()->doRequest('https://open.cuci.cc/user/api.auth.express/query', [
|
return $this->_getInterface()->doRequest('api.auth.express/query', [
|
||||||
'type' => 'free', 'express' => $code, 'number' => $number,
|
'type' => 'free', 'express' => $code, 'number' => $number,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@ -91,7 +91,7 @@ class TruckService extends Service
|
|||||||
*/
|
*/
|
||||||
public function company()
|
public function company()
|
||||||
{
|
{
|
||||||
return $this->_getInterface()->doRequest('https://open.cuci.cc/user/api.auth.express/getCompany');
|
return $this->_getInterface()->doRequest('api.auth.express/getCompany');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -101,7 +101,8 @@ class TruckService extends Service
|
|||||||
private function _getInterface(): InterfaceService
|
private function _getInterface(): InterfaceService
|
||||||
{
|
{
|
||||||
$service = InterfaceService::instance();
|
$service = InterfaceService::instance();
|
||||||
// 测试的账号及密钥,随时可能会变更,请联系客服获取自己的账号和密钥
|
// 测试的账号及密钥随时可能会变更,请联系客服更新
|
||||||
|
$service->getway('https://open.cuci.cc/user/');
|
||||||
$service->setAuth("6998081316132228", "193fc1d9a2aac78475bc8dbeb9a5feb1");
|
$service->setAuth("6998081316132228", "193fc1d9a2aac78475bc8dbeb9a5feb1");
|
||||||
return $service;
|
return $service;
|
||||||
}
|
}
|
||||||
|
4
vendor/composer/autoload_classmap.php
vendored
4
vendor/composer/autoload_classmap.php
vendored
@ -216,16 +216,18 @@ return array(
|
|||||||
'app\\data\\controller\\ShopGoods' => $baseDir . '/app/data/controller/ShopGoods.php',
|
'app\\data\\controller\\ShopGoods' => $baseDir . '/app/data/controller/ShopGoods.php',
|
||||||
'app\\data\\controller\\ShopGoodsCate' => $baseDir . '/app/data/controller/ShopGoodsCate.php',
|
'app\\data\\controller\\ShopGoodsCate' => $baseDir . '/app/data/controller/ShopGoodsCate.php',
|
||||||
'app\\data\\controller\\ShopGoodsMark' => $baseDir . '/app/data/controller/ShopGoodsMark.php',
|
'app\\data\\controller\\ShopGoodsMark' => $baseDir . '/app/data/controller/ShopGoodsMark.php',
|
||||||
'app\\data\\controller\\ShopGoodsStock' => $baseDir . '/app/data/controller/ShopGoodsStock.php',
|
|
||||||
'app\\data\\controller\\ShopOrder' => $baseDir . '/app/data/controller/ShopOrder.php',
|
'app\\data\\controller\\ShopOrder' => $baseDir . '/app/data/controller/ShopOrder.php',
|
||||||
'app\\data\\controller\\ShopOrderSend' => $baseDir . '/app/data/controller/ShopOrderSend.php',
|
'app\\data\\controller\\ShopOrderSend' => $baseDir . '/app/data/controller/ShopOrderSend.php',
|
||||||
'app\\data\\controller\\ShopOrderService' => $baseDir . '/app/data/controller/ShopOrderService.php',
|
'app\\data\\controller\\ShopOrderService' => $baseDir . '/app/data/controller/ShopOrderService.php',
|
||||||
|
'app\\data\\controller\\ShopTruckCompany' => $baseDir . '/app/data/controller/ShopTruckCompany.php',
|
||||||
|
'app\\data\\controller\\ShopTruckTemplate' => $baseDir . '/app/data/controller/ShopTruckTemplate.php',
|
||||||
'app\\data\\controller\\api\\Auth' => $baseDir . '/app/data/controller/api/Auth.php',
|
'app\\data\\controller\\api\\Auth' => $baseDir . '/app/data/controller/api/Auth.php',
|
||||||
'app\\data\\controller\\api\\Data' => $baseDir . '/app/data/controller/api/Data.php',
|
'app\\data\\controller\\api\\Data' => $baseDir . '/app/data/controller/api/Data.php',
|
||||||
'app\\data\\controller\\api\\Goods' => $baseDir . '/app/data/controller/api/Goods.php',
|
'app\\data\\controller\\api\\Goods' => $baseDir . '/app/data/controller/api/Goods.php',
|
||||||
'app\\data\\controller\\api\\Login' => $baseDir . '/app/data/controller/api/Login.php',
|
'app\\data\\controller\\api\\Login' => $baseDir . '/app/data/controller/api/Login.php',
|
||||||
'app\\data\\controller\\api\\News' => $baseDir . '/app/data/controller/api/News.php',
|
'app\\data\\controller\\api\\News' => $baseDir . '/app/data/controller/api/News.php',
|
||||||
'app\\data\\controller\\api\\Notify' => $baseDir . '/app/data/controller/api/Notify.php',
|
'app\\data\\controller\\api\\Notify' => $baseDir . '/app/data/controller/api/Notify.php',
|
||||||
|
'app\\data\\controller\\api\\Wechat' => $baseDir . '/app/data/controller/api/Wechat.php',
|
||||||
'app\\data\\controller\\api\\Wxapp' => $baseDir . '/app/data/controller/api/Wxapp.php',
|
'app\\data\\controller\\api\\Wxapp' => $baseDir . '/app/data/controller/api/Wxapp.php',
|
||||||
'app\\data\\controller\\api\\auth\\Address' => $baseDir . '/app/data/controller/api/auth/Address.php',
|
'app\\data\\controller\\api\\auth\\Address' => $baseDir . '/app/data/controller/api/auth/Address.php',
|
||||||
'app\\data\\controller\\api\\auth\\Center' => $baseDir . '/app/data/controller/api/auth/Center.php',
|
'app\\data\\controller\\api\\auth\\Center' => $baseDir . '/app/data/controller/api/auth/Center.php',
|
||||||
|
4
vendor/composer/autoload_static.php
vendored
4
vendor/composer/autoload_static.php
vendored
@ -353,16 +353,18 @@ class ComposerStaticInit7ad2dfd941224dedfd9e69a3187017d8
|
|||||||
'app\\data\\controller\\ShopGoods' => __DIR__ . '/../..' . '/app/data/controller/ShopGoods.php',
|
'app\\data\\controller\\ShopGoods' => __DIR__ . '/../..' . '/app/data/controller/ShopGoods.php',
|
||||||
'app\\data\\controller\\ShopGoodsCate' => __DIR__ . '/../..' . '/app/data/controller/ShopGoodsCate.php',
|
'app\\data\\controller\\ShopGoodsCate' => __DIR__ . '/../..' . '/app/data/controller/ShopGoodsCate.php',
|
||||||
'app\\data\\controller\\ShopGoodsMark' => __DIR__ . '/../..' . '/app/data/controller/ShopGoodsMark.php',
|
'app\\data\\controller\\ShopGoodsMark' => __DIR__ . '/../..' . '/app/data/controller/ShopGoodsMark.php',
|
||||||
'app\\data\\controller\\ShopGoodsStock' => __DIR__ . '/../..' . '/app/data/controller/ShopGoodsStock.php',
|
|
||||||
'app\\data\\controller\\ShopOrder' => __DIR__ . '/../..' . '/app/data/controller/ShopOrder.php',
|
'app\\data\\controller\\ShopOrder' => __DIR__ . '/../..' . '/app/data/controller/ShopOrder.php',
|
||||||
'app\\data\\controller\\ShopOrderSend' => __DIR__ . '/../..' . '/app/data/controller/ShopOrderSend.php',
|
'app\\data\\controller\\ShopOrderSend' => __DIR__ . '/../..' . '/app/data/controller/ShopOrderSend.php',
|
||||||
'app\\data\\controller\\ShopOrderService' => __DIR__ . '/../..' . '/app/data/controller/ShopOrderService.php',
|
'app\\data\\controller\\ShopOrderService' => __DIR__ . '/../..' . '/app/data/controller/ShopOrderService.php',
|
||||||
|
'app\\data\\controller\\ShopTruckCompany' => __DIR__ . '/../..' . '/app/data/controller/ShopTruckCompany.php',
|
||||||
|
'app\\data\\controller\\ShopTruckTemplate' => __DIR__ . '/../..' . '/app/data/controller/ShopTruckTemplate.php',
|
||||||
'app\\data\\controller\\api\\Auth' => __DIR__ . '/../..' . '/app/data/controller/api/Auth.php',
|
'app\\data\\controller\\api\\Auth' => __DIR__ . '/../..' . '/app/data/controller/api/Auth.php',
|
||||||
'app\\data\\controller\\api\\Data' => __DIR__ . '/../..' . '/app/data/controller/api/Data.php',
|
'app\\data\\controller\\api\\Data' => __DIR__ . '/../..' . '/app/data/controller/api/Data.php',
|
||||||
'app\\data\\controller\\api\\Goods' => __DIR__ . '/../..' . '/app/data/controller/api/Goods.php',
|
'app\\data\\controller\\api\\Goods' => __DIR__ . '/../..' . '/app/data/controller/api/Goods.php',
|
||||||
'app\\data\\controller\\api\\Login' => __DIR__ . '/../..' . '/app/data/controller/api/Login.php',
|
'app\\data\\controller\\api\\Login' => __DIR__ . '/../..' . '/app/data/controller/api/Login.php',
|
||||||
'app\\data\\controller\\api\\News' => __DIR__ . '/../..' . '/app/data/controller/api/News.php',
|
'app\\data\\controller\\api\\News' => __DIR__ . '/../..' . '/app/data/controller/api/News.php',
|
||||||
'app\\data\\controller\\api\\Notify' => __DIR__ . '/../..' . '/app/data/controller/api/Notify.php',
|
'app\\data\\controller\\api\\Notify' => __DIR__ . '/../..' . '/app/data/controller/api/Notify.php',
|
||||||
|
'app\\data\\controller\\api\\Wechat' => __DIR__ . '/../..' . '/app/data/controller/api/Wechat.php',
|
||||||
'app\\data\\controller\\api\\Wxapp' => __DIR__ . '/../..' . '/app/data/controller/api/Wxapp.php',
|
'app\\data\\controller\\api\\Wxapp' => __DIR__ . '/../..' . '/app/data/controller/api/Wxapp.php',
|
||||||
'app\\data\\controller\\api\\auth\\Address' => __DIR__ . '/../..' . '/app/data/controller/api/auth/Address.php',
|
'app\\data\\controller\\api\\auth\\Address' => __DIR__ . '/../..' . '/app/data/controller/api/auth/Address.php',
|
||||||
'app\\data\\controller\\api\\auth\\Center' => __DIR__ . '/../..' . '/app/data/controller/api/auth/Center.php',
|
'app\\data\\controller\\api\\auth\\Center' => __DIR__ . '/../..' . '/app/data/controller/api/auth/Center.php',
|
||||||
|
12
vendor/composer/installed.json
vendored
12
vendor/composer/installed.json
vendored
@ -958,17 +958,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "zoujingli/think-library",
|
"name": "zoujingli/think-library",
|
||||||
"version": "v6.0.8",
|
"version": "v6.0.9",
|
||||||
"version_normalized": "6.0.8.0",
|
"version_normalized": "6.0.9.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/zoujingli/ThinkLibrary.git",
|
"url": "https://github.com/zoujingli/ThinkLibrary.git",
|
||||||
"reference": "686db8b3131f4cec0f5f5927338baba4580d65c5"
|
"reference": "6fa904cad8bde5b2d04750d17323fe715a0c2b4d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/686db8b3131f4cec0f5f5927338baba4580d65c5",
|
"url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/6fa904cad8bde5b2d04750d17323fe715a0c2b4d",
|
||||||
"reference": "686db8b3131f4cec0f5f5927338baba4580d65c5",
|
"reference": "6fa904cad8bde5b2d04750d17323fe715a0c2b4d",
|
||||||
"shasum": "",
|
"shasum": "",
|
||||||
"mirrors": [
|
"mirrors": [
|
||||||
{
|
{
|
||||||
@ -985,7 +985,7 @@
|
|||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"topthink/framework": "^6.0"
|
"topthink/framework": "^6.0"
|
||||||
},
|
},
|
||||||
"time": "2020-09-14T08:48:48+00:00",
|
"time": "2020-09-19T10:23:24+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"think": {
|
"think": {
|
||||||
|
2
vendor/services.php
vendored
2
vendor/services.php
vendored
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
// This file is automatically generated at:2020-09-14 16:57:43
|
// This file is automatically generated at:2020-09-19 18:29:10
|
||||||
declare (strict_types = 1);
|
declare (strict_types = 1);
|
||||||
return array (
|
return array (
|
||||||
0 => 'think\\admin\\Library',
|
0 => 'think\\admin\\Library',
|
||||||
|
@ -41,7 +41,7 @@ class Library extends Service
|
|||||||
/**
|
/**
|
||||||
* 扩展库版本号
|
* 扩展库版本号
|
||||||
*/
|
*/
|
||||||
const VERSION = '6.0.8';
|
const VERSION = '6.0.9';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 启动服务
|
* 启动服务
|
||||||
|
@ -116,6 +116,17 @@ class InterfaceService extends Service
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置接口网关地址
|
||||||
|
* @param string $getway
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function getway(string $getway)
|
||||||
|
{
|
||||||
|
$this->baseurl = $getway;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取请求数据
|
* 获取请求数据
|
||||||
* @param boolean $check 验证数据
|
* @param boolean $check 验证数据
|
||||||
|
@ -176,19 +176,30 @@ class SystemService extends Service
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 写入系统日志
|
* 写入系统日志内容
|
||||||
* @param string $action
|
* @param string $action
|
||||||
* @param string $content
|
* @param string $content
|
||||||
* @return integer
|
* @return integer
|
||||||
*/
|
*/
|
||||||
public function setOplog($action, $content)
|
public function setOplog($action, $content)
|
||||||
{
|
{
|
||||||
return $this->app->db->name('SystemOplog')->insert([
|
return $this->app->db->name('SystemOplog')->insert($this->getOplog($action, $content));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取系统日志内容
|
||||||
|
* @param string $action
|
||||||
|
* @param string $content
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getOplog($action, $content)
|
||||||
|
{
|
||||||
|
return [
|
||||||
'node' => NodeService::instance()->getCurrent(),
|
'node' => NodeService::instance()->getCurrent(),
|
||||||
'action' => $action, 'content' => $content,
|
'action' => $action, 'content' => $content,
|
||||||
'geoip' => $this->app->request->ip() ?: '127.0.0.1',
|
'geoip' => $this->app->request->ip() ?: '127.0.0.1',
|
||||||
'username' => AdminService::instance()->getUserName() ?: '-',
|
'username' => AdminService::instance()->getUserName() ?: '-',
|
||||||
]);
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user