From 4395757d980abcb62b5d88974147a2b089ccd844 Mon Sep 17 00:00:00 2001 From: Rinjae Date: Mon, 13 Jul 2026 17:27:06 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=B5=9C?= =?UTF-8?q?=EA=B7=BC=20=EC=9E=91=EC=84=B1=20=EA=B8=80=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80:=20-=20=EC=B5=9C?= =?UTF-8?q?=EA=B7=BC=203=EA=B1=B4=20=EC=A1=B0=ED=9A=8C=20=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4/=ED=8E=98=EC=9D=B4=EC=82=AC=EB=93=9C/?= =?UTF-8?q?=EB=A6=AC=ED=8F=AC=EC=A7=80=ED=86=A0=EB=A6=AC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20-=20HTML=20=EC=95=84=EC=BD=94=EB=94=94=EC=96=B8=20U?= =?UTF-8?q?I=20=EB=B0=8F=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PartnershipApplicationController.java | 1 + .../mapper/PartnershipApplicationMapper.java | 6 +++ .../PartnershipApplicationRepository.java | 7 +++ .../service/PartnershipApplicationFacade.java | 7 +++ .../PartnershipApplicationFacadeImpl.java | 13 ++++++ .../PartnershipApplicationService.java | 9 ++++ .../apps/community/mainPartnershipForm.html | 45 +++++++++++++++++++ 7 files changed, 88 insertions(+) diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnership/controller/PartnershipApplicationController.java b/src/main/java/com/eactive/apim/portal/apps/community/partnership/controller/PartnershipApplicationController.java index c936fb3..7027066 100644 --- a/src/main/java/com/eactive/apim/portal/apps/community/partnership/controller/PartnershipApplicationController.java +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnership/controller/PartnershipApplicationController.java @@ -40,6 +40,7 @@ public class PartnershipApplicationController { model.addAttribute("partnership", new PartnershipApplicationDTO()); model.addAttribute("isInternalUser", UserTypeUtil.isCurrentUserInternal()); + model.addAttribute("recentApplications", partnershipApplicationFacade.getMyRecentApplications()); return "apps/community/mainPartnershipForm"; } diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnership/mapper/PartnershipApplicationMapper.java b/src/main/java/com/eactive/apim/portal/apps/community/partnership/mapper/PartnershipApplicationMapper.java index cf45014..8d7e950 100644 --- a/src/main/java/com/eactive/apim/portal/apps/community/partnership/mapper/PartnershipApplicationMapper.java +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnership/mapper/PartnershipApplicationMapper.java @@ -2,8 +2,10 @@ package com.eactive.apim.portal.apps.community.partnership.mapper; import com.eactive.apim.portal.apps.community.partnership.dto.PartnershipApplicationDTO; +import com.eactive.apim.portal.apps.community.partnership.dto.PartnershipApplicationSummaryDTO; import com.eactive.apim.portal.common.mapper.CommonMapper; import com.eactive.apim.portal.partnershipapplication.entity.PartnershipApplication; +import java.util.List; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; import org.springframework.stereotype.Component; @@ -16,4 +18,8 @@ import org.springframework.stereotype.Component; public interface PartnershipApplicationMapper { PartnershipApplication toEntity(PartnershipApplicationDTO dto); + + PartnershipApplicationSummaryDTO toSummaryDto(PartnershipApplication entity); + + List toSummaryDtoList(List entities); } diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnership/repository/PartnershipApplicationRepository.java b/src/main/java/com/eactive/apim/portal/apps/community/partnership/repository/PartnershipApplicationRepository.java index 726f4af..ada77dd 100644 --- a/src/main/java/com/eactive/apim/portal/apps/community/partnership/repository/PartnershipApplicationRepository.java +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnership/repository/PartnershipApplicationRepository.java @@ -2,6 +2,7 @@ package com.eactive.apim.portal.apps.community.partnership.repository; import com.eactive.apim.portal.partnershipapplication.entity.PartnershipApplication; import com.eactive.eai.rms.data.EMSDataSource; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.stereotype.Repository; @@ -9,4 +10,10 @@ import org.springframework.stereotype.Repository; @Repository @EMSDataSource public interface PartnershipApplicationRepository extends JpaRepository, JpaSpecificationExecutor { + + /** + * 특정 작성자(createdBy)가 등록한 최근 3건을 최신순으로 조회한다. + * createdBy 는 PersonalDataEncryptConverter 로 결정적 암호화되므로 평문 사용자 id 로 등가 조회가 가능하다. + */ + List findTop3ByCreatedByOrderByCreatedDateDesc(String createdBy); } diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationFacade.java b/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationFacade.java index 4d2289d..70d6cef 100644 --- a/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationFacade.java +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationFacade.java @@ -1,9 +1,16 @@ package com.eactive.apim.portal.apps.community.partnership.service; import com.eactive.apim.portal.apps.community.partnership.dto.PartnershipApplicationDTO; +import com.eactive.apim.portal.apps.community.partnership.dto.PartnershipApplicationSummaryDTO; import java.io.IOException; +import java.util.List; public interface PartnershipApplicationFacade { void createPartnershipApplication(PartnershipApplicationDTO partnershipApplicationDTO) throws IOException; + + /** + * 현재 로그인 사용자가 작성한 최근 3건을 조회한다. 미인증이면 빈 목록. + */ + List getMyRecentApplications(); } diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationFacadeImpl.java b/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationFacadeImpl.java index 7dfcd75..22bbcbd 100644 --- a/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationFacadeImpl.java +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationFacadeImpl.java @@ -1,6 +1,7 @@ package com.eactive.apim.portal.apps.community.partnership.service; import com.eactive.apim.portal.apps.community.partnership.dto.PartnershipApplicationDTO; +import com.eactive.apim.portal.apps.community.partnership.dto.PartnershipApplicationSummaryDTO; import com.eactive.apim.portal.apps.community.partnership.mapper.PartnershipApplicationMapper; import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; import com.eactive.apim.portal.common.util.SecurityUtil; @@ -15,7 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.io.IOException; +import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; @Service @@ -60,4 +63,14 @@ public class PartnershipApplicationFacadeImpl implements PartnershipApplicationF } portalAdminNotifier.notifyPortalAdmins(MessageCode.PARTNERSHIP_CREATED, params); } + + @Override + public List getMyRecentApplications() { + PortalAuthenticatedUser user = SecurityUtil.getPortalAuthenticatedUser(); + if (user == null) { + return Collections.emptyList(); + } + List recent = partnershipApplicationService.findRecentByCreatedBy(user.getId()); + return partnershipApplicationMapper.toSummaryDtoList(recent); + } } diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationService.java b/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationService.java index 8f76844..35fcb7a 100644 --- a/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationService.java +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationService.java @@ -2,6 +2,7 @@ package com.eactive.apim.portal.apps.community.partnership.service; import com.eactive.apim.portal.apps.community.partnership.repository.PartnershipApplicationRepository; import com.eactive.apim.portal.partnershipapplication.entity.PartnershipApplication; +import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -21,4 +22,12 @@ public class PartnershipApplicationService { public void createPartnershipApplication(PartnershipApplication partnershipApplication) { partnershipApplicationRepository.save(partnershipApplication); } + + /** + * 작성자 id 로 최근 등록 3건 조회(최신순). + */ + @Transactional(readOnly = true) + public List findRecentByCreatedBy(String createdBy) { + return partnershipApplicationRepository.findTop3ByCreatedByOrderByCreatedDateDesc(createdBy); + } } diff --git a/src/main/resources/templates/views/apps/community/mainPartnershipForm.html b/src/main/resources/templates/views/apps/community/mainPartnershipForm.html index 6f58b80..141edc2 100644 --- a/src/main/resources/templates/views/apps/community/mainPartnershipForm.html +++ b/src/main/resources/templates/views/apps/community/mainPartnershipForm.html @@ -11,6 +11,23 @@ +
@@ -19,6 +36,27 @@ DJBank은 온라인 비즈니스 혁신을 위한 피드백/개선요청을 환영합니다. + +
+

내가 작성한 최근 글

+
    +
  • + +
    +

    내용

    +
    +
  • +
+
+