feat 动态配置

master
管理员 10 months ago
parent 3d4abe7a19
commit 4a7a2b7d15

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="en" class="dark">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />

@ -0,0 +1,17 @@
package com.ruoyi.common.annotation;
import org.springframework.stereotype.Component;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Component
public @interface DynConfig {
}

@ -0,0 +1,13 @@
package com.ruoyi.common.event;
import org.springframework.context.ApplicationEvent;
/**
*
*/
public class DynConfigEvent extends ApplicationEvent {
public DynConfigEvent(Object source) {
super(source);
}
}

@ -0,0 +1,18 @@
package com.ruoyi.common.runner;
import com.ruoyi.common.utils.JsonUtils;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.aop.framework.Advised;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component;
@Aspect
@Component
@Slf4j
@DependsOn("dynConfigProcessor")
public class DynConfigAspect {
}

@ -0,0 +1,98 @@
package com.ruoyi.common.runner;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.collection.ConcurrentHashSet;
import cn.hutool.crypto.digest.MD5;
import com.ruoyi.common.annotation.DynConfig;
import com.ruoyi.common.event.DynConfigEvent;
import com.ruoyi.common.utils.JsonUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.aop.framework.Advised;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.support.rowset.SqlRowSet;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@Aspect
@Configuration
@RequiredArgsConstructor
@Slf4j
public class DynConfigProcessor implements BeanPostProcessor {
private final JdbcTemplate jdbc;
private final PlatformTransactionManager transactionManager;
private final MD5 md5 = MD5.create();
private final Map<String, String> dynConfigMap = new ConcurrentHashMap<>();
private final Map<String, Object> saveBeans = new ConcurrentHashMap<>();
@Override
@SneakyThrows
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof Advised) {
Class cls = ((Advised) bean).getTargetClass();
Object target = ((Advised) bean).getTargetSource().getTarget();
beanName = cls.getName();
if (cls.isAnnotationPresent(DynConfig.class)) {
log.info("动态配置类:{}-{}", beanName, cls.getName());
SqlRowSet rs = jdbc.queryForRowSet("select * from sys_dyn_config where config_key = ?", beanName);
if (rs.next()) {
Object old = JsonUtils.parseObject(rs.getString("config_value"), bean.getClass());
BeanUtil.copyProperties(old, target, CopyOptions.create(cls, false));
} else {
jdbc.update("insert into sys_dyn_config (config_key,config_value) values (?,?)", beanName, JsonUtils.toJsonString(target));
}
dynConfigMap.put(beanName, md5.digestHex(JsonUtils.toJsonString(target)));
}
}
return bean;
}
@After("@within(com.ruoyi.common.annotation.DynConfig) && (execution(* *..set*(..)) || execution(* *..add*(..)) || execution(* *..remove*(..)) || execution(* *..put*(..)) || execution(* *..save()))")
public void afterSetter(JoinPoint jp) {
String hash = md5.digestHex(JsonUtils.toJsonString(jp.getTarget()));
String name = jp.getTarget().getClass().getName();
if (hash.equals(dynConfigMap.get(name))) {
return;
}
dynConfigMap.put(name, hash);
saveBeans.put(name, jp.getTarget());
if (log.isDebugEnabled()) {
log.debug("动态配置发生了变化:{} {}", name, JsonUtils.toJsonString(jp.getTarget()));
}
SpringUtils.publishEvent(new DynConfigEvent(jp.getTarget()));
}
@Scheduled(fixedRate = 1000)
public void save() {
for (String key : saveBeans.keySet()) {
jdbc.update("update sys_dyn_config set config_value=? where config_key=?", JsonUtils.toJsonString(saveBeans.get(key)), key);
if (log.isDebugEnabled()) {
log.debug("定时保存动态配置:{} {}", key, JsonUtils.toJsonString(saveBeans.get(key)));
}
}
saveBeans.clear();
}
}

@ -0,0 +1,34 @@
package com.ruoyi.demo.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.ruoyi.common.annotation.Dev;
import com.ruoyi.demo.dynconfig.TestDynConfig;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@RestController
@SaIgnore
@Dev
@RequiredArgsConstructor
@RequestMapping("/demo/dynconfig")
public class DynConfigApi {
private final TestDynConfig config;
@GetMapping
public Object get(){
// return config; //java中可以直接使用但是不能JSON序列号因为他是经过aop代理后的bean
return BeanUtil.toBean(config, TestDynConfig.class);
}
@PostMapping
public void set(@RequestBody TestDynConfig config){
// this.config=config;//不能直接赋值
BeanUtil.copyProperties(config,this.config, CopyOptions.create(TestDynConfig.class,true));//使用属性copy的方法或setter(getter)完成
this.config.save();//主动异步保存PS:属性的方法不会触发保存需要主动异步保存执行set*,put*,add*,remove*方法后会自动异步保存
}
}

@ -0,0 +1,27 @@
package com.ruoyi.demo.dynconfig;
import com.ruoyi.common.annotation.DynConfig;
import lombok.Data;
import java.util.List;
@Data
@DynConfig
public class TestDynConfig {
/**
*
*/
private String code;
private List<String> list;
/**
*
*/
private String value;
public void save() {
}
}

@ -11,7 +11,7 @@
Target Server Version : 100617
File Encoding : 65001
Date: 24/10/2024 17:46:10
Date: 11/02/2025 08:51:59
*/
SET NAMES utf8mb4;
@ -165,6 +165,21 @@ INSERT INTO `sys_dict_type` VALUES (9, '操作类型', 'sys_oper_type', '0', 'ad
INSERT INTO `sys_dict_type` VALUES (10, '系统状态', 'sys_common_status', '0', 'admin', '2023-08-16 10:35:07', '', NULL, '登录状态列表');
INSERT INTO `sys_dict_type` VALUES (11, '链接类型', 'sys_links_types', '0', 'admin', '2023-11-06 10:50:15', 'admin', '2024-03-07 10:12:12', '链接类型列表');
-- ----------------------------
-- Table structure for sys_dyn_config
-- ----------------------------
DROP TABLE IF EXISTS `sys_dyn_config`;
CREATE TABLE `sys_dyn_config` (
`config_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '配置关键字',
`config_value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '配置内容',
PRIMARY KEY (`config_key`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统配置' ROW_FORMAT = Compact;
-- ----------------------------
-- Records of sys_dyn_config
-- ----------------------------
INSERT INTO `sys_dyn_config` VALUES ('com.ruoyi.demo.dynconfig.TestDynConfig', '{\"code\":\"a\",\"value\":\"aaaaaaaaaaaaa1\"}');
-- ----------------------------
-- Table structure for sys_links
-- ----------------------------
@ -217,6 +232,60 @@ INSERT INTO `sys_logininfor` VALUES (20241023000000001, 'admin', '127.0.0.1', '
INSERT INTO `sys_logininfor` VALUES (20241023000000002, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-10-23 15:11:46');
INSERT INTO `sys_logininfor` VALUES (20241024000000001, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-10-24 08:49:02');
INSERT INTO `sys_logininfor` VALUES (20241024000000002, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-10-24 14:27:40');
INSERT INTO `sys_logininfor` VALUES (20241025000000001, 'admin', '192.168.3.122', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-10-25 15:37:21');
INSERT INTO `sys_logininfor` VALUES (20241025000000002, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-10-25 15:48:07');
INSERT INTO `sys_logininfor` VALUES (20241025000000003, 'admin', '192.168.3.122', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-10-25 16:34:23');
INSERT INTO `sys_logininfor` VALUES (20241025000000004, 'admin', '192.168.3.122', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-10-25 19:52:53');
INSERT INTO `sys_logininfor` VALUES (20241028000000001, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-10-28 15:34:09');
INSERT INTO `sys_logininfor` VALUES (20241028000000002, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-10-28 17:37:53');
INSERT INTO `sys_logininfor` VALUES (20241029000000001, 'admin', '192.168.3.122', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-10-29 16:08:00');
INSERT INTO `sys_logininfor` VALUES (20241030000000001, 'admin', '192.168.3.122', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-10-30 09:07:18');
INSERT INTO `sys_logininfor` VALUES (20241031000000001, 'admin', '192.168.3.193', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-10-31 09:39:28');
INSERT INTO `sys_logininfor` VALUES (20241101000000001, 'admin', '192.168.3.193', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-11-01 09:39:09');
INSERT INTO `sys_logininfor` VALUES (20241101000000002, 'admin', '192.168.3.193', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-11-01 11:06:41');
INSERT INTO `sys_logininfor` VALUES (20241101000000003, 'admin', '192.168.3.193', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-11-01 14:05:26');
INSERT INTO `sys_logininfor` VALUES (20241101000000004, 'admin', '192.168.3.193', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-11-01 17:17:05');
INSERT INTO `sys_logininfor` VALUES (20241101000000005, 'admin', '192.168.3.193', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '退出成功', '2024-11-01 17:17:09');
INSERT INTO `sys_logininfor` VALUES (20241104000000001, 'admin', '192.168.3.193', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-11-04 11:04:25');
INSERT INTO `sys_logininfor` VALUES (20241107000000001, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-11-07 10:49:21');
INSERT INTO `sys_logininfor` VALUES (20241107000000002, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-11-07 14:32:59');
INSERT INTO `sys_logininfor` VALUES (20241108000000001, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-11-08 09:52:45');
INSERT INTO `sys_logininfor` VALUES (20241113000000001, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '1', '密码错误1次', '2024-11-13 15:49:44');
INSERT INTO `sys_logininfor` VALUES (20241113000000002, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-11-13 15:49:50');
INSERT INTO `sys_logininfor` VALUES (20241115000000001, 'admin', '192.168.3.147', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-11-15 14:59:41');
INSERT INTO `sys_logininfor` VALUES (20241115000000002, 'admin', '192.168.3.193', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-11-15 16:24:07');
INSERT INTO `sys_logininfor` VALUES (20241115000000003, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-11-15 16:44:39');
INSERT INTO `sys_logininfor` VALUES (20241115000000004, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2024-11-15 17:24:56');
INSERT INTO `sys_logininfor` VALUES (20250107000000001, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-01-07 10:34:45');
INSERT INTO `sys_logininfor` VALUES (20250107000000002, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-01-07 13:59:47');
INSERT INTO `sys_logininfor` VALUES (20250107000000003, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-01-07 14:03:18');
INSERT INTO `sys_logininfor` VALUES (20250107000000004, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '退出成功', '2025-01-07 14:15:44');
INSERT INTO `sys_logininfor` VALUES (20250107000000005, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-01-07 14:26:34');
INSERT INTO `sys_logininfor` VALUES (20250107000000006, 'admin', '127.0.0.1', '内网IP', 'Unknown', 'Unknown', '0', '登录成功', '2025-01-07 16:14:45');
INSERT INTO `sys_logininfor` VALUES (20250108000000001, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-01-08 09:08:34');
INSERT INTO `sys_logininfor` VALUES (20250108000000002, 'admin', '127.0.0.1', '内网IP', 'Unknown', 'Unknown', '0', '登录成功', '2025-01-08 10:56:08');
INSERT INTO `sys_logininfor` VALUES (20250109000000003, 'admin', '127.0.0.1', '内网IP', 'Unknown', 'Unknown', '0', '登录成功', '2025-01-09 09:05:20');
INSERT INTO `sys_logininfor` VALUES (20250109000000004, 'admin', '127.0.0.1', '内网IP', 'MicroMessenger', 'iPhone', '0', '登录成功', '2025-01-09 09:31:32');
INSERT INTO `sys_logininfor` VALUES (20250109000000005, 'admin', '127.0.0.1', '内网IP', 'MicroMessenger', 'iPhone', '0', '登录成功', '2025-01-09 09:50:29');
INSERT INTO `sys_logininfor` VALUES (20250109000000006, 'admin', '127.0.0.1', '内网IP', 'MicroMessenger', 'iPhone', '0', '登录成功', '2025-01-09 11:36:32');
INSERT INTO `sys_logininfor` VALUES (20250109000000007, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'iPhone', '0', '登录成功', '2025-01-09 14:45:53');
INSERT INTO `sys_logininfor` VALUES (20250109000000008, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'iPhone', '0', '登录成功', '2025-01-09 14:52:49');
INSERT INTO `sys_logininfor` VALUES (20250109000000009, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-01-09 15:59:44');
INSERT INTO `sys_logininfor` VALUES (20250122000000010, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-01-22 15:40:11');
INSERT INTO `sys_logininfor` VALUES (20250123000000011, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-01-23 09:23:36');
INSERT INTO `sys_logininfor` VALUES (20250208000000012, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-02-08 14:25:03');
INSERT INTO `sys_logininfor` VALUES (20250208000000013, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-02-08 14:41:24');
INSERT INTO `sys_logininfor` VALUES (20250208000000014, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-02-08 14:42:14');
INSERT INTO `sys_logininfor` VALUES (20250208000000015, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-02-08 14:42:30');
INSERT INTO `sys_logininfor` VALUES (20250208000000016, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-02-08 15:09:30');
INSERT INTO `sys_logininfor` VALUES (20250208000000017, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-02-08 15:16:20');
INSERT INTO `sys_logininfor` VALUES (20250208000000018, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-02-08 15:28:43');
INSERT INTO `sys_logininfor` VALUES (20250208000000019, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-02-08 15:32:53');
INSERT INTO `sys_logininfor` VALUES (20250208000000020, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-02-08 15:43:16');
INSERT INTO `sys_logininfor` VALUES (20250208000000021, 'admin', '127.0.0.1', '内网IP', 'Chrome', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-02-08 17:57:49');
INSERT INTO `sys_logininfor` VALUES (20250210000000022, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-02-10 08:42:28');
INSERT INTO `sys_logininfor` VALUES (20250210000000023, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-02-10 08:42:29');
INSERT INTO `sys_logininfor` VALUES (20250210000000024, 'admin', '127.0.0.1', '内网IP', 'MSEdge', 'Windows 10 or Windows Server 2016', '0', '登录成功', '2025-02-10 11:31:58');
-- ----------------------------
-- Table structure for sys_menu
@ -437,6 +506,15 @@ INSERT INTO `sys_oper_log` VALUES (20241011000000018, '测试单表', 1, 'com.ru
INSERT INTO `sys_oper_log` VALUES (20241011000000019, '测试单表', 2, 'com.ruoyi.demo.controller.TestDemoController.edit()', 'PUT', 1, 'admin', '', '/demo/demo', '127.0.0.1', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2023-08-16 10:35:31\",\"id\":1,\"deptId\":102,\"userId\":4,\"orderNum\":1,\"testKey\":\"测试数据权限\",\"value\":\"测试\"}', '{\"code\":200,\"msg\":\"操作成功\"}', 0, '', '2024-10-11 17:50:05');
INSERT INTO `sys_oper_log` VALUES (20241014000000020, '定时任务', 1, 'com.ruoyi.cron.api.CronTaskApi.add()', 'POST', 1, 'admin', '', '/system/cron/', '127.0.0.1', '内网IP', '{\"id\":202410140000001,\"taskId\":\"5553036b32681350546531d871d5edc9\",\"groupId\":0,\"enabled\":true,\"createTime\":\"2024-10-14 09:04\",\"paramELs\":[],\"userId\":1}', '', 0, '', '2024-10-14 09:04:34');
INSERT INTO `sys_oper_log` VALUES (20241022000000021, '菜单管理', 1, 'com.ruoyi.web.controller.system.SysMenuController.add()', 'POST', 1, 'admin', '', '/system/menu', '127.0.0.1', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-22 11:01:10\",\"updateBy\":\"admin\",\"updateTime\":\"2024-10-22 11:01:10\",\"parentId\":5,\"children\":[],\"menuId\":\"20241022000000001\",\"menuName\":\"文件图片上传\",\"orderNum\":99,\"path\":\"file\",\"component\":\"demo/file/index\",\"isFrame\":\"1\",\"isCache\":\"1\",\"menuType\":\"C\",\"visible\":\"0\",\"status\":\"0\",\"perms\":\"demo:file:index\",\"icon\":\"upload\"}', '{\"code\":200,\"msg\":\"操作成功\"}', 0, '', '2024-10-22 11:01:10');
INSERT INTO `sys_oper_log` VALUES (20250107000000022, '定时任务', 1, 'com.ruoyi.cron.api.CronTaskApi.add()', 'POST', 1, 'admin', '', '/system/cron/', '127.0.0.1', '内网IP', '{\"id\":202501070000002,\"groupId\":0,\"enabled\":true,\"createTime\":\"2025-01-07 16:41\",\"paramELs\":[],\"userId\":1}', '', 0, '', '2025-01-07 16:41:13');
INSERT INTO `sys_oper_log` VALUES (20250107000000023, '定时任务', 3, 'com.ruoyi.cron.api.CronTaskApi.remove()', 'DELETE', 1, 'admin', '', '/system/cron/202501070000002', '127.0.0.1', '内网IP', '{}', '', 0, '', '2025-01-07 16:41:19');
INSERT INTO `sys_oper_log` VALUES (20250108000000024, '定时任务', 1, 'com.ruoyi.cron.api.CronTaskApi.add()', 'POST', 1, 'admin', '', '/system/cron/', '127.0.0.1', '内网IP', '{\"id\":202501080000003,\"groupId\":0,\"enabled\":true,\"createTime\":\"2025-01-08 09:12\",\"paramELs\":[],\"userId\":1}', '', 0, '', '2025-01-08 09:12:12');
INSERT INTO `sys_oper_log` VALUES (20250108000000025, '定时任务', 3, 'com.ruoyi.cron.api.CronTaskApi.remove()', 'DELETE', 1, 'admin', '', '/system/cron/202501080000003', '127.0.0.1', '内网IP', '{}', '', 0, '', '2025-01-08 09:12:15');
INSERT INTO `sys_oper_log` VALUES (20250108000000026, '定时任务', 1, 'com.ruoyi.cron.api.CronTaskApi.add()', 'POST', 1, 'admin', '', '/system/cron/', '127.0.0.1', '内网IP', '{\"id\":202501080000004,\"taskId\":\"031b690bda610eb6b0baf12f10c82406\",\"groupId\":0,\"enabled\":true,\"createTime\":\"2025-01-08 14:51\",\"paramELs\":[\"0\",\"null\",\"null\"],\"userId\":1}', '', 0, '', '2025-01-08 14:51:39');
INSERT INTO `sys_oper_log` VALUES (20250108000000027, '定时任务', 1, 'com.ruoyi.cron.api.CronTaskApi.add()', 'POST', 1, 'admin', '', '/system/cron/', '127.0.0.1', '内网IP', '{\"id\":202501080000005,\"taskId\":\"031b690bda610eb6b0baf12f10c82406\",\"groupId\":0,\"enabled\":true,\"createTime\":\"2025-01-08 15:00\",\"paramELs\":[],\"userId\":1,\"cron\":\"\"}', '', 0, '', '2025-01-08 15:00:13');
INSERT INTO `sys_oper_log` VALUES (20250108000000028, '定时任务', 3, 'com.ruoyi.cron.api.CronTaskApi.remove()', 'DELETE', 1, 'admin', '', '/system/cron/202501080000005', '127.0.0.1', '内网IP', '{}', '', 0, '', '2025-01-08 15:00:20');
INSERT INTO `sys_oper_log` VALUES (20250108000000029, '定时任务', 3, 'com.ruoyi.cron.api.CronTaskApi.remove()', 'DELETE', 1, 'admin', '', '/system/cron/202501080000004', '127.0.0.1', '内网IP', '{}', '', 0, '', '2025-01-08 15:00:35');
INSERT INTO `sys_oper_log` VALUES (20250108000000030, '定时任务', 1, 'com.ruoyi.cron.api.CronTaskApi.add()', 'POST', 1, 'admin', '', '/system/cron/', '127.0.0.1', '内网IP', '{\"id\":202501080000006,\"taskId\":\"031b690bda610eb6b0baf12f10c82406\",\"groupId\":0,\"enabled\":true,\"createTime\":\"2025-01-08 15:02\",\"paramELs\":[\"7\",\"null\",\"null\"],\"userId\":1}', '', 0, '', '2025-01-08 15:02:25');
-- ----------------------------
-- Table structure for sys_post
@ -631,7 +709,7 @@ CREATE TABLE `sys_user` (
-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES (1, 100, NULL, 'admin', '超级管理员', 'sys_user', 'admin@evolvecloud.cn', '13888888888', '1', '', '$2a$10$.ja7BDq5b8jxd6snbRvz8eAmg0loaDb05LR6SpR2F42huJb7GaOD6', '0', '0', '127.0.0.1', '2024-10-24 14:27:40', 'admin', '2024-01-03 10:35:07', 'admin', '2024-10-24 14:27:40', '管理员');
INSERT INTO `sys_user` VALUES (1, 100, NULL, 'admin', '超级管理员', 'sys_user', 'admin@evolvecloud.cn', '13888888888', '1', '', '$2a$10$.ja7BDq5b8jxd6snbRvz8eAmg0loaDb05LR6SpR2F42huJb7GaOD6', '0', '0', '127.0.0.1', '2025-02-10 11:31:58', 'admin', '2024-01-03 10:35:07', 'admin', '2025-02-10 11:31:58', '管理员');
-- ----------------------------
-- Table structure for sys_user_post

Loading…
Cancel
Save