diff --git a/.gitignore b/.gitignore
index 9154f4c..4b9bac1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,8 @@
# Mobile Tools for Java (J2ME)
.mtj.tmp/
+.idea
+target
# Package Files #
*.jar
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..d71d0e9
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,126 @@
+
+
+ 4.0.0
+
+ com.metis
+ metis
+ 1.0.0-SNAPSHOT
+
+
+ 17
+ 17
+ UTF-8
+ 3.3.4
+ 2.0.45
+ 1.18.34
+ 1.2.3
+ 1.0.0-beta2
+ 3.5.8
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring-boot.vserion}
+ pom
+ import
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ dev.langchain4j
+ langchain4j-open-ai
+ ${langchain4j.version}
+
+
+ dev.langchain4j
+ langchain4j-mcp
+ 1.0.0-beta2
+
+
+ com.alibaba.fastjson2
+ fastjson2
+ ${fastjson.version}
+
+
+ org.projectlombok
+ lombok
+
+
+ com.mikesamuel
+ json-sanitizer
+ ${sanitizer.version}
+
+
+ com.baomidou
+ mybatis-plus-spring-boot3-starter
+ ${mybatis-plus.version}
+
+
+ mysql
+ mysql-connector-java
+ 8.0.33
+
+
+ cn.hutool
+ hutool-all
+ 5.8.22
+
+
+ org.mapstruct
+ mapstruct
+ 1.6.2
+
+
+ org.projectlombok
+ lombok-mapstruct-binding
+ 0.2.0
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ 17
+ 17
+
+
+ org.mapstruct
+ mapstruct-processor
+ 1.6.2
+
+
+ org.projectlombok
+ lombok
+ 1.18.34
+
+
+ org.projectlombok
+ lombok-mapstruct-binding
+ 0.2.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/metis/MetisApplication.java b/src/main/java/com/metis/MetisApplication.java
new file mode 100644
index 0000000..b083632
--- /dev/null
+++ b/src/main/java/com/metis/MetisApplication.java
@@ -0,0 +1,15 @@
+package com.metis;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+
+@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
+public class MetisApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(MetisApplication.class, args);
+ }
+
+
+}
diff --git a/src/main/java/com/metis/controller/TestController.java b/src/main/java/com/metis/controller/TestController.java
new file mode 100644
index 0000000..53dbd80
--- /dev/null
+++ b/src/main/java/com/metis/controller/TestController.java
@@ -0,0 +1,18 @@
+package com.metis.controller;
+
+import com.metis.result.Result;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/test")
+public class TestController {
+
+
+ @GetMapping
+ public Result test() {
+ return Result.ok("测试成功");
+ }
+
+}
diff --git a/src/main/java/com/metis/domain/BaseEntity.java b/src/main/java/com/metis/domain/BaseEntity.java
new file mode 100644
index 0000000..de02d39
--- /dev/null
+++ b/src/main/java/com/metis/domain/BaseEntity.java
@@ -0,0 +1,45 @@
+package com.metis.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author Clay
+ * @date 2022/10/30
+ */
+@Data
+public class BaseEntity implements Serializable {
+
+ /**
+ * 创建者
+ */
+// private Object createBy;
+
+ /**
+ * 创建时间
+ */
+ @JsonFormat(locale = "zh",timezone = "GMT+8",pattern = "yyyy-MM-dd")
+ private LocalDateTime createTime;
+
+ /**
+ * 更新者
+ */
+// private Object updateBy;
+
+ /**
+ * 更新时间
+ */
+ @JsonFormat(locale = "zh",timezone = "GMT+8",pattern = "yyyy-MM-dd")
+ private LocalDateTime updateTime;
+
+
+ /**
+ * 逻辑删除字段
+ */
+ private Boolean isDeleted;
+
+
+}
diff --git a/src/main/java/com/metis/domain/package-info.java b/src/main/java/com/metis/domain/package-info.java
new file mode 100644
index 0000000..8890ae6
--- /dev/null
+++ b/src/main/java/com/metis/domain/package-info.java
@@ -0,0 +1 @@
+package com.metis.domain;
\ No newline at end of file
diff --git a/src/main/java/com/metis/enums/BaseEnum.java b/src/main/java/com/metis/enums/BaseEnum.java
new file mode 100644
index 0000000..71c42b3
--- /dev/null
+++ b/src/main/java/com/metis/enums/BaseEnum.java
@@ -0,0 +1,59 @@
+package com.metis.enums;
+
+import com.baomidou.mybatisplus.annotation.IEnum;
+
+import java.util.Arrays;
+
+public interface BaseEnum> extends IEnum {
+
+ /**
+ * 获取编码
+ *
+ * @return {@link Integer}
+ */
+ Integer getCode();
+
+ /**
+ * 获取名称
+ *
+ * @return {@link String}
+ */
+ String getName();
+
+ /**
+ * 获取value值
+ *
+ * @return {@link Integer}
+ */
+ @Override
+ default Integer getValue() {
+ return getCode();
+ }
+ /**
+ * 解析通过编码
+ *
+ * @param enumClass 枚举班
+ * @param code 编码
+ * @return {@link E}
+ */
+ static & BaseEnum> E parseByCode(Class enumClass, Integer code) {
+ return Arrays.stream(enumClass.getEnumConstants())
+ .filter(e -> e.getCode().equals(code))
+ .findFirst()
+ .orElse(null);
+ }
+
+ /**
+ * 按名称解析
+ *
+ * @param enumClass 枚举班
+ * @param name 名称
+ * @return {@link E}
+ */
+ static & BaseEnum> E parseByName(Class enumClass, String name) {
+ return Arrays.stream(enumClass.getEnumConstants())
+ .filter(e -> e.getName().equals(name))
+ .findFirst()
+ .orElse(null);
+ }
+}
diff --git a/src/main/java/com/metis/enums/ResultEnum.java b/src/main/java/com/metis/enums/ResultEnum.java
new file mode 100644
index 0000000..ce7a754
--- /dev/null
+++ b/src/main/java/com/metis/enums/ResultEnum.java
@@ -0,0 +1,47 @@
+package com.metis.enums;
+
+import org.springframework.http.HttpStatus;
+
+/**
+ * @author Clay
+ * @date 2023-05-10
+ */
+public enum ResultEnum {
+ /**
+ * 返回状态枚举
+ */
+ SUCCESS(1000, "操作成功", HttpStatus.OK),
+
+ NO_DATA(1001, "查询结果为空", HttpStatus.OK),
+
+ RESUBMIT_LOCK(2002, "重复提交", HttpStatus.INTERNAL_SERVER_ERROR),
+
+ ERROR(2000, "操作失败", HttpStatus.INTERNAL_SERVER_ERROR),
+
+ SYS_ERROR(2001, "系统异常", HttpStatus.INTERNAL_SERVER_ERROR),
+
+ SENTINEL_FLOW(3000, "限流了", HttpStatus.INTERNAL_SERVER_ERROR),
+
+ SENTINEL_PARAM_FLOW(3000, "热点参数限流", HttpStatus.INTERNAL_SERVER_ERROR),
+
+ SENTINEL_SYSTEM(3000, "系统规则负载等不满足要求", HttpStatus.INTERNAL_SERVER_ERROR),
+
+ SENTINEL_AUTHORITY(3000, "授权规则不通过", HttpStatus.UNAUTHORIZED),
+
+ SENTINEL_DEGRADE(3000, "降级了", HttpStatus.INTERNAL_SERVER_ERROR),
+ ;
+
+ ResultEnum(int code, String msg, HttpStatus status) {
+ this.code = code;
+ this.msg = msg;
+ this.status = status;
+ }
+
+ public final int code;
+
+ public final String msg;
+
+ public final transient HttpStatus status;
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/metis/handle/GlobalExceptionHandler.java b/src/main/java/com/metis/handle/GlobalExceptionHandler.java
new file mode 100644
index 0000000..86133ac
--- /dev/null
+++ b/src/main/java/com/metis/handle/GlobalExceptionHandler.java
@@ -0,0 +1,92 @@
+package com.metis.handle;
+
+
+import com.metis.result.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.BindException;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.servlet.NoHandlerFoundException;
+
+import javax.security.auth.login.AccountExpiredException;
+import java.nio.file.AccessDeniedException;
+
+
+/**
+ * 全局异常处理器
+ *
+ * @author Clay
+ * @date 2022/10/30
+ */
+@Slf4j
+@RestControllerAdvice
+public class GlobalExceptionHandler {
+
+ public GlobalExceptionHandler() {
+ log.info("开始初始化全局异常处理器");
+ }
+
+
+
+ /**
+ * 路径不存在
+ *
+ * @param e
+ * @return
+ */
+ @ExceptionHandler(NoHandlerFoundException.class)
+ public Result