Skip to content

Commit

Permalink
#111 fix: 모든 엔티티 대체키 반영
Browse files Browse the repository at this point in the history
- 기존 string type id -> **token
- id type -> long
rivkode committed Jun 11, 2024
1 parent 1398d97 commit 14cb2bb
Showing 30 changed files with 174 additions and 104 deletions.
Original file line number Diff line number Diff line change
@@ -21,10 +21,10 @@ public class ApplyController {
private final ApplyService applyService;

@Operation(summary = "프로젝트 지원 생성", description = "프로젝트와 user가 매핑되어 지원됩니다.")
@PostMapping(value = "/{projectId}")
public ResponseEntity<GetApplyResponse> createApply(@PathVariable("projectId") String projectId, @LoginUser String userId) {
@PostMapping(value = "/{projectToken}")
public ResponseEntity<GetApplyResponse> createApply(@PathVariable("projectToken") String projectToken, @LoginUser String userToken) {

return ResponseEntity.status(HttpStatus.CREATED).body(applyService.createApply(userId, projectId));
return ResponseEntity.status(HttpStatus.CREATED).body(applyService.createApply(userToken, projectToken));
}

@Operation(summary = "프로젝트 지원 삭제", description = "지원이 삭제됩니다.")
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@

@Builder
public record GetApplyResponse(
String applyId,
String applyToken,
String status
) {
@QueryProjection
Original file line number Diff line number Diff line change
@@ -36,14 +36,17 @@ public class ApplyService {
private final TokenGenerator tokenGenerator;

@Transactional
public GetApplyResponse createApply(String userId, String projectId) {
Project project = projectService.findProjectById(projectId);
User user = userService.getUser(userId);
public GetApplyResponse createApply(String userToken, String projectToken) {
Project project = projectService.findProjectById(projectToken);
User user = userService.getUser(userToken);
Long applyId = idGenerator.generateId();
String applyToken = tokenGenerator.generateToken(IdPrefix.APPLY);

Apply apply = Apply.builder()
.id(applyId).user(user).project(project)
.id(applyId)
.applyToken(applyToken)
.user(user)
.project(project)
.build();
Apply savedApply = applyRepository.save(apply);

@@ -52,7 +55,7 @@ public GetApplyResponse createApply(String userId, String projectId) {
// notificationService.send(leader, NotificationType.PROJECT_APPLY, "프로젝트 신청이 완료되었습니다.", projectId);

return GetApplyResponse.builder()
.applyId(savedApply.getId())
.applyToken(savedApply.getApplyToken())
.build();
}

@@ -85,8 +88,9 @@ public void updateApplyStatusToAccept(String leaderId, String applyUserId, Strin


// projectUser 추가
String projectUserId = idGenerator.generateId(IdPrefix.PROJECT_USER);
ProjectUser projectUser = new ProjectUser(projectUserId, project, user);
Long projectUserId = idGenerator.generateId();
String projectUserToken = tokenGenerator.generateToken(IdPrefix.PROJECT_USER);
ProjectUser projectUser = new ProjectUser(projectUserId, projectUserToken, project, user);
project.getProjectUsers().add(projectUser);
projectUserRepository.save(projectUser);
// User applyUser = userService.getUser(userId);
@@ -122,7 +126,7 @@ public void updateApplyStatusToReject(String leaderId, String applyUserId, Strin

public GetListApplyResponse getMyApplyList(String userId) {
User user = userService.getUser(userId);
List<Apply> applies = applyRepository.findAllProcessByUserId(user.getId());
List<Apply> applies = applyRepository.findAllProcessByUserId(user.getUserToken());

return ApplyMapperEntityToDto.applyListToResponse(applies);
}
Original file line number Diff line number Diff line change
@@ -55,9 +55,10 @@ public class Comment extends BaseTime {
private IsDeleted isDeleted = new IsDeleted(IS_DELETED_DEFAULT);

@Builder
public Comment(String id, String comment, User user, Post post, Comment parentComment, int depth, int orderNumber,
public Comment(Long id, String commentToken, String comment, User user, Post post, Comment parentComment, int depth, int orderNumber,
boolean isChildComment) {
this.id = id;
this.commentToken = commentToken;
this.comment = new CommentContent(comment);
this.user = user;
this.post = post;
Original file line number Diff line number Diff line change
@@ -27,9 +27,9 @@ public class CommentController {

@Operation(summary = "Comment 생성", description = "게시글에 댓글이 생성되며, 사용자와 시간이 포함됩니다.")
@PostMapping
public ResponseEntity<GetCommentResponse> createComment(@Valid @RequestBody CreateCommentRequest request, @LoginUser String userId) {
public ResponseEntity<GetCommentResponse> createComment(@Valid @RequestBody CreateCommentRequest request, @LoginUser String userToken) {

return ResponseEntity.status(HttpStatus.CREATED).body(commentService.createComment(userId, request));
return ResponseEntity.status(HttpStatus.CREATED).body(commentService.createComment(userToken, request));
}

@Operation(summary = "Comment 수정", description = "댓글이 요청에 대해 수정됩니다.")
Original file line number Diff line number Diff line change
@@ -8,6 +8,7 @@
import com.seoultech.synergybe.domain.comment.repository.CommentRepository;
import com.seoultech.synergybe.domain.common.generator.IdGenerator;
import com.seoultech.synergybe.domain.common.generator.IdPrefix;
import com.seoultech.synergybe.domain.common.generator.TokenGenerator;
import com.seoultech.synergybe.domain.common.paging.ListResponse;
import com.seoultech.synergybe.domain.notification.service.NotificationService;
import com.seoultech.synergybe.domain.post.Post;
@@ -25,31 +26,31 @@
@RequiredArgsConstructor
public class CommentService {
private final CommentRepository commentRepository;

private final PostReader postReader;
private final UserService userService;

private final NotificationService notificationService;
private final IdGenerator idGenerator;
private final TokenGenerator tokenGenerator;

public GetCommentResponse createComment(String userId, CreateCommentRequest request) {
Post post = postReader.read(request.postId());
User user = userService.getUser(userId);
String commentId = idGenerator.generateId(IdPrefix.COMMENT);
Long commentId = idGenerator.generateId();
String commentToken = tokenGenerator.generateToken(IdPrefix.COMMENT);

Comment comment = Comment.builder()
.id(commentId)
.commentToken(commentToken)
.comment(request.comment())
.post(post).user(user)
.build();


Comment savedComment = commentRepository.save(comment);
savedComment.addPost(post);
// User postUser = post.getUser();
// notificationService.send(postUser, NotificationType.COMMENT, "댓글이 생성되었습니다", post.getId());
return GetCommentResponse.builder()
.commentId(savedComment.getId())
.commentId(savedComment.getCommentToken())
.build();
}

Original file line number Diff line number Diff line change
@@ -32,8 +32,9 @@ public class Follow extends BaseTime {
private FollowStatus status;

@Builder
public Follow(Long id, User follower, User following) {
public Follow(Long id, String followToken, User follower, User following) {
this.id = id;
this.followToken = followToken;
this.follower = follower;
this.following = following;
this.status = FollowStatus.FOLLOW;
Original file line number Diff line number Diff line change
@@ -24,11 +24,11 @@ public class FollowController {
private final UserService userService;

@Operation(summary = "follow 신청, 취소", description = "팔로우를 신청 및 취소하며 팔로우 타입에 따라 팔로우 상태가 변화하므로 PUT 메서드 하나로 관리됩니다.")
@PutMapping(value = "/{followingId}")
public ResponseEntity<GetFollowResponse> updateFollow(@PathVariable("followingId") String followingId, @RequestBody CreateFollowRequest type, @LoginUser String userId) {
@PutMapping(value = "/{followingToken}")
public ResponseEntity<GetFollowResponse> updateFollow(@PathVariable("followingToken") String followingToken, @RequestBody CreateFollowRequest type, @LoginUser String userId) {
User user = userService.getUser(userId);

return ResponseEntity.status(HttpStatus.OK).body(followService.updateFollow(user, followingId, type));
return ResponseEntity.status(HttpStatus.OK).body(followService.updateFollow(user, followingToken, type));

}

Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@

import com.seoultech.synergybe.domain.common.generator.IdGenerator;
import com.seoultech.synergybe.domain.common.generator.IdPrefix;
import com.seoultech.synergybe.domain.common.generator.TokenGenerator;
import com.seoultech.synergybe.domain.common.paging.ListResponse;
import com.seoultech.synergybe.domain.follow.Follow;
import com.seoultech.synergybe.domain.follow.FollowStatus;
@@ -27,6 +28,7 @@ public class FollowService {
private final UserService userService;
private final NotificationService notificationService;
private final IdGenerator idGenerator;
private final TokenGenerator tokenGenerator;

public List<String> findFollowingIdsByUserId(String userId) {
return followRepository.findFollowingIdsByFollowerId(userId);
@@ -35,12 +37,12 @@ public List<String> findFollowingIdsByUserId(String userId) {
/**
*
* @param user 신청한 유저
* @param followingId 신청 받은 유저
* @param followingToken 신청 받은 유저
* @param type
* @return
*/
@Transactional
public GetFollowResponse updateFollow(User user, String followingId, CreateFollowRequest type) {
public GetFollowResponse updateFollow(User user, String followingToken, CreateFollowRequest type) {
FollowStatus status;
if (type.followType().equals("follow")) {
status = FollowStatus.FOLLOW;
@@ -49,7 +51,7 @@ public GetFollowResponse updateFollow(User user, String followingId, CreateFollo
}

try {
Follow updatedFollow = update(user, followingId, status);
Follow updatedFollow = update(user, followingToken, status);
GetFollowResponse getFollowResponse = GetFollowResponse.builder().build();

return getFollowResponse;
@@ -62,7 +64,7 @@ public GetFollowResponse updateFollow(User user, String followingId, CreateFollo
}

public synchronized Follow update(User user, String followingId, FollowStatus status) {
Optional<Follow> followOptional = followRepository.findByFollowerIdAndFollowingId(user.getId(), followingId);
Optional<Follow> followOptional = followRepository.findByFollowerIdAndFollowingId(user.getUserToken(), followingId);

if (followOptional.isPresent()) {
followOptional.get().updateStatus(status);
@@ -72,9 +74,11 @@ public synchronized Follow update(User user, String followingId, FollowStatus st
return followOptional.get();
} else {
User following = userService.getUser(followingId);
String followId = idGenerator.generateId(IdPrefix.FOLLOW);
Long followId = idGenerator.generateId();
String followToken = tokenGenerator.generateToken(IdPrefix.FOLLOW);
Follow follow = Follow.builder()
.id(followId)
.followToken(followToken)
.follower(user)
.following(following)
.build();
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@

import com.seoultech.synergybe.domain.common.generator.IdGenerator;
import com.seoultech.synergybe.domain.common.generator.IdPrefix;
import com.seoultech.synergybe.domain.common.generator.TokenGenerator;
import com.seoultech.synergybe.domain.library.domain.PublicLibrary;
import com.seoultech.synergybe.domain.library.domain.RawPublicLibrary;
import com.seoultech.synergybe.domain.library.repository.PublicLibraryRepository;
@@ -21,6 +22,7 @@ public class PublicLibraryScheduler {
private final PublicLibraryRepository publicLibraryRepository;
private final RawPublicLibraryRepository rawPublicLibraryRepository;
private final IdGenerator idGenerator;
private final TokenGenerator tokenGenerator;

@Scheduled(cron = "0 0 4 * * 6", zone = "Asia/Seoul")
public void updatePublicLibrary() {
@@ -30,7 +32,8 @@ public void updatePublicLibrary() {

List<PublicLibrary> publicLibraries = rawPublicLibraryList.stream().map(
rawPublicLibrary -> PublicLibrary.builder()
.id(idGenerator.generateId(IdPrefix.PUBLIC_LIBRARY))
.id(idGenerator.generateId())
.publicLibraryToken(tokenGenerator.generateToken(IdPrefix.PUBLIC_LIBRARY))
.name(rawPublicLibrary.getName())
.address(rawPublicLibrary.getAddress())
.telNumber(rawPublicLibrary.getTelNumber())
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@

import com.seoultech.synergybe.domain.common.generator.IdGenerator;
import com.seoultech.synergybe.domain.common.generator.IdPrefix;
import com.seoultech.synergybe.domain.common.generator.TokenGenerator;
import com.seoultech.synergybe.domain.library.domain.RawSmallLibrary;
import com.seoultech.synergybe.domain.library.domain.SmallLibrary;
import com.seoultech.synergybe.domain.library.repository.RawSmallLibraryRepository;
@@ -21,6 +22,7 @@ public class SmallLibraryScheduler {
private final SmallLibraryRepository smallLibraryRepository;
private final RawSmallLibraryRepository rawSmallLibraryRepository;
private final IdGenerator idGenerator;
private final TokenGenerator tokenGenerator;

@Scheduled(cron = "0 0 4 * * 6", zone = "Asia/Seoul")
public void updateSmallLibrary() {
@@ -30,7 +32,8 @@ public void updateSmallLibrary() {

List<SmallLibrary> smallLibraries = rawSmallLibraryList.stream().map(
rawSmallLibrary -> SmallLibrary.builder()
.id(idGenerator.generateId(IdPrefix.SMALL_LIBRARY))
.id(idGenerator.generateId())
.smallLibraryToken(tokenGenerator.generateToken(IdPrefix.SMALL_LIBRARY))
.name(rawSmallLibrary.getName())
.address(rawSmallLibrary.getAddress())
.telNumber(rawSmallLibrary.getTelNumber())
Original file line number Diff line number Diff line change
@@ -30,16 +30,16 @@ public ResponseEntity<GetNoticeResponse> createNotice(@RequestBody CreateNoticeR
}

@Operation(summary = "공지 조회", description = "프로젝트 공지를 단건 조회합니다.")
@GetMapping(value = "/{projectId}")
public ResponseEntity<ListResponse<GetNoticeResponse>> getNotice(@PathVariable("projectId") String projectId) {
@GetMapping(value = "/{projectToken}")
public ResponseEntity<ListResponse<GetNoticeResponse>> getNotice(@PathVariable("projectToken") String projectToken) {

return ResponseEntity.status(HttpStatus.OK).body(noticeService.getNoticeList(projectId));
return ResponseEntity.status(HttpStatus.OK).body(noticeService.getNoticeList(projectToken));
}

@Operation(summary = "공지 삭제", description = "프로젝트 공지를 삭제합니다.")
@DeleteMapping("/{noticeId}")
public ResponseEntity<GetNoticeResponse> deleteNotice(@PathVariable("noticeId") String noticeId, @LoginUser String userId) {
noticeService.deleteNotice(noticeId);
@DeleteMapping("/{noticeToken}")
public ResponseEntity<GetNoticeResponse> deleteNotice(@PathVariable("noticeToken") String noticeToken, @LoginUser String userId) {
noticeService.deleteNotice(noticeToken);
return ResponseEntity.noContent().build();
}

Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@

import com.seoultech.synergybe.domain.common.generator.IdGenerator;
import com.seoultech.synergybe.domain.common.generator.IdPrefix;
import com.seoultech.synergybe.domain.common.generator.TokenGenerator;
import com.seoultech.synergybe.domain.common.paging.ListResponse;
import com.seoultech.synergybe.domain.notice.Notice;
import com.seoultech.synergybe.domain.notice.dto.request.CreateNoticeRequest;
@@ -28,18 +29,24 @@ public class NoticeService {
private final ProjectService projectService;
private final NotificationService notificationService;
private final IdGenerator idGenerator;
private final TokenGenerator tokenGenerator;


public GetNoticeResponse createNotice(CreateNoticeRequest request) {
Project project = projectService.findProjectById(request.projectId());
String noticeId = idGenerator.generateId(IdPrefix.NOTICE);
Long noticeId = idGenerator.generateId();
String noticeToken = tokenGenerator.generateToken(IdPrefix.NOTICE);
Notice notice = Notice.builder()
.id(noticeId).content(request.content()).project(project)
.id(noticeId)
.noticeToken(noticeToken)
.content(request.content())
.project(project)
.build();

Notice savedNotice = this.noticeRepository.save(notice);
List<User> projectUsers = project.getProjectUsers().stream().map(projectUser -> projectUser.getUser()).collect(Collectors.toList());
for (User user : projectUsers) {
notificationService.send(user, NotificationType.PROJECT_NOTICE, "공지사항이 생성되었습니다.", project.getId());
notificationService.send(user, NotificationType.PROJECT_NOTICE, "공지사항이 생성되었습니다.", project.getProjectToken());
}
GetNoticeResponse getNoticeResponse = GetNoticeResponse.builder().build();

Original file line number Diff line number Diff line change
@@ -30,7 +30,7 @@ public GetPostResponse createPost(String userId, CreatePostDto postData) {
postManager.save(post);

return GetPostResponse.builder()
.postId(post.getId())
.postToken(post.getPostToken())
.build();
}

@@ -42,7 +42,7 @@ public GetPostResponse updatePost(String userId, UpdatePostDto updatePostDto) {
postManager.update(post, updatePostDto);

return GetPostResponse.builder()
.postId(post.getId())
.postToken(post.getPostToken())
.build();
}

Original file line number Diff line number Diff line change
@@ -24,6 +24,10 @@ public void delete(Post post) {
postRepository.delete(post);
}

public Post findByToken(String token) {
return postRepository.findByPostToken(token);
}

public Post findById(Long postId) {
return postRepository.findById(postId)
.orElseThrow(() -> new PostNotFoundException("존재하지 않는 게시글입니다."));
Original file line number Diff line number Diff line change
@@ -39,4 +39,6 @@ public interface PostRepository extends JpaRepository<Post, Long>, PostRepositor

@Query(value = "SELECT * FROM post WHERE post_id IN :ids ORDER BY FIELD(post_id, :ids)", nativeQuery = true)
List<Post> findAllByIdInOrderByListOrder(@Param("ids") List<String> ids);

Post findByPostToken(String token);
}
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@

@Builder
public record GetPostResponse(
String postId,
String postToken,
String title,
String content,
String userId,
Loading

0 comments on commit 14cb2bb

Please sign in to comment.