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

Commit

Permalink
Merge pull request #56 from f-lab-edu/feature/25
Browse files Browse the repository at this point in the history
[#25] 사용자 차단 목록 불러오기 기능 구현
  • Loading branch information
msugo1 committed Mar 18, 2021
2 parents 54746c9 + 024f0c0 commit 07bbcec
Show file tree
Hide file tree
Showing 8 changed files with 73 additions and 6 deletions.
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) {

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>

0 comments on commit 07bbcec

Please sign in to comment.