diff --git a/pom.xml b/pom.xml
index dc79cb5..f4a6c7d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,6 +21,10 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
org.projectlombok
@@ -41,6 +45,12 @@
com.mysql
mysql-connector-j
+
+ org.jetbrains
+ annotations
+ 24.1.0
+ compile
+
diff --git a/src/main/java/cn/dcsy/stsy/aspect/LoggingAspect.java b/src/main/java/cn/dcsy/stsy/aspect/LoggingAspect.java
new file mode 100644
index 0000000..cb0b856
--- /dev/null
+++ b/src/main/java/cn/dcsy/stsy/aspect/LoggingAspect.java
@@ -0,0 +1,30 @@
+package cn.dcsy.stsy.aspect;
+
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.Signature;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author DC_DC
+ * Date: 2024/4/22/15:11
+ */
+
+@Aspect
+@Component
+@Slf4j
+public class LoggingAspect {
+
+ @Before("execution(* cn.dcsy.stsy.controllers.*.*(..))")
+ public void controllerAspect(JoinPoint joinPoint) {
+ Signature signature = joinPoint.getSignature();
+ String methodName = signature.getName();
+
+ Object targetObject = joinPoint.getTarget();
+ Class> targetClass = targetObject.getClass();
+
+ log.info("[CONTROL] 获取 {} 类的 {} 方法", targetClass.getName(), methodName);
+ }
+}
diff --git a/src/main/java/cn/dcsy/stsy/controllers/BasicController.java b/src/main/java/cn/dcsy/stsy/controllers/BasicController.java
index 60086ec..34ca68e 100644
--- a/src/main/java/cn/dcsy/stsy/controllers/BasicController.java
+++ b/src/main/java/cn/dcsy/stsy/controllers/BasicController.java
@@ -2,6 +2,7 @@ package cn.dcsy.stsy.controllers;
import cn.dcsy.stsy.service.UserService;
import cn.dcsy.stsy.utils.BaseResponse;
+import cn.dcsy.stsy.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
@@ -21,19 +22,18 @@ import org.springframework.web.bind.annotation.*;
@RequiredArgsConstructor
public class BasicController {
private final UserService userService;
+
/**
* 网站主页
*/
@GetMapping("/index")
public ResponseEntity index() {
- log.info("访问主页");
- BaseResponse response = new BaseResponse("欢迎", 200, "Success", "这是故事管理系统主页");
- return ResponseEntity.ok(response);
+ return ResultUtil.success("访问成功");
}
/*
- * 用户登录
- * */
+ * 用户登录
+ * */
@PostMapping("/login")
public ResponseEntity login(@RequestParam String username, @RequestParam String password) {
log.info("尝试登录 用户名: {}", username);
diff --git a/src/main/java/cn/dcsy/stsy/utils/ErrorCode.java b/src/main/java/cn/dcsy/stsy/utils/ErrorCode.java
new file mode 100644
index 0000000..2a3e2c6
--- /dev/null
+++ b/src/main/java/cn/dcsy/stsy/utils/ErrorCode.java
@@ -0,0 +1,27 @@
+package cn.dcsy.stsy.utils;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * 错误码
+ *
+ *
+ * @author DC_DC
+ * Date: 2024/4/22/14:47
+ */
+@Getter
+@RequiredArgsConstructor
+public enum ErrorCode {
+
+ REQUEST_BODY_ERROR("RequestBodyError", 40001, "请求体错误"),
+ REQUEST_PARAM_ERROR("RequestParamError", 40002, "请求参数错误"),
+ REQUEST_METHOD_ERROR("RequestMethodError", 40003, "请求方法错误"),
+ REQUEST_HEADER_ERROR("RequestHeaderError", 40004, "请求头错误"),
+ REQUEST_URL_ERROR("RequestUrlError", 40005, "请求地址错误"),
+
+ ;
+ private final String output;
+ private final Integer code;
+ private final String message;
+}
diff --git a/src/main/java/cn/dcsy/stsy/utils/ResultUtil.java b/src/main/java/cn/dcsy/stsy/utils/ResultUtil.java
new file mode 100644
index 0000000..66dfdb9
--- /dev/null
+++ b/src/main/java/cn/dcsy/stsy/utils/ResultUtil.java
@@ -0,0 +1,77 @@
+package cn.dcsy.stsy.utils;
+
+import org.springframework.http.ResponseEntity;
+
+/**
+ * @author DC_DC
+ * Date: 2024/4/22/15:19
+ */
+public class ResultUtil {
+ /**
+ * 生成表示操作成功的响应实体,不带数据参数。
+ *
+ *
+ * @param message 成功时的提示消息。
+ * @return 包含成功状态码和消息的响应实体。
+ */
+ public static ResponseEntity success(String message) {
+ // 创建并返回一个包含成功代码、消息和空错误信息的响应实体
+ return ResponseEntity
+ .ok(new BaseResponse("Success", 200, message, null));
+ }
+
+ /**
+ * 生成表示操作成功的响应实体,携带数据参数。
+ *
+ *
+ * @param message 成功时的提示消息。
+ * @return 包含成功状态码和消息的响应实体。
+ */
+ public static ResponseEntity success(String message, Object data) {
+ return ResponseEntity
+ .ok(new BaseResponse("Success", 200, message, data));
+ }
+
+ /**
+ * 生成错误响应实体,不带数据参数。
+ *
+ *
+ * @param errorCode 错误码
+ * @return 返回一个包含错误信息的ResponseEntity对象。
+ */
+ public static ResponseEntity error(ErrorCode errorCode) {
+ return ResponseEntity
+ .status(errorCode.getCode() / 100)
+ .body(new BaseResponse(errorCode.getOutput(), errorCode.getCode(), errorCode.getMessage(), null));
+ }
+
+ /**
+ * 生成错误响应实体。携带数据参数
+ *
+ * @param errorCode 错误码对象,包含错误信息、状态码和错误输出。
+ * @param data 可选的数据对象,包含与错误相关的额外数据。
+ * @return 返回一个包含错误信息的ResponseEntity对象。
+ */
+ public static ResponseEntity error(ErrorCode errorCode, Object data) {
+ // 根据错误码设置响应状态码
+ return ResponseEntity
+ .status(errorCode.getCode() / 100)
+ // 构造包含错误信息和数据的响应体
+ .body(new BaseResponse(errorCode.getOutput(), errorCode.getCode(), errorCode.getMessage(), data));
+ }
+
+ /**
+ * 生成错误响应实体。
+ *
+ * @param errorMessage 错误信息,描述了具体的错误内容。
+ * @param errorCode 错误码,包含了错误的代码和输出信息。
+ * @param data 可选的数据,包含了与错误相关的额外数据或信息。
+ * @return 返回一个包含错误信息的ResponseEntity对象。
+ */
+ public static ResponseEntity error(String errorMessage, ErrorCode errorCode, Object data) {
+ // 根据错误码设置HTTP响应状态码,并构建BaseResponse对象作为响应体
+ return ResponseEntity
+ .status(errorCode.getCode() / 100)
+ .body(new BaseResponse(errorCode.getOutput(), errorCode.getCode(), errorMessage, data));
+ }
+}