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)); + } +}