Skip to content

Commit 38d14ab

Browse files
committed
feat: 새 펫 기능 추가를 위한 코드 소량 수정
1 parent d79764e commit 38d14ab

File tree

8 files changed

+58
-21
lines changed

8 files changed

+58
-21
lines changed

src/main/java/cmf/commitField/domain/noti/noti/controller/ApiV1NotiController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
public class ApiV1NotiController {
3131
private final NotiService notiService;
3232
private final UserRepository userRepository;
33-
private final NotiWebSocketHandler notiWebSocketHandler;
3433
private final ApplicationEventPublisher eventPublisher;
3534

3635
@GetMapping("")

src/main/java/cmf/commitField/domain/pet/controller/PetController.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cmf.commitField.domain.pet.controller;
22

3+
import cmf.commitField.domain.pet.dto.PetsDto;
34
import cmf.commitField.domain.pet.dto.UserPetDto;
45
import cmf.commitField.domain.pet.entity.Pet;
56
import cmf.commitField.domain.pet.service.PetService;
@@ -24,14 +25,21 @@ public class PetController {
2425

2526
// 현재 펫 경험치 상승 및 상승 시 레벨업 처리
2627
@GetMapping("/exp")
27-
public ResponseEntity<UserPetDto> getUserTier(@AuthenticationPrincipal CustomOAuth2User oAuth2User){
28-
String username = oAuth2User.getName(); // CustomOAuth2User의 getName()은 user.getUsername()을 반환
28+
public ResponseEntity<UserPetDto> getPetExp(@AuthenticationPrincipal CustomOAuth2User oAuth2User){
29+
String username = oAuth2User.getName();
2930

3031
System.out.println("/pet/exp, Username: "+username);
3132
UserPetDto userPetDto = petService.getExpPet(username, 0);
3233
return ResponseEntity.ok(userPetDto);
3334
}
3435

36+
@GetMapping("/getall")
37+
public ResponseEntity<List<PetsDto>> getUserAllPets(@AuthenticationPrincipal CustomOAuth2User oAuth2User){
38+
String username = oAuth2User.getName();
39+
List<PetsDto> userPetDto = petService.getAllPets(username);
40+
return ResponseEntity.ok(userPetDto);
41+
}
42+
3543
// *************************************
3644
// TODO : 아래는 확장 기능, 추가 시 개선 필요
3745
// *************************************
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package cmf.commitField.domain.pet.dto;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
8+
@Builder
9+
@Getter
10+
@NoArgsConstructor
11+
@AllArgsConstructor
12+
public class PetsDto {
13+
private String username;
14+
private long petId;
15+
private String petName;
16+
private int type;
17+
private String grow;
18+
}

src/main/java/cmf/commitField/domain/pet/repository/PetRepository.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import cmf.commitField.domain.pet.entity.Pet;
44
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.data.jpa.repository.Query;
6+
import org.springframework.data.repository.query.Param;
57
import org.springframework.stereotype.Repository;
68

79
import java.util.List;
@@ -12,4 +14,7 @@ public interface PetRepository extends JpaRepository<Pet, Long> {
1214
Optional<Pet> findById(Long id);
1315
List<Pet> findByUserEmail(String email);
1416
List<Pet> findByUserUsername(String username);
17+
18+
@Query("SELECT p FROM Pet p WHERE p.user.email = :email ORDER BY p.id DESC")
19+
List<Pet> findLatestPetByUserEmail(@Param("email") String email);
1520
}

src/main/java/cmf/commitField/domain/pet/service/PetService.java

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cmf.commitField.domain.pet.service;
22

3+
import cmf.commitField.domain.pet.dto.PetsDto;
34
import cmf.commitField.domain.pet.dto.UserPetDto;
45
import cmf.commitField.domain.pet.entity.Pet;
56
import cmf.commitField.domain.pet.entity.PetGrow;
@@ -13,6 +14,7 @@
1314
import org.springframework.web.multipart.MultipartFile;
1415

1516
import java.io.IOException;
17+
import java.util.ArrayList;
1618
import java.util.List;
1719
import java.util.Optional;
1820
import java.util.Random;
@@ -27,11 +29,7 @@ public class PetService {
2729
// 새로운 펫 생성
2830
public Pet createPet(String name, MultipartFile imageFile, User user) throws IOException {
2931

30-
// ✅ S3 업로드 로직 추가
31-
String imageUrl = null;
32-
if (imageFile != null && !imageFile.isEmpty()) {
33-
imageUrl = s3Service.uploadFile(imageFile, "pet-images");
34-
}
32+
3533
Random random = new Random();
3634
Pet pet = new Pet(name, user);
3735
return petRepository.save(pet);
@@ -80,4 +78,23 @@ public void levelUp(Pet pet){
8078
pet.setGrow(PetGrow.getLevelByExp(pet.getExp()));
8179
petRepository.save(pet);
8280
}
81+
82+
//유저의 모든 펫 조회
83+
public List<PetsDto> getAllPets(String username){
84+
List<Pet> pets = petRepository.findByUserUsername(username);
85+
List<PetsDto> petsList = new ArrayList<>();
86+
for(Pet pet : pets){
87+
petsList.add(
88+
PetsDto.builder()
89+
.username(username)
90+
.petId(pet.getId())
91+
.petName(pet.getName())
92+
.type(pet.getType())
93+
.grow(String.valueOf(pet.getGrow()))
94+
.build()
95+
);
96+
}
97+
98+
return petsList;
99+
}
83100
}

src/main/java/cmf/commitField/domain/user/service/UserService.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,20 +68,10 @@ public List<UserRegacyDto> showUserRegacy(String username) {
6868
return userRegacyDtos;
6969
}
7070

71-
@Transactional
7271
public UserInfoDto showUserInfo(String username) {
7372
User user = userRepository.findByUsername(username).get();
74-
Pet pet = petRepository.findByUserEmail(user.getEmail()).get(0); // TODO: 확장시 코드 수정 필요
73+
Pet pet = petRepository.findLatestPetByUserEmail(user.getEmail()).get(0);
7574

76-
// TODO: info 조회 시 user commit 수 즉시 반영은 로직 변경이 필요
77-
// long totalCommit = totalCommitService.getTotalCommitCount(username).getTotalCommitContributions();
78-
// long seasonCommit = totalCommitService.getSeasonCommits(username,
79-
// LocalDateTime.of(2025,03,01,00,00),
80-
// LocalDateTime.of(2025,05,31,23,59)
81-
// ).getTotalCommitContributions();
82-
//
83-
// user.setCommitCount(totalCommit);
84-
// TODO블럭 종료
8575

8676
// 유저 정보 조회 후 active 상태가 아니면 Redis에 추가, 커밋 추적 시작
8777
String key = "commit_active:" + user.getUsername();

src/main/resources/application-dev.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ spring:
77
jpa:
88
open-in-view: false
99
hibernate:
10-
ddl-auto: create
10+
ddl-auto: update
1111
autoconfigure: # 로컬에서 실행할 때는 Redis와 Session 설정을 제외
1212
exclude:
1313
- org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration

src/main/resources/application.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ spring:
1818
jpa:
1919
open-in-view: false
2020
hibernate:
21-
ddl-auto: create
21+
ddl-auto: update
2222
properties:
2323
hibernate:
2424
default_batch_fetch_size: 100

0 commit comments

Comments
 (0)