-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
299a04f
commit d84960a
Showing
26 changed files
with
688 additions
and
4 deletions.
There are no files selected for viewing
72 changes: 72 additions & 0 deletions
72
src/main/java/com/alom/dorundorunbe/domain/Achievement/controller/AchievementController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.controller; | ||
|
||
import com.alom.dorundorunbe.domain.Achievement.domain.Achievement; | ||
import com.alom.dorundorunbe.domain.Achievement.domain.UserAchievement; | ||
import com.alom.dorundorunbe.domain.Achievement.dto.assign.AssignAchievementRequestDto; | ||
import com.alom.dorundorunbe.domain.Achievement.dto.assign.AssignAchievementResponseDto; | ||
import com.alom.dorundorunbe.domain.Achievement.dto.create.CreateAchievementRequestDto; | ||
import com.alom.dorundorunbe.domain.Achievement.dto.create.CreateAchievementResponseDto; | ||
import com.alom.dorundorunbe.domain.Achievement.dto.query.AchievementDto; | ||
import com.alom.dorundorunbe.domain.Achievement.dto.reward.RewardAchievementRequestDto; | ||
import com.alom.dorundorunbe.domain.Achievement.dto.reward.RewardAchievementResponseDto; | ||
import com.alom.dorundorunbe.domain.Achievement.dto.update.UpdateAchievementRequestDto; | ||
import com.alom.dorundorunbe.domain.Achievement.dto.update.UpdateAchievementResponseDto; | ||
import com.alom.dorundorunbe.domain.Achievement.service.AchievementService; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.data.domain.Slice; | ||
import org.springframework.data.web.PageableDefault; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.*; | ||
|
||
import java.util.List; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/achievement") | ||
public class AchievementController { | ||
|
||
private final AchievementService achievementService; | ||
|
||
@PostMapping | ||
public ResponseEntity<CreateAchievementResponseDto> createAchievement(@RequestBody CreateAchievementRequestDto requestDto) { | ||
Long id = achievementService.createAchievement(requestDto.name(), requestDto.rewardType(), requestDto.rewardValue(), requestDto.condition()); | ||
Achievement achievement = achievementService.findOneAchievement(id); | ||
return ResponseEntity.ok(CreateAchievementResponseDto.of(achievement)); | ||
|
||
} | ||
|
||
@PutMapping("/{id}") | ||
public ResponseEntity<UpdateAchievementResponseDto> updateAchievement( | ||
@PathVariable Long id, | ||
@RequestBody UpdateAchievementRequestDto requestDto) { | ||
|
||
achievementService.updateAchievement(id, requestDto.name(), requestDto.rewardValue()); | ||
Achievement updatedAchievement = achievementService.findOneAchievement(id); | ||
return ResponseEntity.ok(UpdateAchievementResponseDto.of(updatedAchievement)); | ||
} | ||
|
||
@GetMapping("/user/{userId}") | ||
public ResponseEntity<Slice<AchievementDto>> fetchUserAchievements(@PathVariable Long userId, | ||
@PageableDefault(size = 10) Pageable pageable) { | ||
|
||
Slice<AchievementDto> achievementDtosSlice = achievementService.fetchAllUserAchievements(userId, pageable); | ||
return ResponseEntity.ok(achievementDtosSlice); | ||
|
||
} | ||
|
||
@PostMapping("/assign") | ||
public ResponseEntity<AssignAchievementResponseDto> assignAchievement(@RequestBody AssignAchievementRequestDto requestDto) { | ||
Long id = achievementService.checkAndAssignAchievement(requestDto.userId(), requestDto.achievementId()); | ||
UserAchievement userAchievement = achievementService.findOneUserAchievement(id); | ||
return ResponseEntity.ok(AssignAchievementResponseDto.of(userAchievement)); | ||
} | ||
|
||
@PostMapping("/reward") | ||
public ResponseEntity<RewardAchievementResponseDto> claimReward(@RequestBody RewardAchievementRequestDto requestDto) { | ||
Long id = achievementService.claimReward(requestDto.userId(), requestDto.achievementId()); | ||
UserAchievement userAchievement = achievementService.findOneUserAchievement(id); | ||
return ResponseEntity.ok(RewardAchievementResponseDto.of(userAchievement)); | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
6 changes: 5 additions & 1 deletion
6
src/main/java/com/alom/dorundorunbe/domain/Achievement/domain/RewardType.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,9 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.domain; | ||
|
||
|
||
|
||
|
||
public enum RewardType { | ||
CASH | ||
COIN, BACKGROUND | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
11 changes: 11 additions & 0 deletions
11
...java/com/alom/dorundorunbe/domain/Achievement/dto/assign/AssignAchievementRequestDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.dto.assign; | ||
|
||
public record AssignAchievementRequestDto( | ||
Long userId, | ||
Long achievementId | ||
) { | ||
|
||
public static AssignAchievementRequestDto of(Long userId, Long achievementId) { | ||
return new AssignAchievementRequestDto(userId, achievementId); | ||
} | ||
} |
23 changes: 23 additions & 0 deletions
23
...ava/com/alom/dorundorunbe/domain/Achievement/dto/assign/AssignAchievementResponseDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.dto.assign; | ||
|
||
import com.alom.dorundorunbe.domain.Achievement.domain.UserAchievement; | ||
|
||
import java.time.LocalDateTime; | ||
|
||
public record AssignAchievementResponseDto( | ||
Long userId, | ||
Long achievementId, | ||
String achievementName, | ||
boolean rewardClaimed, | ||
LocalDateTime createdAt | ||
) { | ||
public static AssignAchievementResponseDto of(UserAchievement userAchievement) { | ||
return new AssignAchievementResponseDto( | ||
userAchievement.getUser().getId(), | ||
userAchievement.getAchievement().getId(), | ||
userAchievement.getAchievement().getName(), | ||
userAchievement.isRewardClaimed(), | ||
userAchievement.getCreatedAt() | ||
); | ||
} | ||
} |
14 changes: 14 additions & 0 deletions
14
...java/com/alom/dorundorunbe/domain/Achievement/dto/create/CreateAchievementRequestDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.dto.create; | ||
|
||
import com.alom.dorundorunbe.domain.Achievement.domain.RewardType; | ||
|
||
public record CreateAchievementRequestDto( | ||
String name, // 업적 이름 | ||
RewardType rewardType, // 보상 유형 | ||
String rewardValue, // 보상 값 | ||
String condition // 업적 조건 | ||
) { | ||
public static CreateAchievementRequestDto of(String name, RewardType rewardType, String rewardValue, String condition) { | ||
return new CreateAchievementRequestDto(name, rewardType, rewardValue, condition); | ||
} | ||
} |
27 changes: 27 additions & 0 deletions
27
...ava/com/alom/dorundorunbe/domain/Achievement/dto/create/CreateAchievementResponseDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.dto.create; | ||
|
||
import com.alom.dorundorunbe.domain.Achievement.domain.Achievement; | ||
import com.alom.dorundorunbe.domain.Achievement.domain.RewardType; | ||
|
||
import java.time.LocalDateTime; | ||
|
||
|
||
public record CreateAchievementResponseDto( | ||
Long id, | ||
String name, | ||
RewardType rewardType, | ||
String rewardValue, | ||
String condition, | ||
LocalDateTime createdAt | ||
) { | ||
public static CreateAchievementResponseDto of(Achievement achievement) { | ||
return new CreateAchievementResponseDto( | ||
achievement.getId(), | ||
achievement.getName(), | ||
achievement.getRewardType(), | ||
achievement.getRewardValue(), | ||
achievement.getCondition(), | ||
achievement.getCreatedAt() | ||
); | ||
} | ||
} |
24 changes: 24 additions & 0 deletions
24
src/main/java/com/alom/dorundorunbe/domain/Achievement/dto/query/AchievementDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.dto.query; | ||
|
||
import com.alom.dorundorunbe.domain.Achievement.domain.Achievement; | ||
|
||
import java.time.LocalDateTime; | ||
|
||
public record AchievementDto( | ||
Long id, | ||
String name, | ||
String rewardType, | ||
String rewardValue, | ||
|
||
LocalDateTime createdAt | ||
) { | ||
public static AchievementDto of(Achievement achievement) { | ||
return new AchievementDto( | ||
achievement.getId(), | ||
achievement.getName(), | ||
achievement.getRewardType().toString(), | ||
achievement.getRewardValue(), | ||
achievement.getCreatedAt() | ||
); | ||
} | ||
} |
10 changes: 10 additions & 0 deletions
10
...java/com/alom/dorundorunbe/domain/Achievement/dto/reward/RewardAchievementRequestDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.dto.reward; | ||
|
||
public record RewardAchievementRequestDto( | ||
Long userId, | ||
Long achievementId | ||
) { | ||
public static RewardAchievementRequestDto of(Long userId, Long achievementId) { | ||
return new RewardAchievementRequestDto(userId, achievementId); | ||
} | ||
} |
30 changes: 30 additions & 0 deletions
30
...ava/com/alom/dorundorunbe/domain/Achievement/dto/reward/RewardAchievementResponseDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.dto.reward; | ||
|
||
import com.alom.dorundorunbe.domain.Achievement.domain.UserAchievement; | ||
|
||
import java.time.LocalDateTime; | ||
|
||
public record RewardAchievementResponseDto( | ||
Long userId, | ||
Long achievementId, | ||
String achievementName, | ||
String rewardType, | ||
String rewardValue, | ||
boolean rewardClaimed, | ||
LocalDateTime createdAt, | ||
LocalDateTime modifiedAt | ||
) { | ||
|
||
public static RewardAchievementResponseDto of(UserAchievement userAchievement) { | ||
return new RewardAchievementResponseDto( | ||
userAchievement.getUser().getId(), | ||
userAchievement.getAchievement().getId(), | ||
userAchievement.getAchievement().getName(), | ||
userAchievement.getAchievement().getRewardType().toString(), | ||
userAchievement.getAchievement().getRewardValue(), | ||
userAchievement.isRewardClaimed(), | ||
userAchievement.getCreatedAt(), | ||
userAchievement.getModifiedAt() | ||
); | ||
} | ||
} |
11 changes: 11 additions & 0 deletions
11
...java/com/alom/dorundorunbe/domain/Achievement/dto/update/UpdateAchievementRequestDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.dto.update; | ||
|
||
public record UpdateAchievementRequestDto( | ||
String name, // 수정할 업적 이름 (Optional) | ||
String rewardValue // 수정할 보상 값 (Optional) | ||
|
||
) { | ||
public static UpdateAchievementRequestDto of(String name, String rewardValue) { | ||
return new UpdateAchievementRequestDto(name, rewardValue); | ||
} | ||
} |
28 changes: 28 additions & 0 deletions
28
...ava/com/alom/dorundorunbe/domain/Achievement/dto/update/UpdateAchievementResponseDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.dto.update; | ||
|
||
import com.alom.dorundorunbe.domain.Achievement.domain.Achievement; | ||
import com.alom.dorundorunbe.domain.Achievement.domain.RewardType; | ||
|
||
import java.time.LocalDateTime; | ||
|
||
public record UpdateAchievementResponseDto( | ||
Long id, | ||
String name, | ||
RewardType rewardType, | ||
String rewardValue, | ||
String condition, | ||
LocalDateTime createdAt, | ||
LocalDateTime modifiedAt | ||
) { | ||
public static UpdateAchievementResponseDto of(Achievement achievement) { | ||
return new UpdateAchievementResponseDto( | ||
achievement.getId(), | ||
achievement.getName(), | ||
achievement.getRewardType(), | ||
achievement.getRewardValue(), | ||
achievement.getCondition(), | ||
achievement.getCreatedAt(), | ||
achievement.getModifiedAt() | ||
); | ||
} | ||
} |
8 changes: 8 additions & 0 deletions
8
...com/alom/dorundorunbe/domain/Achievement/exception/AchievementAlreadyExistsException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.exception; | ||
|
||
|
||
public class AchievementAlreadyExistsException extends RuntimeException { | ||
public AchievementAlreadyExistsException(String message) { | ||
super(message); | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
...m/alom/dorundorunbe/domain/Achievement/exception/AchievementConditionNotMetException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.exception; | ||
|
||
public class AchievementConditionNotMetException extends RuntimeException { | ||
public AchievementConditionNotMetException(String message) { | ||
super(message); | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
...java/com/alom/dorundorunbe/domain/Achievement/exception/AchievementNotFoundException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.exception; | ||
|
||
public class AchievementNotFoundException extends RuntimeException { | ||
public AchievementNotFoundException(String message) { | ||
super(message); | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
...ava/com/alom/dorundorunbe/domain/Achievement/exception/RewardAlreadyClaimedException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.exception; | ||
|
||
public class RewardAlreadyClaimedException extends RuntimeException { | ||
public RewardAlreadyClaimedException(String message) { | ||
super(message); | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
...lom/dorundorunbe/domain/Achievement/exception/UserAchievementAlreadyClaimedException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.exception; | ||
|
||
public class UserAchievementAlreadyClaimedException extends RuntimeException { | ||
public UserAchievementAlreadyClaimedException(String message) { | ||
super(message); | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
.../com/alom/dorundorunbe/domain/Achievement/exception/UserAchievementNotFoundException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.alom.dorundorunbe.domain.Achievement.exception; | ||
|
||
public class UserAchievementNotFoundException extends RuntimeException { | ||
public UserAchievementNotFoundException(String message) { | ||
super(message); | ||
} | ||
} |
Oops, something went wrong.