diff --git a/kernel-s-stat/.gitignore b/kernel-s-stat/.gitignore
new file mode 100644
index 000000000..4cf5330ff
--- /dev/null
+++ b/kernel-s-stat/.gitignore
@@ -0,0 +1,40 @@
+*.class
+
+# Package Files #
+*.jar
+*.war
+*.ear
+target/
+
+# eclipse
+.settings/
+.classpath
+.project
+logs/
+
+# idea
+.idea/
+*.iml
+
+*velocity.log*
+
+### STS ###
+.apt_generated
+.factorypath
+.springBeans
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.ipr
+
+### NetBeans ###
+nbproject/private/
+build/
+nbbuild/
+dist/
+nbdist/
+.nb-gradle/
+
+*.log
+tmp/
\ No newline at end of file
diff --git a/kernel-s-stat/README.md b/kernel-s-stat/README.md
new file mode 100644
index 000000000..729c8b0d1
--- /dev/null
+++ b/kernel-s-stat/README.md
@@ -0,0 +1 @@
+# 点击统计
\ No newline at end of file
diff --git a/kernel-s-stat/pom.xml b/kernel-s-stat/pom.xml
new file mode 100644
index 000000000..8c60793ed
--- /dev/null
+++ b/kernel-s-stat/pom.xml
@@ -0,0 +1,36 @@
+
+
+ 4.0.0
+
+
+ cn.stylefeng.roses
+ roses-kernel
+ 7.6.0
+ ../pom.xml
+
+
+ kernel-s-stat
+
+ pom
+
+
+ stat-api
+ stat-business
+ stat-spring-boot-starter
+
+
+
+
+
+
+ cn.stylefeng.roses
+ kernel-a-rule
+ ${roses.version}
+
+
+
+
+
+
diff --git a/kernel-s-stat/stat-api/README.md b/kernel-s-stat/stat-api/README.md
new file mode 100644
index 000000000..27e91dc89
--- /dev/null
+++ b/kernel-s-stat/stat-api/README.md
@@ -0,0 +1 @@
+# api模块,存放接口、常量、异常、枚举等模块规则相关类
\ No newline at end of file
diff --git a/kernel-s-stat/stat-api/pom.xml b/kernel-s-stat/stat-api/pom.xml
new file mode 100644
index 000000000..ef6191226
--- /dev/null
+++ b/kernel-s-stat/stat-api/pom.xml
@@ -0,0 +1,30 @@
+
+
+ 4.0.0
+
+
+ cn.stylefeng.roses
+ kernel-s-stat
+ 7.6.0
+ ../pom.xml
+
+
+ stat-api
+
+ jar
+
+
+
+
+
+
+ cn.stylefeng.roses
+ validator-api
+ ${roses.version}
+
+
+
+
+
diff --git a/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/StatApi.java b/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/StatApi.java
new file mode 100644
index 000000000..69bcee1a7
--- /dev/null
+++ b/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/StatApi.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.stat.api;
+
+/**
+ * 点击统计Api
+ *
+ * @author fengshuonan
+ * @date 2023-05-10 10:10:15
+ */
+public interface StatApi {
+
+
+}
diff --git a/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/constants/StatConstants.java b/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/constants/StatConstants.java
new file mode 100644
index 000000000..39ce80a96
--- /dev/null
+++ b/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/constants/StatConstants.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.stat.api.constants;
+
+/**
+ * 点击统计业务
+ *
+ * @author fengshuonan
+ * @date 2023-05-10 10:10:15
+ */
+public interface StatConstants {
+
+ /**
+ * 点击统计模块名称
+ */
+ String STAT_MODULE_NAME = "kernel-s-stat";
+
+ /**
+ * 异常枚举的步进值
+ */
+ String STAT_EXCEPTION_STEP_CODE = "99";
+
+}
diff --git a/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/enums/DemoEnum.java b/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/enums/DemoEnum.java
new file mode 100644
index 000000000..60ab2b5bf
--- /dev/null
+++ b/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/enums/DemoEnum.java
@@ -0,0 +1,33 @@
+package cn.stylefeng.roses.kernel.stat.api.enums;
+
+import lombok.Getter;
+
+/**
+ * 一个示例
+ *
+ * @author fengshuonan
+ * @date 2023-05-10 10:10:15
+ */
+@Getter
+public enum DemoEnum {
+
+ /**
+ * markdown格式
+ */
+ MARKDOWN(1, "markdown格式"),
+
+ /**
+ * 富文本格式
+ */
+ TEXT(2, "富文本格式");
+
+ private final Integer code;
+
+ private final String message;
+
+ DemoEnum(Integer code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+}
diff --git a/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/exception/StatException.java b/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/exception/StatException.java
new file mode 100644
index 000000000..316f968c1
--- /dev/null
+++ b/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/exception/StatException.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.stat.api.exception;
+
+import cn.hutool.core.util.StrUtil;
+import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum;
+import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
+import cn.stylefeng.roses.kernel.stat.api.constants.StatConstants;
+
+/**
+ * 点击统计异常
+ *
+ * @author fengshuonan
+ * @date 2023-05-10 10:10:15
+ */
+public class StatException extends ServiceException {
+
+ public StatException(AbstractExceptionEnum exception, Object... params) {
+ super(StatConstants.STAT_MODULE_NAME, exception.getErrorCode(), StrUtil.format(exception.getUserTip(), params));
+ }
+
+ public StatException(AbstractExceptionEnum exception) {
+ super(StatConstants.STAT_MODULE_NAME, exception);
+ }
+
+}
diff --git a/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/exception/enums/StatExceptionEnum.java b/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/exception/enums/StatExceptionEnum.java
new file mode 100644
index 000000000..7bb2430ca
--- /dev/null
+++ b/kernel-s-stat/stat-api/src/main/java/cn/stylefeng/roses/kernel/stat/api/exception/enums/StatExceptionEnum.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.stat.api.exception.enums;
+
+import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
+import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum;
+import cn.stylefeng.roses.kernel.stat.api.constants.StatConstants;
+import lombok.Getter;
+
+/**
+ * 点击统计的异常枚举
+ *
+ * @author fengshuonan
+ * @date 2023-05-10 10:10:15
+ */
+@Getter
+public enum StatExceptionEnum implements AbstractExceptionEnum {
+
+ /**
+ * 查询不到对应点击统计
+ */
+ CANT_FIND_STAT(RuleConstants.BUSINESS_ERROR_TYPE_CODE + StatConstants.STAT_EXCEPTION_STEP_CODE + "01", "查询不到对应点击统计,具体信息:{}");
+
+ /**
+ * 错误编码
+ */
+ private final String errorCode;
+
+ /**
+ * 提示用户信息
+ */
+ private final String userTip;
+
+ StatExceptionEnum(String errorCode, String userTip) {
+ this.errorCode = errorCode;
+ this.userTip = userTip;
+ }
+
+}
diff --git a/kernel-s-stat/stat-business/README.md b/kernel-s-stat/stat-business/README.md
new file mode 100644
index 000000000..7a3f68b56
--- /dev/null
+++ b/kernel-s-stat/stat-business/README.md
@@ -0,0 +1 @@
+# 业务模块-存放CRUD相关业务
\ No newline at end of file
diff --git a/kernel-s-stat/stat-business/pom.xml b/kernel-s-stat/stat-business/pom.xml
new file mode 100644
index 000000000..a153d862b
--- /dev/null
+++ b/kernel-s-stat/stat-business/pom.xml
@@ -0,0 +1,51 @@
+
+
+ 4.0.0
+
+
+ cn.stylefeng.roses
+ kernel-s-stat
+ 7.6.0
+ ../pom.xml
+
+
+ stat-business
+
+ jar
+
+
+
+
+
+ cn.stylefeng.roses
+ stat-api
+ ${roses.version}
+
+
+
+
+
+ cn.stylefeng.roses
+ scanner-api
+ ${roses.version}
+
+
+
+
+
+ cn.stylefeng.roses
+ db-sdk-mp
+ ${roses.version}
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+
diff --git a/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/controller/package-info.java b/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/controller/package-info.java
new file mode 100644
index 000000000..161eca449
--- /dev/null
+++ b/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/controller/package-info.java
@@ -0,0 +1 @@
+package cn.stylefeng.roses.kernel.stat.modular.controller;
\ No newline at end of file
diff --git a/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/entity/package-info.java b/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/entity/package-info.java
new file mode 100644
index 000000000..b828a0f39
--- /dev/null
+++ b/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/entity/package-info.java
@@ -0,0 +1 @@
+package cn.stylefeng.roses.kernel.stat.modular.entity;
\ No newline at end of file
diff --git a/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/enums/package-info.java b/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/enums/package-info.java
new file mode 100644
index 000000000..57f4b40e2
--- /dev/null
+++ b/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/enums/package-info.java
@@ -0,0 +1 @@
+package cn.stylefeng.roses.kernel.stat.modular.enums;
\ No newline at end of file
diff --git a/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/mapper/package-info.java b/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/mapper/package-info.java
new file mode 100644
index 000000000..f0b1dac2f
--- /dev/null
+++ b/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/mapper/package-info.java
@@ -0,0 +1 @@
+package cn.stylefeng.roses.kernel.stat.modular.mapper;
\ No newline at end of file
diff --git a/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/pojo/package-info.java b/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/pojo/package-info.java
new file mode 100644
index 000000000..3cebed68d
--- /dev/null
+++ b/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/pojo/package-info.java
@@ -0,0 +1 @@
+package cn.stylefeng.roses.kernel.stat.modular.pojo;
\ No newline at end of file
diff --git a/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/service/package-info.java b/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/service/package-info.java
new file mode 100644
index 000000000..a35663d73
--- /dev/null
+++ b/kernel-s-stat/stat-business/src/main/java/cn/stylefeng/roses/kernel/stat/modular/service/package-info.java
@@ -0,0 +1 @@
+package cn.stylefeng.roses.kernel.stat.modular.service;
\ No newline at end of file
diff --git a/kernel-s-stat/stat-spring-boot-starter/README.md b/kernel-s-stat/stat-spring-boot-starter/README.md
new file mode 100644
index 000000000..ab408c724
--- /dev/null
+++ b/kernel-s-stat/stat-spring-boot-starter/README.md
@@ -0,0 +1,2 @@
+# Spring Boot自动装配
+
diff --git a/kernel-s-stat/stat-spring-boot-starter/pom.xml b/kernel-s-stat/stat-spring-boot-starter/pom.xml
new file mode 100644
index 000000000..8e3019c82
--- /dev/null
+++ b/kernel-s-stat/stat-spring-boot-starter/pom.xml
@@ -0,0 +1,29 @@
+
+
+ 4.0.0
+
+
+ cn.stylefeng.roses
+ kernel-s-stat
+ 7.6.0
+ ../pom.xml
+
+
+ stat-spring-boot-starter
+
+ jar
+
+
+
+
+
+ cn.stylefeng.roses
+ stat-business
+ ${roses.version}
+
+
+
+
+
diff --git a/kernel-s-stat/stat-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/stat/starter/StatAutoConfiguration.java b/kernel-s-stat/stat-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/stat/starter/StatAutoConfiguration.java
new file mode 100644
index 000000000..a165ed1ca
--- /dev/null
+++ b/kernel-s-stat/stat-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/stat/starter/StatAutoConfiguration.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.stat.starter;
+
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 点击统计自动装配
+ *
+ * @author fengshuonan
+ * @date 2023-05-10 10:10:15
+ */
+@Configuration
+public class StatAutoConfiguration {
+
+}
diff --git a/kernel-s-stat/stat-spring-boot-starter/src/main/resources/META-INF/spring.factories b/kernel-s-stat/stat-spring-boot-starter/src/main/resources/META-INF/spring.factories
new file mode 100644
index 000000000..d4e225607
--- /dev/null
+++ b/kernel-s-stat/stat-spring-boot-starter/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,2 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+ cn.stylefeng.roses.kernel.stat.starter.StatAutoConfiguration
diff --git a/pom.xml b/pom.xml
index 3345a8c46..d49c432fc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -70,6 +70,9 @@
kernel-d-sms
+
+ kernel-d-socket
+
kernel-d-timer
@@ -97,12 +100,12 @@
kernel-s-message
+
+ kernel-s-stat
+
kernel-s-system
-
- kernel-d-socket
-