diff --git a/sql/mysql/ruoyi-vue-pro.sql b/sql/mysql/ruoyi-vue-pro.sql index c962ad6f50..5e1292a127 100644 --- a/sql/mysql/ruoyi-vue-pro.sql +++ b/sql/mysql/ruoyi-vue-pro.sql @@ -11,7 +11,7 @@ Target Server Version : 80039 (8.0.39) File Encoding : 65001 - Date: 24/07/2025 19:26:19 + Date: 25/07/2025 14:39:52 */ SET NAMES utf8mb4; @@ -151,11 +151,21 @@ CREATE TABLE `infra_api_error_log` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 22175 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统异常日志' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 22185 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统异常日志' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of infra_api_error_log -- ---------------------------- +INSERT INTO `infra_api_error_log` VALUES (22175, '', 1, 2, 'yudao-server', 'POST', '/admin-api/kfc/alarm-config/create', '{\"query\":{},\"body\":\"{\\r\\n \\\"id\\\": null,\\r\\n \\\"title\\\": \\\"异地登录\\\",\\r\\n \\\"description\\\": \\\"账号异地登陆了\\\",\\r\\n \\\"type\\\": \\\"1\\\",\\r\\n \\\"trigger\\\": \\\"OTHER_ADDRESS_LOGIN\\\",\\r\\n \\\"receiveUserIds\\\": \\\"1,2,3\\\",\\r\\n \\\"notificationWay\\\": \\\"message\\\",\\r\\n \\\"status\\\": 2\\r\\n}\"}', '127.0.0.1', 'Apifox/1.0.0 (https://apifox.com)', '2025-07-25 11:06:02', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO sq_alarm_config ( title, description, type, trigger, receive_user_ids, notification_way, status, create_time, update_time, creator, updater ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )\r\n### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1', 'SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO sq_alarm_config ( title, description, type, trigger, receive_user_ids, notification_way, status, create_time, update_time, creator, updater ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )\r\n### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:236)\r\n at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)\r\n at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)\r\n at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)\r\n at jdk.proxy2/jdk.proxy2.$Proxy138.insert(Unknown Source)\r\n at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n at jdk.proxy2/jdk.proxy2.$Proxy281.insert(Unknown Source)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl.createAlarmConfig(AlarmConfigServiceImpl.java:39)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl$$FastClassBySpringCGLIB$$e49c454.invoke()\r\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\r\n at org.springframework.aop.framew', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 236, 0, NULL, 0, '1', '2025-07-25 11:06:02', '1', '2025-07-25 11:06:02', b'0', 0); +INSERT INTO `infra_api_error_log` VALUES (22176, '', 1, 2, 'yudao-server', 'POST', '/admin-api/kfc/alarm-config/create', '{\"query\":{},\"body\":\"{\\r\\n \\\"id\\\": null,\\r\\n \\\"title\\\": \\\"异地登录\\\",\\r\\n \\\"description\\\": \\\"账号异地登陆了\\\",\\r\\n \\\"type\\\": \\\"1\\\",\\r\\n \\\"trigger\\\": \\\"OTHER_ADDRESS_LOGIN\\\",\\r\\n \\\"receiveUserIds\\\": \\\"[1,2,3]\\\",\\r\\n \\\"notificationWay\\\": \\\"message\\\",\\r\\n \\\"status\\\": 2\\r\\n}\"}', '127.0.0.1', 'Apifox/1.0.0 (https://apifox.com)', '2025-07-25 11:07:15', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO sq_alarm_config ( title, description, type, trigger, receive_user_ids, notification_way, status, create_time, update_time, creator, updater ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )\r\n### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1', 'SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO sq_alarm_config ( title, description, type, trigger, receive_user_ids, notification_way, status, create_time, update_time, creator, updater ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )\r\n### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:236)\r\n at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)\r\n at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)\r\n at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)\r\n at jdk.proxy2/jdk.proxy2.$Proxy138.insert(Unknown Source)\r\n at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n at jdk.proxy2/jdk.proxy2.$Proxy281.insert(Unknown Source)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl.createAlarmConfig(AlarmConfigServiceImpl.java:39)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl$$FastClassBySpringCGLIB$$e49c454.invoke()\r\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\r\n at org.springframework.aop.framew', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 236, 0, NULL, 0, '1', '2025-07-25 11:07:15', '1', '2025-07-25 11:07:15', b'0', 0); +INSERT INTO `infra_api_error_log` VALUES (22177, '', 1, 2, 'yudao-server', 'POST', '/admin-api/kfc/alarm-config/create', '{\"query\":{},\"body\":\"{\\r\\n \\\"id\\\": null,\\r\\n \\\"title\\\": \\\"异地登录\\\",\\r\\n \\\"description\\\": \\\"账号异地登陆了\\\",\\r\\n \\\"type\\\": \\\"1\\\",\\r\\n \\\"trigger\\\": \\\"OTHER_ADDRESS_LOGIN\\\",\\r\\n \\\"receiveUserIds\\\": \\\"[1,2,3]\\\",\\r\\n \\\"notificationWay\\\": \\\"message\\\",\\r\\n \\\"status\\\": 2\\r\\n}\"}', '127.0.0.1', 'Apifox/1.0.0 (https://apifox.com)', '2025-07-25 11:07:58', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO sq_alarm_config ( title, description, type, trigger, receive_user_ids, notification_way, status, create_time, update_time, creator, updater ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )\r\n### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1', 'SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO sq_alarm_config ( title, description, type, trigger, receive_user_ids, notification_way, status, create_time, update_time, creator, updater ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )\r\n### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:236)\r\n at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)\r\n at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)\r\n at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)\r\n at jdk.proxy2/jdk.proxy2.$Proxy138.insert(Unknown Source)\r\n at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n at jdk.proxy2/jdk.proxy2.$Proxy281.insert(Unknown Source)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl.createAlarmConfig(AlarmConfigServiceImpl.java:39)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl$$FastClassBySpringCGLIB$$e49c454.invoke()\r\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\r\n at org.springframework.aop.framew', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 236, 0, NULL, 0, '1', '2025-07-25 11:07:58', '1', '2025-07-25 11:07:58', b'0', 0); +INSERT INTO `infra_api_error_log` VALUES (22178, '', 1, 2, 'yudao-server', 'POST', '/admin-api/kfc/alarm-config/create', '{\"query\":{},\"body\":\"{\\r\\n \\\"id\\\": null,\\r\\n \\\"title\\\": \\\"异地登录\\\",\\r\\n \\\"description\\\": \\\"账号异地登陆了\\\",\\r\\n \\\"type\\\": \\\"1\\\",\\r\\n \\\"trigger\\\": \\\"OTHER_ADDRESS_LOGIN\\\",\\r\\n \\\"receiveUserIds\\\": \\\"[1,2,3]\\\",\\r\\n \\\"notificationWay\\\": \\\"message\\\",\\r\\n \\\"status\\\": 2\\r\\n}\"}', '127.0.0.1', 'Apifox/1.0.0 (https://apifox.com)', '2025-07-25 11:12:52', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList` from String value (token `JsonToken.VALUE_STRING`); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList` from String value (token `JsonToken.VALUE_STRING`)\n at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 7, column: 23] (through reference chain: cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.vo.AlarmConfigSaveReqVO[\"receiveUserIds\"])', 'MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList` from String value (token `JsonToken.VALUE_STRING`)\n at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 7, column: 23] (through reference chain: cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.vo.AlarmConfigSaveReqVO[\"receiveUserIds\"])', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList` from String value (token `JsonToken.VALUE_STRING`); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList` from String value (token `JsonToken.VALUE_STRING`)\n at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 7, column: 23] (through reference chain: cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.vo.AlarmConfigSaveReqVO[\"receiveUserIds\"])\r\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:391)\r\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:343)\r\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:185)\r\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:160)\r\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:133)\r\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\r\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\r\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:903)\r\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:809)\r\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\r\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)\r\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)\r\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\r\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\r\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:555)\r\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\r\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)\r\n at org.apache.catalina.core.ApplicationF', 'org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter', 'AbstractJackson2HttpMessageConverter.java', 'readJavaType', 391, 0, NULL, 0, '1', '2025-07-25 11:12:52', '1', '2025-07-25 11:12:52', b'0', 0); +INSERT INTO `infra_api_error_log` VALUES (22179, '', 1, 2, 'yudao-server', 'POST', '/admin-api/kfc/alarm-config/create', '{\"query\":{},\"body\":\"{\\r\\n \\\"id\\\": null,\\r\\n \\\"title\\\": \\\"异地登录\\\",\\r\\n \\\"description\\\": \\\"账号异地登陆了\\\",\\r\\n \\\"type\\\": \\\"1\\\",\\r\\n \\\"trigger\\\": \\\"OTHER_ADDRESS_LOGIN\\\",\\r\\n \\\"receiveUserIds\\\": [1,2,3],\\r\\n \\\"notificationWay\\\": \\\"message\\\",\\r\\n \\\"status\\\": 2\\r\\n}\"}', '127.0.0.1', 'Apifox/1.0.0 (https://apifox.com)', '2025-07-25 11:13:58', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO sq_alarm_config ( title, description, type, trigger, receive_user_ids, notification_way, status, create_time, update_time, creator, updater ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )\r\n### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1', 'SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO sq_alarm_config ( title, description, type, trigger, receive_user_ids, notification_way, status, create_time, update_time, creator, updater ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )\r\n### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:236)\r\n at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)\r\n at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)\r\n at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)\r\n at jdk.proxy2/jdk.proxy2.$Proxy138.insert(Unknown Source)\r\n at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n at jdk.proxy2/jdk.proxy2.$Proxy281.insert(Unknown Source)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl.createAlarmConfig(AlarmConfigServiceImpl.java:39)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl$$FastClassBySpringCGLIB$$e49c454.invoke()\r\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\r\n at org.springframework.aop.framew', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 236, 0, NULL, 0, '1', '2025-07-25 11:13:58', '1', '2025-07-25 11:13:58', b'0', 0); +INSERT INTO `infra_api_error_log` VALUES (22180, '', 1, 2, 'yudao-server', 'GET', '/admin-api/kfc/alarm-config/page', '{\"query\":{\"notificationWay\":\"\",\"createTime\":\"\",\"pageNo\":\"1\",\"description\":\"\",\"pageSize\":\"10\",\"trigger\":\"\",\"title\":\"\",\"type\":\"\",\"receiveUserIds\":\"\",\"status\":\"\"},\"body\":null}', '127.0.0.1', 'Apifox/1.0.0 (https://apifox.com)', '2025-07-25 11:30:44', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, title, description, type, trigger, receive_user_ids, notification_way, status, create_time, update_time, creator, updater, deleted FROM sq_alarm_config WHERE deleted = 0 ORDER BY id DESC LIMIT ?\r\n### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1', 'SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, title, description, type, trigger, receive_user_ids, notification_way, status, create_time, update_time, creator, updater, deleted FROM sq_alarm_config WHERE deleted = 0 ORDER BY id DESC LIMIT ?\r\n### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'trigger, receive_user_ids, notification_way, status, create_time, update_time, c\' at line 1\r\n at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:236)\r\n at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)\r\n at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)\r\n at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)\r\n at jdk.proxy2/jdk.proxy2.$Proxy138.selectList(Unknown Source)\r\n at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n at jdk.proxy2/jdk.proxy2.$Proxy281.selectList(Unknown Source)\r\n at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectPage(BaseMapper.java:458)\r\n at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n at jdk.proxy2/jdk.proxy2.$Proxy281.selectPage(Unknown Source)\r\n at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectPage(', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 236, 0, NULL, 0, '1', '2025-07-25 11:30:44', '1', '2025-07-25 11:30:44', b'0', 0); +INSERT INTO `infra_api_error_log` VALUES (22181, '', 1, 2, 'yudao-server', 'GET', '/admin-api/kfc/alarm-config/page', '{\"query\":{\"notificationWay\":\"SMS\",\"triggerCondition\":\"\",\"createTime\":\"\",\"pageNo\":\"1\",\"description\":\"\",\"pageSize\":\"10\",\"title\":\"\",\"type\":\"\",\"receiveUserIds\":\"1,2\",\"status\":\"\"},\"body\":null}', '127.0.0.1', 'Apifox/1.0.0 (https://apifox.com)', '2025-07-25 11:53:40', 'org.mybatis.spring.MyBatisSystemException', 'MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression \'createTime != null and createTime.size() == 2\'. Cause: org.apache.ibatis.ognl.MethodFailedException: Method \"size\" failed for object [Ljava.time.LocalDateTime;@5a4fb442 [java.lang.NoSuchMethodException: [Ljava.time.LocalDateTime;.size()]', 'NoSuchMethodException: [Ljava.time.LocalDateTime;.size()', 'org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression \'createTime != null and createTime.size() == 2\'. Cause: org.apache.ibatis.ognl.MethodFailedException: Method \"size\" failed for object [Ljava.time.LocalDateTime;@5a4fb442 [java.lang.NoSuchMethodException: [Ljava.time.LocalDateTime;.size()]\r\n at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:97)\r\n at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)\r\n at jdk.proxy2/jdk.proxy2.$Proxy140.selectOne(Unknown Source)\r\n at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:160)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:87)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n at jdk.proxy2/jdk.proxy2.$Proxy283.selectPageWithArrayMatch(Unknown Source)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl.getAlarmConfigPage(AlarmConfigServiceImpl.java:82)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl$$FastClassBySpringCGLIB$$e49c454.invoke()\r\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)\r\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)\r\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:707)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl$$EnhancerBySpringCGLIB$$22ddb7b2.getAlarmConfigPage()\r\n at cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.AlarmConfigController.getAlarmConfigPage(AlarmConfigController.java:87)\r\n at cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.AlarmConfigController$$FastClassBySpringCGLIB$$2cd5d421.invoke()\r\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\r\n at org.springframework.aop.f', 'org.mybatis.spring.MyBatisExceptionTranslator', 'MyBatisExceptionTranslator.java', 'translateExceptionIfPossible', 97, 0, NULL, 0, '1', '2025-07-25 11:53:40', '1', '2025-07-25 11:53:40', b'0', 0); +INSERT INTO `infra_api_error_log` VALUES (22182, '', 1, 2, 'yudao-server', 'GET', '/admin-api/kfc/alarm-config/get', '{\"query\":{\"id\":\"1\"},\"body\":null}', '127.0.0.1', 'Apifox/1.0.0 (https://apifox.com)', '2025-07-25 14:10:09', 'org.mybatis.spring.MyBatisSystemException', 'MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: \r\n### Error querying database. Cause: java.lang.NumberFormatException: Unparseable number: \"[1\"\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.selectById\r\n### The error occurred while handling results\r\n### SQL: SELECT id, title, description, type, trigger_condition, receive_user_ids, notification_way, status, create_time, update_time, creator, updater, deleted FROM sq_alarm_config WHERE id = ? AND deleted = 0\r\n### Cause: java.lang.NumberFormatException: Unparseable number: \"[1\"', 'ParseException: Unparseable number: \"[1\"', 'org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: \r\n### Error querying database. Cause: java.lang.NumberFormatException: Unparseable number: \"[1\"\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.selectById\r\n### The error occurred while handling results\r\n### SQL: SELECT id, title, description, type, trigger_condition, receive_user_ids, notification_way, status, create_time, update_time, creator, updater, deleted FROM sq_alarm_config WHERE id = ? AND deleted = 0\r\n### Cause: java.lang.NumberFormatException: Unparseable number: \"[1\"\r\n at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:97)\r\n at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)\r\n at jdk.proxy2/jdk.proxy2.$Proxy138.selectOne(Unknown Source)\r\n at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:160)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:87)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n at jdk.proxy2/jdk.proxy2.$Proxy281.selectById(Unknown Source)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl.getAlarmConfig(AlarmConfigServiceImpl.java:72)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl$$FastClassBySpringCGLIB$$e49c454.invoke()\r\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)\r\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)\r\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:707)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl$$EnhancerBySpringCGLIB$$5b8248d7.getAlarmConfig()\r\n at cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.AlarmConfigController.getAlarmConfig(AlarmConfigController.java:79)\r\n at cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.AlarmConfigController$$FastClassBySpringCGLIB$$2cd', 'org.mybatis.spring.MyBatisExceptionTranslator', 'MyBatisExceptionTranslator.java', 'translateExceptionIfPossible', 97, 0, NULL, 0, '1', '2025-07-25 14:10:09', '1', '2025-07-25 14:10:09', b'0', 0); +INSERT INTO `infra_api_error_log` VALUES (22183, '', 1, 2, 'yudao-server', 'GET', '/admin-api/kfc/alarm-config/get', '{\"query\":{\"id\":\"1\"},\"body\":null}', '127.0.0.1', 'Apifox/1.0.0 (https://apifox.com)', '2025-07-25 14:10:46', 'org.mybatis.spring.MyBatisSystemException', 'MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: \r\n### Error querying database. Cause: java.lang.NumberFormatException: Unparseable number: \"[1\"\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.selectById\r\n### The error occurred while handling results\r\n### SQL: SELECT id, title, description, type, trigger_condition, receive_user_ids, notification_way, status, create_time, update_time, creator, updater, deleted FROM sq_alarm_config WHERE id = ? AND deleted = 0\r\n### Cause: java.lang.NumberFormatException: Unparseable number: \"[1\"', 'ParseException: Unparseable number: \"[1\"', 'org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: \r\n### Error querying database. Cause: java.lang.NumberFormatException: Unparseable number: \"[1\"\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.selectById\r\n### The error occurred while handling results\r\n### SQL: SELECT id, title, description, type, trigger_condition, receive_user_ids, notification_way, status, create_time, update_time, creator, updater, deleted FROM sq_alarm_config WHERE id = ? AND deleted = 0\r\n### Cause: java.lang.NumberFormatException: Unparseable number: \"[1\"\r\n at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:97)\r\n at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)\r\n at jdk.proxy2/jdk.proxy2.$Proxy138.selectOne(Unknown Source)\r\n at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:160)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:87)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n at jdk.proxy2/jdk.proxy2.$Proxy281.selectById(Unknown Source)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl.getAlarmConfig(AlarmConfigServiceImpl.java:72)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl$$FastClassBySpringCGLIB$$e49c454.invoke()\r\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)\r\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\r\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)\r\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:707)\r\n at cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigServiceImpl$$EnhancerBySpringCGLIB$$5b8248d7.getAlarmConfig()\r\n at cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.AlarmConfigController.getAlarmConfig(AlarmConfigController.java:79)\r\n at cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.AlarmConfigController$$FastClassBySpringCGLIB$$2cd', 'org.mybatis.spring.MyBatisExceptionTranslator', 'MyBatisExceptionTranslator.java', 'translateExceptionIfPossible', 97, 0, NULL, 0, '1', '2025-07-25 14:10:46', '1', '2025-07-25 14:10:46', b'0', 0); +INSERT INTO `infra_api_error_log` VALUES (22184, '', 1, 2, 'yudao-server', 'GET', '/admin-api/kfc/alarm-config/page', '{\"query\":{\"notificationWay\":\"\",\"triggerCondition\":\"\",\"createTime\":\"\",\"pageNo\":\"1\",\"description\":\"\",\"pageSize\":\"10\",\"title\":\"\",\"type\":\"\",\"receiveUserIds\":\"\",\"status\":\"\"},\"body\":null}', '127.0.0.1', 'Apifox/1.0.0 (https://apifox.com)', '2025-07-25 14:12:05', 'org.mybatis.spring.MyBatisSystemException', 'MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: \r\n### Error querying database. Cause: java.lang.NumberFormatException: Unparseable number: \"[11\"\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.selectList\r\n### The error occurred while handling results\r\n### SQL: SELECT id, title, description, type, trigger_condition, receive_user_ids, notification_way, status, create_time, update_time, creator, updater, deleted FROM sq_alarm_config WHERE deleted = 0 ORDER BY id DESC LIMIT ?\r\n### Cause: java.lang.NumberFormatException: Unparseable number: \"[11\"', 'ParseException: Unparseable number: \"[11\"', 'org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: \r\n### Error querying database. Cause: java.lang.NumberFormatException: Unparseable number: \"[11\"\r\n### The error may exist in cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper.selectList\r\n### The error occurred while handling results\r\n### SQL: SELECT id, title, description, type, trigger_condition, receive_user_ids, notification_way, status, create_time, update_time, creator, updater, deleted FROM sq_alarm_config WHERE deleted = 0 ORDER BY id DESC LIMIT ?\r\n### Cause: java.lang.NumberFormatException: Unparseable number: \"[11\"\r\n at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:97)\r\n at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)\r\n at jdk.proxy2/jdk.proxy2.$Proxy138.selectList(Unknown Source)\r\n at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n at jdk.proxy2/jdk.proxy2.$Proxy281.selectList(Unknown Source)\r\n at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectPage(BaseMapper.java:458)\r\n at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n at jdk.proxy2/jdk.proxy2.$Proxy281.selectPage(Unknown Source)\r\n at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectPage(BaseMapperX.java:52)\r\n at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n at jdk.proxy2/jdk.proxy2.$Proxy281.selectPage(Unknown Source)\r\n at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectPage(BaseMapperX.java:39)\r\n at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n at jdk.proxy2/jdk.proxy2.$Proxy281.selectPage', 'org.mybatis.spring.MyBatisExceptionTranslator', 'MyBatisExceptionTranslator.java', 'translateExceptionIfPossible', 97, 0, NULL, 0, '1', '2025-07-25 14:12:05', '1', '2025-07-25 14:12:05', b'0', 0); -- ---------------------------- -- Table structure for infra_codegen_column @@ -186,11 +196,188 @@ CREATE TABLE `infra_codegen_column` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2538 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '代码生成表字段定义' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 2715 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '代码生成表字段定义' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of infra_codegen_column -- ---------------------------- +INSERT INTO `infra_codegen_column` VALUES (2538, 191, 'id', 'INTEGER', '报警配置id', b'0', b'1', 1, 'Integer', 'id', '', '14367', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2539, 191, 'title', 'VARCHAR', '报警名称', b'1', b'0', 2, 'String', 'title', '', NULL, b'1', b'1', b'1', 'LIKE', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2540, 191, 'description', 'VARCHAR', '报警描述', b'1', b'0', 3, 'String', 'description', '', '你猜', b'1', b'1', b'1', 'LIKE', b'1', 'editor', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2541, 191, 'type', 'VARCHAR', '报警类型', b'1', b'0', 4, 'String', 'type', 'infra_operate_type', '1', b'1', b'1', b'1', '=', b'1', 'select', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2542, 191, 'trigger', 'VARCHAR', '触发条件', b'1', b'0', 5, 'String', 'trigger', '', NULL, b'1', b'1', b'1', 'LIKE', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2543, 191, 'receive_user_ids', 'VARCHAR', '接收用户数组', b'1', b'0', 6, 'String', 'receiveUserIds', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2544, 191, 'notification_way', 'VARCHAR', '通知方式', b'1', b'0', 7, 'String', 'notificationWay', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2545, 191, 'status', 'TINYINT', '配置状态(默认NULL)', b'1', b'0', 8, 'Integer', 'status', '', '2', b'1', b'1', b'1', '=', b'1', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2546, 191, 'creator', 'VARCHAR', '创建人', b'1', b'0', 9, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2547, 191, 'updater', 'VARCHAR', '更新人', b'1', b'0', 10, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2548, 191, 'create_time', 'TIMESTAMP', '创建时间', b'0', b'0', 11, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2549, 191, 'update_time', 'TIMESTAMP', '更新时间', b'0', b'0', 12, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2550, 191, 'deleted', 'BIT', '逻辑删除(0未删除 1已删除)', b'0', b'0', 13, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2551, 192, 'id', 'INTEGER', '代下单id', b'0', b'1', 1, 'Integer', 'id', '', '29589', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2552, 192, 'out_trade_no', 'VARCHAR', '外部订单号', b'1', b'0', 2, 'String', 'outTradeNo', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2553, 192, 'order_id', 'INTEGER', '关联order_id', b'1', b'0', 3, 'Integer', 'orderId', '', '20600', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2554, 192, 'agent_order_no', 'VARCHAR', '代下单业务编号', b'1', b'0', 4, 'String', 'agentOrderNo', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2555, 192, 'stores_id', 'INTEGER', '代下单门店id', b'1', b'0', 5, 'Integer', 'storesId', '', '13670', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2556, 192, 'status', 'INTEGER', '代下单状态(默认NULL)', b'1', b'0', 6, 'Integer', 'status', '', '2', b'1', b'1', b'1', '=', b'1', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2557, 192, 'resp_data', 'VARCHAR', '代下单返回数据', b'1', b'0', 7, 'String', 'respData', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2558, 192, 'creator', 'VARCHAR', '创建人', b'1', b'0', 8, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2559, 192, 'updater', 'VARCHAR', '更新人', b'1', b'0', 9, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2560, 192, 'create_time', 'TIMESTAMP', '创建时间', b'0', b'0', 10, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2561, 192, 'update_time', 'TIMESTAMP', '更新时间', b'0', b'0', 11, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2562, 192, 'deleted', 'BIT', '逻辑删除(0未删除 1已删除)', b'0', b'0', 12, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2563, 193, 'id', 'INTEGER', '报警记录id', b'0', b'1', 1, 'Integer', 'id', '', '24531', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2564, 193, 'title', 'VARCHAR', '报警名称', b'1', b'0', 2, 'String', 'title', '', NULL, b'1', b'1', b'1', 'LIKE', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2565, 193, 'type', 'VARCHAR', '报警类型', b'1', b'0', 3, 'String', 'type', 'infra_config_type', '1', b'1', b'1', b'1', '=', b'1', 'select', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2566, 193, 'member_id', 'BIGINT', '关联的会员账户id', b'1', b'0', 4, 'Long', 'memberId', '', '9150', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2567, 193, 'description', 'VARCHAR', '报警内容', b'1', b'0', 5, 'String', 'description', '', '随便', b'1', b'1', b'1', 'LIKE', b'1', 'editor', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2568, 193, 'status', 'TINYINT', '报警状态(默认NULL)', b'1', b'0', 6, 'Integer', 'status', '', '2', b'1', b'1', b'1', '=', b'1', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2569, 193, 'alarm_time', 'TIMESTAMP', '报警时间', b'1', b'0', 7, 'LocalDateTime', 'alarmTime', '', NULL, b'1', b'1', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2570, 193, 'solve_time', 'TIMESTAMP', '处理时间', b'1', b'0', 8, 'LocalDateTime', 'solveTime', '', NULL, b'1', b'1', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2571, 193, 'creator', 'VARCHAR', '创建人', b'1', b'0', 9, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2572, 193, 'updater', 'VARCHAR', '更新人', b'1', b'0', 10, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2573, 193, 'create_time', 'TIMESTAMP', '创建时间', b'0', b'0', 11, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2574, 193, 'update_time', 'TIMESTAMP', '更新时间', b'0', b'0', 12, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2575, 193, 'deleted', 'BIT', '逻辑删除(0未删除 1已删除)', b'0', b'0', 13, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2576, 194, 'id', 'INTEGER', 'id', b'0', b'1', 1, 'Integer', 'id', '', '29055', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2577, 194, 'merchant_name', 'VARCHAR', '商户名称', b'0', b'0', 2, 'String', 'merchantName', '', '李四', b'1', b'1', b'1', 'LIKE', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2578, 194, 'contact_person', 'VARCHAR', '联系人姓名', b'1', b'0', 3, 'String', 'contactPerson', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2579, 194, 'contact_email', 'VARCHAR', '联系邮箱', b'1', b'0', 4, 'String', 'contactEmail', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2580, 194, 'contact_phone', 'VARCHAR', '联系电话', b'1', b'0', 5, 'String', 'contactPhone', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2581, 194, 'address', 'VARCHAR', '商户地址', b'1', b'0', 6, 'String', 'address', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2582, 194, 'registration_date', 'TIMESTAMP', '注册日期', b'1', b'0', 7, 'LocalDateTime', 'registrationDate', '', NULL, b'1', b'1', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2583, 194, 'create_time', 'TIMESTAMP', '记录创建时间', b'1', b'0', 8, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2584, 194, 'update_time', 'TIMESTAMP', '记录更新时间', b'1', b'0', 9, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2585, 194, 'creator', 'VARCHAR', '记录创建人,目前使用 SysUser 的 id 编号', b'1', b'0', 10, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2586, 194, 'updater', 'VARCHAR', '记录更新人,目前使用 SysUser 的 id 编号', b'1', b'0', 11, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2587, 194, 'deleted', 'BIT', '是否删除,0 表示未删除,1 表示已删除', b'1', b'0', 12, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2588, 195, 'id', 'INTEGER', 'id', b'0', b'1', 1, 'Integer', 'id', '', '25314', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2589, 195, 'merchant_id', 'INTEGER', '商户id', b'0', b'0', 2, 'Integer', 'merchantId', '', '8951', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2590, 195, 'platform_id', 'INTEGER', '平台id', b'0', b'0', 3, 'Integer', 'platformId', '', '3824', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2591, 195, 'account_name', 'VARCHAR', '商户在该平台的账户名', b'0', b'0', 4, 'String', 'accountName', '', '赵六', b'1', b'1', b'1', 'LIKE', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2592, 195, 'account_password', 'VARCHAR', '加密后的账户密码', b'1', b'0', 5, 'String', 'accountPassword', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2593, 195, 'api_key', 'VARCHAR', '若平台有 API 接入,对应的 API 密钥', b'1', b'0', 6, 'String', 'apiKey', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2594, 195, 'create_time', 'TIMESTAMP', '记录创建时间', b'1', b'0', 7, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2595, 195, 'update_time', 'TIMESTAMP', '记录更新时间', b'1', b'0', 8, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2596, 195, 'creator', 'VARCHAR', '记录创建人,目前使用 SysUser 的 id 编号', b'1', b'0', 9, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2597, 195, 'updater', 'VARCHAR', '记录更新人,目前使用 SysUser 的 id 编号', b'1', b'0', 10, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2598, 195, 'deleted', 'BIT', '是否删除,0 表示未删除,1 表示已删除', b'1', b'0', 11, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2599, 196, 'id', 'INTEGER', 'id', b'0', b'1', 1, 'Integer', 'id', '', '5737', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2600, 196, 'merchant_id', 'INTEGER', '商户id', b'0', b'0', 2, 'Integer', 'merchantId', '', '27541', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2601, 196, 'platform_id', 'INTEGER', '平台id', b'0', b'0', 3, 'Integer', 'platformId', '', '15990', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2602, 196, 'create_time', 'TIMESTAMP', '记录创建时间', b'1', b'0', 4, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2603, 196, 'update_time', 'TIMESTAMP', '记录更新时间', b'1', b'0', 5, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2604, 196, 'creator', 'VARCHAR', '记录创建人,目前使用 SysUser 的 id 编号', b'1', b'0', 6, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2605, 196, 'updater', 'VARCHAR', '记录更新人,目前使用 SysUser 的 id 编号', b'1', b'0', 7, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2606, 196, 'deleted', 'BIT', '是否删除,0 表示未删除,1 表示已删除', b'1', b'0', 8, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2607, 197, 'id', 'INTEGER', 'id', b'0', b'1', 1, 'Integer', 'id', '', '602', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2608, 197, 'merchant_id', 'INTEGER', '商户id', b'0', b'0', 2, 'Integer', 'merchantId', '', '28170', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2609, 197, 'platform_id', 'INTEGER', '平台id', b'0', b'0', 3, 'Integer', 'platformId', '', '9708', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2610, 197, 'statistic_date', 'DATE', '统计日期', b'0', b'0', 4, 'LocalDate', 'statisticDate', '', NULL, b'1', b'1', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2611, 197, 'total_sales', 'DECIMAL', '当日总销售额', b'1', b'0', 5, 'BigDecimal', 'totalSales', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2612, 197, 'total_orders', 'INTEGER', '当日总订单数', b'1', b'0', 6, 'Integer', 'totalOrders', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2613, 197, 'create_time', 'TIMESTAMP', '记录创建时间', b'1', b'0', 7, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2614, 197, 'update_time', 'TIMESTAMP', '记录更新时间', b'1', b'0', 8, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2615, 197, 'creator', 'VARCHAR', '记录创建人,目前使用 SysUser 的 id 编号', b'1', b'0', 9, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2616, 197, 'updater', 'VARCHAR', '记录更新人,目前使用 SysUser 的 id 编号', b'1', b'0', 10, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2617, 197, 'deleted', 'BIT', '是否删除,0 表示未删除,1 表示已删除', b'1', b'0', 11, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2618, 198, 'id', 'INTEGER', 'id', b'0', b'1', 1, 'Integer', 'id', '', '16196', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2619, 198, 'merchant_id', 'INTEGER', '商户id', b'0', b'0', 2, 'Integer', 'merchantId', '', '1940', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2620, 198, 'platform_id', 'INTEGER', '平台id', b'0', b'0', 3, 'Integer', 'platformId', '', '21691', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2621, 198, 'status', 'VARCHAR', '状态描述,如正常、暂停、封禁', b'0', b'0', 4, 'String', 'status', '', '1', b'1', b'1', b'1', '=', b'1', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2622, 198, 'status_update_time', 'TIMESTAMP', '状态更新时间', b'1', b'0', 5, 'LocalDateTime', 'statusUpdateTime', '', NULL, b'1', b'1', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2623, 198, 'create_time', 'TIMESTAMP', '记录创建时间', b'1', b'0', 6, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2624, 198, 'update_time', 'TIMESTAMP', '记录更新时间', b'1', b'0', 7, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2625, 198, 'creator', 'VARCHAR', '记录创建人,目前使用 SysUser 的 id 编号', b'1', b'0', 8, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2626, 198, 'updater', 'VARCHAR', '记录更新人,目前使用 SysUser 的 id 编号', b'1', b'0', 9, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2627, 198, 'deleted', 'BIT', '是否删除,0 表示未删除,1 表示已删除', b'1', b'0', 10, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2628, 199, 'id', 'INTEGER', '主键ID,唯一标识订单', b'0', b'1', 1, 'Integer', 'id', '', '4680', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2629, 199, 'order_no', 'VARCHAR', '订单编号,业务唯一标识', b'0', b'0', 2, 'String', 'orderNo', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2630, 199, 'merchant_id', 'INTEGER', '商户ID,关联 merchants 表', b'0', b'0', 3, 'Integer', 'merchantId', '', '7304', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2631, 199, 'platform_id', 'INTEGER', '平台ID,关联 platforms 表', b'0', b'0', 4, 'Integer', 'platformId', '', '28720', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2632, 199, 'buyer_id', 'VARCHAR', '买家ID', b'0', b'0', 5, 'String', 'buyerId', '', '19247', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2633, 199, 'buyer_name', 'VARCHAR', '买家姓名', b'1', b'0', 6, 'String', 'buyerName', '', '赵六', b'1', b'1', b'1', 'LIKE', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2634, 199, 'buyer_phone', 'VARCHAR', '买家联系电话', b'1', b'0', 7, 'String', 'buyerPhone', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2635, 199, 'total_amount', 'DECIMAL', '订单总金额', b'0', b'0', 8, 'BigDecimal', 'totalAmount', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2636, 199, 'discount_amount', 'DECIMAL', '优惠金额', b'1', b'0', 9, 'BigDecimal', 'discountAmount', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2637, 199, 'actual_amount', 'DECIMAL', '实际支付金额', b'0', b'0', 10, 'BigDecimal', 'actualAmount', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2638, 199, 'payment_method', 'VARCHAR', '支付方式(微信/支付宝/银联等)', b'1', b'0', 11, 'String', 'paymentMethod', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2639, 199, 'payment_time', 'TIMESTAMP', '支付时间', b'1', b'0', 12, 'LocalDateTime', 'paymentTime', '', NULL, b'1', b'1', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2640, 199, 'order_status', 'VARCHAR', '订单状态(待支付/已支付/已发货/已完成/已取消)', b'0', b'0', 13, 'String', 'orderStatus', '', '2', b'1', b'1', b'1', '=', b'1', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2641, 199, 'delivery_status', 'VARCHAR', '卡密交付状态(未发货/已发货/部分发货)', b'1', b'0', 14, 'String', 'deliveryStatus', '', '2', b'1', b'1', b'1', '=', b'1', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2642, 199, 'refund_status', 'VARCHAR', '退款状态(无退款/退款中/已退款)', b'1', b'0', 15, 'String', 'refundStatus', '', '2', b'1', b'1', b'1', '=', b'1', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2643, 199, 'remark', 'VARCHAR', '订单备注', b'1', b'0', 16, 'String', 'remark', '', '你说的对', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2644, 199, 'create_time', 'TIMESTAMP', '创建时间', b'1', b'0', 17, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2645, 199, 'update_time', 'TIMESTAMP', '更新时间', b'1', b'0', 18, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2646, 199, 'creator', 'VARCHAR', '创建人ID', b'1', b'0', 19, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2647, 199, 'updater', 'VARCHAR', '更新人ID', b'1', b'0', 20, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2648, 199, 'deleted', 'BIT', '逻辑删除(0=未删除,1=已删除)', b'1', b'0', 21, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2649, 200, 'id', 'INTEGER', '主键ID,唯一标识订单商品', b'0', b'1', 1, 'Integer', 'id', '', '9225', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2650, 200, 'order_id', 'INTEGER', '订单ID', b'0', b'0', 2, 'Integer', 'orderId', '', '4618', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2651, 200, 'product_id', 'VARCHAR', '商品ID', b'0', b'0', 3, 'String', 'productId', '', '24967', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2652, 200, 'product_name', 'VARCHAR', '商品名称', b'0', b'0', 4, 'String', 'productName', '', '芋艿', b'1', b'1', b'1', 'LIKE', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2653, 200, 'product_spec', 'VARCHAR', '商品规格', b'1', b'0', 5, 'String', 'productSpec', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2654, 200, 'quantity', 'INTEGER', '购买数量', b'0', b'0', 6, 'Integer', 'quantity', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2655, 200, 'unit_price', 'DECIMAL', '单价', b'0', b'0', 7, 'BigDecimal', 'unitPrice', '', '13455', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2656, 200, 'subtotal', 'DECIMAL', '小计金额', b'0', b'0', 8, 'BigDecimal', 'subtotal', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2657, 200, 'discount_amount', 'DECIMAL', '优惠金额', b'1', b'0', 9, 'BigDecimal', 'discountAmount', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2658, 200, 'card_required', 'BIT', '是否需要卡密(1=需要,0=不需要)', b'1', b'0', 10, 'Boolean', 'cardRequired', '', NULL, b'1', b'1', b'1', '=', b'1', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2659, 200, 'card_delivery_status', 'VARCHAR', '卡密交付状态(未交付/已交付/部分交付)', b'1', b'0', 11, 'String', 'cardDeliveryStatus', '', '1', b'1', b'1', b'1', '=', b'1', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2660, 200, 'create_time', 'TIMESTAMP', '创建时间', b'1', b'0', 12, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2661, 200, 'update_time', 'TIMESTAMP', '更新时间', b'1', b'0', 13, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2662, 200, 'creator', 'VARCHAR', '创建人ID', b'1', b'0', 14, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2663, 200, 'updater', 'VARCHAR', '更新人ID', b'1', b'0', 15, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2664, 200, 'deleted', 'BIT', '逻辑删除(0=未删除,1=已删除)', b'1', b'0', 16, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2665, 201, 'id', 'INTEGER', '主键ID,自增唯一标识退款单', b'0', b'1', 1, 'Integer', 'id', '', '2889', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2666, 201, 'order_id', 'INTEGER', '关联订单表主键,标记所属订单', b'0', b'0', 2, 'Integer', 'orderId', '', '14756', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2667, 201, 'refund_no', 'VARCHAR', '退款单号,业务侧唯一退款标识', b'0', b'0', 3, 'String', 'refundNo', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2668, 201, 'reason', 'VARCHAR', '退款原因', b'0', b'0', 4, 'String', 'reason', '', '不好', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2669, 201, 'amount', 'DECIMAL', '退款金额', b'0', b'0', 5, 'BigDecimal', 'amount', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2670, 201, 'status', 'VARCHAR', '退款状态(申请中、商家审核、已退款等)', b'0', b'0', 6, 'String', 'status', '', '2', b'1', b'1', b'1', '=', b'1', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2671, 201, 'merchant_remark', 'VARCHAR', '商户备注(如审核意见、拒绝原因等)', b'1', b'0', 7, 'String', 'merchantRemark', '', '你猜', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2672, 201, 'admin_remark', 'VARCHAR', '管理员备注(如平台介入处理意见)', b'1', b'0', 8, 'String', 'adminRemark', '', '随便', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2673, 201, 'refund_time', 'TIMESTAMP', '退款完成时间(成功退款时记录)', b'1', b'0', 9, 'LocalDateTime', 'refundTime', '', NULL, b'1', b'1', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2674, 201, 'refund_channel', 'VARCHAR', '退款渠道(如原路退回、其他方式)', b'1', b'0', 10, 'String', 'refundChannel', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2675, 201, 'refund_transaction_id', 'VARCHAR', '退款交易流水号(支付系统返回)', b'1', b'0', 11, 'String', 'refundTransactionId', '', '22526', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2676, 201, 'apply_time', 'TIMESTAMP', '退款申请时间', b'1', b'0', 12, 'LocalDateTime', 'applyTime', '', NULL, b'1', b'1', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2677, 201, 'merchant_process_time', 'TIMESTAMP', '商户处理时间', b'1', b'0', 13, 'LocalDateTime', 'merchantProcessTime', '', NULL, b'1', b'1', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2678, 201, 'admin_process_time', 'TIMESTAMP', '管理员处理时间', b'1', b'0', 14, 'LocalDateTime', 'adminProcessTime', '', NULL, b'1', b'1', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2679, 201, 'buyer_id', 'VARCHAR', '买家ID,关联用户系统', b'0', b'0', 15, 'String', 'buyerId', '', '23077', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2680, 201, 'buyer_confirm', 'BIT', '买家是否确认退款(0=未确认,1=已确认)', b'1', b'0', 16, 'Boolean', 'buyerConfirm', '', NULL, b'1', b'1', b'1', '=', b'1', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2681, 201, 'buyer_confirm_time', 'TIMESTAMP', '买家确认时间', b'1', b'0', 17, 'LocalDateTime', 'buyerConfirmTime', '', NULL, b'1', b'1', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2682, 201, 'create_time', 'TIMESTAMP', '记录创建时间', b'1', b'0', 18, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2683, 201, 'update_time', 'TIMESTAMP', '记录更新时间', b'1', b'0', 19, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2684, 201, 'creator', 'VARCHAR', '记录创建人ID', b'1', b'0', 20, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2685, 201, 'updater', 'VARCHAR', '记录更新人ID', b'1', b'0', 21, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2686, 201, 'deleted', 'BIT', '逻辑删除标记(0=未删除,1=已删除)', b'1', b'0', 22, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2687, 202, 'id', 'INTEGER', 'id', b'0', b'1', 1, 'Integer', 'id', '', '22988', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2688, 202, 'platform_name', 'VARCHAR', '平台名称,如淘宝、拼多多', b'0', b'0', 2, 'String', 'platformName', '', '王五', b'1', b'1', b'1', 'LIKE', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2689, 202, 'platform_key', 'VARCHAR', '平台标志', b'0', b'0', 3, 'String', 'platformKey', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2690, 202, 'platform_description', 'LONGVARCHAR', '平台描述信息', b'1', b'0', 4, 'String', 'platformDescription', '', '你说的对', b'1', b'1', b'1', '=', b'1', 'editor', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2691, 202, 'create_time', 'TIMESTAMP', '记录创建时间', b'1', b'0', 5, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2692, 202, 'update_time', 'TIMESTAMP', '记录更新时间', b'1', b'0', 6, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2693, 202, 'creator', 'VARCHAR', '记录创建人,目前使用 SysUser 的 id 编号', b'1', b'0', 7, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2694, 202, 'updater', 'VARCHAR', '记录更新人,目前使用 SysUser 的 id 编号', b'1', b'0', 8, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2695, 202, 'deleted', 'BIT', '是否删除,0 表示未删除,1 表示已删除', b'1', b'0', 9, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2696, 203, 'id', 'INTEGER', '平台消息id', b'0', b'1', 1, 'Integer', 'id', '', '13191', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2697, 203, 'platform_id', 'INTEGER', '平台id', b'1', b'0', 2, 'Integer', 'platformId', '', '30262', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2698, 203, 'message', 'LONGVARCHAR', '平台消息内容', b'1', b'0', 3, 'String', 'message', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2699, 203, 'creator', 'VARCHAR', '创建人', b'1', b'0', 4, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2700, 203, 'updater', 'VARCHAR', '更新人', b'1', b'0', 5, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2701, 203, 'create_time', 'TIMESTAMP', '创建时间', b'0', b'0', 6, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2702, 203, 'update_time', 'TIMESTAMP', '更新时间', b'0', b'0', 7, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2703, 203, 'deleted', 'BIT', '逻辑删除(0未删除 1已删除)', b'0', b'0', 8, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2704, 204, 'id', 'INTEGER', '交易记录id', b'0', b'1', 1, 'Integer', 'id', '', '29548', b'0', b'1', b'0', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2705, 204, 'member_id', 'INTEGER', '关联会员用户id', b'0', b'0', 2, 'Integer', 'memberId', '', '10267', b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2706, 204, 'trade_type', 'VARCHAR', '交易类型(如充值,提现,消费)', b'1', b'0', 3, 'String', 'tradeType', '', '1', b'1', b'1', b'1', '=', b'1', 'select', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2707, 204, 'trade_amount', 'DECIMAL', '交易金额', b'0', b'0', 4, 'BigDecimal', 'tradeAmount', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2708, 204, 'trade_time', 'TIMESTAMP', '交易时间', b'0', b'0', 5, 'LocalDateTime', 'tradeTime', '', NULL, b'1', b'1', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2709, 204, 'trade_desc', 'VARCHAR', '交易详情描述', b'1', b'0', 6, 'String', 'tradeDesc', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2710, 204, 'creator', 'VARCHAR', '创建人', b'1', b'0', 7, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2711, 204, 'updater', 'VARCHAR', '更新人', b'1', b'0', 8, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2712, 204, 'create_time', 'TIMESTAMP', '创建时间', b'0', b'0', 9, 'LocalDateTime', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2713, 204, 'update_time', 'TIMESTAMP', '更新时间', b'0', b'0', 10, 'LocalDateTime', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_column` VALUES (2714, 204, 'deleted', 'BIT', '逻辑删除(0未删除 1已删除)', b'0', b'0', 11, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); -- ---------------------------- -- Table structure for infra_codegen_table @@ -222,11 +409,25 @@ CREATE TABLE `infra_codegen_table` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 191 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '代码生成表定义' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 205 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '代码生成表定义' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of infra_codegen_table -- ---------------------------- +INSERT INTO `infra_codegen_table` VALUES (191, 0, 1, 'sq_alarm_config', '报警配置表', NULL, 'kfc', 'alarmconfig', 'AlarmConfig', '报警配置', 'kfc', 1, 20, 5014, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:24:33', b'0'); +INSERT INTO `infra_codegen_table` VALUES (192, 0, 1, 'sq_agent_order', '代下单信息表', NULL, 'sq', 'agentorder', 'AgentOrder', '代下单信息', '芋道源码', 1, 20, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_table` VALUES (193, 0, 1, 'sq_alarm_record', '报警信息表', NULL, 'kfc', 'alarmrecord', 'AlarmRecord', '报警信息', 'kfc', 1, 20, 5015, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 10:07:28', b'0'); +INSERT INTO `infra_codegen_table` VALUES (194, 0, 1, 'sq_merchant', '商户基本信息表', NULL, 'sq', 'merchant', 'Merchant', '商户基本信息', '芋道源码', 1, 20, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_table` VALUES (195, 0, 1, 'sq_merchant_accounts', '商户账户信息表', NULL, 'sq', 'merchantaccounts', 'MerchantAccounts', '商户账户信息', '芋道源码', 1, 20, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_table` VALUES (196, 0, 1, 'sq_merchant_platform', '商户平台中间表', NULL, 'sq', 'merchantplatform', 'MerchantPlatform', '商户平台中间', '芋道源码', 1, 20, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_table` VALUES (197, 0, 1, 'sq_merchant_statistics', '商户运营统计表', NULL, 'sq', 'merchantstatistics', 'MerchantStatistics', '商户运营统计', '芋道源码', 1, 20, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_table` VALUES (198, 0, 1, 'sq_merchant_status', '平台商户状态表', NULL, 'sq', 'merchantstatus', 'MerchantStatus', '平台商户状态', '芋道源码', 1, 20, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_table` VALUES (199, 0, 1, 'sq_order', '订单信息表', NULL, 'sq', 'order', 'Order', '订单信息', '芋道源码', 1, 20, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_table` VALUES (200, 0, 1, 'sq_order_items', '订单商品明细表', NULL, 'sq', 'orderitems', 'OrderItems', '订单商品明细', '芋道源码', 1, 20, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_table` VALUES (201, 0, 1, 'sq_order_refunds', '订单退款申请表', NULL, 'sq', 'orderrefunds', 'OrderRefunds', '订单退款申请', '芋道源码', 1, 20, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_table` VALUES (202, 0, 1, 'sq_platform', '平台信息表', NULL, 'sq', 'platform', 'Platform', '平台信息', '芋道源码', 1, 20, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_table` VALUES (203, 0, 1, 'sq_platform_message', '平台消息表', NULL, 'sq', 'platformmessage', 'PlatformMessage', '平台消息', '芋道源码', 1, 20, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); +INSERT INTO `infra_codegen_table` VALUES (204, 0, 1, 'sq_trade_log', '交易记录表', NULL, 'sq', 'tradelog', 'TradeLog', '交易记录', '芋道源码', 1, 20, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2025-07-25 09:59:13', '1', '2025-07-25 09:59:13', b'0'); -- ---------------------------- -- Table structure for infra_config @@ -834,13 +1035,14 @@ CREATE TABLE `sq_agent_order` ( -- ---------------------------- DROP TABLE IF EXISTS `sq_alarm_config`; CREATE TABLE `sq_alarm_config` ( - `id` int NOT NULL AUTO_INCREMENT COMMENT '报警配置id', + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '报警配置id', `title` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '报警名称', + `alarm_level` int NULL DEFAULT NULL COMMENT '报警等级(严重程度)', `description` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '报警描述', `type` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '报警类型', - `trigger` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '触发条件', + `trigger_condition` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '触发条件', `receive_user_ids` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '接收用户数组', - `notification_way` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '通知方式', + `notification_way` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '通知方式', `status` tinyint NULL DEFAULT NULL COMMENT '配置状态(默认NULL)', `creator` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '创建人', `updater` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '更新人', @@ -848,11 +1050,13 @@ CREATE TABLE `sq_alarm_config` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除(0未删除 1已删除)', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = '报警配置表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = '报警配置表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of sq_alarm_config -- ---------------------------- +INSERT INTO `sq_alarm_config` VALUES (1, '异地登录', NULL, '账号异地登陆了', '1', '异地登陆就触发', '1,2,3', 'SMS, MAIL', 2, '1', '1', '2025-07-25 11:17:36', '2025-07-25 14:15:53', b'0'); +INSERT INTO `sq_alarm_config` VALUES (5, '异地登录', NULL, '账号异地登陆了', '1', 'OTHER_ADDRESS_LOGIN', '11,12,31', 'SMS,MAIL', 2, '1', '1', '2025-07-25 14:15:23', '2025-07-25 14:15:23', b'0'); -- ---------------------------- -- Table structure for sq_alarm_record @@ -867,17 +1071,21 @@ CREATE TABLE `sq_alarm_record` ( `status` tinyint NULL DEFAULT NULL COMMENT '报警状态(默认NULL)', `alarm_time` datetime NULL DEFAULT NULL COMMENT '报警时间', `solve_time` datetime NULL DEFAULT NULL COMMENT '处理时间', + `solve_result` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '处理结果', `creator` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '创建人', `updater` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '更新人', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除(0未删除 1已删除)', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = '报警信息表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = '报警信息表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of sq_alarm_record -- ---------------------------- +INSERT INTO `sq_alarm_record` VALUES (1, '异地登录报警', '1', 9150, '描述是随便写的', 2, '1970-01-01 08:00:00', '1970-01-01 08:00:00', NULL, '1', '1', '2025-07-25 10:56:00', '2025-07-25 10:56:00', b'0'); +INSERT INTO `sq_alarm_record` VALUES (2, '异地登录报警', '1', 9150, '描述是随便写的', 2, '1970-01-21 07:08:22', '1970-01-21 14:32:24', NULL, '1', '1', '2025-07-25 10:57:48', '2025-07-25 10:57:48', b'0'); +INSERT INTO `sq_alarm_record` VALUES (3, '异地登录报警', '1', 9150, '描述是随便写的', 2, '2024-08-29 11:32:22', '2025-07-03 20:06:45', NULL, '1', '1', '2025-07-25 11:00:10', '2025-07-25 11:00:10', b'0'); -- ---------------------------- -- Table structure for sq_merchant @@ -1240,7 +1448,7 @@ CREATE TABLE `system_dict_data` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3003 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典数据表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 3006 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典数据表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of system_dict_data @@ -1848,6 +2056,9 @@ INSERT INTO `system_dict_data` VALUES (2173, 32, 'KAFKA', '32', 'iot_data_bridge INSERT INTO `system_dict_data` VALUES (3000, 16, '百川智能', 'BaiChuan', 'ai_platform', 0, '', '', '', '1', '2025-03-23 12:15:46', '1', '2025-03-23 12:15:46', b'0'); INSERT INTO `system_dict_data` VALUES (3001, 50, 'Vben5.0 Ant Design Schema 模版', '40', 'infra_codegen_front_type', 0, '', '', NULL, '1', '2025-04-23 21:47:47', '1', '2025-05-02 12:01:15', b'0'); INSERT INTO `system_dict_data` VALUES (3002, 6, '支付宝余额', '6', 'brokerage_withdraw_type', 0, '', '', 'API 打款', '1', '2025-05-10 08:24:49', '1', '2025-05-10 08:24:49', b'0'); +INSERT INTO `system_dict_data` VALUES (3003, 1, '异地登录', '1', 'alarm_type', 0, '', '', '', '1', '2025-07-25 10:42:46', '1', '2025-07-25 10:42:46', b'0'); +INSERT INTO `system_dict_data` VALUES (3004, 2, '异常下线', '2', 'alarm_type', 0, '', '', '', '1', '2025-07-25 10:42:58', '1', '2025-07-25 10:42:58', b'0'); +INSERT INTO `system_dict_data` VALUES (3005, 3, '余额不足', '3', 'alarm_type', 0, '', '', '', '1', '2025-07-25 10:43:07', '1', '2025-07-25 10:43:07', b'0'); -- ---------------------------- -- Table structure for system_dict_type @@ -1866,7 +2077,7 @@ CREATE TABLE `system_dict_type` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `deleted_time` datetime NULL DEFAULT NULL COMMENT '删除时间', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2000 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典类型表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 2001 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典类型表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of system_dict_type @@ -1978,6 +2189,7 @@ INSERT INTO `system_dict_type` VALUES (1010, 'IoT 插件类型', 'iot_plugin_typ INSERT INTO `system_dict_type` VALUES (1011, 'IoT 物模型单位', 'iot_thing_model_unit', 0, '', '1', '2024-12-25 17:36:46', '1', '2025-03-17 09:25:35', b'0', '1970-01-01 00:00:00'); INSERT INTO `system_dict_type` VALUES (1012, 'IoT 数据桥接的方向枚举', 'iot_data_bridge_direction_enum', 0, '', '1', '2025-03-09 12:37:40', '1', '2025-03-17 09:25:39', b'0', '1970-01-01 00:00:00'); INSERT INTO `system_dict_type` VALUES (1013, 'IoT 数据桥梁的类型枚举', 'iot_data_bridge_type_enum', 0, '', '1', '2025-03-09 12:39:36', '1', '2025-04-06 17:09:46', b'0', '1970-01-01 00:00:00'); +INSERT INTO `system_dict_type` VALUES (2000, '报警类型', 'alarm_type', 0, '', '1', '2025-07-25 10:41:26', '1', '2025-07-25 10:41:26', b'0', '1970-01-01 00:00:00'); -- ---------------------------- -- Table structure for system_login_log @@ -2000,11 +2212,12 @@ CREATE TABLE `system_login_log` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3822 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统访问记录' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 3823 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统访问记录' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of system_login_log -- ---------------------------- +INSERT INTO `system_login_log` VALUES (3822, 100, '', 1, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36', NULL, '2025-07-25 09:58:15', NULL, '2025-07-25 09:58:15', b'0', 0); -- ---------------------------- -- Table structure for system_mail_account @@ -2123,7 +2336,7 @@ CREATE TABLE `system_menu` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5013 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '菜单权限表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 5016 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '菜单权限表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of system_menu @@ -3039,6 +3252,9 @@ INSERT INTO `system_menu` VALUES (5009, '仪表盘设计器', '', 2, 1, 1281, 'j INSERT INTO `system_menu` VALUES (5010, '租户切换', 'system:tenant:visit', 3, 999, 1138, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-05-05 15:25:32', '1', '2025-05-05 15:25:32', b'0'); INSERT INTO `system_menu` VALUES (5011, '转账订单查询', 'pay:transfer:query', 3, 1, 2559, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-05-08 12:46:53', '1', '2025-05-08 12:46:53', b'0'); INSERT INTO `system_menu` VALUES (5012, '转账订单导出', 'pay:transfer:export', 3, 2, 2559, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-05-10 17:00:28', '1', '2025-05-10 17:00:28', b'0'); +INSERT INTO `system_menu` VALUES (5013, '报警管理', '', 1, 1, 0, '/kfc/alarm', 'ep:warning-filled', '', '', 0, b'1', b'1', b'1', '1', '2025-07-25 10:03:30', '1', '2025-07-25 10:03:30', b'0'); +INSERT INTO `system_menu` VALUES (5014, '报警配置', '', 2, 1, 5013, 'kfc/alarmConfig/index', 'fa-solid:tools', 'kfc/alarmConfig/index', 'AlarmHome', 0, b'1', b'1', b'1', '1', '2025-07-25 10:04:45', '1', '2025-07-25 10:05:24', b'0'); +INSERT INTO `system_menu` VALUES (5015, '报警信息', '', 2, 2, 5013, 'kfc/alarmInfo/index', 'ep:info-filled', 'kfc/alarmInfo/index', 'AlarmInfoHome', 0, b'1', b'1', b'1', '1', '2025-07-25 10:06:21', '1', '2025-07-25 10:06:35', b'0'); -- ---------------------------- -- Table structure for system_notice @@ -3153,11 +3369,20 @@ CREATE TABLE `system_oauth2_access_token` ( PRIMARY KEY (`id`) USING BTREE, INDEX `idx_access_token`(`access_token` ASC) USING BTREE, INDEX `idx_refresh_token`(`refresh_token` ASC) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 16697 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 访问令牌' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 16706 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 访问令牌' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of system_oauth2_access_token -- ---------------------------- +INSERT INTO `system_oauth2_access_token` VALUES (16697, 1, 2, '{\"nickname\":\"芋道源码\",\"deptId\":\"103\"}', 'd81ceb3750da4a8fbebef179c12689ff', 'b66cd4b225a24778badab9941a50c1b5', 'default', NULL, '2025-07-25 10:28:16', NULL, '2025-07-25 09:58:16', NULL, '2025-07-25 10:29:00', b'1', 0); +INSERT INTO `system_oauth2_access_token` VALUES (16698, 1, 2, '{\"nickname\":\"芋道源码\",\"deptId\":\"103\"}', '377b1961c1214f5f80882559305fcbca', 'b66cd4b225a24778badab9941a50c1b5', 'default', NULL, '2025-07-25 10:59:00', NULL, '2025-07-25 10:29:00', NULL, '2025-07-25 10:59:00', b'1', 0); +INSERT INTO `system_oauth2_access_token` VALUES (16699, 1, 2, '{\"nickname\":\"芋道源码\",\"deptId\":\"103\"}', '49b409ce7f684fc0b50f48303ca424ab', 'b66cd4b225a24778badab9941a50c1b5', 'default', NULL, '2025-07-25 11:29:00', NULL, '2025-07-25 10:59:00', NULL, '2025-07-25 11:30:24', b'1', 0); +INSERT INTO `system_oauth2_access_token` VALUES (16700, 1, 2, '{\"nickname\":\"芋道源码\",\"deptId\":\"103\"}', '5bfdf164f03743fb88353dc4b2b52ef8', 'b66cd4b225a24778badab9941a50c1b5', 'default', NULL, '2025-07-25 12:00:24', NULL, '2025-07-25 11:30:24', NULL, '2025-07-25 12:02:19', b'1', 0); +INSERT INTO `system_oauth2_access_token` VALUES (16701, 1, 2, '{\"nickname\":\"芋道源码\",\"deptId\":\"103\"}', '38d153bea633456083a2403e79d6d65c', 'b66cd4b225a24778badab9941a50c1b5', 'default', NULL, '2025-07-25 12:32:19', NULL, '2025-07-25 12:02:19', NULL, '2025-07-25 12:33:00', b'1', 0); +INSERT INTO `system_oauth2_access_token` VALUES (16702, 1, 2, '{\"nickname\":\"芋道源码\",\"deptId\":\"103\"}', '2bbdd1daad894595ac216aa62bb26d3f', 'b66cd4b225a24778badab9941a50c1b5', 'default', NULL, '2025-07-25 13:03:00', NULL, '2025-07-25 12:33:00', NULL, '2025-07-25 13:03:00', b'1', 0); +INSERT INTO `system_oauth2_access_token` VALUES (16703, 1, 2, '{\"nickname\":\"芋道源码\",\"deptId\":\"103\"}', '57533d0753744868903789e3548f8e6f', 'b66cd4b225a24778badab9941a50c1b5', 'default', NULL, '2025-07-25 13:33:00', NULL, '2025-07-25 13:03:00', NULL, '2025-07-25 13:34:19', b'1', 0); +INSERT INTO `system_oauth2_access_token` VALUES (16704, 1, 2, '{\"nickname\":\"芋道源码\",\"deptId\":\"103\"}', 'ede7cc4a68a2433387d18a0842c38792', 'b66cd4b225a24778badab9941a50c1b5', 'default', NULL, '2025-07-25 14:04:19', NULL, '2025-07-25 13:34:19', NULL, '2025-07-25 14:06:00', b'1', 0); +INSERT INTO `system_oauth2_access_token` VALUES (16705, 1, 2, '{\"nickname\":\"芋道源码\",\"deptId\":\"103\"}', 'ce5ca81cca0a4844880539a7da96ca03', 'b66cd4b225a24778badab9941a50c1b5', 'default', NULL, '2025-07-25 14:36:00', NULL, '2025-07-25 14:06:00', NULL, '2025-07-25 14:06:00', b'0', 0); -- ---------------------------- -- Table structure for system_oauth2_approve @@ -3267,11 +3492,12 @@ CREATE TABLE `system_oauth2_refresh_token` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2036 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 刷新令牌' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 2037 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 刷新令牌' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of system_oauth2_refresh_token -- ---------------------------- +INSERT INTO `system_oauth2_refresh_token` VALUES (2036, 1, 'b66cd4b225a24778badab9941a50c1b5', 2, 'default', NULL, '2025-08-24 09:58:15', NULL, '2025-07-25 09:58:15', NULL, '2025-07-25 09:58:15', b'0', 0); -- ---------------------------- -- Table structure for system_operate_log @@ -4625,7 +4851,7 @@ CREATE TABLE `system_users` ( -- ---------------------------- -- Records of system_users -- ---------------------------- -INSERT INTO `system_users` VALUES (1, 'admin', '$2a$04$KljJDa/LK7QfDm0lF5OhuePhlPfjRH3tB2Wu351Uidz.oQGJXevPi', '芋道源码', '管理员', 103, '[1,2]', '11aoteman@126.com', '18818260277', 2, 'http://test.yudao.iocoder.cn/test/20250502/avatar_1746154660449.png', 0, '0:0:0:0:0:0:0:1', '2025-05-10 18:03:15', 'admin', '2021-01-05 17:03:47', NULL, '2025-05-10 18:03:15', b'0', 1); +INSERT INTO `system_users` VALUES (1, 'admin', '$2a$04$KljJDa/LK7QfDm0lF5OhuePhlPfjRH3tB2Wu351Uidz.oQGJXevPi', '芋道源码', '管理员', 103, '[1,2]', '11aoteman@126.com', '18818260277', 2, 'http://test.yudao.iocoder.cn/test/20250502/avatar_1746154660449.png', 0, '0:0:0:0:0:0:0:1', '2025-07-25 09:58:15', 'admin', '2021-01-05 17:03:47', NULL, '2025-07-25 09:58:15', b'0', 1); INSERT INTO `system_users` VALUES (100, 'yudao', '$2a$04$h.aaPKgO.odHepnk5PCsWeEwKdojFWdTItxGKfx1r0e1CSeBzsTJ6', '芋道', '不要吓我', 104, '[1]', 'yudao@iocoder.cn', '15601691300', 1, NULL, 0, '0:0:0:0:0:0:0:1', '2025-04-08 09:36:40', '', '2021-01-07 09:07:17', NULL, '2025-04-21 14:23:08', b'0', 1); INSERT INTO `system_users` VALUES (103, 'yuanma', '$2a$04$fUBSmjKCPYAUmnMzOb6qE.eZCGPhHi1JmAKclODbfS/O7fHOl2bH6', '源码', NULL, 106, NULL, 'yuanma@iocoder.cn', '15601701300', 0, NULL, 0, '0:0:0:0:0:0:0:1', '2024-08-11 17:48:12', '', '2021-01-13 23:50:35', NULL, '2025-04-21 14:23:08', b'0', 1); INSERT INTO `system_users` VALUES (104, 'test', '$2a$04$BrwaYn303hjA/6TnXqdGoOLhyHOAA0bVrAFu6.1dJKycqKUnIoRz2', '测试号', NULL, 107, '[1,2]', '111@qq.com', '15601691200', 1, NULL, 0, '0:0:0:0:0:0:0:1', '2025-03-28 20:01:16', '', '2021-01-21 02:13:53', NULL, '2025-04-21 14:23:08', b'0', 1); @@ -4809,137 +5035,3 @@ INSERT INTO `yudao_demo03_student` VALUES (5, '大黑', 2, '2023-11-13 00:00:00' INSERT INTO `yudao_demo03_student` VALUES (9, '小花', 1, '2023-11-07 00:00:00', '

哈哈哈

', '1', '2023-11-17 00:04:47', '1', '2025-04-19 10:49:04', b'0', 1); SET FOREIGN_KEY_CHECKS = 1; - --- 优惠券表(存储优惠券模板信息) -CREATE TABLE `coupon` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '优惠券ID', - `coupon_code` varchar(50) NOT NULL COMMENT '优惠券编码(唯一)', - `name` varchar(100) NOT NULL COMMENT '优惠券名称', - `type` tinyint NOT NULL COMMENT '类型:1-满减券 2-折扣券 3-固定金额券', - `face_value` decimal(10,2) NOT NULL COMMENT '面值(满减券为满减金额,折扣券为折扣率%,固定金额券为抵扣金额)', - `min_purchase` decimal(10,2) NOT NULL DEFAULT 0 COMMENT '最低消费金额(满减券必填)', - `start_time` datetime NOT NULL COMMENT '有效期开始时间', - `end_time` datetime NOT NULL COMMENT '有效期结束时间', - `total_count` int NOT NULL COMMENT '总发行量', - `remaining_count` int NOT NULL COMMENT '剩余数量', - `per_user_limit` int NOT NULL DEFAULT 1 COMMENT '每人限领数量', - `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态:0-未发布 1-已发布 2-已过期 3-已作废', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='优惠券表'; - --- 用户优惠券表(用户领取的优惠券记录) -CREATE TABLE `user_coupon` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID', - `user_id` bigint NOT NULL COMMENT '用户ID', - `coupon_id` bigint NOT NULL COMMENT '优惠券ID(关联coupon表)', - `coupon_code` varchar(50) NOT NULL COMMENT '优惠券编码', - `receive_time` datetime NOT NULL COMMENT '领取时间', - `use_status` tinyint NOT NULL DEFAULT 0 COMMENT '使用状态:0-未使用 1-已使用', - `use_time` datetime DEFAULT NULL COMMENT '使用时间', - `order_id` bigint DEFAULT NULL COMMENT '关联订单ID(已使用时必填)', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户优惠券表'; - --- 优惠券发放记录表(用于统计和追踪) -CREATE TABLE `coupon_issue_log` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID', - `coupon_id` bigint NOT NULL COMMENT '优惠券ID', - `coupon_code` varchar(50) NOT NULL COMMENT '优惠券编码', - `user_id` bigint NOT NULL COMMENT '领取用户ID', - `issue_channel` tinyint NOT NULL COMMENT '发放渠道:1-手动发放 2-活动领取 3-系统自动发放', - `issue_time` datetime NOT NULL COMMENT '发放时间', - `operator` varchar(50) DEFAULT NULL COMMENT '操作人(手动发放时必填)', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='优惠券发放记录表'; - --- 优惠券使用规则表(可选,复杂规则时使用) -CREATE TABLE `coupon_rule` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '规则ID', - `coupon_id` bigint NOT NULL COMMENT '优惠券ID', - `rule_type` tinyint NOT NULL COMMENT '规则类型:1-商品限制 2-品类限制 3-品牌限制', - `rule_value` varchar(255) NOT NULL COMMENT '规则值(商品ID/品类ID/品牌ID,多个用逗号分隔)', - `is_include` tinyint NOT NULL DEFAULT 1 COMMENT '是否包含:1-包含(仅允许使用) 0-排除(不允许使用)', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='优惠券使用规则表'; - --- 会员表(存储会员基本信息) -CREATE TABLE `member` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '会员ID', - `member_no` varchar(32) NOT NULL COMMENT '会员编号(唯一标识)', - `name` varchar(64) NOT NULL COMMENT '会员姓名', - `phone` varchar(20) DEFAULT NULL COMMENT '手机号码', - `email` varchar(64) DEFAULT NULL COMMENT '电子邮箱', - `gender` tinyint DEFAULT NULL COMMENT '性别(1-男,2-女,0-未知)', - `birthday` date DEFAULT NULL COMMENT '出生日期', - `register_time` datetime NOT NULL COMMENT '注册时间', - `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态(1-正常,0-注销,2-冻结)', - `address` varchar(255) DEFAULT NULL COMMENT '联系地址', - `avatar` varchar(255) DEFAULT NULL COMMENT '头像URL', - `last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_member_no` (`member_no`), - KEY `idx_phone` (`phone`), - KEY `idx_status` (`status`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员基本信息表'; - --- 会员卡表(存储会员卡信息,支持一会员多卡) -CREATE TABLE `member_card` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '会员卡ID', - `card_no` varchar(32) NOT NULL COMMENT '卡号(唯一)', - `member_id` bigint NOT NULL COMMENT '关联会员ID(外键)', - `card_type` tinyint NOT NULL COMMENT '卡类型(1-普通卡,2-银卡,3-金卡,4-钻石卡)', - `issue_time` datetime NOT NULL COMMENT '发卡时间', - `expire_time` datetime DEFAULT NULL COMMENT '过期时间(NULL表示永久有效)', - `balance` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '卡内余额', - `points` int NOT NULL DEFAULT 0 COMMENT '积分', - `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态(1-正常,0-过期,2-冻结,3-已注销)', - `remark` varchar(255) DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_card_no` (`card_no`), - KEY `idx_member_id` (`member_id`), - KEY `idx_status` (`status`), - KEY `idx_expire_time` (`expire_time`), - CONSTRAINT `fk_card_member` FOREIGN KEY (`member_id`) REFERENCES `member` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员卡信息表'; - --- 会员账户表(存储会员账户资金相关信息,与会员一一对应) -CREATE TABLE `member_account` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '账户ID', - `member_id` bigint NOT NULL COMMENT '关联会员ID(外键)', - `account_no` varchar(32) NOT NULL COMMENT '账户编号(唯一)', - `total_balance` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '账户总余额', - `available_balance` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '可用余额', - `frozen_balance` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '冻结余额', - `recharge_total` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '累计充值金额', - `withdraw_total` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '累计提现金额', - `create_time` datetime NOT NULL COMMENT '账户创建时间', - `last_update_time` datetime NOT NULL COMMENT '最后更新时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_account_no` (`account_no`), - UNIQUE KEY `uk_member_id` (`member_id`) COMMENT '一个会员只能有一个账户', - CONSTRAINT `fk_account_member` FOREIGN KEY (`member_id`) REFERENCES `member` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员账户表(资金账户)'; - --- 会员账号异常信息记录表(记录会员账号的异常操作或状态) -CREATE TABLE `member_account_abnormal` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID', - `member_id` bigint NOT NULL COMMENT '关联会员ID(外键)', - `abnormal_type` tinyint NOT NULL COMMENT '异常类型(1-登录异常,2-支付异常,3-异地登录,4-密码多次错误,5-账户冻结)', - `abnormal_time` datetime NOT NULL COMMENT '异常发生时间', - `ip_address` varchar(50) DEFAULT NULL COMMENT '异常操作IP地址', - `device_info` varchar(255) DEFAULT NULL COMMENT '操作设备信息', - `description` varchar(512) NOT NULL COMMENT '异常详情描述', - `handle_status` tinyint NOT NULL DEFAULT 0 COMMENT '处理状态(0-未处理,1-已处理,2-无需处理)', - `handler` varchar(64) DEFAULT NULL COMMENT '处理人', - `handle_time` datetime DEFAULT NULL COMMENT '处理时间', - `handle_remark` varchar(512) DEFAULT NULL COMMENT '处理备注', - PRIMARY KEY (`id`), - KEY `idx_member_id` (`member_id`), - KEY `idx_abnormal_time` (`abnormal_time`), - KEY `idx_handle_status` (`handle_status`), - CONSTRAINT `fk_abnormal_member` FOREIGN KEY (`member_id`) REFERENCES `member` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员账号异常信息记录表'; \ No newline at end of file diff --git a/yudao-module-kfc/pom.xml b/yudao-module-kfc/pom.xml index 871f1e9333..11d2431b34 100644 --- a/yudao-module-kfc/pom.xml +++ b/yudao-module-kfc/pom.xml @@ -35,6 +35,12 @@ cn.iocoder.boot yudao-spring-boot-starter-excel + + cn.iocoder.boot + yudao-module-system + 2.6.1-jdk8-SNAPSHOT + compile + diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmconfig/AlarmConfigController.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmconfig/AlarmConfigController.java new file mode 100644 index 0000000000..655a6586e9 --- /dev/null +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmconfig/AlarmConfigController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.vo.*; +import cn.iocoder.yudao.module.kfc.dal.dataobject.alarmconfig.AlarmConfigDO; +import cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigService; + +@Tag(name = "管理后台 - 报警配置") +@RestController +@RequestMapping("/kfc/alarm-config") +@Validated +public class AlarmConfigController { + + @Resource + private AlarmConfigService alarmConfigService; + + @PostMapping("/create") + @Operation(summary = "创建报警配置") + @PreAuthorize("@ss.hasPermission('kfc:alarm-config:create')") + public CommonResult createAlarmConfig(@Valid @RequestBody AlarmConfigSaveReqVO createReqVO) { + return success(alarmConfigService.createAlarmConfig(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新报警配置") + @PreAuthorize("@ss.hasPermission('kfc:alarm-config:update')") + public CommonResult updateAlarmConfig(@Valid @RequestBody AlarmConfigSaveReqVO updateReqVO) { + alarmConfigService.updateAlarmConfig(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除报警配置") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('kfc:alarm-config:delete')") + public CommonResult deleteAlarmConfig(@RequestParam("id") Long id) { + alarmConfigService.deleteAlarmConfig(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除报警配置") + @PreAuthorize("@ss.hasPermission('kfc:alarm-config:delete')") + public CommonResult deleteAlarmConfigList(@RequestParam("ids") List ids) { + alarmConfigService.deleteAlarmConfigListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得报警配置") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('kfc:alarm-config:query')") + public CommonResult getAlarmConfig(@RequestParam("id") Long id) { + AlarmConfigDO alarmConfig = alarmConfigService.getAlarmConfig(id); + return success(BeanUtils.toBean(alarmConfig, AlarmConfigRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得报警配置分页") + @PreAuthorize("@ss.hasPermission('kfc:alarm-config:query')") + public CommonResult> getAlarmConfigPage(@Valid AlarmConfigPageReqVO pageReqVO) { + PageResult pageResult = alarmConfigService.getAlarmConfigPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, AlarmConfigRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出报警配置 Excel") + @PreAuthorize("@ss.hasPermission('kfc:alarm-config:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportAlarmConfigExcel(@Valid AlarmConfigPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = alarmConfigService.getAlarmConfigPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "报警配置.xls", "数据", AlarmConfigRespVO.class, + BeanUtils.toBean(list, AlarmConfigRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmconfig/vo/AlarmConfigPageReqVO.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmconfig/vo/AlarmConfigPageReqVO.java new file mode 100644 index 0000000000..2f9794bfed --- /dev/null +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmconfig/vo/AlarmConfigPageReqVO.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.vo; + +import cn.iocoder.yudao.module.kfc.enums.alarm.AlarmConfigReceiveTypeEnum; +import lombok.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 报警配置分页 Request VO") +@Data +public class AlarmConfigPageReqVO extends PageParam { + + @Schema(description = "报警名称") + private String title; + + @Schema(description = "报警描述", example = "你猜") + private String description; + + @Schema(description = "报警等级(严重程度)", example = "1") + private Integer alarmLevel; + + @Schema(description = "报警类型", example = "1") + private String type; + + @Schema(description = "触发条件") + private String triggerCondition; + + @Schema(description = "接收用户数组") + private List receiveUserIds; + + @Schema(description = "通知方式") + private List notificationWay; + + @Schema(description = "配置状态(默认NULL)", example = "2") + private Integer status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmconfig/vo/AlarmConfigRespVO.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmconfig/vo/AlarmConfigRespVO.java new file mode 100644 index 0000000000..ee026e028a --- /dev/null +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmconfig/vo/AlarmConfigRespVO.java @@ -0,0 +1,60 @@ +package cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.vo; + +import cn.iocoder.yudao.module.kfc.enums.DictTypeConstants; +import cn.iocoder.yudao.module.kfc.enums.alarm.AlarmConfigReceiveTypeEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 报警配置 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AlarmConfigRespVO { + + @Schema(description = "报警配置id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14367") + @ExcelProperty("报警配置id") + private Long id; + + @Schema(description = "报警名称") + @ExcelProperty("报警名称") + private String title; + + @Schema(description = "报警描述", example = "你猜") + @ExcelProperty("报警描述") + private String description; + + @Schema(description = "报警等级(严重程度)", example = "1") + @ExcelProperty("报警等级") + private Integer alarmLevel; + + @Schema(description = "报警类型", example = "1") + @ExcelProperty(value = "报警类型", converter = DictConvert.class) + @DictFormat(DictTypeConstants.ALARM_TYPE) + private String type; + + @Schema(description = "触发条件") + @ExcelProperty("触发条件") + private String triggerCondition; + + @Schema(description = "接收用户数组") + @ExcelProperty("接收用户数组") + private List receiveUserIds; + + @Schema(description = "通知方式") + @ExcelProperty("通知方式") + private List notificationWay; + + @Schema(description = "配置状态", example = "2") + @ExcelProperty("配置状态") + private Integer status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmconfig/vo/AlarmConfigSaveReqVO.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmconfig/vo/AlarmConfigSaveReqVO.java new file mode 100644 index 0000000000..38c5fbda0f --- /dev/null +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmconfig/vo/AlarmConfigSaveReqVO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.vo; + +import cn.iocoder.yudao.framework.common.validation.InEnum; +import cn.iocoder.yudao.module.kfc.enums.alarm.AlarmConfigReceiveTypeEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 报警配置新增/修改 Request VO") +@Data +public class AlarmConfigSaveReqVO { + + @Schema(description = "报警配置id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14367") + private Long id; + + @Schema(description = "报警名称") + private String title; + + @Schema(description = "报警描述", example = "你猜") + private String description; + + @Schema(description = "报警等级(严重程度)", example = "1") + private Integer alarmLevel; + + @Schema(description = "报警类型", example = "1") + private String type; + + @Schema(description = "触发条件") + private String triggerCondition; + + @Schema(description = "接收用户数组") + private List receiveUserIds; + + @Schema(description = "通知方式") + private List notificationWay; + + @Schema(description = "配置状态", example = "2") + private Integer status; + +} \ No newline at end of file diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/AlarmRecordController.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/AlarmRecordController.java index 8f9855971a..1b05eca910 100644 --- a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/AlarmRecordController.java +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/AlarmRecordController.java @@ -41,7 +41,7 @@ public class AlarmRecordController { @PostMapping("/create") @Operation(summary = "创建报警信息") @PreAuthorize("@ss.hasPermission('kfc:alarm-record:create')") - public CommonResult createAlarmRecord(@Valid @RequestBody AlarmRecordSaveReqVO createReqVO) { + public CommonResult createAlarmRecord(@Valid @RequestBody AlarmRecordSaveReqVO createReqVO) { return success(alarmRecordService.createAlarmRecord(createReqVO)); } @@ -57,7 +57,7 @@ public class AlarmRecordController { @Operation(summary = "删除报警信息") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('kfc:alarm-record:delete')") - public CommonResult deleteAlarmRecord(@RequestParam("id") Integer id) { + public CommonResult deleteAlarmRecord(@RequestParam("id") Long id) { alarmRecordService.deleteAlarmRecord(id); return success(true); } @@ -65,8 +65,8 @@ public class AlarmRecordController { @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除报警信息") - @PreAuthorize("@ss.hasPermission('kfc:alarm-record:delete')") - public CommonResult deleteAlarmRecordList(@RequestParam("ids") List ids) { + @PreAuthorize("@ss.hasPermission('kfc:alarm-record:delete')") + public CommonResult deleteAlarmRecordList(@RequestParam("ids") List ids) { alarmRecordService.deleteAlarmRecordListByIds(ids); return success(true); } @@ -75,7 +75,7 @@ public class AlarmRecordController { @Operation(summary = "获得报警信息") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('kfc:alarm-record:query')") - public CommonResult getAlarmRecord(@RequestParam("id") Integer id) { + public CommonResult getAlarmRecord(@RequestParam("id") Long id) { AlarmRecordDO alarmRecord = alarmRecordService.getAlarmRecord(id); return success(BeanUtils.toBean(alarmRecord, AlarmRecordRespVO.class)); } diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/vo/AlarmRecordPageReqVO.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/vo/AlarmRecordPageReqVO.java index dd10270691..37e484bc82 100644 --- a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/vo/AlarmRecordPageReqVO.java +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/vo/AlarmRecordPageReqVO.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.module.kfc.controller.admin.alarmrecord.vo; +import com.alibaba.excel.annotation.ExcelProperty; import lombok.*; -import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; import org.springframework.format.annotation.DateTimeFormat; @@ -25,9 +25,12 @@ public class AlarmRecordPageReqVO extends PageParam { @Schema(description = "报警内容", example = "随便") private String description; - @Schema(description = "报警状态(默认NULL)", example = "2") + @Schema(description = "报警状态", example = "2") private Integer status; + @Schema(description = "处理结果", example = "随便") + private String solveResult; + @Schema(description = "报警时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] alarmTime; diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/vo/AlarmRecordRespVO.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/vo/AlarmRecordRespVO.java index 8236af474a..d81d2feb69 100644 --- a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/vo/AlarmRecordRespVO.java +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/vo/AlarmRecordRespVO.java @@ -1,8 +1,9 @@ package cn.iocoder.yudao.module.kfc.controller.admin.alarmrecord.vo; +import cn.iocoder.yudao.module.kfc.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.util.*; + import java.time.LocalDateTime; import com.alibaba.excel.annotation.*; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; @@ -15,7 +16,7 @@ public class AlarmRecordRespVO { @Schema(description = "报警记录id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24531") @ExcelProperty("报警记录id") - private Integer id; + private Long id; @Schema(description = "报警名称") @ExcelProperty("报警名称") @@ -23,7 +24,7 @@ public class AlarmRecordRespVO { @Schema(description = "报警类型", example = "1") @ExcelProperty(value = "报警类型", converter = DictConvert.class) - @DictFormat("infra_config_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.ALARM_TYPE) private String type; @Schema(description = "关联的会员账户id", example = "9150") @@ -34,14 +35,18 @@ public class AlarmRecordRespVO { @ExcelProperty("报警内容") private String description; - @Schema(description = "报警状态(默认NULL)", example = "2") - @ExcelProperty("报警状态(默认NULL)") + @Schema(description = "报警状态", example = "2") + @ExcelProperty("报警状态") private Integer status; @Schema(description = "报警时间") @ExcelProperty("报警时间") private LocalDateTime alarmTime; + @Schema(description = "处理结果", example = "随便") + @ExcelProperty("处理结果") + private String solveResult; + @Schema(description = "处理时间") @ExcelProperty("处理时间") private LocalDateTime solveTime; diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/vo/AlarmRecordSaveReqVO.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/vo/AlarmRecordSaveReqVO.java index a273f4dc17..d822c8b221 100644 --- a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/vo/AlarmRecordSaveReqVO.java +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/controller/admin/alarmrecord/vo/AlarmRecordSaveReqVO.java @@ -2,22 +2,25 @@ package cn.iocoder.yudao.module.kfc.controller.admin.alarmrecord.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.util.*; + +import javax.validation.Valid; import javax.validation.constraints.*; -import org.springframework.format.annotation.DateTimeFormat; + import java.time.LocalDateTime; @Schema(description = "管理后台 - 报警信息新增/修改 Request VO") @Data +@Valid public class AlarmRecordSaveReqVO { @Schema(description = "报警记录id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24531") - private Integer id; + private Long id; @Schema(description = "报警名称") private String title; @Schema(description = "报警类型", example = "1") + @NotEmpty(message = "报警类型不能为空") private String type; @Schema(description = "关联的会员账户id", example = "9150") @@ -26,9 +29,12 @@ public class AlarmRecordSaveReqVO { @Schema(description = "报警内容", example = "随便") private String description; - @Schema(description = "报警状态(默认NULL)", example = "2") + @Schema(description = "报警状态", example = "2") private Integer status; + @Schema(description = "处理结果", example = "随便") + private String solveResult; + @Schema(description = "报警时间") private LocalDateTime alarmTime; diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/dal/dataobject/alarmconfig/AlarmConfigDO.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/dal/dataobject/alarmconfig/AlarmConfigDO.java new file mode 100644 index 0000000000..0d77a3a0bc --- /dev/null +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/dal/dataobject/alarmconfig/AlarmConfigDO.java @@ -0,0 +1,72 @@ +package cn.iocoder.yudao.module.kfc.dal.dataobject.alarmconfig; + +import cn.iocoder.yudao.framework.mybatis.core.type.LongListTypeHandler; +import cn.iocoder.yudao.framework.mybatis.core.type.StringListTypeHandler; +import cn.iocoder.yudao.module.kfc.enums.alarm.AlarmConfigReceiveTypeEnum; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +import java.util.List; + +/** + * 报警配置 DO + * + * @author kfc + */ +@TableName(value = "sq_alarm_config",autoResultMap = true) +@KeySequence("sq_alarm_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AlarmConfigDO extends BaseDO { + + /** + * 报警配置id + */ + @TableId + private Long id; + /** + * 报警名称 + */ + private String title; + /** + * 报警描述 + */ + private String description; + /** + * 报警等级 + */ + private Integer alarmLevel; + /** + * 报警类型 + * + * 枚举 {@link cn.iocoder.yudao.module.kfc.enums.DictTypeConstants#ALARM_TYPE} + */ + private String type; + /** + * 触发条件 + */ + private String triggerCondition; + /** + * 接收用户数组 + */ + @TableField(typeHandler =JacksonTypeHandler.class) + private List receiveUserIds; + /** + * 通知方式 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List notificationWay; + /** + * 配置状态 + */ + private Integer status; + + +} \ No newline at end of file diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/dal/dataobject/alarmrecord/AlarmRecordDO.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/dal/dataobject/alarmrecord/AlarmRecordDO.java index 08614a52d4..df68049502 100644 --- a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/dal/dataobject/alarmrecord/AlarmRecordDO.java +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/dal/dataobject/alarmrecord/AlarmRecordDO.java @@ -1,11 +1,10 @@ package cn.iocoder.yudao.module.kfc.dal.dataobject.alarmrecord; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; + import java.time.LocalDateTime; + import com.baomidou.mybatisplus.annotation.*; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @@ -28,7 +27,7 @@ public class AlarmRecordDO extends BaseDO { * 报警记录id */ @TableId - private Integer id; + private Long id; /** * 报警名称 */ @@ -36,7 +35,7 @@ public class AlarmRecordDO extends BaseDO { /** * 报警类型 * - * 枚举 {@link TODO infra_config_type 对应的类} + * 枚举 {@link cn.iocoder.yudao.module.kfc.enums.DictTypeConstants#ALARM_TYPE} */ private String type; /** @@ -48,9 +47,13 @@ public class AlarmRecordDO extends BaseDO { */ private String description; /** - * 报警状态(默认NULL) + * 报警状态 */ private Integer status; + /** + * 处理结果 + */ + private String solveResult; /** * 报警时间 */ diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java new file mode 100644 index 0000000000..ef4591a980 --- /dev/null +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/dal/mysql/alarmconfig/AlarmConfigMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.kfc.dal.dataobject.alarmconfig.AlarmConfigDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.vo.*; + +/** + * 报警配置 Mapper + * + * @author kfc + */ +@Mapper +public interface AlarmConfigMapper extends BaseMapperX { + + default PageResult selectPage(AlarmConfigPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(AlarmConfigDO::getTitle, reqVO.getTitle()) + .likeIfPresent(AlarmConfigDO::getDescription, reqVO.getDescription()) + .eqIfPresent(AlarmConfigDO::getType, reqVO.getType()) + .likeIfPresent(AlarmConfigDO::getTriggerCondition, reqVO.getTriggerCondition()) + .eqIfPresent(AlarmConfigDO::getReceiveUserIds, reqVO.getReceiveUserIds()) + .eqIfPresent(AlarmConfigDO::getNotificationWay, reqVO.getNotificationWay()) + .eqIfPresent(AlarmConfigDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(AlarmConfigDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(AlarmConfigDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/enums/DictTypeConstants.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/enums/DictTypeConstants.java index 48a80ed51e..c328fbde53 100644 --- a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/enums/DictTypeConstants.java +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/enums/DictTypeConstants.java @@ -1,11 +1,11 @@ package cn.iocoder.yudao.module.kfc.enums; /** - * Infra 字典类型的枚举类 + * kfc 字典类型的枚举类 * * @author 芋道源码 */ public interface DictTypeConstants { - + String ALARM_TYPE = "alarm_type"; } diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/enums/ErrorCodeConstants.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/enums/ErrorCodeConstants.java index a43650414a..f262578176 100644 --- a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/enums/ErrorCodeConstants.java +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/enums/ErrorCodeConstants.java @@ -5,4 +5,9 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode; public interface ErrorCodeConstants { ErrorCode ALARM_RECORD_NOT_EXISTS = new ErrorCode(2_001_000_001, "报警信息不存在"); + + ErrorCode ALARM_CONFIG_NOT_EXISTS = new ErrorCode(2_001_000_002, "报警配置不存在"); + ErrorCode ALARM_CONFIG_EXISTS = new ErrorCode(2_001_000_102, "已存在相同类型的报警配置"); + ErrorCode CHANGE_CONFIG_TYPE_NOT_ALLOW = new ErrorCode(2_001_000_202, "报警配置类型不可更改"); + } diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/enums/alarm/AlarmConfigReceiveTypeEnum.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/enums/alarm/AlarmConfigReceiveTypeEnum.java new file mode 100644 index 0000000000..a29a447b82 --- /dev/null +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/enums/alarm/AlarmConfigReceiveTypeEnum.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.kfc.enums.alarm; + +import cn.iocoder.yudao.framework.common.core.ArrayValuable; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +import java.util.Arrays; + +/** + * IoT 告警配置的接收方式枚举 + * + * @author 芋道源码 + */ +@RequiredArgsConstructor +@Getter +public enum AlarmConfigReceiveTypeEnum implements ArrayValuable { + + SMS(1), // 短信 + MAIL(2), // 邮箱 + NOTIFY(3); // 通知 + + private final Integer type; + + public static final Integer[] ARRAYS = Arrays.stream(values()).map(AlarmConfigReceiveTypeEnum::getType).toArray(Integer[]::new); + + @Override + public Integer[] array() { + return ARRAYS; + } + +} diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmconfig/AlarmConfigService.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmconfig/AlarmConfigService.java new file mode 100644 index 0000000000..6472f8c075 --- /dev/null +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmconfig/AlarmConfigService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.kfc.service.alarmconfig; + +import java.util.*; +import javax.validation.*; +import javax.validation.constraints.NotEmpty; + +import cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.vo.*; +import cn.iocoder.yudao.module.kfc.dal.dataobject.alarmconfig.AlarmConfigDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 报警配置 Service 接口 + * + * @author kfc + */ +public interface AlarmConfigService { + + /** + * 创建报警配置 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createAlarmConfig(@Valid AlarmConfigSaveReqVO createReqVO); + + /** + * 更新报警配置 + * + * @param updateReqVO 更新信息 + */ + void updateAlarmConfig(@Valid AlarmConfigSaveReqVO updateReqVO); + + /** + * 删除报警配置 + * + * @param id 编号 + */ + void deleteAlarmConfig(Long id); + + /** + * 批量删除报警配置 + * + * @param ids 编号 + */ + void deleteAlarmConfigListByIds(List ids); + + /** + * 获得报警配置 + * + * @param id 编号 + * @return 报警配置 + */ + AlarmConfigDO getAlarmConfig(Long id); + + /** + * 获得报警配置分页 + * + * @param pageReqVO 分页查询 + * @return 报警配置分页 + */ + PageResult getAlarmConfigPage(AlarmConfigPageReqVO pageReqVO); + + AlarmConfigDO getAlarmConfigByType(@NotEmpty(message = "报警类型不能为空") String type); +} \ No newline at end of file diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmconfig/AlarmConfigServiceImpl.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmconfig/AlarmConfigServiceImpl.java new file mode 100644 index 0000000000..c18ff50e9a --- /dev/null +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmconfig/AlarmConfigServiceImpl.java @@ -0,0 +1,94 @@ +package cn.iocoder.yudao.module.kfc.service.alarmconfig; + +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import cn.iocoder.yudao.module.kfc.controller.admin.alarmconfig.vo.*; +import cn.iocoder.yudao.module.kfc.dal.dataobject.alarmconfig.AlarmConfigDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.kfc.dal.mysql.alarmconfig.AlarmConfigMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.kfc.enums.ErrorCodeConstants.*; + +/** + * 报警配置 Service 实现类 + * + * @author kfc + */ +@Service +@Validated +public class AlarmConfigServiceImpl implements AlarmConfigService { + + @Resource + private AlarmConfigMapper alarmConfigMapper; + + @Override + public Long createAlarmConfig(AlarmConfigSaveReqVO createReqVO) { + // 插入 + AlarmConfigDO alarmConfig = BeanUtils.toBean(createReqVO, AlarmConfigDO.class); + //同类配置只能有一个 + AlarmConfigDO config = getAlarmConfigByType(alarmConfig.getType()); + if (config != null) throw exception(ALARM_CONFIG_EXISTS); + //插入数据 + alarmConfigMapper.insert(alarmConfig); + + // 返回 + return alarmConfig.getId(); + } + + @Override + public void updateAlarmConfig(AlarmConfigSaveReqVO updateReqVO) { + // 校验存在 + AlarmConfigDO configDO = validateAlarmConfigExists(updateReqVO.getId()); + + if (ObjectUtil.notEqual(configDO.getType(),updateReqVO.getType())) throw exception(CHANGE_CONFIG_TYPE_NOT_ALLOW); + // 更新 + AlarmConfigDO updateObj = BeanUtils.toBean(updateReqVO, AlarmConfigDO.class); + alarmConfigMapper.updateById(updateObj); + } + + @Override + public void deleteAlarmConfig(Long id) { + // 校验存在 + validateAlarmConfigExists(id); + // 删除 + alarmConfigMapper.deleteById(id); + } + + @Override + public void deleteAlarmConfigListByIds(List ids) { + // 删除 + alarmConfigMapper.deleteByIds(ids); + } + + + private AlarmConfigDO validateAlarmConfigExists(Long id) { + AlarmConfigDO configDO = alarmConfigMapper.selectById(id); + if (configDO == null) { + throw exception(ALARM_CONFIG_NOT_EXISTS); + } + return configDO; + } + + @Override + public AlarmConfigDO getAlarmConfig(Long id) { + return alarmConfigMapper.selectById(id); + } + + @Override + public PageResult getAlarmConfigPage(AlarmConfigPageReqVO pageReqVO) { + return alarmConfigMapper.selectPage(pageReqVO); + } + + @Override + public AlarmConfigDO getAlarmConfigByType(String type) { + return alarmConfigMapper.selectOne(AlarmConfigDO::getType, type); + } +} \ No newline at end of file diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmrecord/AlarmRecordService.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmrecord/AlarmRecordService.java index 208ba2d58b..e2302828eb 100644 --- a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmrecord/AlarmRecordService.java +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmrecord/AlarmRecordService.java @@ -20,7 +20,7 @@ public interface AlarmRecordService { * @param createReqVO 创建信息 * @return 编号 */ - Integer createAlarmRecord(@Valid AlarmRecordSaveReqVO createReqVO); + Long createAlarmRecord(@Valid AlarmRecordSaveReqVO createReqVO); /** * 更新报警信息 @@ -34,14 +34,14 @@ public interface AlarmRecordService { * * @param id 编号 */ - void deleteAlarmRecord(Integer id); + void deleteAlarmRecord(Long id); /** * 批量删除报警信息 * * @param ids 编号 */ - void deleteAlarmRecordListByIds(List ids); + void deleteAlarmRecordListByIds(List ids); /** * 获得报警信息 @@ -49,7 +49,7 @@ public interface AlarmRecordService { * @param id 编号 * @return 报警信息 */ - AlarmRecordDO getAlarmRecord(Integer id); + AlarmRecordDO getAlarmRecord(Long id); /** * 获得报警信息分页 diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmrecord/AlarmRecordServiceImpl.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmrecord/AlarmRecordServiceImpl.java index bc04628c2b..d61a8d2a06 100644 --- a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmrecord/AlarmRecordServiceImpl.java +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/alarmrecord/AlarmRecordServiceImpl.java @@ -1,23 +1,25 @@ package cn.iocoder.yudao.module.kfc.service.alarmrecord; -import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.module.kfc.dal.dataobject.alarmconfig.AlarmConfigDO; +import cn.iocoder.yudao.module.kfc.enums.alarm.AlarmConfigReceiveTypeEnum; +import cn.iocoder.yudao.module.kfc.service.alarmconfig.AlarmConfigService; +import cn.iocoder.yudao.module.kfc.service.message.MessageSendService; +import cn.iocoder.yudao.module.kfc.utils.AssertUtils; +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import cn.iocoder.yudao.module.system.service.user.AdminUserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; import java.util.*; import cn.iocoder.yudao.module.kfc.controller.admin.alarmrecord.vo.*; import cn.iocoder.yudao.module.kfc.dal.dataobject.alarmrecord.AlarmRecordDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.kfc.dal.mysql.alarmrecord.AlarmRecordMapper; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList; import static cn.iocoder.yudao.module.kfc.enums.ErrorCodeConstants.*; /** @@ -32,12 +34,38 @@ public class AlarmRecordServiceImpl implements AlarmRecordService { @Resource private AlarmRecordMapper alarmRecordMapper; + @Resource + private AlarmConfigService alarmConfigService; + + @Resource + private MessageSendService messageSendService; + + @Resource + private AdminUserService adminUserService; + @Override - public Integer createAlarmRecord(AlarmRecordSaveReqVO createReqVO) { + public Long createAlarmRecord(AlarmRecordSaveReqVO createReqVO) { // 插入 AlarmRecordDO alarmRecord = BeanUtils.toBean(createReqVO, AlarmRecordDO.class); alarmRecordMapper.insert(alarmRecord); - + //查询配置 + AlarmConfigDO config = alarmConfigService.getAlarmConfigByType(createReqVO.getType()); + AssertUtils.notNull(config,ALARM_CONFIG_NOT_EXISTS); + //获取处理人ids数组 + List receiveUserIds = config.getReceiveUserIds(); + //获取通知方式数组 + List notificationWay = config.getNotificationWay(); + //todo 给所有处理人发送不同类型通知消息 + receiveUserIds.forEach(userId -> { + AdminUserDO user = adminUserService.getUser(userId); + notificationWay.forEach(way -> { + //发送消息 + Map map = new HashMap<>(); + String message =String.format("%s登陆异常", createReqVO.getMemberId()); + map.put("message", message); + messageSendService.send(way,user.getMobile(),user.getEmail(),userId,"alarm_message",map); + }); + }); // 返回 return alarmRecord.getId(); } @@ -52,7 +80,7 @@ public class AlarmRecordServiceImpl implements AlarmRecordService { } @Override - public void deleteAlarmRecord(Integer id) { + public void deleteAlarmRecord(Long id) { // 校验存在 validateAlarmRecordExists(id); // 删除 @@ -60,20 +88,20 @@ public class AlarmRecordServiceImpl implements AlarmRecordService { } @Override - public void deleteAlarmRecordListByIds(List ids) { + public void deleteAlarmRecordListByIds(List ids) { // 删除 alarmRecordMapper.deleteByIds(ids); } - private void validateAlarmRecordExists(Integer id) { + private void validateAlarmRecordExists(Long id) { if (alarmRecordMapper.selectById(id) == null) { throw exception(ALARM_RECORD_NOT_EXISTS); } } @Override - public AlarmRecordDO getAlarmRecord(Integer id) { + public AlarmRecordDO getAlarmRecord(Long id) { return alarmRecordMapper.selectById(id); } diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/message/MessageSendService.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/message/MessageSendService.java new file mode 100644 index 0000000000..295ceb3f2a --- /dev/null +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/message/MessageSendService.java @@ -0,0 +1,11 @@ +package cn.iocoder.yudao.module.kfc.service.message; + +import cn.iocoder.yudao.module.kfc.enums.alarm.AlarmConfigReceiveTypeEnum; + +import java.util.Map; + +public interface MessageSendService { + + void send(AlarmConfigReceiveTypeEnum type, String mobile, String mail, Long userId, + String templateCode, Map templateParams); +} diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/message/MessageSendServiceImpl.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/message/MessageSendServiceImpl.java new file mode 100644 index 0000000000..cd726d8f7a --- /dev/null +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/service/message/MessageSendServiceImpl.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.kfc.service.message; + +import cn.iocoder.yudao.module.kfc.enums.alarm.AlarmConfigReceiveTypeEnum; +import cn.iocoder.yudao.module.system.service.mail.MailSendService; +import cn.iocoder.yudao.module.system.service.notify.NotifySendService; +import cn.iocoder.yudao.module.system.service.sms.SmsSendService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Map; + +@Service +public class MessageSendServiceImpl implements MessageSendService { + + @Resource + private SmsSendService smsSendService; + + @Resource + private NotifySendService notifySendService; + + @Resource + private MailSendService mailSendService; + + @Override + public void send(AlarmConfigReceiveTypeEnum type, String mobile, String mail, Long userId, + String templateCode, Map templateParams) { + if (type == null) return; + switch (type) { + case SMS: + smsSendService.sendSingleSmsToAdmin(mobile,userId,templateCode,templateParams); + break; + case NOTIFY: + notifySendService.sendSingleNotifyToAdmin(userId,templateCode,templateParams); + break; + case MAIL: + mailSendService.sendSingleMailToAdmin(mail,userId,templateCode,templateParams); + break; + default: + break; + } + + } +} diff --git a/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/utils/AssertUtils.java b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/utils/AssertUtils.java new file mode 100644 index 0000000000..3d564c67d2 --- /dev/null +++ b/yudao-module-kfc/src/main/java/cn/iocoder/yudao/module/kfc/utils/AssertUtils.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.module.kfc.utils; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; + +public class AssertUtils { + + public static void notNull(Object object, ErrorCode errorCode) { + if (object == null) { + throw exception(errorCode); + } + } +} diff --git a/yudao-module-kfc/src/main/resources/mapper/alarmconfig/AlarmConfigMapper.xml b/yudao-module-kfc/src/main/resources/mapper/alarmconfig/AlarmConfigMapper.xml index ab01ac8c27..f3287738a9 100644 --- a/yudao-module-kfc/src/main/resources/mapper/alarmconfig/AlarmConfigMapper.xml +++ b/yudao-module-kfc/src/main/resources/mapper/alarmconfig/AlarmConfigMapper.xml @@ -1,12 +1,8 @@ - + + + - \ No newline at end of file diff --git a/yudao-module-kfc/src/main/resources/mapper/alarmrecord/AlarmRecordMapper.xml b/yudao-module-kfc/src/main/resources/mapper/alarmrecord/AlarmRecordMapper.xml index ab01ac8c27..7915002831 100644 --- a/yudao-module-kfc/src/main/resources/mapper/alarmrecord/AlarmRecordMapper.xml +++ b/yudao-module-kfc/src/main/resources/mapper/alarmrecord/AlarmRecordMapper.xml @@ -2,11 +2,5 @@ - \ No newline at end of file