diff --git a/src/main/java/me/liiot/snsserver/controller/FollowController.java b/src/main/java/me/liiot/snsserver/controller/FollowController.java index 682fd01..1d9ccab 100644 --- a/src/main/java/me/liiot/snsserver/controller/FollowController.java +++ b/src/main/java/me/liiot/snsserver/controller/FollowController.java @@ -4,13 +4,17 @@ import me.liiot.snsserver.annotation.CheckLogin; import me.liiot.snsserver.annotation.CurrentUser; import me.liiot.snsserver.enumeration.AlarmType; +import me.liiot.snsserver.model.follow.Follow; import me.liiot.snsserver.model.user.User; import me.liiot.snsserver.service.AlarmService; import me.liiot.snsserver.service.FollowService; import me.liiot.snsserver.util.HttpResponses; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequiredArgsConstructor @RequestMapping("/follow") @@ -40,4 +44,22 @@ public ResponseEntity unfollowUser(@PathVariable String followUserId, return HttpResponses.RESPONSE_OK; } + + @GetMapping("/my-follow-list") + @CheckLogin + public ResponseEntity> getFollowList(@CurrentUser User currentUser) { + + List followList = followService.getFollowList(currentUser.getUserId()); + + return new ResponseEntity<>(followList, HttpStatus.OK); + } + + @GetMapping("/my-following-list") + @CheckLogin + public ResponseEntity> getFollowingList(@CurrentUser User currentUser) { + + List followingList = followService.getFollowingList(currentUser.getUserId()); + + return new ResponseEntity<>(followingList, HttpStatus.OK); + } } diff --git a/src/main/java/me/liiot/snsserver/mapper/FollowMapper.java b/src/main/java/me/liiot/snsserver/mapper/FollowMapper.java index 758d29c..efbda49 100644 --- a/src/main/java/me/liiot/snsserver/mapper/FollowMapper.java +++ b/src/main/java/me/liiot/snsserver/mapper/FollowMapper.java @@ -1,10 +1,13 @@ package me.liiot.snsserver.mapper; import me.liiot.snsserver.annotation.ClientDatabase; +import me.liiot.snsserver.model.follow.Follow; import me.liiot.snsserver.util.ClientDatabases; import org.apache.ibatis.annotations.Mapper; import org.springframework.data.repository.query.Param; +import java.util.List; + @Mapper public interface FollowMapper { @@ -13,4 +16,10 @@ public interface FollowMapper { @ClientDatabase(value = ClientDatabases.MASTER) void deleteFollow(@Param("userId") String userId, @Param("followUserId") String followUserId); + + @ClientDatabase(value = ClientDatabases.SLAVE) + List getFollowList(String userId); + + @ClientDatabase(value = ClientDatabases.SLAVE) + List getFollowingList(String followUserId); } diff --git a/src/main/java/me/liiot/snsserver/model/follow/Follow.java b/src/main/java/me/liiot/snsserver/model/follow/Follow.java new file mode 100644 index 0000000..b465f63 --- /dev/null +++ b/src/main/java/me/liiot/snsserver/model/follow/Follow.java @@ -0,0 +1,19 @@ +package me.liiot.snsserver.model.follow; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.sql.Date; + +@Getter +@AllArgsConstructor +public class Follow { + + private final int id; + + private final String userId; + + private final String followUserId; + + private final Date startFollow; +} diff --git a/src/main/java/me/liiot/snsserver/service/FollowService.java b/src/main/java/me/liiot/snsserver/service/FollowService.java index b3715b8..05c131b 100644 --- a/src/main/java/me/liiot/snsserver/service/FollowService.java +++ b/src/main/java/me/liiot/snsserver/service/FollowService.java @@ -1,8 +1,16 @@ package me.liiot.snsserver.service; +import me.liiot.snsserver.model.follow.Follow; + +import java.util.List; + public interface FollowService { public void addFollowList(String userId, String followUserId); public void deleteFollowList(String userId, String followUserId); + + public List getFollowList(String userId); + + public List getFollowingList(String followUserId); } diff --git a/src/main/java/me/liiot/snsserver/service/FollowServiceImpl.java b/src/main/java/me/liiot/snsserver/service/FollowServiceImpl.java index b7ab4bc..86a49d3 100644 --- a/src/main/java/me/liiot/snsserver/service/FollowServiceImpl.java +++ b/src/main/java/me/liiot/snsserver/service/FollowServiceImpl.java @@ -2,8 +2,11 @@ import lombok.RequiredArgsConstructor; import me.liiot.snsserver.mapper.FollowMapper; +import me.liiot.snsserver.model.follow.Follow; import org.springframework.stereotype.Service; +import java.util.List; + @Service @RequiredArgsConstructor public class FollowServiceImpl implements FollowService { @@ -21,4 +24,20 @@ public void deleteFollowList(String userId, String followUserId) { followMapper.deleteFollow(userId, followUserId); } + + @Override + public List getFollowList(String userId) { + + List followList = followMapper.getFollowList(userId); + + return followList; + } + + @Override + public List getFollowingList(String followUserId) { + + List followingList = followMapper.getFollowingList(followUserId); + + return followingList; + } } diff --git a/src/main/resources/mapper/FollowMapper.xml b/src/main/resources/mapper/FollowMapper.xml index 64d3458..4257cba 100644 --- a/src/main/resources/mapper/FollowMapper.xml +++ b/src/main/resources/mapper/FollowMapper.xml @@ -12,4 +12,16 @@ WHERE userId = #{userId} AND followUserId = #{followUserId} + + + + \ No newline at end of file diff --git a/src/test/java/me/liiot/snsserver/service/FollowServiceTest.java b/src/test/java/me/liiot/snsserver/service/FollowServiceTest.java index 8dd50b6..ef99223 100644 --- a/src/test/java/me/liiot/snsserver/service/FollowServiceTest.java +++ b/src/test/java/me/liiot/snsserver/service/FollowServiceTest.java @@ -1,6 +1,7 @@ package me.liiot.snsserver.service; import me.liiot.snsserver.mapper.FollowMapper; +import me.liiot.snsserver.model.follow.Follow; import me.liiot.snsserver.model.user.User; import me.liiot.snsserver.util.PasswordEncryptor; import org.junit.jupiter.api.BeforeEach; @@ -12,9 +13,13 @@ import org.mockito.junit.jupiter.MockitoExtension; import java.sql.Date; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) class FollowServiceTest { @@ -56,4 +61,38 @@ void deleteFollowListTest() { verify(followMapper).deleteFollow("test2", "test1"); } + + @DisplayName("팔로우 리스트 조회") + @Test + void getFollowListTest() { + Follow follow1 = new Follow(1, "test2", "test1", Date.valueOf("2020-10-18")); + Follow follow2 = new Follow(2, "test2", "test3", Date.valueOf("2020-10-18")); + List followList = new ArrayList<>(); + followList.add(follow1); + followList.add(follow2); + + when(followMapper.getFollowList("test2")).thenReturn(followList); + + List result = followService.getFollowList(testUser.getUserId()); + + verify(followMapper).getFollowList("test2"); + assertEquals(followList, result); + } + + @DisplayName("팔로잉 리스트 조회") + @Test + void getFollowingListTest() { + Follow follow1 = new Follow(3, "test3", "test2", Date.valueOf("2020-10-18")); + Follow follow2 = new Follow(4, "test4", "test2", Date.valueOf("2020-10-18")); + List followingList = new ArrayList<>(); + followingList.add(follow1); + followingList.add(follow2); + + when(followMapper.getFollowingList("test2")).thenReturn(followingList); + + List result = followService.getFollowingList(testUser.getUserId()); + + verify(followMapper).getFollowingList("test2"); + assertEquals(followingList, result); + } } \ No newline at end of file