New World
[해외공구관리사이트] 프로젝트 - 조회 (일반 & 상세 & 회원) 본문
프로젝트를 일반 조회하는 페이지 기능
1. 프로젝트의 정보가 제대로 노출되는지 확인 (상품명, 가격, 상품양)
2. 상품 이미지를 선택하면 프로젝트 상세 화면으로 이동
controller
ㄴ ProjectController
현재 로그인한 회원의 정보와 페이지를 출력해준다.
@RequestMapping("/project")
public String project(HttpSession httpSession, Model model) {
model.addAttribute("nowLoginMember", memberController.modelMember(httpSession));
return "sample/project/blog-grid";
}
API
ㄴ ProjectApiController
프로젝트의 정보를 서버에서 프론트로 가져온다.
// 조회
@GetMapping("/api/project/list")
public List<ProjectInfoDto> projectCard() {
List<Project> findProjects = projectService.surchAll();
List<ProjectInfoDto> collect = findProjects.stream()
.map(p -> new ProjectInfoDto(p.getNo(), p.getName(),
p.getFirstPrice() + p.getSecondPrice() + p.getThirdPrice(), p.getMember().getName(),
p.getPhotoUrl(), p.getQuantity(),
p.getStatus()))
.collect(Collectors.toList());
return collect;
}
@Data
@AllArgsConstructor // return 시, 꼭 필요한 내용
static class ProjectInfoDto {
private Long no;
private String name;
private int price;
private String memberName;
private String photoUrl;
private int quantity;
@Enumerated(EnumType.STRING)
private ProjectStatus status;
}
Service
ㄴ ProjectService
ㄴ ProjectServiceImpl
말 그대로 프로젝트의 모든 정보를 받아준다.
// 조회
@Override
public List<Project> surchAll() {
return projectRepository.findAll();
};
프로젝트를 상세 조회하는 페이지 기능
1. 프로젝트의 정보와 프로젝트를 등록한 회원이 제대로 노출되는지 확인
2. 해당 프로젝트를 만든 사람이라면 수정 버튼이 노출되도록 만들 것
3. 회원 이미지를 누르면 회원이 생성한 프로젝트들을 확인할 수 있는 페이지로 이동한다
controller
ㄴ ProjectController
프로젝트와 회원 정보를 프론트로 넘겨준다.
// 프로젝트 상세조회
@RequestMapping("/project{projectNo}")
public String projectSingle(@PathVariable("projectNo") Long projectNo, HttpSession httpSession, Model model) {
Project project = projectService.surchOne(projectNo);
model.addAttribute("project", project);
model.addAttribute("nowLoginMember", memberController.modelMember(httpSession));
return "sample/project/project-single";
}
API
ㄴ ProjectApiController
일반 조회와 달리 각 금액과 회원의 정보를 파악할 수 있도록 회원의 고유 번호만 받아 뿌려준다.
@PostMapping("/api/project/detail")
public List<ProjectInfoOneDto> projectCard(@RequestBody @Valid Info request) {
Long no = request.getNo();
List<Project> findProject = projectService.surchOneList(no);
List<ProjectInfoOneDto> collect = findProject.stream()
.map(p -> new ProjectInfoOneDto(p.getName(), p.getExp(),
p.getFirstPrice() + p.getSecondPrice() + p.getThirdPrice(), p.getFirstPrice(),
p.getSecondPrice(), p.getThirdPrice(), p.getStatus(),
p.getMember().getNo()))
.collect(Collectors.toList());
return collect;
}
@Data
static class Info {
private Long no;
}
Service
ㄴ ProjectService
ㄴ ProjectServiceImpl
프로젝트 상세 조회이기 때문에 프로젝트 정보 리스트를 받아오도록 만들었다.
@Override
public List<Project> surchOneList(Long no) {
return projectRepository.findOneById(no);
}
프로젝트를 회원 조회하는 페이지 기능
1. 프로젝트를 생성한 회원에 대한 정보가 노출
2. 회원이 만든 프로젝트들이 노출
3. 프로젝트 이미지 선택 시, 프로젝트 상세 화면으로 이동
controller
ㄴ ProjectController
프로젝트와 회원 정보를 프론트로 넘겨준다.
@RequestMapping("/projectByMember{memberNo}")
public String projectMember(@PathVariable("memberNo") Long memberNo, HttpSession httpSession, Model model) {
Member member = memberService.myInfo(memberNo);
Member nowLoginMember = memberController.modelMember(httpSession);
model.addAttribute("member", member);
model.addAttribute("nowLoginMember", nowLoginMember);
if (member != nowLoginMember) {
return "sample/project/blog-gridByMember";
} else {
return "sample/project/blog-gridByMyMember";
}
}
API
ㄴ ProjectApiController
회원 정보를 보여주기 위해 회원 이름과 프로젝트의 정보를 넘겨준다.
// 프로젝트 조회(회원)
@PostMapping("/api/project/member")
public List<ProjectByMemberDto> projectMember(@RequestBody @Valid Info request) {
Member member = memberService.myInfo(request.getNo());
List<Project> projectByMember = projectService.surchMember(member);
List<ProjectByMemberDto> project = projectByMember.stream()
.map(p -> new ProjectByMemberDto(p.getNo(), p.getName(),
p.getFirstPrice() + p.getSecondPrice() + p.getThirdPrice(), p.getQuantity(),
p.getStatus(), p.getMember().getName()))
.collect(Collectors.toList());
return project;
}
@Data
@AllArgsConstructor // return 시, 꼭 필요한 내용
static class ProjectByMemberDto {
private Long no;
private String name;
private int price;
private int quantity;
private ProjectStatus status;
private String memberName;
}
Service
ㄴ ProjectService
ㄴ ProjectServiceImpl
회원을 찾아 회원의 프로젝트 정보와 회원 정보를 보내준다.
// 프로젝트 조회(회원)
@Override
public List<Project> surchMember(Member member) {
return projectRepository.findByMember(member);
};
'Project > old' 카테고리의 다른 글
[해외공구관리사이트] 주문 - 조회(내 주문서와 내 프로젝트의 주문서) & 삭제 (0) | 2022.09.06 |
---|---|
[해외공구관리사이트] 주문 - 저장 (0) | 2022.09.06 |
[해외공구관리사이트] 프로젝트 - 수정 & 삭제 (0) | 2022.09.06 |
[해외공구관리사이트] 프로젝트 - 생성 (0) | 2022.09.06 |
[해외공구관리사이트] 회원 - 수정 & 탈퇴 (0) | 2022.09.06 |