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은 온라인 비즈니스 혁신을 위한 피드백/개선요청을 환영합니다. + +
+

내가 작성한 최근 글

+
    +
  • + +
    +

    내용

    +
    +
  • +
+
+