Skip to content

Commit

Permalink
Merge pull request #881 from peer-42seoul/880-feat-모집공고-목록-및-단건-조회
Browse files Browse the repository at this point in the history
feat:add-getJob-getJobList
  • Loading branch information
weejihye authored Jun 30, 2024
2 parents 5b60dfd + c86f7cf commit 593259d
Show file tree
Hide file tree
Showing 7 changed files with 111 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/main/java/peer/backend/config/SecurityConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@ public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Excepti
.antMatchers(HttpMethod.GET, "/api/v1/showcase/*", "/api/v1/showcase",
"/api/v1/showcase/comment/*")
.permitAll()
.antMatchers(HttpMethod.GET, "/api/v1/job/*", "/api/v1/job")
.permitAll()
.antMatchers(HttpMethod.GET, "/api/v1/profile/other")
.permitAll()
.antMatchers(HttpMethod.GET, "/socket.io/**")
Expand Down
27 changes: 27 additions & 0 deletions src/main/java/peer/backend/controller/board/JobController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package peer.backend.controller.board;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import peer.backend.dto.board.Job.JobListResponse;
import peer.backend.dto.board.Job.JobResponse;
import peer.backend.service.board.Job.JobService;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v1/job")
@Slf4j
public class JobController {

private final JobService jobService;
@GetMapping("")
public Page<JobListResponse> getJobList(@RequestParam int page, @RequestParam int pageSize){
return jobService.getJobList(page, pageSize);
}

@GetMapping("/{jobId}")
public JobResponse getJob(@PathVariable Long jobId){
return jobService.getJob(jobId);
}
}
17 changes: 17 additions & 0 deletions src/main/java/peer/backend/dto/board/Job/JobListResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package peer.backend.dto.board.Job;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
@AllArgsConstructor
@Builder
public class JobListResponse {
String title;
String createdAt;
String writerName;
Long id;
}
19 changes: 19 additions & 0 deletions src/main/java/peer/backend/dto/board/Job/JobResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package peer.backend.dto.board.Job;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;

import javax.swing.border.TitledBorder;

@Getter
@RequiredArgsConstructor
@AllArgsConstructor
public class JobResponse {
String title;
String writerName;
String createdAt;
String content;
Long id;
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ public enum BoardType {
NORMAL("NORMAL"),
ADMIN("ADMIN"),
SHOWCASE("SHOWCASE"),
NOTICE("NOTICE")
NOTICE("NOTICE"),
JOB("JOB")
;
private final String type;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,6 @@ public interface PostRepository extends JpaRepository<Post, Long> {

@Query("SELECT p FROM Post p JOIN p.postLike pl JOIN p.board b WHERE pl.userId = :userId AND pl.type = :type AND p.isPublic = :isPublic AND b.type = :boardType")
Page<Post> findShowcaseFavoriteList(boolean isPublic, BoardType boardType, Long userId, PostLikeType type, Pageable pageable);

Page<Post> findAllByBoardType(BoardType type, Pageable pageable);
}
42 changes: 42 additions & 0 deletions src/main/java/peer/backend/service/board/Job/JobService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package peer.backend.service.board.Job;

import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import peer.backend.dto.board.Job.JobListResponse;
import peer.backend.dto.board.Job.JobResponse;
import peer.backend.entity.board.team.Post;
import peer.backend.entity.board.team.enums.BoardType;
import peer.backend.exception.NotFoundException;
import peer.backend.repository.board.team.PostRepository;

import java.util.Optional;

@Service
@RequiredArgsConstructor
public class JobService {

private final PostRepository postRepository;
public Page<JobListResponse> getJobList(int page, int pageSize){
Pageable pageable = PageRequest.of(page - 1, pageSize);
Page<Post> result = postRepository.findAllByBoardType(BoardType.JOB, pageable);

return result.map(post ->
new JobListResponse(post.getTitle(),
post.getCreatedAt().toString(),
post.getUser().getNickname(),
post.getId()));
}

public JobResponse getJob(Long jobId){
Post job = postRepository.findById(jobId)
.orElseThrow(() -> new NotFoundException("Not Found"));
return new JobResponse(job.getTitle(),
job.getUser().getNickname(),
job.getContent(),
job.getCreatedAt().toString(),
job.getId());
}
}

0 comments on commit 593259d

Please sign in to comment.