Skip to content

Commit

Permalink
Merge pull request #28 from TravelMate-KU/feat/matching
Browse files Browse the repository at this point in the history
feat: matching 결과 조회 API 구현
  • Loading branch information
jaeuk520 authored Mar 27, 2024
2 parents 33c2e44 + f06bca9 commit 9d28791
Show file tree
Hide file tree
Showing 19 changed files with 601 additions and 46 deletions.
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testImplementation 'com.h2database:h2'

implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
Expand Down
37 changes: 37 additions & 0 deletions src/main/java/konkuk/travelmate/controller/MatchingController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package konkuk.travelmate.controller;

import konkuk.travelmate.form.response.VolunteerMatchingResponse;
import konkuk.travelmate.service.MatchingService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;
import java.util.Objects;

@Slf4j
@Controller
@RequestMapping("/matchings")
@RequiredArgsConstructor
public class MatchingController {

private final MatchingService matchingService;

@GetMapping
private String showMatchResults(@AuthenticationPrincipal OAuth2User user, Model model) {

log.info("[MatchingController.showMatchResults]");
String email = Objects.requireNonNull(user.getAttribute("email")).toString();
List<VolunteerMatchingResponse> matchings = matchingService.getMatchResults(email);
model.addAttribute("matchings", matchings);

return "volunteer_matching_result";
}


}
14 changes: 0 additions & 14 deletions src/main/java/konkuk/travelmate/controller/TestController.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,25 +1,16 @@
package konkuk.travelmate.controller;

import com.nimbusds.jose.shaded.gson.JsonObject;
import konkuk.travelmate.domain.Health;
import konkuk.travelmate.domain.Role;
import konkuk.travelmate.domain.TravelType;
import konkuk.travelmate.domain.User;
import konkuk.travelmate.service.UserService;
import lombok.Data;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Map;
import java.util.Optional;

Expand Down
5 changes: 4 additions & 1 deletion src/main/java/konkuk/travelmate/domain/Course.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package konkuk.travelmate.domain;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Course {

@Id
Expand Down
12 changes: 3 additions & 9 deletions src/main/java/konkuk/travelmate/domain/Health.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
package konkuk.travelmate.domain;

import jakarta.persistence.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.*;

@Entity
@Getter
@RequiredArgsConstructor
@NoArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Health {

@Id
Expand Down Expand Up @@ -38,8 +36,4 @@ public class Health {
@NonNull
private Integer iq;

public static Health getDummyHealth(){
return new Health(0,0,0,0,0,0,0);
}

}
5 changes: 4 additions & 1 deletion src/main/java/konkuk/travelmate/domain/Matching.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package konkuk.travelmate.domain;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Matching {

@Id
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/konkuk/travelmate/domain/Request.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package konkuk.travelmate.domain;

import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

Expand All @@ -10,7 +12,8 @@

@Entity
@Getter
@NoArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Request {

@Id
Expand Down
1 change: 1 addition & 0 deletions src/main/java/konkuk/travelmate/domain/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class User {

@Id
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package konkuk.travelmate.form.response;

import konkuk.travelmate.domain.RequestState;
import konkuk.travelmate.domain.TravelType;

import java.sql.Timestamp;

public record VolunteerMatchingResponse(String disabledName, Timestamp startTime, Timestamp endTime, TravelType type,
RequestState state, String disabledPhoneName, String disabledEmail) {
}
15 changes: 15 additions & 0 deletions src/main/java/konkuk/travelmate/repository/MatchingRepository.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
package konkuk.travelmate.repository;

import konkuk.travelmate.domain.Matching;
import konkuk.travelmate.form.response.VolunteerMatchingResponse;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

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

import static javax.management.Query.in;

public interface MatchingRepository extends JpaRepository<Matching, Long> {
@Query("SELECT new konkuk.travelmate.form.response.VolunteerMatchingResponse(d.name, r.startTime, r.endTime, r.type, r.state, d.phoneNum, d.email) " +
"FROM Request r JOIN r.disabled d " +
"WHERE d.role = 0 AND r.requestId IN ( " +
"SELECT m.request.requestId " +
"FROM Matching m JOIN m.volunteer v " +
"WHERE v.email = :email)")
List<VolunteerMatchingResponse> findVolunteerMatchingResultsByEmail(@Param("email") String email);
}
7 changes: 7 additions & 0 deletions src/main/java/konkuk/travelmate/service/MatchingService.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
package konkuk.travelmate.service;

import konkuk.travelmate.form.response.VolunteerMatchingResponse;
import konkuk.travelmate.repository.MatchingRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.List;

@Slf4j
@Service
@RequiredArgsConstructor
public class MatchingService {

private final MatchingRepository matchingRepository;

public List<VolunteerMatchingResponse> getMatchResults(String email) {
log.info("[MatchingService.getMatchResults]");
return matchingRepository.findVolunteerMatchingResultsByEmail(email);
}
}
21 changes: 10 additions & 11 deletions src/main/java/konkuk/travelmate/service/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import lombok.RequiredArgsConstructor;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Map;
import java.util.Objects;
Expand All @@ -19,28 +18,28 @@
@RequiredArgsConstructor
public class UserService {

public final UserRepository userRepository;
public final UserRepository UserRepository;
public final HealthRepository healthRepository;

public Optional<User> findByEmail(String email) {
return userRepository.findByEmail(email);
return UserRepository.findByEmail(email);
}


public User joinDisable(OAuth2User oAuth2User, Map<String, String> signupMap, Role role) {
public User joinDisable(OAuth2User OAuth2User, Map<String, String> signupMap, Role role) {
Health health = new Health(Integer.parseInt(signupMap.get("see")), Integer.parseInt(signupMap.get("walk")),
Integer.parseInt(signupMap.get("talk")), Integer.parseInt(signupMap.get("listen")), Integer.parseInt(signupMap.get("iq")),
Integer.parseInt(signupMap.get("bipolar_disorder")), Integer.parseInt(signupMap.get("depression")));
User user = new User(Objects.requireNonNull(oAuth2User.getAttribute("name")), Objects.requireNonNull(oAuth2User.getAttribute("email")), UUID.randomUUID().toString(), signupMap.get("phoneNum"), role, health);
User User = new User(Objects.requireNonNull(OAuth2User.getAttribute("name")), Objects.requireNonNull(OAuth2User.getAttribute("email")), UUID.randomUUID().toString(), signupMap.get("phoneNum"), role, health);
healthRepository.save(health);
userRepository.save(user);
return user;
UserRepository.save(User);
return User;
}

public User joinVolunteer(OAuth2User oAuth2User, Map<String, String> signupMap, Role role) {
User user = new User(Objects.requireNonNull(oAuth2User.getAttribute("name")), Objects.requireNonNull(oAuth2User.getAttribute("email")), UUID.randomUUID().toString(), signupMap.get("phoneNum"), role, null);
userRepository.save(user);
return user;
public User joinVolunteer(OAuth2User OAuth2User, Map<String, String> signupMap, Role role) {
User User = new User(Objects.requireNonNull(OAuth2User.getAttribute("name")), Objects.requireNonNull(OAuth2User.getAttribute("email")), UUID.randomUUID().toString(), signupMap.get("phoneNum"), role, null);
UserRepository.save(User);
return User;
}

}
Loading

0 comments on commit 9d28791

Please sign in to comment.