From 420ab8012ee6c1650b093830bb75f837670e5659 Mon Sep 17 00:00:00 2001 From: whale22 Date: Tue, 22 Apr 2025 17:55:07 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=EC=9C=A0=EC=A0=80=20=ED=8E=AB=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20api=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../noti/controller/ApiV1NotiController.java | 2 +- .../domain/pet/controller/PetController.java | 7 ----- .../pet/controller/UserPetController.java | 20 ++++++------- .../domain/pet/dto/UserPetListDto.java | 17 +++++++++++ .../domain/pet/service/PetService.java | 28 +++++++++++++++---- 5 files changed, 49 insertions(+), 25 deletions(-) create mode 100644 src/main/java/cmf/commitField/domain/pet/dto/UserPetListDto.java diff --git a/src/main/java/cmf/commitField/domain/noti/noti/controller/ApiV1NotiController.java b/src/main/java/cmf/commitField/domain/noti/noti/controller/ApiV1NotiController.java index 5b5372b..a876fa3 100644 --- a/src/main/java/cmf/commitField/domain/noti/noti/controller/ApiV1NotiController.java +++ b/src/main/java/cmf/commitField/domain/noti/noti/controller/ApiV1NotiController.java @@ -30,7 +30,7 @@ public class ApiV1NotiController { private final NotiService notiService; private final UserRepository userRepository; - private final NotiWebSocketHandler notiWebSocketHandler; +// private final NotiWebSocketHandler notiWebSocketHandler; private final ApplicationEventPublisher eventPublisher; @GetMapping("") diff --git a/src/main/java/cmf/commitField/domain/pet/controller/PetController.java b/src/main/java/cmf/commitField/domain/pet/controller/PetController.java index 1a9c903..e28fe9c 100644 --- a/src/main/java/cmf/commitField/domain/pet/controller/PetController.java +++ b/src/main/java/cmf/commitField/domain/pet/controller/PetController.java @@ -13,8 +13,6 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.util.List; - @RestController @RequiredArgsConstructor @RequestMapping("/api/pets") @@ -47,11 +45,6 @@ public Pet createPet( return petService.createPet(name, imageFile, user); } - // 모든 펫 조회 - @GetMapping - public List getAllPets() { - return petService.getAllPets(); - } // 특정 펫 조회 @GetMapping("/{petId}") diff --git a/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java b/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java index d8f56f2..ce56358 100644 --- a/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java +++ b/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java @@ -1,20 +1,18 @@ package cmf.commitField.domain.pet.controller; -import cmf.commitField.domain.pet.entity.Pet; +import cmf.commitField.domain.pet.dto.UserPetListDto; import cmf.commitField.domain.pet.service.PetService; import cmf.commitField.domain.pet.service.UserPetService; -import cmf.commitField.domain.user.entity.User; +import cmf.commitField.domain.user.entity.CustomOAuth2User; import cmf.commitField.domain.user.service.CustomOAuth2UserService; -import cmf.commitField.global.globalDto.GlobalResponse; import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - @RestController @RequestMapping("/user-pets") @RequiredArgsConstructor @@ -24,11 +22,11 @@ public class UserPetController { private final CustomOAuth2UserService customOAuth2UserService; private final PetService petService; - // TODO: 기능 확장시 추가 예정 // 유저의 도감 조회 (보유한 펫 목록) - @GetMapping("/collection/{userId}") - public GlobalResponse> getUserPetCollection(@PathVariable Long userId) { - User user = customOAuth2UserService.getUserById(userId).orElse(null); - return GlobalResponse.success(userPetService.getUserPetCollection(user)); + @GetMapping("/collection") + public ResponseEntity getUserPetCollection(@AuthenticationPrincipal CustomOAuth2User oAuth2User) { + String username = oAuth2User.getName(); + UserPetListDto userPetListDto = petService.getAllPets(username); + return ResponseEntity.ok(userPetListDto); } } \ No newline at end of file diff --git a/src/main/java/cmf/commitField/domain/pet/dto/UserPetListDto.java b/src/main/java/cmf/commitField/domain/pet/dto/UserPetListDto.java new file mode 100644 index 0000000..e724a50 --- /dev/null +++ b/src/main/java/cmf/commitField/domain/pet/dto/UserPetListDto.java @@ -0,0 +1,17 @@ +package cmf.commitField.domain.pet.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.Map; + +@Builder +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class UserPetListDto { + private String username; + private Map petList; // 아이디, 소유 갯수 +} \ No newline at end of file diff --git a/src/main/java/cmf/commitField/domain/pet/service/PetService.java b/src/main/java/cmf/commitField/domain/pet/service/PetService.java index 228a71a..ffb69c6 100644 --- a/src/main/java/cmf/commitField/domain/pet/service/PetService.java +++ b/src/main/java/cmf/commitField/domain/pet/service/PetService.java @@ -1,6 +1,7 @@ package cmf.commitField.domain.pet.service; import cmf.commitField.domain.pet.dto.UserPetDto; +import cmf.commitField.domain.pet.dto.UserPetListDto; import cmf.commitField.domain.pet.entity.Pet; import cmf.commitField.domain.pet.entity.PetGrow; import cmf.commitField.domain.pet.repository.PetRepository; @@ -13,9 +14,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.util.List; -import java.util.Optional; -import java.util.Random; +import java.util.*; @Service @RequiredArgsConstructor @@ -37,9 +36,26 @@ public Pet createPet(String name, MultipartFile imageFile, User user) throws IOE return petRepository.save(pet); } - // 모든 펫 조회 - public List getAllPets() { - return petRepository.findAll(); + // 유저가 소유한 펫 조회 + public UserPetListDto getAllPets(String username) { + List pets = petRepository.findByUserUsername(username); + int[] petsNum = new int[100]; //FIXME: 차후 갯수 수정 필요 + int max = 0; + Map petList = new HashMap<>(); + for(Pet pet : pets){ + int type = pet.getType(); + petsNum[type]++; + if(max Date: Tue, 22 Apr 2025 18:45:18 +0900 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20api=20=EC=A3=BC=EC=86=8C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commitField/domain/pet/controller/UserPetController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java b/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java index ce56358..5cdefbe 100644 --- a/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java +++ b/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping("/user-pets") +@RequestMapping("/api/user/") @RequiredArgsConstructor public class UserPetController { From 0c75093a051b7adcb9f2db8dddf5a5a885eb0c96 Mon Sep 17 00:00:00 2001 From: whale22 Date: Tue, 29 Apr 2025 16:06:35 +0900 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=ED=8E=AB=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=EC=97=90=20=EB=AC=B8=EC=A0=9C=20=EB=B0=9C=EA=B2=AC=EB=90=98?= =?UTF-8?q?=EC=96=B4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/pet/controller/PetController.java | 11 ++++++++++ .../pet/controller/UserPetController.java | 2 +- .../domain/pet/dto/UserPetDto.java | 1 + .../domain/pet/service/PetService.java | 22 +++++++++++++++++-- src/main/resources/application.yml | 2 +- 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/main/java/cmf/commitField/domain/pet/controller/PetController.java b/src/main/java/cmf/commitField/domain/pet/controller/PetController.java index e28fe9c..6f3cee7 100644 --- a/src/main/java/cmf/commitField/domain/pet/controller/PetController.java +++ b/src/main/java/cmf/commitField/domain/pet/controller/PetController.java @@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.util.List; + @RestController @RequiredArgsConstructor @RequestMapping("/api/pets") @@ -20,6 +22,15 @@ public class PetController { private final CustomOAuth2UserService userService; private final PetService petService; + // 현재 펫 경험치 상승 및 상승 시 레벨업 처리 + @GetMapping("/getall") + public ResponseEntity> getUserPets(@AuthenticationPrincipal CustomOAuth2User oAuth2User){ + String username = oAuth2User.getName(); // CustomOAuth2User의 getName()은 user.getUsername()을 반환 + + List userPetDto = petService.getAllPets(username); + return ResponseEntity.ok(userPetDto); + } + // 현재 펫 경험치 상승 및 상승 시 레벨업 처리 @GetMapping("/exp") public ResponseEntity getUserTier(@AuthenticationPrincipal CustomOAuth2User oAuth2User){ diff --git a/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java b/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java index 5cdefbe..3714d17 100644 --- a/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java +++ b/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java @@ -26,7 +26,7 @@ public class UserPetController { @GetMapping("/collection") public ResponseEntity getUserPetCollection(@AuthenticationPrincipal CustomOAuth2User oAuth2User) { String username = oAuth2User.getName(); - UserPetListDto userPetListDto = petService.getAllPets(username); + UserPetListDto userPetListDto = petService.getUserCollection(username); return ResponseEntity.ok(userPetListDto); } } \ No newline at end of file diff --git a/src/main/java/cmf/commitField/domain/pet/dto/UserPetDto.java b/src/main/java/cmf/commitField/domain/pet/dto/UserPetDto.java index 55c456b..42481f3 100644 --- a/src/main/java/cmf/commitField/domain/pet/dto/UserPetDto.java +++ b/src/main/java/cmf/commitField/domain/pet/dto/UserPetDto.java @@ -14,5 +14,6 @@ public class UserPetDto { private long petId; private String petName; private String grow; + private int type; private long exp; } diff --git a/src/main/java/cmf/commitField/domain/pet/service/PetService.java b/src/main/java/cmf/commitField/domain/pet/service/PetService.java index ffb69c6..984f67c 100644 --- a/src/main/java/cmf/commitField/domain/pet/service/PetService.java +++ b/src/main/java/cmf/commitField/domain/pet/service/PetService.java @@ -36,8 +36,26 @@ public Pet createPet(String name, MultipartFile imageFile, User user) throws IOE return petRepository.save(pet); } - // 유저가 소유한 펫 조회 - public UserPetListDto getAllPets(String username) { + public List getAllPets(String username){ + List pets = petRepository.findByUserUsername(username); + List userPetDtoList = new ArrayList<>(); + + for(Pet pet : pets){ + userPetDtoList.add(UserPetDto.builder(). + username(username). + petId(pet.getId()). + petName(pet.getName()). + grow(pet.getGrow().toString()). + type(pet.getType()). + build()); + } + + return userPetDtoList; + } + + + // 유저가 소유한 펫 도감 조회 + public UserPetListDto getUserCollection(String username) { List pets = petRepository.findByUserUsername(username); int[] petsNum = new int[100]; //FIXME: 차후 갯수 수정 필요 int max = 0; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index fea3d67..b01ed8d 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -18,7 +18,7 @@ spring: jpa: open-in-view: false hibernate: - ddl-auto: create + ddl-auto: update properties: hibernate: default_batch_fetch_size: 100 From deeb0c0ab7126a94d89cc68c7b2382923f1d72f1 Mon Sep 17 00:00:00 2001 From: whale22 Date: Tue, 29 Apr 2025 16:12:37 +0900 Subject: [PATCH 4/4] =?UTF-8?q?Fix:=20=EB=B3=91=ED=95=A9=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/pet/controller/PetController.java | 11 ++------- .../domain/pet/service/PetService.java | 23 +------------------ 2 files changed, 3 insertions(+), 31 deletions(-) diff --git a/src/main/java/cmf/commitField/domain/pet/controller/PetController.java b/src/main/java/cmf/commitField/domain/pet/controller/PetController.java index 8423f40..adc14c2 100644 --- a/src/main/java/cmf/commitField/domain/pet/controller/PetController.java +++ b/src/main/java/cmf/commitField/domain/pet/controller/PetController.java @@ -23,10 +23,10 @@ public class PetController { // 현재 펫 경험치 상승 및 상승 시 레벨업 처리 @GetMapping("/getall") - public ResponseEntity> getUserPets(@AuthenticationPrincipal CustomOAuth2User oAuth2User){ + public ResponseEntity> getUserPets(@AuthenticationPrincipal CustomOAuth2User oAuth2User){ String username = oAuth2User.getName(); // CustomOAuth2User의 getName()은 user.getUsername()을 반환 - List userPetDto = petService.getAllPets(username); + List userPetDto = petService.getAllPets(username); return ResponseEntity.ok(userPetDto); } @@ -40,13 +40,6 @@ public ResponseEntity getPetExp(@AuthenticationPrincipal CustomOAuth return ResponseEntity.ok(userPetDto); } - @GetMapping("/getall") - public ResponseEntity> getUserAllPets(@AuthenticationPrincipal CustomOAuth2User oAuth2User){ - String username = oAuth2User.getName(); - List userPetDto = petService.getAllPets(username); - return ResponseEntity.ok(userPetDto); - } - // ************************************* // TODO : 아래는 확장 기능, 추가 시 개선 필요 // ************************************* diff --git a/src/main/java/cmf/commitField/domain/pet/service/PetService.java b/src/main/java/cmf/commitField/domain/pet/service/PetService.java index 0867a4d..e1fb2d0 100644 --- a/src/main/java/cmf/commitField/domain/pet/service/PetService.java +++ b/src/main/java/cmf/commitField/domain/pet/service/PetService.java @@ -14,10 +14,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.Random; +import java.util.*; @Service @RequiredArgsConstructor @@ -38,24 +35,6 @@ public Pet createPet(String petname, String username) throws IOException { return petRepository.save(newPet); } - public List getAllPets(String username){ - List pets = petRepository.findByUserUsername(username); - List userPetDtoList = new ArrayList<>(); - - for(Pet pet : pets){ - userPetDtoList.add(UserPetDto.builder(). - username(username). - petId(pet.getId()). - petName(pet.getName()). - grow(pet.getGrow().toString()). - type(pet.getType()). - build()); - } - - return userPetDtoList; - } - - // 유저가 소유한 펫 도감 조회 public UserPetListDto getUserCollection(String username) { List pets = petRepository.findByUserUsername(username);