From 00d0670ac6622edcb931cc1a416326fe95dbf95b Mon Sep 17 00:00:00 2001 From: johnniang Date: Thu, 14 Mar 2019 15:32:09 +0800 Subject: [PATCH] complete list latest logs service --- .../cc/ryanc/halo/model/dto/LogOutputDTO.java | 46 +++++++++++++++++++ .../cc/ryanc/halo/service/LogService.java | 9 ++++ .../halo/service/impl/LogServiceImpl.java | 16 +++++++ .../web/controller/admin/AdminController.java | 8 +++- 4 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cc/ryanc/halo/model/dto/LogOutputDTO.java diff --git a/src/main/java/cc/ryanc/halo/model/dto/LogOutputDTO.java b/src/main/java/cc/ryanc/halo/model/dto/LogOutputDTO.java new file mode 100644 index 000000000..b69350eca --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/dto/LogOutputDTO.java @@ -0,0 +1,46 @@ +package cc.ryanc.halo.model.dto; + +import cc.ryanc.halo.model.dto.base.OutputConverter; +import cc.ryanc.halo.model.entity.Log; +import cc.ryanc.halo.model.enums.LogType; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +@Data +@ToString +@EqualsAndHashCode +public class LogOutputDTO implements OutputConverter { + + /** + * Log id. + */ + private Long id; + + /** + * 日志标识 + */ + private String logKey; + + /** + * 日志事件类型 + */ + private LogType type; + + /** + * 日志内容 + */ + private String content; + + /** + * 操作 IP + */ + private String ipAddress; + + /** + * 创建时间戳 + */ + private Date createTime; +} diff --git a/src/main/java/cc/ryanc/halo/service/LogService.java b/src/main/java/cc/ryanc/halo/service/LogService.java index 58f6d26ce..a07bb5acd 100644 --- a/src/main/java/cc/ryanc/halo/service/LogService.java +++ b/src/main/java/cc/ryanc/halo/service/LogService.java @@ -1,7 +1,9 @@ package cc.ryanc.halo.service; +import cc.ryanc.halo.model.dto.LogOutputDTO; import cc.ryanc.halo.model.entity.Log; import cc.ryanc.halo.service.base.CrudService; +import org.springframework.data.domain.Page; /** * Log service. @@ -10,4 +12,11 @@ import cc.ryanc.halo.service.base.CrudService; */ public interface LogService extends CrudService { + /** + * Lists latest logs. + * + * @param top top number must not be less than 0 + * @return a page of latest logs + */ + Page listLatest(int top); } diff --git a/src/main/java/cc/ryanc/halo/service/impl/LogServiceImpl.java b/src/main/java/cc/ryanc/halo/service/impl/LogServiceImpl.java index 28088d581..fb50adcf8 100644 --- a/src/main/java/cc/ryanc/halo/service/impl/LogServiceImpl.java +++ b/src/main/java/cc/ryanc/halo/service/impl/LogServiceImpl.java @@ -1,10 +1,15 @@ package cc.ryanc.halo.service.impl; +import cc.ryanc.halo.model.dto.LogOutputDTO; import cc.ryanc.halo.model.entity.Log; import cc.ryanc.halo.repository.LogRepository; import cc.ryanc.halo.service.LogService; import cc.ryanc.halo.service.base.AbstractCrudService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; +import org.springframework.util.Assert; /** * LogService implementation class @@ -21,4 +26,15 @@ public class LogServiceImpl extends AbstractCrudService implements Lo super(logRepository); this.logRepository = logRepository; } + + @Override + public Page listLatest(int top) { + Assert.isTrue(top > 0, "Top number must not be less than 0"); + + // Build page request + PageRequest latestPageable = PageRequest.of(0, top, Sort.by(Sort.Direction.DESC, "createTime")); + + // List all + return listAll(latestPageable).map(log -> new LogOutputDTO().convertFrom(log)); + } } diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/AdminController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/AdminController.java index 93c1d8241..91f120ec3 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/AdminController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/AdminController.java @@ -3,6 +3,7 @@ package cc.ryanc.halo.web.controller.admin; import cc.ryanc.halo.model.dto.PostSimpleOutputDTO; import cc.ryanc.halo.service.AttachmentService; import cc.ryanc.halo.service.CommentService; +import cc.ryanc.halo.service.LogService; import cc.ryanc.halo.service.PostService; import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; @@ -26,12 +27,16 @@ public class AdminController { private final AttachmentService attachmentService; + private final LogService logService; + public AdminController(PostService postService, CommentService commentService, - AttachmentService attachmentService) { + AttachmentService attachmentService, + LogService logService) { this.postService = postService; this.commentService = commentService; this.attachmentService = attachmentService; + this.logService = logService; } /** @@ -50,6 +55,7 @@ public class AdminController { model.addAttribute("attachmentsCount", attachmentService.count()); model.addAttribute("latestPosts", postPage.getContent()); + model.addAttribute("latestLogs", logService.listLatest(10).getContent()); return "admin/admin_index"; } }