-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
feat - ๋๋ฉ์ธ ์ค์ ๋ฐ ์ฑ๋ฆฐ์ง ์์ฑ api ๊ตฌํ
- Loading branch information
Showing
36 changed files
with
523 additions
and
32 deletions.
There are no files selected for viewing
9 changes: 0 additions & 9 deletions
9
src/main/java/sopt/org/HMH/common/config/JpaAuditingConfig.java
This file was deleted.
Oops, something went wrong.
4 changes: 0 additions & 4 deletions
4
src/main/java/sopt/org/HMH/common/exception/base/RootEnum.java
This file was deleted.
Oops, something went wrong.
11 changes: 11 additions & 0 deletions
11
src/main/java/sopt/org/HMH/domain/app/controller/AppController.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 sopt.org.HMH.domain.app.controller; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/api/v1/app") | ||
public class AppController { | ||
} |
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,34 @@ | ||
package sopt.org.HMH.domain.app.domain; | ||
|
||
import jakarta.persistence.*; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import sopt.org.HMH.domain.dayChallenge.domain.DayChallenge; | ||
|
||
@Entity | ||
@Getter | ||
@NoArgsConstructor | ||
@Table(name = "app") | ||
public class App { | ||
|
||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
@Column(name = "app_id") | ||
private Long id; | ||
|
||
@ManyToOne(fetch = FetchType.LAZY) | ||
@JoinColumn(name = "day_challenge_id") | ||
private DayChallenge dayChallenge; | ||
|
||
private String appCode; | ||
private Long useTime; | ||
private Long goalTime; | ||
|
||
public App(DayChallenge dayChallenge, String appCode, Long goalTime) { | ||
this.dayChallenge = dayChallenge; | ||
this.appCode = appCode; | ||
this.useTime = 0L; | ||
this.goalTime = goalTime; | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
src/main/java/sopt/org/HMH/domain/app/dto/request/AppGoalTimeRequest.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 sopt.org.HMH.domain.app.dto.request; | ||
|
||
public record AppGoalTimeRequest( | ||
String appCode, | ||
Long goalTime | ||
) { | ||
} |
7 changes: 7 additions & 0 deletions
7
src/main/java/sopt/org/HMH/domain/app/repository/AppRepository.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 sopt.org.HMH.domain.app.repository; | ||
|
||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import sopt.org.HMH.domain.app.domain.App; | ||
|
||
public interface AppRepository extends JpaRepository<App, Long> { | ||
} |
31 changes: 31 additions & 0 deletions
31
src/main/java/sopt/org/HMH/domain/app/service/AppService.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,31 @@ | ||
package sopt.org.HMH.domain.app.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.stereotype.Service; | ||
import sopt.org.HMH.domain.app.domain.App; | ||
import sopt.org.HMH.domain.app.dto.request.AppGoalTimeRequest; | ||
import sopt.org.HMH.domain.app.repository.AppRepository; | ||
import sopt.org.HMH.domain.dayChallenge.domain.DayChallenge; | ||
import sopt.org.HMH.domain.dayChallenge.repository.DayChallengeRepository; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
public class AppService { | ||
|
||
private final AppRepository appRepository; | ||
private final DayChallengeRepository dayChallengeRepository; | ||
|
||
public List<App> addApp(Long dayChallengeId, List<AppGoalTimeRequest> requests) { | ||
DayChallenge dayChallenge = dayChallengeRepository.findByIdOrThrowException(dayChallengeId); | ||
|
||
List<App> apps = new ArrayList<>(); | ||
for (AppGoalTimeRequest request: requests) { | ||
appRepository.save(new App(dayChallenge, request.appCode(), request.goalTime())); | ||
} | ||
|
||
return apps; | ||
} | ||
} |
28 changes: 28 additions & 0 deletions
28
src/main/java/sopt/org/HMH/domain/challenge/controller/ChallengeController.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 sopt.org.HMH.domain.challenge.controller; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
import sopt.org.HMH.domain.challenge.domain.exception.ChallengeSuccess; | ||
import sopt.org.HMH.domain.challenge.dto.request.ChallengeRequest; | ||
import sopt.org.HMH.domain.challenge.service.ChallengeService; | ||
import sopt.org.HMH.global.common.response.ApiResponse; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/api/v1/challenge") | ||
public class ChallengeController { | ||
|
||
private final ChallengeService challengeService; | ||
|
||
@PostMapping | ||
public ResponseEntity<ApiResponse> orderAdd(@RequestBody ChallengeRequest request) { | ||
// TODO: - ํ ํฐ์ผ๋ก ์ ์ ์์ด๋ ์ฐพ๋ ํจ์ ์ฐ๊ฒฐ | ||
return ResponseEntity | ||
.status(ChallengeSuccess.SUCCESS_CREATE_CHALLENGE.getHttpStatus()) | ||
.body(ApiResponse.success(ChallengeSuccess.SUCCESS_CREATE_CHALLENGE, challengeService.addChallenge(1L, request))); | ||
} | ||
} |
41 changes: 41 additions & 0 deletions
41
src/main/java/sopt/org/HMH/domain/challenge/domain/Challenge.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,41 @@ | ||
package sopt.org.HMH.domain.challenge.domain; | ||
|
||
import static jakarta.persistence.FetchType.*; | ||
import static jakarta.persistence.GenerationType.*; | ||
|
||
import jakarta.persistence.*; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import sopt.org.HMH.global.common.domain.BaseTimeEntity; | ||
import sopt.org.HMH.domain.dayChallenge.domain.DayChallenge; | ||
import sopt.org.HMH.domain.user.User; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
@Entity | ||
@Getter | ||
@NoArgsConstructor | ||
@Table(name = "challenge") | ||
public class Challenge extends BaseTimeEntity { | ||
|
||
@Id | ||
@GeneratedValue(strategy = IDENTITY) | ||
@Column(name = "challenge_id") | ||
private Long id; | ||
|
||
@ManyToOne(fetch = LAZY) | ||
@JoinColumn(name = "user_id") | ||
private User user; | ||
|
||
private Integer period; | ||
|
||
@OneToMany(mappedBy = "challenge") | ||
private List<DayChallenge> dayChallenges; | ||
|
||
public Challenge(User user, Integer period) { | ||
this.user = user; | ||
this.period = period; | ||
this.dayChallenges = new ArrayList<>(); | ||
} | ||
} |
29 changes: 29 additions & 0 deletions
29
src/main/java/sopt/org/HMH/domain/challenge/domain/exception/ChallengeError.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,29 @@ | ||
package sopt.org.HMH.domain.challenge.domain.exception; | ||
|
||
import lombok.AllArgsConstructor; | ||
import org.springframework.http.HttpStatus; | ||
import sopt.org.HMH.global.common.exception.base.ErrorBase; | ||
|
||
@AllArgsConstructor | ||
public enum ChallengeError implements ErrorBase { | ||
CHALLENGE_NOT_FOUND(HttpStatus.NOT_FOUND, "์ฑ๋ฆฐ์ง ์ฐพ๊ธฐ ๋ถ๊ฐ"), | ||
; | ||
|
||
private final HttpStatus status; | ||
private final String errorMessage; | ||
|
||
@Override | ||
public int getHttpStatusCode() { | ||
return status.value(); | ||
} | ||
|
||
@Override | ||
public HttpStatus getHttpStatus() { | ||
return this.status; | ||
} | ||
|
||
@Override | ||
public String getErrorMessage() { | ||
return this.errorMessage; | ||
} | ||
} |
9 changes: 9 additions & 0 deletions
9
src/main/java/sopt/org/HMH/domain/challenge/domain/exception/ChallengeException.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,9 @@ | ||
package sopt.org.HMH.domain.challenge.domain.exception; | ||
|
||
import sopt.org.HMH.global.common.exception.base.ExceptionBase; | ||
|
||
public class ChallengeException extends ExceptionBase { | ||
public ChallengeException(ChallengeError error) { | ||
super(error); | ||
} | ||
} |
29 changes: 29 additions & 0 deletions
29
src/main/java/sopt/org/HMH/domain/challenge/domain/exception/ChallengeSuccess.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,29 @@ | ||
package sopt.org.HMH.domain.challenge.domain.exception; | ||
|
||
import lombok.AllArgsConstructor; | ||
import org.springframework.http.HttpStatus; | ||
import sopt.org.HMH.global.common.exception.base.SuccessBase; | ||
|
||
@AllArgsConstructor | ||
public enum ChallengeSuccess implements SuccessBase { | ||
SUCCESS_CREATE_CHALLENGE(HttpStatus.OK, "์ฑ๋ฆฐ์ง ์์ฑ ์ฑ๊ณต"), | ||
; | ||
|
||
private final HttpStatus status; | ||
private final String successMessage; | ||
|
||
@Override | ||
public int getHttpStatusCode() { | ||
return this.status.value(); | ||
} | ||
|
||
@Override | ||
public HttpStatus getHttpStatus() { | ||
return this.status; | ||
} | ||
|
||
@Override | ||
public String getSuccessMessage() { | ||
return this.successMessage; | ||
} | ||
} |
12 changes: 12 additions & 0 deletions
12
src/main/java/sopt/org/HMH/domain/challenge/dto/request/ChallengeRequest.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,12 @@ | ||
package sopt.org.HMH.domain.challenge.dto.request; | ||
|
||
import sopt.org.HMH.domain.app.dto.request.AppGoalTimeRequest; | ||
|
||
import java.util.List; | ||
|
||
public record ChallengeRequest( | ||
Integer period, | ||
Long goalTime, | ||
List<AppGoalTimeRequest> apps | ||
) { | ||
} |
9 changes: 9 additions & 0 deletions
9
src/main/java/sopt/org/HMH/domain/challenge/dto/response/CreatedChallengeResponse.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,9 @@ | ||
package sopt.org.HMH.domain.challenge.dto.response; | ||
|
||
public record CreatedChallengeResponse( | ||
Long challengeId | ||
) { | ||
public static CreatedChallengeResponse of(Long challengeId) { | ||
return new CreatedChallengeResponse(challengeId); | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
src/main/java/sopt/org/HMH/domain/challenge/repository/ChallengeRepository.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 sopt.org.HMH.domain.challenge.repository; | ||
|
||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import sopt.org.HMH.domain.challenge.domain.Challenge; | ||
|
||
public interface ChallengeRepository extends JpaRepository<Challenge, Long> { | ||
} |
33 changes: 33 additions & 0 deletions
33
src/main/java/sopt/org/HMH/domain/challenge/service/ChallengeService.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,33 @@ | ||
package sopt.org.HMH.domain.challenge.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.stereotype.Service; | ||
import sopt.org.HMH.domain.app.domain.App; | ||
import sopt.org.HMH.domain.app.service.AppService; | ||
import sopt.org.HMH.domain.challenge.domain.Challenge; | ||
import sopt.org.HMH.domain.challenge.dto.request.ChallengeRequest; | ||
import sopt.org.HMH.domain.challenge.dto.response.CreatedChallengeResponse; | ||
import sopt.org.HMH.domain.challenge.repository.ChallengeRepository; | ||
import sopt.org.HMH.domain.dayChallenge.service.DayChallengeService; | ||
import sopt.org.HMH.domain.user.User; | ||
import sopt.org.HMH.domain.user.service.UserService; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
public class ChallengeService { | ||
|
||
private final ChallengeRepository challengeRepository; | ||
|
||
private final DayChallengeService dayChallengeService; | ||
private final AppService appService; | ||
private final UserService userService; | ||
|
||
public CreatedChallengeResponse addChallenge(Long userId, ChallengeRequest request) { | ||
User user = userService.getUserId(userId); | ||
Challenge challenge = challengeRepository.save(new Challenge(user, request.period())); | ||
Long dayChallengeId = dayChallengeService.addDayChallenge(challenge, request.goalTime()); | ||
appService.addApp(dayChallengeId, request.apps()); | ||
|
||
return CreatedChallengeResponse.of(challenge.getId()); | ||
} | ||
} |
44 changes: 44 additions & 0 deletions
44
src/main/java/sopt/org/HMH/domain/dayChallenge/domain/DayChallenge.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,44 @@ | ||
package sopt.org.HMH.domain.dayChallenge.domain; | ||
|
||
import static jakarta.persistence.FetchType.*; | ||
import static jakarta.persistence.GenerationType.*; | ||
|
||
import jakarta.persistence.*; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import sopt.org.HMH.domain.app.domain.App; | ||
import sopt.org.HMH.global.common.domain.BaseTimeEntity; | ||
import sopt.org.HMH.domain.challenge.domain.Challenge; | ||
|
||
import java.util.List; | ||
|
||
@Entity | ||
@Getter | ||
@NoArgsConstructor | ||
@Table(name = "day_challenge") | ||
public class DayChallenge extends BaseTimeEntity { | ||
|
||
@Id | ||
@GeneratedValue(strategy = IDENTITY) | ||
private Long Id; | ||
|
||
@ManyToOne(fetch = LAZY) | ||
@JoinColumn(name = "challenge_id") | ||
private Challenge challenge; | ||
|
||
private Long goalTime; | ||
private Boolean isSuccess; | ||
private Boolean didGettingPoint; | ||
|
||
@OneToMany(mappedBy = "dayChallenge") | ||
private List<App> apps; | ||
|
||
@Builder | ||
public DayChallenge(Challenge challenge, Long goalTime) { | ||
this.challenge = challenge; | ||
this.goalTime = goalTime; | ||
this.isSuccess = false; | ||
this.didGettingPoint = false; | ||
} | ||
} |
29 changes: 29 additions & 0 deletions
29
src/main/java/sopt/org/HMH/domain/dayChallenge/domain/exception/DayChallengeError.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,29 @@ | ||
package sopt.org.HMH.domain.dayChallenge.domain.exception; | ||
|
||
import lombok.AllArgsConstructor; | ||
import org.springframework.http.HttpStatus; | ||
import sopt.org.HMH.global.common.exception.base.ErrorBase; | ||
|
||
@AllArgsConstructor | ||
public enum DayChallengeError implements ErrorBase { | ||
CHALLENGE_NOT_FOUND(HttpStatus.NOT_FOUND, "๋ฐ์ด์ฑ๋ฆฐ์ง ์ฐพ๊ธฐ ๋ถ๊ฐ"), | ||
; | ||
|
||
private final HttpStatus status; | ||
private final String errorMessage; | ||
|
||
@Override | ||
public int getHttpStatusCode() { | ||
return status.value(); | ||
} | ||
|
||
@Override | ||
public HttpStatus getHttpStatus() { | ||
return this.status; | ||
} | ||
|
||
@Override | ||
public String getErrorMessage() { | ||
return this.errorMessage; | ||
} | ||
} |
Oops, something went wrong.