From 8dac1a176a46064071552965d0317793db02e7f8 Mon Sep 17 00:00:00 2001 From: johnniang Date: Tue, 10 Dec 2019 14:55:56 +0800 Subject: [PATCH] Fix visit event ingore --- .../content/ContentArchiveController.java | 8 ++-- .../app/service/impl/PostServiceImpl.java | 18 +++++++-- .../app/service/impl/SheetServiceImpl.java | 38 +++++-------------- 3 files changed, 29 insertions(+), 35 deletions(-) diff --git a/src/main/java/run/halo/app/controller/content/ContentArchiveController.java b/src/main/java/run/halo/app/controller/content/ContentArchiveController.java index 7774efd2e..689d2611a 100644 --- a/src/main/java/run/halo/app/controller/content/ContentArchiveController.java +++ b/src/main/java/run/halo/app/controller/content/ContentArchiveController.java @@ -13,7 +13,9 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import run.halo.app.cache.StringCacheStore; import run.halo.app.cache.lock.CacheLock; +import run.halo.app.exception.BadRequestException; import run.halo.app.exception.ForbiddenException; +import run.halo.app.exception.NotFoundException; import run.halo.app.model.entity.Category; import run.halo.app.model.entity.Post; import run.halo.app.model.entity.PostMeta; @@ -128,7 +130,7 @@ public class ContentArchiveController { Model model) { Post post; if (preview) { - post = postService.getBy(PostStatus.DRAFT, url); + post = postService.getByUrl(url); } else if (intimate) { post = postService.getBy(PostStatus.INTIMATE, url); } else { @@ -141,10 +143,10 @@ public class ContentArchiveController { post.setFormatContent(MarkdownUtils.renderHtml(post.getOriginalContent())); // verify token - String cachedToken = cacheStore.getAny("preview-post-token-" + post.getId(), String.class).orElseThrow(() -> new ForbiddenException("该文章的预览链接不存在或已过期")); + String cachedToken = cacheStore.getAny("preview-post-token-" + post.getId(), String.class).orElseThrow(() -> new NotFoundException("该文章的预览链接不存在或已过期")); if (!cachedToken.equals(token)) { - throw new ForbiddenException("该文章的预览链接不存在或已过期"); + throw new BadRequestException("预览 Token 错误"); } } diff --git a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java index 21c9f86f6..09c1f5003 100644 --- a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java @@ -154,10 +154,16 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe public Post getBy(PostStatus status, String url) { Post post = super.getBy(status, url); - if (PostStatus.PUBLISHED.equals(status)) { - // Log it - eventPublisher.publishEvent(new PostVisitEvent(this, post.getId())); - } + fireVisitEvent(post.getId()); + + return post; + } + + @Override + public Post getByUrl(String url) { + Post post = super.getByUrl(url); + + fireVisitEvent(post.getId()); return post; } @@ -580,4 +586,8 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe // Convert to post detail vo return convertTo(post, tags, categories, postMetaList); } + + private void fireVisitEvent(@NonNull Integer postId) { + eventPublisher.publishEvent(new PostVisitEvent(this, postId)); + } } diff --git a/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java b/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java index 269206b6b..18a977c4d 100644 --- a/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java @@ -64,17 +64,6 @@ public class SheetServiceImpl extends BasePostServiceImpl implements Shee @Override public Sheet createBy(Sheet sheet, boolean autoSave) { Sheet createdSheet = createOrUpdateBy(sheet); - if (!autoSave) { - // Log the creation - LogEvent logEvent = new LogEvent(this, createdSheet.getId().toString(), LogType.SHEET_PUBLISHED, createdSheet.getTitle()); - eventPublisher.publishEvent(logEvent); - } - return createdSheet; - } - - @Override - public Sheet createBy(Sheet sheet, Set sheetMetas, boolean autoSave) { - Sheet createdSheet = createOrUpdateBy(sheet); // Create sheet meta data List sheetMetaList = sheetMetaService.createOrUpdateByPostId(sheet.getId(), sheetMetas); @@ -91,18 +80,6 @@ public class SheetServiceImpl extends BasePostServiceImpl implements Shee @Override public Sheet updateBy(Sheet sheet, boolean autoSave) { Sheet updatedSheet = createOrUpdateBy(sheet); - if (!autoSave) { - // Log the creation - LogEvent logEvent = new LogEvent(this, updatedSheet.getId().toString(), LogType.SHEET_EDITED, updatedSheet.getTitle()); - eventPublisher.publishEvent(logEvent); - } - return updatedSheet; - } - - @Override - public Sheet updateBy(Sheet sheet, Set sheetMetas, boolean autoSave) { - - Sheet updatedSheet = createOrUpdateBy(sheet); // Create sheet meta data List sheetMetaList = sheetMetaService.createOrUpdateByPostId(updatedSheet.getId(), sheetMetas); @@ -127,7 +104,11 @@ public class SheetServiceImpl extends BasePostServiceImpl implements Shee public Sheet getByUrl(String url) { Assert.hasText(url, "Url must not be blank"); - return sheetRepository.getByUrl(url).orElseThrow(() -> new NotFoundException("查询不到该页面的信息").setErrorData(url)); + Sheet sheet = sheetRepository.getByUrl(url).orElseThrow(() -> new NotFoundException("查询不到该页面的信息").setErrorData(url)); + + fireVisitEvent(sheet.getId()); + + return sheet; } @Override @@ -139,10 +120,7 @@ public class SheetServiceImpl extends BasePostServiceImpl implements Shee Sheet sheet = postOptional.orElseThrow(() -> new NotFoundException("查询不到该页面的信息").setErrorData(url)); - if (PostStatus.PUBLISHED.equals(status)) { - // Log it - eventPublisher.publishEvent(new SheetVisitEvent(this, sheet.getId())); - } + fireVisitEvent(sheet.getId()); return sheet; } @@ -249,6 +227,10 @@ public class SheetServiceImpl extends BasePostServiceImpl implements Shee }); } + private void fireVisitEvent(@NonNull Integer sheetId) { + eventPublisher.publishEvent(new SheetVisitEvent(this, sheetId)); + } + @Override public SheetDetailVO convertToDetailVo(Sheet sheet) { // List sheetMetas