Skip to content

Commit

Permalink
Merge pull request #31 from Hackathon0704/feat/28
Browse files Browse the repository at this point in the history
✨ feat: 전문가 정보 조회 API 구현
  • Loading branch information
strongmhk authored Jul 4, 2024
2 parents d9b056e + 7e18dbe commit ccfcc5c
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 4 deletions.
19 changes: 15 additions & 4 deletions src/main/java/com/umc/dream/controller/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
import com.umc.dream.service.UserService.UserService;
import com.umc.dream.converter.UserConverter;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import lombok.RequiredArgsConstructor;
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.RestController;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
Expand Down Expand Up @@ -40,4 +40,15 @@ public ApiResponse<UserResponseDTO.CheckAccountResultDTO> checkAccount(@RequestB
boolean isDuplicated = userService.CheckAccount(request);
return ApiResponse.onSuccess(UserConverter.toCheckAccountResultDTO(isDuplicated));
}

@Operation(summary = "전문가 정보 조회 API", description = "전문가의 정보를 조회합니다.")
@Parameters({
@Parameter(name = "page", description = "페이지 번호, 0이 1 페이지 이며 페이지당 4개씩 조회합니다."),
})
@GetMapping("/professionList")
public ApiResponse<UserResponseDTO.ProfessionInfoListDTO> getProfessionList(@RequestParam(name = "page") Integer page) {
Page<User> professionList = userService.getProfessionList(page);
return ApiResponse.onSuccess(UserConverter.toProfessionInfoListDTO(professionList));
}

}
28 changes: 28 additions & 0 deletions src/main/java/com/umc/dream/converter/UserConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@
import com.umc.dream.domain.enums.Role;
import com.umc.dream.dto.UserRequestDTO;
import com.umc.dream.dto.UserResponseDTO;
import org.springframework.data.domain.Page;

import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;

public class UserConverter {
public static UserResponseDTO.JoinResultDTO toJoinResultDTO(User user) {
Expand Down Expand Up @@ -35,4 +38,29 @@ public static User toUser(UserRequestDTO.JoinDto joinDto) {
.build();
}

public static UserResponseDTO.ProfessionInfoListDTO toProfessionInfoListDTO(Page<User> professionInfoList) {
List<UserResponseDTO.ProfessionInfoDTO> professionInfoDTOList = professionInfoList.stream()
.map(UserConverter::toProfessionInfoDTO)
.collect(Collectors.toList());

return UserResponseDTO.ProfessionInfoListDTO.builder()
.isLast(professionInfoList.isLast())
.isFirst(professionInfoList.isFirst())
.totalPage(professionInfoList.getTotalPages())
.totalElements(professionInfoList.getTotalElements())
.listSize(professionInfoDTOList.size())
.professionInfoDTOList(professionInfoDTOList)
.build();

}

public static UserResponseDTO.ProfessionInfoDTO toProfessionInfoDTO(User user) {
return UserResponseDTO.ProfessionInfoDTO.builder()
.name(user.getName())
.job(user.getJob())
.description(user.getDescription())
.price(user.getPrice())
.build();
}

}
3 changes: 3 additions & 0 deletions src/main/java/com/umc/dream/domain/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ public class User extends BaseEntity {
@Nullable
private String price;

@Nullable
private String job;

@Enumerated(EnumType.STRING)
private Role role;

Expand Down
25 changes: 25 additions & 0 deletions src/main/java/com/umc/dream/dto/UserResponseDTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;

public class UserResponseDTO {

Expand Down Expand Up @@ -34,4 +35,28 @@ public static class LoginResultDTO {
public static class CheckAccountResultDTO {
boolean isDuplicated;
}

@Builder
@Getter
@NoArgsConstructor
@AllArgsConstructor
public static class ProfessionInfoDTO {
String name;
String job;
String description;
String price;
}

@Builder
@Getter
@NoArgsConstructor
@AllArgsConstructor
public static class ProfessionInfoListDTO {
List<UserResponseDTO.ProfessionInfoDTO> professionInfoDTOList;
Integer listSize;
Integer totalPage;
Long totalElements;
Boolean isFirst;
Boolean isLast;
}
}
4 changes: 4 additions & 0 deletions src/main/java/com/umc/dream/repository/UserRepository.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package com.umc.dream.repository;

import com.umc.dream.domain.User;
import com.umc.dream.domain.enums.Role;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByAccount(String account);
Page<User> findByRole(Role role, PageRequest pageRequest);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,15 @@

import com.umc.dream.domain.User;
import com.umc.dream.dto.UserRequestDTO;
import org.springframework.data.domain.Page;

import java.util.List;

public interface UserService {
User join(UserRequestDTO.JoinDto request);

User login(UserRequestDTO.LoginDto request);

boolean CheckAccount(UserRequestDTO.CheckAccountRequestDto request);
Page<User> getProfessionList(Integer page);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@
import com.umc.dream.apiPayload.exception.GeneralException;
import com.umc.dream.converter.UserConverter;
import com.umc.dream.domain.User;
import com.umc.dream.domain.enums.Role;
import com.umc.dream.dto.UserRequestDTO;
import com.umc.dream.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
Expand Down Expand Up @@ -50,4 +54,9 @@ public boolean CheckAccount(UserRequestDTO.CheckAccountRequestDto request) {
}
}

@Override
public Page<User> getProfessionList(Integer page) {
Page<User> professionList = userRepository.findByRole(Role.PRO, PageRequest.of(page, 4));
return professionList;
}
}

0 comments on commit ccfcc5c

Please sign in to comment.