diff --git a/src/main/java/run/halo/app/event/LogEvent.java b/src/main/java/run/halo/app/event/LogEvent.java deleted file mode 100644 index 7ddd63914..000000000 --- a/src/main/java/run/halo/app/event/LogEvent.java +++ /dev/null @@ -1,38 +0,0 @@ -package run.halo.app.event; - -import org.springframework.context.ApplicationEvent; -import run.halo.app.model.enums.LogType; -import run.halo.app.model.params.LogParam; -import run.halo.app.utils.ValidationUtils; - -/** - * @author johnniang - * @date 19-4-20 - */ -public class LogEvent extends ApplicationEvent { - - private final LogParam logParam; - - /** - * Create a new ApplicationEvent. - * - * @param source the object on which the event initially occurred (never {@code null}) - * @param logParam - */ - public LogEvent(Object source, LogParam logParam) { - super(source); - - // Validate the log param - ValidationUtils.validate(logParam); - - this.logParam = logParam; - } - - public LogEvent(Object source, String logKey, LogType logType, String content) { - this(source, new LogParam(logKey, logType, content)); - } - - public LogParam getLogParam() { - return logParam; - } -} diff --git a/src/main/java/run/halo/app/event/LogEventListener.java b/src/main/java/run/halo/app/event/LogEventListener.java deleted file mode 100644 index 208d0e08f..000000000 --- a/src/main/java/run/halo/app/event/LogEventListener.java +++ /dev/null @@ -1,32 +0,0 @@ -package run.halo.app.event; - -import org.springframework.context.event.EventListener; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Component; -import run.halo.app.model.entity.Log; -import run.halo.app.service.LogService; - -/** - * Log event listener. - * - * @author johnniang - * @date 19-4-21 - */ -@Component -public class LogEventListener { - - private final LogService logService; - - public LogEventListener(LogService logService) { - this.logService = logService; - } - - @EventListener - @Async - public void onApplicationEvent(LogEvent event) { - // Convert to log - Log logToCreate = event.getLogParam().convertTo(); - // Create log - logService.create(logToCreate); - } -} diff --git a/src/main/java/run/halo/app/event/VisitEvent.java b/src/main/java/run/halo/app/event/post/VisitEvent.java similarity index 95% rename from src/main/java/run/halo/app/event/VisitEvent.java rename to src/main/java/run/halo/app/event/post/VisitEvent.java index ad6b184e9..a617c7083 100644 --- a/src/main/java/run/halo/app/event/VisitEvent.java +++ b/src/main/java/run/halo/app/event/post/VisitEvent.java @@ -1,4 +1,4 @@ -package run.halo.app.event; +package run.halo.app.event.post; import org.springframework.context.ApplicationEvent; import org.springframework.lang.NonNull; diff --git a/src/main/java/run/halo/app/event/VisitEventListener.java b/src/main/java/run/halo/app/event/post/VisitEventListener.java similarity index 99% rename from src/main/java/run/halo/app/event/VisitEventListener.java rename to src/main/java/run/halo/app/event/post/VisitEventListener.java index 8942738a5..d5ddee17d 100644 --- a/src/main/java/run/halo/app/event/VisitEventListener.java +++ b/src/main/java/run/halo/app/event/post/VisitEventListener.java @@ -1,4 +1,4 @@ -package run.halo.app.event; +package run.halo.app.event.post; import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; 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 b2c189e90..88c08405d 100644 --- a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java @@ -14,9 +14,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; -import run.halo.app.event.LogEvent; -import run.halo.app.event.VisitEvent; +import run.halo.app.event.log.LogEvent; +import run.halo.app.event.post.VisitEvent; import run.halo.app.exception.AlreadyExistsException; +import run.halo.app.exception.BadRequestException; import run.halo.app.exception.NotFoundException; import run.halo.app.exception.ServiceException; import run.halo.app.model.dto.CategoryOutputDTO; @@ -348,7 +349,8 @@ public class PostServiceImpl extends AbstractCrudService implemen long affectedRows = postRepository.updateVisit(visits, postId); if (affectedRows != 1) { - throw new ServiceException("Failed to increase visits " + visits + " for post with id " + postId); + log.error("Post with id: [{}] may not be found", postId); + throw new BadRequestException("Failed to increase visits " + visits + " for post with id " + postId); } } @@ -360,7 +362,8 @@ public class PostServiceImpl extends AbstractCrudService implemen long affectedRows = postRepository.updateLikes(likes, postId); if (affectedRows != 1) { - throw new ServiceException("Failed to increase likes " + likes + " for post with id " + postId); + log.error("Post with id: [{}] may not be found", postId); + throw new BadRequestException("Failed to increase likes " + likes + " for post with id " + postId); } } diff --git a/src/main/java/run/halo/app/service/impl/UserServiceImpl.java b/src/main/java/run/halo/app/service/impl/UserServiceImpl.java index bdb23be2b..d6cd85286 100644 --- a/src/main/java/run/halo/app/service/impl/UserServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/UserServiceImpl.java @@ -8,7 +8,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import run.halo.app.cache.StringCacheStore; -import run.halo.app.event.LogEvent; +import run.halo.app.event.log.LogEvent; import run.halo.app.exception.BadRequestException; import run.halo.app.exception.NotFoundException; import run.halo.app.model.entity.User; diff --git a/src/main/java/run/halo/app/web/controller/admin/api/PostController.java b/src/main/java/run/halo/app/web/controller/admin/api/PostController.java index 8473045b4..91ce0800e 100644 --- a/src/main/java/run/halo/app/web/controller/admin/api/PostController.java +++ b/src/main/java/run/halo/app/web/controller/admin/api/PostController.java @@ -82,6 +82,12 @@ public class PostController { return postService.getDetailVoBy(postId); } + @PostMapping("{postId:\\d+}/likes") + @ApiOperation("Likes a post") + public void like(@PathVariable("postId") Integer postId) { + postService.increaseLike(postId); + } + @PostMapping public PostDetailVO createBy(@Valid @RequestBody PostParam postParam) { // Convert to diff --git a/src/main/java/run/halo/app/web/controller/content/api/PostController.java b/src/main/java/run/halo/app/web/controller/content/api/PostController.java index 604ca81a8..03a6bda9a 100644 --- a/src/main/java/run/halo/app/web/controller/content/api/PostController.java +++ b/src/main/java/run/halo/app/web/controller/content/api/PostController.java @@ -92,4 +92,10 @@ public class PostController { @SortDefault(sort = "createTime", direction = DESC) Sort sort) { return commentService.pageWithParentVoBy(postId, PageRequest.of(page, optionService.getCommentPageSize(), sort)); } + + @PostMapping("{postId:\\d+}/likes") + @ApiOperation("Likes a post") + public void like(@PathVariable("postId") Integer postId) { + postService.increaseLike(postId); + } } diff --git a/src/main/java/run/halo/app/web/controller/core/InstallController.java b/src/main/java/run/halo/app/web/controller/core/InstallController.java index 3e03eac6f..f289224c4 100644 --- a/src/main/java/run/halo/app/web/controller/core/InstallController.java +++ b/src/main/java/run/halo/app/web/controller/core/InstallController.java @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; -import run.halo.app.event.LogEvent; +import run.halo.app.event.log.LogEvent; import run.halo.app.exception.BadRequestException; import run.halo.app.model.entity.*; import run.halo.app.model.enums.AttachmentType; diff --git a/src/test/java/run/halo/app/event/LogEventListenerTest.java b/src/test/java/run/halo/app/event/LogEventListenerTest.java index c1ee9e4b7..5a722cea7 100644 --- a/src/test/java/run/halo/app/event/LogEventListenerTest.java +++ b/src/test/java/run/halo/app/event/LogEventListenerTest.java @@ -3,6 +3,8 @@ package run.halo.app.event; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.springframework.context.ApplicationListener; +import run.halo.app.event.log.LogEvent; +import run.halo.app.event.log.LogEventListener; import run.halo.app.utils.ReflectionUtils; import java.lang.reflect.ParameterizedType;