-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Feature User and Couple Domain (#53)
* build: Add mapstruct dependency * feat: Add User not existent ErrorType 유저를 찾기 위한 방법이 토큰 및 path 두가지 방법이 있는데 path의 경우는 존재하지 않는 자원에 접근한 것이기 때문에 404, 토큰의 경우 이미 삭제 혹은 어떠한 이유로 삭제된 유저에 대한 내용 추가 * fix: Change jwt authentication method to jws method * feat: Create User DTO * feat: Create User Mapper * feat: Add update and find User Service Method * feat: Add user update endpoint * feat: Add Update User Profile Method * feat: Create Couple Method
- Loading branch information
Showing
20 changed files
with
414 additions
and
10 deletions.
There are no files selected for viewing
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
43 changes: 43 additions & 0 deletions
43
src/main/java/com/universe/uni/controller/CoupleController.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,43 @@ | ||
package com.universe.uni.controller; | ||
|
||
import org.springframework.http.HttpStatus; | ||
import org.springframework.security.core.annotation.AuthenticationPrincipal; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
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.RequestParam; | ||
import org.springframework.web.bind.annotation.ResponseStatus; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
import com.universe.uni.dto.request.CreateCoupleRequestDto; | ||
import com.universe.uni.dto.request.JoinCoupleRequestDto; | ||
import com.universe.uni.dto.response.CoupleDto; | ||
import com.universe.uni.service.CoupleServiceContract; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("api/couple") | ||
public class CoupleController { | ||
|
||
private final CoupleServiceContract coupleService; | ||
|
||
@PostMapping("") | ||
public CoupleDto createCoupleBy( | ||
@AuthenticationPrincipal Long userId, | ||
@RequestBody CreateCoupleRequestDto request | ||
) { | ||
return coupleService.createCoupleByStartDate(userId, request.startDate()); | ||
} | ||
|
||
@PostMapping("join") | ||
@ResponseStatus(HttpStatus.NO_CONTENT) | ||
public void joinCouple( | ||
@AuthenticationPrincipal Long userId, | ||
@RequestBody JoinCoupleRequestDto body | ||
) { | ||
coupleService.joinCouple(userId, body.inviteCode()); | ||
} | ||
} |
39 changes: 36 additions & 3 deletions
39
src/main/java/com/universe/uni/controller/UserController.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
5 changes: 5 additions & 0 deletions
5
src/main/java/com/universe/uni/domain/InviteCodeStrategy.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,5 @@ | ||
package com.universe.uni.domain; | ||
|
||
public interface InviteCodeStrategy { | ||
String generate(); | ||
} |
35 changes: 35 additions & 0 deletions
35
src/main/java/com/universe/uni/domain/RandomInviteCodeGenerator.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,35 @@ | ||
package com.universe.uni.domain; | ||
|
||
import java.security.NoSuchAlgorithmException; | ||
import java.security.SecureRandom; | ||
import java.util.Random; | ||
|
||
import org.springframework.stereotype.Component; | ||
|
||
@Component | ||
public class RandomInviteCodeGenerator implements InviteCodeStrategy { | ||
|
||
public static final int MAX_CODE_LENGTH = 9; | ||
private final Random random; | ||
|
||
public RandomInviteCodeGenerator() throws NoSuchAlgorithmException { | ||
this.random = SecureRandom.getInstanceStrong(); | ||
} | ||
|
||
@Override | ||
public String generate() { | ||
return createRandomString(); | ||
} | ||
|
||
private String createRandomString() { | ||
StringBuilder randomBuf = new StringBuilder(); | ||
for (int i = 0; i < MAX_CODE_LENGTH; i++) { | ||
if (random.nextBoolean()) { | ||
randomBuf.append((char)((random.nextInt(26)) + 97)); | ||
} else { | ||
randomBuf.append(random.nextInt(10)); | ||
} | ||
} | ||
return randomBuf.toString(); | ||
} | ||
} |
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
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,20 @@ | ||
package com.universe.uni.dto; | ||
|
||
import java.io.Serializable; | ||
|
||
import javax.validation.constraints.NotNull; | ||
import javax.validation.constraints.Size; | ||
|
||
import com.universe.uni.dto.response.CoupleDto; | ||
|
||
/** | ||
* DTO for {@link com.universe.uni.domain.entity.User} | ||
*/ | ||
public record UserDto( | ||
@NotNull Long id, | ||
@Size(max = 10) | ||
String nickname, | ||
String image, | ||
CoupleDto couple | ||
) implements Serializable { | ||
} |
6 changes: 6 additions & 0 deletions
6
src/main/java/com/universe/uni/dto/request/CreateCoupleRequestDto.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,6 @@ | ||
package com.universe.uni.dto.request; | ||
|
||
public record CreateCoupleRequestDto( | ||
String startDate | ||
) { | ||
} |
6 changes: 6 additions & 0 deletions
6
src/main/java/com/universe/uni/dto/request/JoinCoupleRequestDto.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,6 @@ | ||
package com.universe.uni.dto.request; | ||
|
||
public record JoinCoupleRequestDto( | ||
String inviteCode | ||
) { | ||
} |
6 changes: 6 additions & 0 deletions
6
src/main/java/com/universe/uni/dto/request/UpdateUserNicknameRequestDto.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,6 @@ | ||
package com.universe.uni.dto.request; | ||
|
||
public record UpdateUserNicknameRequestDto( | ||
String nickname | ||
) { | ||
} |
18 changes: 18 additions & 0 deletions
18
src/main/java/com/universe/uni/dto/response/CoupleDto.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,18 @@ | ||
package com.universe.uni.dto.response; | ||
|
||
import java.io.Serializable; | ||
import java.time.LocalDate; | ||
|
||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||
|
||
/** | ||
* DTO for {@link com.universe.uni.domain.entity.Couple} | ||
*/ | ||
@JsonIgnoreProperties(ignoreUnknown = true) | ||
public record CoupleDto( | ||
Long id, | ||
LocalDate startDate, | ||
String inviteCode, | ||
int heartToken | ||
) implements Serializable { | ||
} |
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
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.universe.uni.mapper; | ||
|
||
import org.mapstruct.Mapper; | ||
import org.mapstruct.MappingConstants; | ||
import org.mapstruct.ReportingPolicy; | ||
|
||
import com.universe.uni.domain.entity.Couple; | ||
import com.universe.uni.dto.response.CoupleDto; | ||
|
||
@Mapper(unmappedTargetPolicy = ReportingPolicy.WARN, componentModel = MappingConstants.ComponentModel.SPRING) | ||
public interface CoupleMapper { | ||
|
||
CoupleDto toCoupleDto(Couple couple); | ||
} |
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.universe.uni.mapper; | ||
|
||
import org.mapstruct.Mapper; | ||
|
||
import com.universe.uni.domain.entity.User; | ||
import com.universe.uni.dto.UserDto; | ||
|
||
@Mapper(componentModel = "spring") | ||
public interface UserMapper { | ||
UserDto toUserDto(User user); | ||
} |
4 changes: 3 additions & 1 deletion
4
src/main/java/com/universe/uni/repository/CoupleRepository.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,9 +1,11 @@ | ||
package com.universe.uni.repository; | ||
|
||
import java.util.Optional; | ||
|
||
import org.springframework.data.jpa.repository.JpaRepository; | ||
|
||
import com.universe.uni.domain.entity.Couple; | ||
|
||
public interface CoupleRepository extends JpaRepository<Couple, Long> { | ||
Optional<Couple> findByInviteCode(String inviteCode); | ||
} | ||
|
Oops, something went wrong.