From 9d4422cd6c670a28f05f41cbd64396309cd9f8af Mon Sep 17 00:00:00 2001 From: dongmucat <1127093059@qq.com> Date: Mon, 27 Apr 2026 16:46:34 +0800 Subject: [PATCH] feat(subscription): add increment/decrement subscription count methods --- .../iflytek/skillhub/domain/skill/SkillRepository.java | 2 ++ .../skillhub/infra/jpa/JpaSkillRepositoryAdapter.java | 10 ++++++++++ .../iflytek/skillhub/infra/jpa/SkillJpaRepository.java | 10 ++++++++++ 3 files changed, 22 insertions(+) diff --git a/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/skill/SkillRepository.java b/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/skill/SkillRepository.java index 14115318..facf3091 100644 --- a/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/skill/SkillRepository.java +++ b/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/skill/SkillRepository.java @@ -22,6 +22,8 @@ public interface SkillRepository { List findByOwnerId(String ownerId); Page findByOwnerId(String ownerId, Pageable pageable); void incrementDownloadCount(Long skillId); + void incrementSubscriptionCount(Long skillId); + void decrementSubscriptionCount(Long skillId); List findBySlug(String slug); List findByNamespaceSlugAndSlug(String namespaceSlug, String slug); } diff --git a/server/skillhub-infra/src/main/java/com/iflytek/skillhub/infra/jpa/JpaSkillRepositoryAdapter.java b/server/skillhub-infra/src/main/java/com/iflytek/skillhub/infra/jpa/JpaSkillRepositoryAdapter.java index 27c59583..1249f12d 100644 --- a/server/skillhub-infra/src/main/java/com/iflytek/skillhub/infra/jpa/JpaSkillRepositoryAdapter.java +++ b/server/skillhub-infra/src/main/java/com/iflytek/skillhub/infra/jpa/JpaSkillRepositoryAdapter.java @@ -87,6 +87,16 @@ public class JpaSkillRepositoryAdapter implements SkillRepository { delegate.incrementDownloadCount(skillId); } + @Override + public void incrementSubscriptionCount(Long skillId) { + delegate.incrementSubscriptionCount(skillId); + } + + @Override + public void decrementSubscriptionCount(Long skillId) { + delegate.decrementSubscriptionCount(skillId); + } + @Override public List findBySlug(String slug) { return delegate.findBySlug(slug); diff --git a/server/skillhub-infra/src/main/java/com/iflytek/skillhub/infra/jpa/SkillJpaRepository.java b/server/skillhub-infra/src/main/java/com/iflytek/skillhub/infra/jpa/SkillJpaRepository.java index e29a80d2..55ad2aad 100644 --- a/server/skillhub-infra/src/main/java/com/iflytek/skillhub/infra/jpa/SkillJpaRepository.java +++ b/server/skillhub-infra/src/main/java/com/iflytek/skillhub/infra/jpa/SkillJpaRepository.java @@ -44,6 +44,16 @@ public interface SkillJpaRepository extends JpaRepository, SkillRep @Query("UPDATE Skill s SET s.downloadCount = s.downloadCount + 1 WHERE s.id = :skillId") void incrementDownloadCount(@Param("skillId") Long skillId); + @Modifying + @Transactional + @Query("UPDATE Skill s SET s.subscriptionCount = s.subscriptionCount + 1 WHERE s.id = :skillId") + void incrementSubscriptionCount(@Param("skillId") Long skillId); + + @Modifying + @Transactional + @Query("UPDATE Skill s SET s.subscriptionCount = CASE WHEN s.subscriptionCount > 0 THEN s.subscriptionCount - 1 ELSE 0 END WHERE s.id = :skillId") + void decrementSubscriptionCount(@Param("skillId") Long skillId); + List findBySlug(String slug); @Query("SELECT s FROM Skill s JOIN Namespace n ON s.namespaceId = n.id WHERE n.slug = :namespaceSlug AND s.slug = :slug")