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 new file mode 100644 index 0000000..07eedda --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnership/controller/PartnershipApplicationController.java @@ -0,0 +1,61 @@ +package com.eactive.apim.portal.apps.community.partnership.controller; + +import com.eactive.apim.portal.apps.community.partnership.dto.PartnershipApplicationDTO; +import com.eactive.apim.portal.apps.community.partnership.service.PartnershipApplicationFacade; +import com.eactive.apim.portal.common.util.SecurityUtil; +import java.io.IOException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; + +@Controller +@RequestMapping("/partnership") +public class PartnershipApplicationController { + + private final PartnershipApplicationFacade partnershipApplicationFacade; + + @Autowired + public PartnershipApplicationController(PartnershipApplicationFacade partnershipApplicationFacade){ + this.partnershipApplicationFacade = partnershipApplicationFacade; + } + + + @GetMapping + public String newPartnershipApplicationForm(Model model, HttpServletRequest request) { + if (!SecurityUtil.isAuthenticated()) { + return "redirect:/login?redirect=/partnership"; + } + + String referer = request.getHeader("Referer"); + if(referer != null && !referer.contains("/partnership")) { + request.getSession().setAttribute("previousPage", referer); + } + + model.addAttribute("partnership", new PartnershipApplicationDTO()); + return "apps/community/mainPartnershipForm"; + } + + + @PostMapping + public String createPartnershipApplication(@Valid @ModelAttribute PartnershipApplicationDTO partnershipApplicationDTO, + BindingResult bindingResult, HttpServletRequest httpServletRequest, RedirectAttributes redirectAttributes) throws IOException { + if (bindingResult.hasErrors()) { + return "apps/community/mainPartnershipForm"; + } + + partnershipApplicationFacade.createPartnershipApplication(partnershipApplicationDTO); + + // 성공 메시지 추가 + redirectAttributes.addFlashAttribute("success", "사업제휴신청이 완료되었습니다."); + + httpServletRequest.getSession().removeAttribute("previousPage"); + return "redirect:/partnership"; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnership/dto/PartnershipApplicationDTO.java b/src/main/java/com/eactive/apim/portal/apps/community/partnership/dto/PartnershipApplicationDTO.java new file mode 100644 index 0000000..7866253 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnership/dto/PartnershipApplicationDTO.java @@ -0,0 +1,29 @@ +package com.eactive.apim.portal.apps.community.partnership.dto; + +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.Size; +import org.springframework.web.multipart.MultipartFile; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class PartnershipApplicationDTO { + + @Size(max = 255, message = "제목은 255자를 초과할 수 없습니다.") + private String bizSubject; + + private String bizDetail; + + /** + * 첨부파일ID + */ + private String fileId; + + private List files; + + +} 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 new file mode 100644 index 0000000..cf45014 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnership/mapper/PartnershipApplicationMapper.java @@ -0,0 +1,19 @@ +package com.eactive.apim.portal.apps.community.partnership.mapper; + + +import com.eactive.apim.portal.apps.community.partnership.dto.PartnershipApplicationDTO; +import com.eactive.apim.portal.common.mapper.CommonMapper; +import com.eactive.apim.portal.partnershipapplication.entity.PartnershipApplication; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; +import org.springframework.stereotype.Component; + +@Mapper(componentModel = "spring", + uses = {CommonMapper.class}, + unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Component + +public interface PartnershipApplicationMapper { + + PartnershipApplication toEntity(PartnershipApplicationDTO dto); +} 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 new file mode 100644 index 0000000..726f4af --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnership/repository/PartnershipApplicationRepository.java @@ -0,0 +1,12 @@ +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 org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.stereotype.Repository; + +@Repository +@EMSDataSource +public interface PartnershipApplicationRepository extends JpaRepository, JpaSpecificationExecutor { +} 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 new file mode 100644 index 0000000..4d2289d --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationFacade.java @@ -0,0 +1,9 @@ +package com.eactive.apim.portal.apps.community.partnership.service; + +import com.eactive.apim.portal.apps.community.partnership.dto.PartnershipApplicationDTO; +import java.io.IOException; + +public interface PartnershipApplicationFacade { + + void createPartnershipApplication(PartnershipApplicationDTO partnershipApplicationDTO) throws IOException; +} 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 new file mode 100644 index 0000000..c9019c7 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationFacadeImpl.java @@ -0,0 +1,37 @@ +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.mapper.PartnershipApplicationMapper; +import com.eactive.apim.portal.file.entity.FileInfo; +import com.eactive.apim.portal.file.service.FileService; +import com.eactive.apim.portal.file.service.FileTypeContext; +import com.eactive.apim.portal.partnershipapplication.entity.PartnershipApplication; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.io.IOException; + +@Service +@RequiredArgsConstructor +public class PartnershipApplicationFacadeImpl implements PartnershipApplicationFacade { + + private final PartnershipApplicationService partnershipApplicationService; + private final PartnershipApplicationMapper partnershipApplicationMapper; + private final FileService fileService; + + + @Override + public void createPartnershipApplication(PartnershipApplicationDTO partnershipApplicationDTO) throws IOException { + + FileInfo file = null; + if (!partnershipApplicationDTO.getFiles().isEmpty()) { + FileTypeContext.setFileType("business"); + file = fileService.createFile(partnershipApplicationDTO.getFiles()); + } + PartnershipApplication partnershipApplication = partnershipApplicationMapper.toEntity(partnershipApplicationDTO); + if (file != null) { + partnershipApplication.setFileId(file.getFileId()); + } + partnershipApplicationService.createPartnershipApplication(partnershipApplication); + } +} 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 new file mode 100644 index 0000000..8f76844 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnership/service/PartnershipApplicationService.java @@ -0,0 +1,24 @@ +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 org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + + +@Service +@Transactional +public class PartnershipApplicationService { + + private final PartnershipApplicationRepository partnershipApplicationRepository; + + @Autowired + public PartnershipApplicationService(PartnershipApplicationRepository partnershipApplicationRepository) { + this.partnershipApplicationRepository = partnershipApplicationRepository; + } + + public void createPartnershipApplication(PartnershipApplication partnershipApplication) { + partnershipApplicationRepository.save(partnershipApplication); + } +} diff --git a/src/main/resources/templates/views/apps/community/mainPartnershipForm.html b/src/main/resources/templates/views/apps/community/mainPartnershipForm.html index 96c0272..f78e28c 100644 --- a/src/main/resources/templates/views/apps/community/mainPartnershipForm.html +++ b/src/main/resources/templates/views/apps/community/mainPartnershipForm.html @@ -1,77 +1,111 @@ + xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout/kjbank_base_layout}">
-
-

사업 제휴 신청

-
-
-
-

Kbank는 온라인 비즈니스 혁신을 위한 사업 제안을 환영합니다.

+ + -
+ +
+
-
-

- 사업 제목 -

-
-
- -
-
-
-
-
-

- 사업 내용 -

-
-
- -
-
-
-
- -
-

첨부파일

-
-
-
- -
-
-
- - -
-
-
- -
-

첨부파일은 10MB 이내로 등록해 주세요.

-

문서파일과 이미지 파일만 등록 가능합니다. (pdf, doc, docx, xls, xlsx, ppt, pptx, hwp, gif, jpg, - png)

-
+ +
+ + +
+ +
-
- 취소 -
- + +
+ + +
+ + 사업의 목적, 내용, 기대 효과 등을 구체적으로 작성해 주세요 +
+
+ + +
+
+ + +
+ +
+ + + + +
+
+

첨부파일은 10MB 이내로 등록해 주세요

+

문서파일과 이미지 파일만 등록 가능합니다 (pdf, doc, docx, xls, xlsx, ppt, pptx, hwp, gif, jpg, png)

+
+
+ + +
+ + + 취소 + +
@@ -97,17 +131,21 @@