@Transactional
@Override
public ApiResponse<Void> updateMatching(Long matchingId, MatchingRequest.MatchingRequestUpdate updateReqDto, AuthUser authUser) {
MatchingValidator.isNotCompany(authUser);
Matching findMatching = findById(matchingId);
findMatching.statusChange(updateReqDto.status());
return ApiResponse.of(MATHCING_SUCCESS);
}
@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@DynamicUpdate
@Builder
@Entity
public class Matching extends Timestamped {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "portfolio_id")
private Portfolio portfolio;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "outsourcing_id")
private Outsourcing outsourcing;
// 지역
@Enumerated(value = EnumType.STRING)
private MathingStatusType status;
public Matching(User user, Portfolio portfolio, Outsourcing outsourcing, MathingStatusType status) {
this.user = user;
this.portfolio = portfolio;
this.outsourcing = outsourcing;
this.status = status;
}
public void statusChange(MathingStatusType status){
this.status = status;
}
}




@Transactional
@Override
public ApiResponse<Void> updateMatching(Long matchingId, MatchingRequest.MatchingRequestUpdate updateReqDto, AuthUser authUser) {
try {
MatchingValidator.isNotCompany(authUser);
Matching findMatching = findById(matchingId);
findMatching.statusChange(updateReqDto.status());
matchingRepository.flush();
return ApiResponse.of(MATHCING_SUCCESS);
} catch (OptimisticLockingFailureException e) {
throw new MatchingException(MATCHING_LOCK);
}
}
