Skip to content

Commit

Permalink
[update] #101 - 기업회원 공고 등록 API 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
soljjang777 committed Nov 17, 2024
1 parent 05fe7af commit 9b1fe24
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.wooribound.domain.userapply.dto.ApplicantResultReqDTO;
import com.wooribound.global.util.AuthenticateUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.*;

Expand All @@ -23,9 +24,9 @@ public class EnterpriseJobPostingController {
private final AuthenticateUtil authenticateUtil;

// 1. 공고 등록
@PostMapping("/register")
public String createJobPosting(Authentication authentication, @RequestBody JobPostingReqDTO jobPostingReqDTO) {
return enterpriseJobPostingFacade.createJobPosting(authentication, jobPostingReqDTO);
@PostMapping(value = "/register", consumes = {"multipart/form-data"})
public ResponseEntity createJobPosting(Authentication authentication, @ModelAttribute JobPostingReqDTO jobPostingReqDTO) {
return ResponseEntity.ok().body(enterpriseJobPostingFacade.createJobPosting(authentication, jobPostingReqDTO));
}

// 2. 내 기업 공고 목록 조회
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,22 @@
package com.wooribound.api.corporate.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;

import java.util.Date;

@Builder
@Getter
@Setter
@AllArgsConstructor
@Data
public class JobPostingReqDTO {
// private String entId;
private String postImg;
private MultipartFile postImg;
private String postTitle;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
// TODO: Figma, 프론트 직무선택 컴포넌트 추가하기 [공고등록 화면]
private String jobName;
private Long jobId;



Expand Down
5 changes: 4 additions & 1 deletion src/main/java/com/wooribound/domain/job/JobRepository.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package com.wooribound.domain.job;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface JobRepository extends JpaRepository<Job,Long> {
Job findByJobName(String jobName);

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,6 @@
)
public class JobPosting {
@Id
@GeneratedValue(
strategy = GenerationType.AUTO,
generator = "job_posting_seq_generator"
)
@Column(name = "post_id")
private Long postId;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.stereotype.Repository;

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

@Repository
public interface JobPostingRepository extends JpaRepository<JobPosting, Long> {
Expand Down Expand Up @@ -91,4 +92,8 @@ List<JobPostingProjection> findJobPostingsNew(@Param("exJobs") List<String> exJo
"WHERE wh.job.jobId = :jobId " +
"ORDER BY w.jobPoint DESC")
List<WbUser> findApplicantRecommendation(@Param("jobId") int jobId);


@Query("SELECT MAX(jp.postId) FROM JobPosting jp")
Optional<Long> getMaxJobPostingId();
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.wooribound.domain.jobposting.Service;

import com.amazonaws.services.s3.AmazonS3Client;
import com.wooribound.api.corporate.dto.ApplicantsDTO;
import com.wooribound.api.corporate.dto.JobPostingReqDTO;
import com.wooribound.domain.enterprise.Enterprise;
Expand All @@ -19,43 +20,60 @@
import com.wooribound.global.constant.ApplyResult;
import com.wooribound.global.constant.YN;
import com.wooribound.global.util.RedisUtil;
import com.wooribound.global.util.S3Util;
import jakarta.persistence.EntityNotFoundException;
import lombok.RequiredArgsConstructor;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;

@RequiredArgsConstructor
@Service
public class EntJobPostingServiceImpl implements EntJobPostingService {
@Value("${aws.s3.jobPosting.folder}")
String jobPostingFolderName;

private final S3Util s3Util;

private static final Logger logger = LogManager.getLogger(EntJobPostingServiceImpl.class);
private final JobPostingRepository jobPostingRepository;
private final JobRepository jobRepository;
private final EnterpriseRepository enterpriseRepository;
private final UserApplyRepository userApplyRepository;
private final NotificationRepository notificationRepository;
private final RedisUtil redisUtil;

// 1. 공고 등록
@Override
public String createJobPosting(String entId, JobPostingReqDTO jobPostingReqDTO) {

Enterprise enterprise = enterpriseRepository.findById(entId).orElse(null);
Job job = jobRepository.findByJobName(jobPostingReqDTO.getJobName());

Optional<Job> byIdJob = jobRepository.findById(jobPostingReqDTO.getJobId());
if (byIdJob.isEmpty()) {
throw new EntityNotFoundException();
}

Long jobPostingId = 1L;
Optional<Long> maxJobPostingId = jobPostingRepository.getMaxJobPostingId();
if (maxJobPostingId.isPresent()) {
jobPostingId = maxJobPostingId.get() + 1;
}

String imageURL = s3Util.uploadFile(jobPostingReqDTO.getPostImg(), jobPostingFolderName);

JobPosting jobPosting = JobPosting.builder()
.postId(jobPostingId)
.enterprise(enterprise)
.job(job)
.job(byIdJob.get())
.postTitle(jobPostingReqDTO.getPostTitle())
.postImg(jobPostingReqDTO.getPostImg())
.postImg(imageURL)
.startDate(jobPostingReqDTO.getStartDate())
.endDate(jobPostingReqDTO.getEndDate())
.isDeleted(YN.N)
.build();

jobPostingRepository.save(jobPosting);
Expand Down Expand Up @@ -204,4 +222,5 @@ public List<ApplicantsDTO> getApplicantRecommendation(int jobId) {
}).collect(Collectors.toList());

}

}

0 comments on commit 9b1fe24

Please sign in to comment.