Skip to content
This repository has been archived by the owner on Aug 13, 2022. It is now read-only.

[#25] 사용자 차단 목록 불러오기 기능 구현 #56

Merged
merged 6 commits into from
Mar 18, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import me.soo.helloworld.service.BlockUserService;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequiredArgsConstructor
@RequestMapping("/block-users")
Expand All @@ -24,4 +26,11 @@ public void blockUser(@CurrentUser String userId, @PathVariable String targetId)
public void unBlockUser(@CurrentUser String userId, @PathVariable String targetId) {
blockUserService.unblockUser(userId, targetId);
}

@LoginRequired
@GetMapping
public List<String> getBlockUserList(@CurrentUser String userId,
@RequestParam(defaultValue = "1") Integer pageNumber) {
return blockUserService.getBlockUserList(userId, pageNumber);
}
}
5 changes: 5 additions & 0 deletions src/main/java/me/soo/helloworld/mapper/BlockUserMapper.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package me.soo.helloworld.mapper;

import me.soo.helloworld.model.blockuser.BlockUserListRequest;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface BlockUserMapper {

Expand All @@ -10,4 +13,6 @@ public interface BlockUserMapper {
public boolean isUserBlocked(String userId, String targetId);

public void deleteBlockUser(String userId, String targetId);

public List<String> getBlockUserList(BlockUserListRequest request);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package me.soo.helloworld.model.blockuser;

import lombok.AllArgsConstructor;
import lombok.Builder;
import me.soo.helloworld.util.Pagination;

@Builder
@AllArgsConstructor
public class BlockUserListRequest {

private final String userId;

private final int offset;

private final int limit;

static public BlockUserListRequest create(String userId, int pageNumber, Pagination pagination) {
int pageLimit = pagination.getMaxPageBlockUser();

return BlockUserListRequest.builder()
.userId(userId)
.offset(pagination.calculateOffset(pageLimit, pageNumber))
.limit(pageLimit)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,12 @@ public class FriendListRequest {
Math.max(pageNumber, 1): pageNumber 가 음수로 들어와도 기본값을 1로 설정해서 맨 첫 페이지가 보이도록 설정
*/
static public FriendListRequest create(String userId, int pageNumber, Pagination pagination, FriendStatus status) {
int pageLimit = pagination.getMaxPageFriend();

return FriendListRequest.builder()
.userId(userId)
.offset(pagination.getMaxPageFriend() * (Math.max(pageNumber, 1) - 1))
.limit(pagination.getMaxPageFriend())
.offset(pagination.calculateOffset(pageLimit, pageNumber))
.limit(pageLimit)
.status(status)
.build();
}
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/me/soo/helloworld/service/BlockUserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,13 @@
import me.soo.helloworld.exception.InvalidRequestException;
import me.soo.helloworld.mapper.BlockUserMapper;
import me.soo.helloworld.mapper.FriendMapper;
import me.soo.helloworld.model.blockuser.BlockUserListRequest;
import me.soo.helloworld.util.Pagination;
import me.soo.helloworld.util.TargetValidator;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@RequiredArgsConstructor
Expand All @@ -18,6 +23,8 @@ public class BlockUserService {

private final BlockUserMapper blockUserMapper;

private final Pagination pagination;

public void blockUser(String userId, String targetId) {
TargetValidator.targetNotSelf(userId, targetId);
TargetValidator.targetExistence(userService.isUserIdExist(targetId));
Expand Down Expand Up @@ -51,4 +58,10 @@ public void unblockUser(String userId, String targetId) {

blockUserMapper.deleteBlockUser(userId, targetId);
}

@Transactional(readOnly = true)
public List<String> getBlockUserList(String userId, int pageNumber) {
BlockUserListRequest request = BlockUserListRequest.create(userId, pageNumber, pagination);
return blockUserMapper.getBlockUserList(request);
}
}
3 changes: 0 additions & 3 deletions src/main/java/me/soo/helloworld/service/FriendService.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,6 @@ private void validateFriendStatusDetail(FriendStatus status) {
throw new DuplicateRequestException("이미 해당 사용자로부터 친구추가 요청을 받은 상태입니다. 받은 친구 요청을 다시 확인해주세요.");
case FRIEND:
throw new DuplicateRequestException("이미 친구로 등록된 사용자에게 다시 친구 요청을 보낼 수 없습니다.");
case NONE:
default:
break;
}
}
}
11 changes: 10 additions & 1 deletion src/main/java/me/soo/helloworld/util/Pagination.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,16 @@ public class Pagination {

private final int maxPageFriend;

public Pagination(@Value("${friend.max.page:30}") int maxPageFriend) {
private final int maxPageBlockUser;

public Pagination(@Value("${friend.max.page:30}") int maxPageFriend,
@Value("${block_user.max.page:30}") int maxPageBlockUser) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이쪽 부분은 이전 리뷰에 남겨드린것처럼 페이징 계산식까지 아예 여기로 가져와서 페이징 계산용 클래스로 만들어줘도 좋겠네요

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

넵 머지한다음 계산식 만들었던거 적용해서 계산용 클래스로 만들어줬습니다!


this.maxPageFriend = maxPageFriend;
this.maxPageBlockUser = maxPageBlockUser;
}

public int calculateOffset(int pageLimit, int pageNumber) {
return pageLimit * (Math.max(pageNumber, 1) - 1);
}
}
7 changes: 7 additions & 0 deletions src/main/resources/mappers/BlockUserMapper.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,11 @@
<delete id="deleteBlockUser" parameterType="String">
DELETE FROM block WHERE userId = #{userId} AND blockId = #{targetId}
</delete>

<select id="getBlockUserList" parameterType="me.soo.helloworld.model.blockuser.BlockUserListRequest" resultType="String">

SELECT blockId FROM block WHERE userId = #{userId}
ORDER BY id DESC
LIMIT #{offset}, #{limit}
</select>
</mapper>