Skip to content

Commit 585ee2c

Browse files
authored
Merge pull request #108 from Renzzle/fix/content
fix: Buy default pack when signing up
2 parents 2fa9788 + fb55815 commit 585ee2c

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

src/main/java/com/renzzle/backend/domain/auth/service/AccountService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.renzzle.backend.domain.auth.api.request.SignupRequest;
55
import com.renzzle.backend.domain.auth.api.response.LoginResponse;
66
import com.renzzle.backend.domain.user.dao.UserRepository;
7+
import com.renzzle.backend.domain.puzzle.training.service.TrainingService;
78
import com.renzzle.backend.domain.user.domain.UserEntity;
89
import com.renzzle.backend.global.exception.CustomException;
910
import com.renzzle.backend.global.exception.ErrorCode;
@@ -23,6 +24,7 @@ public class AccountService {
2324
private final UserRepository userRepository;
2425
private final PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
2526
private final AuthService authService;
27+
private final TrainingService trainingService;
2628

2729
@Transactional(readOnly = true)
2830
public boolean isDuplicatedEmail(String email) {
@@ -46,7 +48,8 @@ public LoginResponse signUp(SignupRequest request) {
4648
}
4749

4850
UserEntity user = createNewUser(request.email(), request.password(), request.nickname(), request.deviceId());
49-
51+
// 회원가입 시 packId = 1 자동 지급
52+
trainingService.grantPackToUser(user, 1L);
5053
return authService.createAuthTokens(user.getId());
5154
}
5255

src/main/java/com/renzzle/backend/domain/puzzle/training/service/TrainingService.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,4 +308,28 @@ public GetTrainingPuzzleAnswerResponse purchaseTrainingPuzzleAnswer(UserEntity u
308308
.price(ItemPrice.HINT.getPrice())
309309
.build();
310310
}
311+
312+
// 회원가입 시 무료로 특정 Pack을 지급 (잔액 차감 없음)
313+
@Transactional
314+
public void grantPackToUser(UserEntity user, Long packId) {
315+
if (user == null || packId == null) {
316+
throw new CustomException(ErrorCode.VALIDATION_ERROR);
317+
}
318+
319+
Pack pack = packRepository.findById(packId)
320+
.orElseThrow(() -> new CustomException(ErrorCode.NO_SUCH_TRAINING_PACK));
321+
322+
// 이미 보유한 경우 무시
323+
if (userPackRepository.findByUserIdAndPackId(user.getId(), packId).isPresent()) {
324+
return;
325+
}
326+
327+
UserPack userPack = UserPack.builder()
328+
.user(user)
329+
.pack(pack)
330+
.solvedCount(0)
331+
.build();
332+
333+
userPackRepository.save(userPack);
334+
}
311335
}

src/test/java/com/renzzle/backend/domain/auth/service/AccountServiceTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.renzzle.backend.domain.auth.api.request.SignupRequest;
55
import com.renzzle.backend.domain.auth.api.response.LoginResponse;
66
import com.renzzle.backend.domain.user.dao.UserRepository;
7+
import com.renzzle.backend.domain.puzzle.training.service.TrainingService;
78
import com.renzzle.backend.domain.user.domain.UserEntity;
89
import com.renzzle.backend.global.exception.CustomException;
910
import com.renzzle.backend.global.exception.ErrorCode;
@@ -34,6 +35,8 @@ public class AccountServiceTest {
3435
private UserRepository userRepository;
3536
@Mock
3637
private AuthService authService;
38+
@Mock
39+
private TrainingService trainingService;
3740

3841
@InjectMocks
3942
private AccountService accountService;
@@ -62,6 +65,7 @@ public void signUp_ShouldCreateUserAndReturnTokens_WhenValid() {
6265
when(userRepository.existsByDeviceId(deviceId)).thenReturn(false);
6366
when(userRepository.save(any(UserEntity.class))).thenAnswer(i -> UserEntity.builder().id(1L).build());
6467
when(authService.createAuthTokens(anyLong())).thenReturn(mock(LoginResponse.class));
68+
doNothing().when(trainingService).grantPackToUser(any(UserEntity.class), eq(1L));
6569

6670
// when
6771
LoginResponse response = accountService.signUp(validSignupRequest);

0 commit comments

Comments
 (0)