diff --git a/backend/modumoa/src/main/java/com/ft/modumoa/controller/PartyController.java b/backend/modumoa/src/main/java/com/ft/modumoa/controller/PartyController.java index fb7d2d8..c831434 100644 --- a/backend/modumoa/src/main/java/com/ft/modumoa/controller/PartyController.java +++ b/backend/modumoa/src/main/java/com/ft/modumoa/controller/PartyController.java @@ -1,10 +1,15 @@ package com.ft.modumoa.controller; +import com.ft.modumoa.config.auth.PrincipalDetails; +import com.ft.modumoa.dto.PartyCreateResponseDTO; import com.ft.modumoa.dto.PartyListDTO; +import com.ft.modumoa.dto.PartyCreateRequestDTO; import com.ft.modumoa.service.PartyService; -import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import java.util.List; @@ -20,4 +25,10 @@ public class PartyController { public List getPartyList(){ return partyService.getAllPartyList(); } + + @PostMapping("/party/create") + public PartyCreateResponseDTO createParty(@RequestBody PartyCreateRequestDTO partyRequestDTO, @AuthenticationPrincipal PrincipalDetails user) { + + return partyService.createParty(partyRequestDTO, user.getUser()); + } } diff --git a/backend/modumoa/src/main/java/com/ft/modumoa/dto/PartyCreateRequestDTO.java b/backend/modumoa/src/main/java/com/ft/modumoa/dto/PartyCreateRequestDTO.java new file mode 100644 index 0000000..6bc102c --- /dev/null +++ b/backend/modumoa/src/main/java/com/ft/modumoa/dto/PartyCreateRequestDTO.java @@ -0,0 +1,18 @@ +package com.ft.modumoa.dto; + +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) +public class PartyCreateRequestDTO { + + private String title; + private String content; + private String category; + private int max; + private LocalDateTime dueDate; +} diff --git a/backend/modumoa/src/main/java/com/ft/modumoa/dto/PartyCreateResponseDTO.java b/backend/modumoa/src/main/java/com/ft/modumoa/dto/PartyCreateResponseDTO.java new file mode 100644 index 0000000..2737634 --- /dev/null +++ b/backend/modumoa/src/main/java/com/ft/modumoa/dto/PartyCreateResponseDTO.java @@ -0,0 +1,10 @@ +package com.ft.modumoa.dto; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class PartyCreateResponseDTO { + private Long id; +} diff --git a/backend/modumoa/src/main/java/com/ft/modumoa/entity/Party.java b/backend/modumoa/src/main/java/com/ft/modumoa/entity/Party.java index fa5431d..4c2b4be 100644 --- a/backend/modumoa/src/main/java/com/ft/modumoa/entity/Party.java +++ b/backend/modumoa/src/main/java/com/ft/modumoa/entity/Party.java @@ -1,5 +1,6 @@ package com.ft.modumoa.entity; +import lombok.Builder; import lombok.Data; import org.hibernate.annotations.CreationTimestamp; @@ -8,6 +9,7 @@ import java.time.LocalDateTime; @Data +@Builder @Entity public class Party { diff --git a/backend/modumoa/src/main/java/com/ft/modumoa/repository/CategoryRepository.java b/backend/modumoa/src/main/java/com/ft/modumoa/repository/CategoryRepository.java index fda939b..b5d718b 100644 --- a/backend/modumoa/src/main/java/com/ft/modumoa/repository/CategoryRepository.java +++ b/backend/modumoa/src/main/java/com/ft/modumoa/repository/CategoryRepository.java @@ -1,7 +1,9 @@ package com.ft.modumoa.repository; import com.ft.modumoa.entity.Category; +import com.ft.modumoa.entity.User; import org.springframework.data.jpa.repository.JpaRepository; public interface CategoryRepository extends JpaRepository { + public Category findByType(String type); } diff --git a/backend/modumoa/src/main/java/com/ft/modumoa/service/PartyService.java b/backend/modumoa/src/main/java/com/ft/modumoa/service/PartyService.java index 0d59bc9..7d927dd 100644 --- a/backend/modumoa/src/main/java/com/ft/modumoa/service/PartyService.java +++ b/backend/modumoa/src/main/java/com/ft/modumoa/service/PartyService.java @@ -1,7 +1,11 @@ package com.ft.modumoa.service; +import com.ft.modumoa.dto.PartyCreateResponseDTO; import com.ft.modumoa.dto.PartyListDTO; +import com.ft.modumoa.dto.PartyCreateRequestDTO; import com.ft.modumoa.entity.Party; +import com.ft.modumoa.entity.User; +import com.ft.modumoa.repository.CategoryRepository; import com.ft.modumoa.repository.PartyRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -16,7 +20,10 @@ public class PartyService { @Autowired private PartyRepository partyRepository; - public List getAllPartyList(){ + @Autowired + private CategoryRepository categoryRepository; + + public List getAllPartyList() { return partyRepository.findAll() .stream() @@ -24,7 +31,18 @@ public List getAllPartyList(){ .collect(Collectors.toList()); } - private PartyListDTO convertEntityToDto(Party party){ + public PartyCreateResponseDTO createParty(PartyCreateRequestDTO partyRequestDTO, User user) { + + Party party = convertDtoToEntity(partyRequestDTO, user); + + party = partyRepository.save(party); + + return PartyCreateResponseDTO.builder() + .id(party.getId()) + .build(); + } + + private PartyListDTO convertEntityToDto(Party party) { return PartyListDTO.builder() .id(party.getId()) @@ -38,4 +56,17 @@ private PartyListDTO convertEntityToDto(Party party){ .status(LocalDateTime.now().isBefore(party.getDeadline())) .build(); } + + private Party convertDtoToEntity(PartyCreateRequestDTO partyRequestDTO, User user){ + Party party = Party.builder() + .writer(user) + .category(categoryRepository.findByType(partyRequestDTO.getCategory())) + .title(partyRequestDTO.getTitle()) + .content(partyRequestDTO.getContent()) + .max(partyRequestDTO.getMax()) + .current(0) + .create_at(LocalDateTime.now()) + .deadline(partyRequestDTO.getDueDate()) + .build(); + } }