From a79c27b2284ee53b727ef6df064087f9d4dfe766 Mon Sep 17 00:00:00 2001 From: wangyu <727842003@qq.com> Date: Tue, 12 Jan 2021 17:43:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/FrameworkConfiguration.java | 4 ++ .../framework/constant/Frameworks.java | 8 ++- .../framework/annotations/Operation.java | 71 +++++++++++++++++++ .../framework/domain/po/Permission.java | 17 ++++- flyfish-logging/pom.xml | 27 +++++++ .../framework/logging/advice/LogAdvice.java | 45 ++++++++++++ .../logging/annotation/EnableLogging.java | 18 +++++ .../logging/config/LoggingConfig.java | 22 ++++++ .../logging/controller/LogController.java | 17 +++++ .../flyfish/framework/logging/domain/Log.java | 53 ++++++++++++++ .../framework/logging/domain/LogQo.java | 10 +++ .../logging/repository/LogRepository.java | 11 +++ .../framework/logging/service/LogService.java | 15 ++++ .../framework/controller/BaseController.java | 6 ++ pom.xml | 1 + 15 files changed, 323 insertions(+), 2 deletions(-) create mode 100644 flyfish-data/src/main/java/com/flyfish/framework/annotations/Operation.java create mode 100644 flyfish-logging/pom.xml create mode 100644 flyfish-logging/src/main/java/com/flyfish/framework/logging/advice/LogAdvice.java create mode 100644 flyfish-logging/src/main/java/com/flyfish/framework/logging/annotation/EnableLogging.java create mode 100644 flyfish-logging/src/main/java/com/flyfish/framework/logging/config/LoggingConfig.java create mode 100644 flyfish-logging/src/main/java/com/flyfish/framework/logging/controller/LogController.java create mode 100644 flyfish-logging/src/main/java/com/flyfish/framework/logging/domain/Log.java create mode 100644 flyfish-logging/src/main/java/com/flyfish/framework/logging/domain/LogQo.java create mode 100644 flyfish-logging/src/main/java/com/flyfish/framework/logging/repository/LogRepository.java create mode 100644 flyfish-logging/src/main/java/com/flyfish/framework/logging/service/LogService.java diff --git a/flyfish-common/src/main/java/com/flyfish/framework/config/FrameworkConfiguration.java b/flyfish-common/src/main/java/com/flyfish/framework/config/FrameworkConfiguration.java index be2885e..e8151d0 100644 --- a/flyfish-common/src/main/java/com/flyfish/framework/config/FrameworkConfiguration.java +++ b/flyfish-common/src/main/java/com/flyfish/framework/config/FrameworkConfiguration.java @@ -2,6 +2,7 @@ package com.flyfish.framework.config; import lombok.Getter; import lombok.Setter; +import lombok.experimental.Accessors; /** * 框架配置 @@ -9,7 +10,10 @@ import lombok.Setter; */ @Setter @Getter +@Accessors(chain = true) public class FrameworkConfiguration { private boolean resultStyle = false; + + private boolean debug = false; } diff --git a/flyfish-common/src/main/java/com/flyfish/framework/constant/Frameworks.java b/flyfish-common/src/main/java/com/flyfish/framework/constant/Frameworks.java index 69b9a46..ea647f4 100644 --- a/flyfish-common/src/main/java/com/flyfish/framework/constant/Frameworks.java +++ b/flyfish-common/src/main/java/com/flyfish/framework/constant/Frameworks.java @@ -11,7 +11,13 @@ public interface Frameworks { FrameworkConfiguration config = new FrameworkConfiguration(); - static void resultStyle() { + static FrameworkConfiguration resultStyle() { config.setResultStyle(true); + return config; + } + + static FrameworkConfiguration debug() { + config.setDebug(true); + return config; } } diff --git a/flyfish-data/src/main/java/com/flyfish/framework/annotations/Operation.java b/flyfish-data/src/main/java/com/flyfish/framework/annotations/Operation.java new file mode 100644 index 0000000..72bd434 --- /dev/null +++ b/flyfish-data/src/main/java/com/flyfish/framework/annotations/Operation.java @@ -0,0 +1,71 @@ +package com.flyfish.framework.annotations; + +import java.lang.annotation.*; + +/** + * 动作,描述一个操作 + * + * @author wangyu + */ +@Target({ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface Operation { + + /** + * 动作名称,可选静态变量池和字符串 + * + * @return 结果 + */ + String value(); + + /** + * 模块名,描述模块,如果为空自动获取bean的rest-bean注解 + * + * @return 结果 + */ + String module() default ""; + + /** + * 内置类型 + */ + @Target(ElementType.METHOD) + @Retention(RetentionPolicy.RUNTIME) + @Documented + @Operation("CREATE") + @interface Create { + + } + + @Target(ElementType.METHOD) + @Retention(RetentionPolicy.RUNTIME) + @Documented + @Operation("UPDATE") + @interface Update { + + } + + @Target(ElementType.METHOD) + @Retention(RetentionPolicy.RUNTIME) + @Documented + @Operation("UPDATE_ALL") + @interface UpdateAll { + + } + + @Target(ElementType.METHOD) + @Retention(RetentionPolicy.RUNTIME) + @Documented + @Operation("DELETE") + @interface Delete { + + } + + @Target(ElementType.METHOD) + @Retention(RetentionPolicy.RUNTIME) + @Documented + @Operation("SYNC") + @interface Sync { + + } +} diff --git a/flyfish-data/src/main/java/com/flyfish/framework/domain/po/Permission.java b/flyfish-data/src/main/java/com/flyfish/framework/domain/po/Permission.java index 2e43532..3036a0a 100644 --- a/flyfish-data/src/main/java/com/flyfish/framework/domain/po/Permission.java +++ b/flyfish-data/src/main/java/com/flyfish/framework/domain/po/Permission.java @@ -1,8 +1,11 @@ package com.flyfish.framework.domain.po; import com.flyfish.framework.domain.base.TreeDomain; +import com.flyfish.framework.enums.NamedEnum; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.Getter; import org.springframework.data.mongodb.core.mapping.Document; /** @@ -23,13 +26,25 @@ public class Permission extends TreeDomain { ROOT.setDepth(0); } + /** + * 权限类型,分为路由和动作 + */ + private Type type = Type.ROUTE; /** * 是否是管理员权限 */ private boolean admin; - /** * 是否是叶子节点 */ private Boolean leaf; + + @Getter + @AllArgsConstructor + public enum Type implements NamedEnum { + + ROUTE("路由"), ACTION("动作"); + + private final String name; + } } diff --git a/flyfish-logging/pom.xml b/flyfish-logging/pom.xml new file mode 100644 index 0000000..e74473e --- /dev/null +++ b/flyfish-logging/pom.xml @@ -0,0 +1,27 @@ + + + + flyfish-framework + com.flyfish.framework + 0.0.1-SNAPSHOT + + 4.0.0 + + flyfish-logging + 日志模块 + + + 8 + 8 + + + + + com.flyfish.framework + flyfish-web + ${project.version} + + + diff --git a/flyfish-logging/src/main/java/com/flyfish/framework/logging/advice/LogAdvice.java b/flyfish-logging/src/main/java/com/flyfish/framework/logging/advice/LogAdvice.java new file mode 100644 index 0000000..fb335fb --- /dev/null +++ b/flyfish-logging/src/main/java/com/flyfish/framework/logging/advice/LogAdvice.java @@ -0,0 +1,45 @@ +package com.flyfish.framework.logging.advice; + +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.stereotype.Component; + +/** + * 日志切面 + * + * @author wangyu + */ +@Aspect +@Slf4j +public class LogAdvice { + + /** + * 切入注解 + */ + @Pointcut("@annotation( com.flyfish.framework.annotations.Operation)") + public void pointCut() { + + } + + /** + * 环绕切面,获取参数 + * + * @param joinPoint 切入点 + * @return 结果 + */ + @Around("pointCut()") + public Object process(ProceedingJoinPoint joinPoint) throws Throwable { + Object[] args = joinPoint.getArgs(); + boolean success = false; + try { + Object result = joinPoint.proceed(args); + success = true; + return result; + } finally { + log.info("success: {}, {}", success,joinPoint.getSignature().getName()); + } + } +} diff --git a/flyfish-logging/src/main/java/com/flyfish/framework/logging/annotation/EnableLogging.java b/flyfish-logging/src/main/java/com/flyfish/framework/logging/annotation/EnableLogging.java new file mode 100644 index 0000000..586c26e --- /dev/null +++ b/flyfish-logging/src/main/java/com/flyfish/framework/logging/annotation/EnableLogging.java @@ -0,0 +1,18 @@ +package com.flyfish.framework.logging.annotation; + +import com.flyfish.framework.logging.config.LoggingConfig; +import org.springframework.context.annotation.Import; + +import java.lang.annotation.*; + +/** + * 启用日志 + * + * @author wangyu + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Import(LoggingConfig.class) +public @interface EnableLogging { +} diff --git a/flyfish-logging/src/main/java/com/flyfish/framework/logging/config/LoggingConfig.java b/flyfish-logging/src/main/java/com/flyfish/framework/logging/config/LoggingConfig.java new file mode 100644 index 0000000..25086e9 --- /dev/null +++ b/flyfish-logging/src/main/java/com/flyfish/framework/logging/config/LoggingConfig.java @@ -0,0 +1,22 @@ +package com.flyfish.framework.logging.config; + +import com.flyfish.framework.logging.advice.LogAdvice; +import org.springframework.context.annotation.Bean; + +/** + * 日志配置 + * + * @author wangyu + */ +public class LoggingConfig { + + /** + * 启用日志切面 + * + * @return 结果 + */ + @Bean + public LogAdvice logAdvice() { + return new LogAdvice(); + } +} diff --git a/flyfish-logging/src/main/java/com/flyfish/framework/logging/controller/LogController.java b/flyfish-logging/src/main/java/com/flyfish/framework/logging/controller/LogController.java new file mode 100644 index 0000000..714a8b4 --- /dev/null +++ b/flyfish-logging/src/main/java/com/flyfish/framework/logging/controller/LogController.java @@ -0,0 +1,17 @@ +package com.flyfish.framework.logging.controller; + +import com.flyfish.framework.beans.annotations.RestMapping; +import com.flyfish.framework.controller.BaseController; +import com.flyfish.framework.logging.domain.Log; +import com.flyfish.framework.logging.domain.LogQo; + +/** + * 日志controller + * + * @author wangyu + */ +@RestMapping("logs") +public class LogController extends BaseController { + + +} diff --git a/flyfish-logging/src/main/java/com/flyfish/framework/logging/domain/Log.java b/flyfish-logging/src/main/java/com/flyfish/framework/logging/domain/Log.java new file mode 100644 index 0000000..002f327 --- /dev/null +++ b/flyfish-logging/src/main/java/com/flyfish/framework/logging/domain/Log.java @@ -0,0 +1,53 @@ +package com.flyfish.framework.logging.domain; + +import com.flyfish.framework.domain.base.Domain; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +/** + * 日志集合 + */ +@Document +@Data +@EqualsAndHashCode(callSuper = true) +public class Log extends Domain { + + // 业务 + private String business; + + // 模块 + private String module; + + // 方法签名 + private String signature; + + // 请求地址 + private String uri; + + // 请求参数 + private String body; + + // 响应结果 + private String response; + + // 错误详情 + private String error; + + // 操作耗时 + private Long period; + + // 操作时间 + private Date createTime; + + // 操作人 + private String operator; + + // 访问ip + private String ip; + + // 成功与否 + private Boolean success; +} diff --git a/flyfish-logging/src/main/java/com/flyfish/framework/logging/domain/LogQo.java b/flyfish-logging/src/main/java/com/flyfish/framework/logging/domain/LogQo.java new file mode 100644 index 0000000..5789908 --- /dev/null +++ b/flyfish-logging/src/main/java/com/flyfish/framework/logging/domain/LogQo.java @@ -0,0 +1,10 @@ +package com.flyfish.framework.logging.domain; + +import com.flyfish.framework.domain.base.NameLikeQo; + +/** + * 日志查询实体 + * @author wangyu + */ +public class LogQo extends NameLikeQo { +} diff --git a/flyfish-logging/src/main/java/com/flyfish/framework/logging/repository/LogRepository.java b/flyfish-logging/src/main/java/com/flyfish/framework/logging/repository/LogRepository.java new file mode 100644 index 0000000..ce905bc --- /dev/null +++ b/flyfish-logging/src/main/java/com/flyfish/framework/logging/repository/LogRepository.java @@ -0,0 +1,11 @@ +package com.flyfish.framework.logging.repository; + +import com.flyfish.framework.logging.domain.Log; +import com.flyfish.framework.repository.DefaultRepository; + +/** + * 日志仓库 + * @author wangyu + */ +public interface LogRepository extends DefaultRepository { +} diff --git a/flyfish-logging/src/main/java/com/flyfish/framework/logging/service/LogService.java b/flyfish-logging/src/main/java/com/flyfish/framework/logging/service/LogService.java new file mode 100644 index 0000000..e951323 --- /dev/null +++ b/flyfish-logging/src/main/java/com/flyfish/framework/logging/service/LogService.java @@ -0,0 +1,15 @@ +package com.flyfish.framework.logging.service; + +import com.flyfish.framework.logging.domain.Log; +import com.flyfish.framework.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +/** + * 日志服务 + * @author wangyu + */ +@Service +public class LogService extends BaseServiceImpl { + + +} diff --git a/flyfish-web/src/main/java/com/flyfish/framework/controller/BaseController.java b/flyfish-web/src/main/java/com/flyfish/framework/controller/BaseController.java index ce82ec5..eeec1e6 100644 --- a/flyfish-web/src/main/java/com/flyfish/framework/controller/BaseController.java +++ b/flyfish-web/src/main/java/com/flyfish/framework/controller/BaseController.java @@ -1,5 +1,6 @@ package com.flyfish.framework.controller; +import com.flyfish.framework.annotations.Operation; import com.flyfish.framework.bean.Result; import com.flyfish.framework.bean.SyncVo; import com.flyfish.framework.configuration.annotations.CurrentUser; @@ -49,6 +50,7 @@ public abstract class BaseController> implemen } @PostMapping("") + @Operation.Create public Result create(@RequestBody @Valid T entity, @CurrentUser User user) { userContext.setUser(user); return Result.accept(service.create(entity)); @@ -60,24 +62,28 @@ public abstract class BaseController> implemen } @PutMapping("{id}") + @Operation.Update public Result update(@RequestBody @Valid T entity, @CurrentUser User user) { userContext.setUser(user); return Result.accept(service.updateSelectiveById(entity)); } @PutMapping("") + @Operation.UpdateAll public Result> updateList(@RequestBody List list, @CurrentUser User user) { userContext.setUser(user); return Result.accept(service.updateBatch(list)); } @PutMapping("/sync") + @Operation.Sync public Result> syncList(@RequestBody List list, @CurrentUser User user) { userContext.setUser(user); return Result.accept(service.sync(list)); } @DeleteMapping("{id}") + @Operation.Delete public Result remove(@PathVariable String id) { service.deleteById(id); return Result.ok(); diff --git a/pom.xml b/pom.xml index 15276b1..c624576 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,7 @@ flyfish-web flyfish-user flyfish-file + flyfish-logging