Skip to content

Commit

Permalink
Merge branch 'develop' into feat/#28-recruitingPostUpdate
Browse files Browse the repository at this point in the history
  • Loading branch information
DryRains authored Aug 30, 2023
2 parents 2020da5 + 888a61d commit b051768
Show file tree
Hide file tree
Showing 8 changed files with 196 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import com.example.rcp1.domain.applying.domain.Applying;
import com.example.rcp1.domain.applying.domain.repository.ApplyingRepository;
import com.example.rcp1.domain.applying.dto.ApplyReq;
import com.example.rcp1.domain.applying.dto.GetStatusRes;
import com.example.rcp1.domain.applying.dto.SetResultReq;
import com.example.rcp1.domain.recruitment.domain.Post;
import com.example.rcp1.domain.recruitment.domain.repository.PostRepository;
import com.example.rcp1.domain.user.domain.User;
Expand All @@ -13,7 +15,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.swing.text.html.Option;
import java.util.ArrayList;
import java.util.Optional;

@Service
Expand Down Expand Up @@ -57,4 +59,66 @@ public Applying apply(String access_token, Long postId, ApplyReq applyReq) {

return applying;
}

// 채용 지원 취소
@Transactional
public void applyCancel(String token, Long applyingId) {

String email = JwtUtil.getUserEmail(token, secret_key);

Optional<User> optionalUser = userRepository.findByEmail(email);
User user = optionalUser.get();

Optional<Applying> optionalApplying = applyingRepository.findById(applyingId);
Applying applying = optionalApplying.get();

if (user == applying.getUser()) {
applyingRepository.deleteById(applying.getId());
} else {
return;
}



}

@Transactional
public ArrayList<GetStatusRes> getStatus(String token) {


String email = JwtUtil.getUserEmail(token, secret_key);
Optional<User> optionalUser = userRepository.findByEmail(email);
User user = optionalUser.get();

ArrayList<GetStatusRes> getStatusResList = new ArrayList<>();

ArrayList<Applying> applyings = applyingRepository.findAllByUser(user);

for (Applying applyEntity : applyings) {

getStatusResList.add(GetStatusRes.toGetStatusRes(applyEntity));
}

return getStatusResList;


}


@Transactional
public void setStatus(String token, Long applyingId, SetResultReq setResultReq) {

String email = JwtUtil.getUserEmail(token, secret_key);


Optional<User> optionalUser = userRepository.findByEmail(email);
User user = optionalUser.get();

Optional<Applying> optionalApplying = applyingRepository.findOneByIdAndUser(applyingId, user);
Applying applying = optionalApplying.get();
applying.setStatus(setResultReq.getStatus());

applyingRepository.save(applying);

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,9 @@ public Applying(long id, User user, Post post, String resume_url, String recomme
public void setStatusD() {
this.status = "D";
}

public void setStatus(String status) {
this.status = status;

}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
package com.example.rcp1.domain.applying.domain.repository;

import com.example.rcp1.domain.applying.domain.Applying;
import com.example.rcp1.domain.recruitment.domain.Post;
import com.example.rcp1.domain.user.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.ArrayList;
import java.util.Optional;

public interface ApplyingRepository extends JpaRepository<Applying, Long> {

ArrayList<Applying> findAllByUser(User user);


Optional<Applying> findOneByIdAndUser(Long applyingId, User user);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.example.rcp1.domain.applying.dto;

import com.example.rcp1.domain.applying.domain.Applying;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
public class GetStatusRes {
private Long id;
private Long user_id;
private Long post_id;
private String resume_url;
private String recommender_email;
private String status;

@Builder
public GetStatusRes(Long id, Long user_id, Long post_id, String resume_url, String recommender_email, String status) {
this.id = id;
this.user_id = user_id;
this.post_id = post_id;
this.resume_url = resume_url;
this.recommender_email = recommender_email;
this.status = status;
}


public static GetStatusRes toGetStatusRes(Applying applying) {
GetStatusRes getStatusRes = new GetStatusRes();
getStatusRes.setId(applying.getId());
getStatusRes.setUser_id(applying.getUser().getId());
getStatusRes.setPost_id(applying.getPost().getId());
getStatusRes.setResume_url(applying.getResume_url());
getStatusRes.setRecommender_email(applying.getRecommender_email());
getStatusRes.setStatus(applying.getStatus());

return getStatusRes;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.example.rcp1.domain.applying.dto;

import jakarta.validation.constraints.NotBlank;
import lombok.Data;

@Data
public class SetResultReq {

@NotBlank
private String status;
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,29 @@
import com.example.rcp1.domain.applying.application.ApplyingService;
import com.example.rcp1.domain.applying.domain.Applying;
import com.example.rcp1.domain.applying.dto.ApplyReq;
import com.example.rcp1.domain.applying.dto.GetStatusRes;
import com.example.rcp1.domain.applying.dto.SetResultReq;
import com.example.rcp1.global.BaseResponse;
import com.example.rcp1.global.ErrorCode;
import com.example.rcp1.global.SuccessCode;
import com.example.rcp1.global.config.security.util.JwtUtil;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.Value;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;

@RestController
@RequiredArgsConstructor
@RequestMapping("/applying")
public class ApplyingController {

@Value("${SECRET_KEY}")
private String secret_key;

private final ApplyingService applyingService;

// 특정 채용에 지원
Expand All @@ -42,12 +50,51 @@ public ResponseEntity<BaseResponse<?>> apply(


// 지원 취소
@DeleteMapping("/{applyingId}")
public ResponseEntity<BaseResponse<?>> applyCancel(
@RequestHeader("Authorization") String Authorization,
@PathVariable("applyingId") Long applyingId) {

String token = Authorization.substring(7);

applyingService.applyCancel(token, applyingId);

return ResponseEntity.ok(BaseResponse.success(SuccessCode.DELETE_APPLY_SUCCESS));

// 유저의 지원 현황 조회

}


// 유저의 지원 현황 조회 엔터티 -> DTO 변환 과정 거침
@GetMapping("/status")
public ResponseEntity<BaseResponse<?>> getStatus(
@RequestHeader("Authorization") String Authorization) {
String token = Authorization.substring(7);

ArrayList<GetStatusRes> applyings = applyingService.getStatus(token);

return ResponseEntity.ok(BaseResponse.success(SuccessCode.GET_STATUS_SUCCESS, applyings));
}


// 기업 유저의 합불 결정
@PatchMapping("/setting/{applyingId}")
public ResponseEntity<BaseResponse<?>> setResult(
@RequestHeader("Authorization") String Authorization,
@PathVariable("applyingId") Long applyingId,
@Valid @RequestBody SetResultReq setResultReq) {

String token = Authorization.substring(7);

if (JwtUtil.isExpired(token, secret_key)) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED)
.body(BaseResponse.error(ErrorCode.EXPIRED_TOKEN));
}

applyingService.setStatus(token, applyingId, setResultReq);

return ResponseEntity.ok(BaseResponse.success(SuccessCode.STATUS_SETTING_SUCCESS));


}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.example.rcp1.domain.user.domain.repository;

import com.example.rcp1.domain.applying.domain.Applying;
import com.example.rcp1.domain.user.domain.User;
import com.example.rcp1.domain.user.dto.SignInReq;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Optional;
Expand All @@ -11,4 +14,7 @@ public interface UserRepository extends JpaRepository<User, Long> {


Optional<User> findByEmail(String email);

@Query("SELECT a FROM Applying a WHERE a.id = :applyingId AND a.user.id = :userId")
Applying findByIdAndUserId(@Param("applyingId") Long applyingId, @Param("userId") String userId);
}
11 changes: 5 additions & 6 deletions src/main/java/com/example/rcp1/global/SuccessCode.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,21 @@
@Getter
@AllArgsConstructor
public enum SuccessCode {
// api 만들고 수정하기
// CUSTOM_SUCCESS(OK, "~ 조회에 성공했습니다."),
// CUSTOM_CREATED_SUCCESS(CREATED, "~ 생성에 성공했습니다.");
SIGNUP_SUCCESS(OK, "회원가입에 성공했습니다."),
SIGNIN_SUCCESS(OK, "로그인에 성공했습니다."),
UPDATE_PROFILE_SUCCESS(OK, "프로필이 성공적으로 수정되었습니다."),
LOGICAL_DELETE_SUCCESS(OK, "논리적으로 삭제 되었습니다."),
POST_CREATED_SUCCESS(CREATED, "채용공고 생성에 성공했습니다."),
POST_RETRIEVAL_SUCCESS(OK,"채용공고 조회에 성공했습니다."),
POST_RETRIEVAL_SUCCESS(OK, "채용공고 조회에 성공했습니다."),
POST_UPDATED_SUCCESS(OK, "채용공고 수정에 성공했습니다."),
CREATE_APPLY_SUCCESS(OK, "채용 공고에 지원서를 제출했습니다.");
CREATE_APPLY_SUCCESS(OK, "채용 공고에 지원서를 제출했습니다."),
DELETE_APPLY_SUCCESS(OK, "채용 공고에 대한 지원을 취소했습니다."),
GET_STATUS_SUCCESS(OK, "지원 현황 조회 성공"),
STATUS_SETTING_SUCCESS(OK, "지원자의 상태가 변경되었습니다.");

private final HttpStatus httpStatus;
private final String message;


public int getHttpStatusCode() {
return httpStatus.value();
}
Expand Down

0 comments on commit b051768

Please sign in to comment.