Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,9 @@
import cmf.commitField.domain.user.entity.User;
import cmf.commitField.domain.user.service.CustomOAuth2UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

Expand Down Expand Up @@ -45,14 +43,15 @@ public ResponseEntity<List<PetsDto>> getUserAllPets(@AuthenticationPrincipal Cus
// *************************************

// 새로운 펫 추가
@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public Pet createPet(
@RequestParam String email,
@RequestParam String name,
@RequestPart(value = "imageFile") MultipartFile imageFile
) throws Exception {
User user = userService.getUserByEmail(email).get();
return petService.createPet(name, imageFile, user);
@PostMapping("/new")
public ResponseEntity<Pet> createPet(@AuthenticationPrincipal CustomOAuth2User oAuth2User) throws Exception {
String username = oAuth2User.getName();
Pet pet = petService.createPet("알알", username);
if(pet == null){
//사용자가 현재 펫이 GROWN 상태가 아닌데도 다른 경로를 통해 요청한 경우
ResponseEntity.badRequest();
}
return ResponseEntity.ok(pet);
}

// 모든 펫 조회
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/cmf/commitField/domain/pet/entity/PetGrow.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

@Getter
public enum PetGrow {
//FIXME: 테스트를 위한 수정, 차후 15/30으로 변경 필요
//FIXME: 테스트를 위한 수정, 차후 150/300으로 변경 필요
EGG(0),
HATCH(20),
GROWN(40);
HATCH(5),
GROWN(10);

private final int requiredExp;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,6 @@ public interface PetRepository extends JpaRepository<Pet, Long> {

@Query("SELECT p FROM Pet p WHERE p.user.email = :email ORDER BY p.id DESC")
List<Pet> findLatestPetByUserEmail(@Param("email") String email);
@Query("SELECT p FROM Pet p WHERE p.user.username = :username ORDER BY p.id DESC")
List<Pet> findLatestPetByUserUsername(@Param("username") String username);
}
16 changes: 9 additions & 7 deletions src/main/java/cmf/commitField/domain/pet/service/PetService.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.ArrayList;
Expand All @@ -27,12 +26,15 @@ public class PetService {
private final S3Service s3Service;

// 새로운 펫 생성
public Pet createPet(String name, MultipartFile imageFile, User user) throws IOException {


public Pet createPet(String petname, String username) throws IOException {
Random random = new Random();
Pet pet = new Pet(name, user);
return petRepository.save(pet);
User user = userRepository.findByUsername(username).get();
Pet pet = petRepository.findLatestPetByUserUsername(username).get(0);
if(pet.getGrow() != PetGrow.GROWN){
return null;
}
Pet newPet = new Pet("알알", user);
return petRepository.save(newPet);
}

// 모든 펫 조회
Expand All @@ -55,7 +57,7 @@ public void deletePet(Long petId) {
@Transactional
public UserPetDto getExpPet(String username, long commitCount) {
User user = userRepository.findByUsername(username).get();
Pet pet = user.getPets().get(0);
Pet pet = petRepository.findLatestPetByUserUsername(username).get(0);
pet.addExp(commitCount); // 경험치 증가
petRepository.save(pet);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public ResponseEntity<UserChatInfoDto> getUserChatInfo(@AuthenticationPrincipal
return ResponseEntity.ok(userChatInfoDto);
}

@GetMapping("/info")
@GetMapping("info")
public ResponseEntity<UserInfoDto> getUserInfo(@AuthenticationPrincipal CustomOAuth2User oAuth2User){
String username = oAuth2User.getName();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import cmf.commitField.domain.commit.scheduler.CommitUpdateService;
import cmf.commitField.domain.commit.totalCommit.service.TotalCommitService;
import cmf.commitField.domain.pet.entity.Pet;
import cmf.commitField.domain.pet.entity.PetGrow;
import cmf.commitField.domain.pet.repository.PetRepository;
import cmf.commitField.domain.pet.service.PetService;
import cmf.commitField.domain.user.dto.UserChatInfoDto;
Expand Down Expand Up @@ -73,6 +74,14 @@ public UserInfoDto showUserInfo(String username) {
User user = userRepository.findByUsername(username).get();
Pet pet = petRepository.findLatestPetByUserEmail(user.getEmail()).get(0);

if(user.getTier() != Tier.getLevelByExp(user.getSeasonCommitCount())){
user.setTier(Tier.getLevelByExp(user.getSeasonCommitCount()));
userRepository.save(user);
}
if(pet.getGrow() != PetGrow.getLevelByExp(pet.getExp())){
pet.setGrow(PetGrow.getLevelByExp(pet.getExp()));
petRepository.save(pet);
}

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