Skip to content

Commit

Permalink
Merge pull request #23 from YAPP-Github/fix/PC-361-profile-update
Browse files Browse the repository at this point in the history
[PC-361] 프로필 업데이트 로직 분리
  • Loading branch information
Lujaec authored Jan 18, 2025
2 parents 6a613df + 5c76732 commit 13f8b20
Show file tree
Hide file tree
Showing 29 changed files with 702 additions and 447 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.yapp.domain.auth.application.oauth.service;

import java.util.Optional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.yapp.domain.auth.application.jwt.JwtUtil;
import org.yapp.domain.auth.application.oauth.OauthProvider;
Expand All @@ -10,65 +12,77 @@
import org.yapp.domain.user.User;
import org.yapp.domain.user.dao.UserRepository;

import java.util.Optional;

import lombok.RequiredArgsConstructor;

@Service
@RequiredArgsConstructor
public class OauthService {
private final OauthProviderResolver oauthProviderResolver;
private final JwtUtil jwtUtil;
private final UserRepository userRepository;

public OauthLoginResponse login(OauthLoginRequest request) {
OauthProvider oauthProvider = oauthProviderResolver.find(request.getProviderName());
String oauthId = request.getProviderName() + oauthProvider.getOAuthProviderUserId(request.getToken());

//이미 가입된 유저인지 확인하고 가입되어 있지 않으면 회원가입 처리
Optional<User> userOptional = userRepository.findByOauthId(oauthId);
if (userOptional.isEmpty()) {
User newUser = User.builder().oauthId(oauthId).role(RoleStatus.NONE.getStatus()).build();
User savedUser = userRepository.save(newUser);
Long userId = savedUser.getId();
String accessToken = jwtUtil.createJwt("access_token", userId, oauthId, "NONE", 600000L);
String refreshToken = jwtUtil.createJwt("refresh_token", userId, oauthId, "NONE", 864000000L);
return new OauthLoginResponse(RoleStatus.NONE.getStatus(), accessToken, refreshToken);
}

//이미 가입한 유저인 경우 로그인 처리
Long userId = userOptional.get().getId();
final User user = userOptional.get();

String accessToken = jwtUtil.createJwt("access_token", userId, oauthId, user.getRole(), 600000L);
String refreshToken = jwtUtil.createJwt("refresh_token", userId, oauthId, user.getRole(), 864000000L);

//아직 SMS 인증이 완료되지 않음
if (user.getRole().equals("NONE")) {
return new OauthLoginResponse(RoleStatus.NONE.getStatus(), accessToken, refreshToken);
}

// SMS 인증은 완료되었으나, 프로필 등록을 안함
if (user.getRole().equals("REGISTER")) {
return new OauthLoginResponse(RoleStatus.REGISTER.getStatus(), accessToken, refreshToken);
private final OauthProviderResolver oauthProviderResolver;
private final JwtUtil jwtUtil;
private final UserRepository userRepository;

public OauthLoginResponse login(OauthLoginRequest request) {
OauthProvider oauthProvider = oauthProviderResolver.find(request.getProviderName());
String oauthId =
request.getProviderName() + oauthProvider.getOAuthProviderUserId(request.getToken());

//이미 가입된 유저인지 확인하고 가입되어 있지 않으면 회원가입 처리
Optional<User> userOptional = userRepository.findByOauthId(oauthId);
if (userOptional.isEmpty()) {
User newUser = User.builder().oauthId(oauthId).role(RoleStatus.NONE.getStatus())
.build();
User savedUser = userRepository.save(newUser);
Long userId = savedUser.getId();
String accessToken = jwtUtil.createJwt("access_token", userId, oauthId, "NONE",
600000L);
String refreshToken = jwtUtil.createJwt("refresh_token", userId, oauthId, "NONE",
864000000L);
return new OauthLoginResponse(RoleStatus.NONE.getStatus(), accessToken, refreshToken);
}

//이미 가입한 유저인 경우 로그인 처리
Long userId = userOptional.get().getId();
final User user = userOptional.get();

String accessToken = jwtUtil.createJwt("access_token", userId, oauthId, user.getRole(),
600000L);
String refreshToken = jwtUtil.createJwt("refresh_token", userId, oauthId, user.getRole(),
864000000L);

//아직 SMS 인증이 완료되지 않음
if (user.getRole().equals("NONE")) {
return new OauthLoginResponse(RoleStatus.NONE.getStatus(), accessToken, refreshToken);
}

// SMS 인증은 완료되었으나, 프로필 등록을 안함
if (user.getRole().equals("REGISTER")) {
return new OauthLoginResponse(RoleStatus.REGISTER.getStatus(), accessToken,
refreshToken);
}

//프로필 등록은 했지만, 심사중
if (user.getRole().equals("PENDING")) {
return new OauthLoginResponse(RoleStatus.PENDING.getStatus(), accessToken,
refreshToken);
}

// 가입과 프로필 등록까지 완료된 유저
return new OauthLoginResponse(user.getRole(), accessToken, refreshToken);
}

// 가입과 프로필 등록까지 완료된 유저
return new OauthLoginResponse(user.getRole(), accessToken, refreshToken);
}


public OauthLoginResponse tmpTokenGet(Long userId) {
//이미 가입된 유저인지 확인하고 가입되어 있지 않으면 회원가입 처리
Optional<User> userOptional = userRepository.findById(userId);
public OauthLoginResponse tmpTokenGet(Long userId) {
//이미 가입된 유저인지 확인하고 가입되어 있지 않으면 회원가입 처리
Optional<User> userOptional = userRepository.findById(userId);

System.out.println("userOptional = " + userOptional);
System.out.println("userOptional = " + userOptional);

User user = userOptional.get();
User user = userOptional.get();

String accessToken = jwtUtil.createJwt("access_token", userId, user.getOauthId(), user.getRole(), 600000L);
String refreshToken = jwtUtil.createJwt("refresh_token", userId, user.getOauthId(), user.getRole(), 864000000L);
String accessToken = jwtUtil.createJwt("access_token", userId, user.getOauthId(),
user.getRole(), 600000L);
String refreshToken = jwtUtil.createJwt("refresh_token", userId, user.getOauthId(),
user.getRole(), 864000000L);

return new OauthLoginResponse(RoleStatus.NONE.getStatus(), accessToken, refreshToken);
}
return new OauthLoginResponse(RoleStatus.NONE.getStatus(), accessToken, refreshToken);
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package org.yapp.domain.auth.presentation.dto.enums;

import com.fasterxml.jackson.annotation.JsonValue;

import lombok.AllArgsConstructor;

@AllArgsConstructor
public enum RoleStatus {
NONE("NONE"),
REGISTER("REGISTER"),
USER("USER");
private String status;
NONE("NONE"),
REGISTER("REGISTER"),
PENDING("PENDING"),
USER("USER");
private String status;

@JsonValue
public String getStatus() {
return status;
}
@JsonValue
public String getStatus() {
return status;
}
}
Original file line number Diff line number Diff line change
@@ -1,58 +1,59 @@
package org.yapp.domain.match.application.algorithm;

import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.yapp.domain.match.application.blocker.Blocker;
import org.yapp.domain.profile.Profile;
import org.yapp.domain.profile.ProfileValuePick;
import org.yapp.domain.profile.application.ProfileValuePickService;

import java.util.List;

import lombok.RequiredArgsConstructor;

@Component
@RequiredArgsConstructor
public class PreferenceBasedMatchingAlgorithm {
private final List<Blocker> blockers;
private final ProfileValuePickService profileValuePickService;

/**
* 가치관 기반으로 매칭을 수행
*
* @param profiles 매칭 수행할 프로필 리스트
* @return 매칭이 이루어지지 않은 프로필 리스트
*/
public List<Profile> doMatch(List<Profile> profiles) {
//TODO : 효율적인 일반 그래프 매칭 알고리즘 구현
//TODO : 요구조건 - 차단한 사용자 x, 이전에 매칭된 사용자 x, 지인 x

return List.of();
}

private int calculateWeight(Long fromProfileId, Long toProfileId) {
List<ProfileValuePick> profileValuePicksOfFrom =
profileValuePickService.getAllProfileValuesByProfileId(fromProfileId);
List<ProfileValuePick> profileValuePicksOfTo = profileValuePickService.getAllProfileValuesByProfileId(toProfileId);

int valueListSize = profileValuePicksOfFrom.size();
int sumOfWeight = 0;
for (int i = 0; i < valueListSize; i++) {
ProfileValuePick profileValuePickOfFrom = profileValuePicksOfFrom.get(i);
ProfileValuePick profileValuePickOfTo = profileValuePicksOfTo.get(i);
if (profileValuePickOfFrom.getSelectedAnswer().equals(profileValuePickOfTo.getSelectedAnswer())) {
sumOfWeight++;
}

private final List<Blocker> blockers;
private final ProfileValuePickService profileValuePickService;

/**
* 가치관 기반으로 매칭을 수행
*
* @param profiles 매칭 수행할 프로필 리스트
* @return 매칭이 이루어지지 않은 프로필 리스트
*/
public List<Profile> doMatch(List<Profile> profiles) {
//TODO : 효율적인 일반 그래프 매칭 알고리즘 구현
//TODO : 요구조건 - 차단한 사용자 x, 이전에 매칭된 사용자 x, 지인 x

return List.of();
}
return sumOfWeight;
}

private boolean checkBlock(Long user1, Long user2) {
for (Blocker blocker : blockers) {
boolean blocked = blocker.blocked(user1, user2);
if (blocked) {
return true;
}

private int calculateWeight(Long fromProfileId, Long toProfileId) {
List<ProfileValuePick> profileValuePicksOfFrom =
profileValuePickService.getAllProfileValuePicksByProfileId(fromProfileId);
List<ProfileValuePick> profileValuePicksOfTo = profileValuePickService.getAllProfileValuePicksByProfileId(
toProfileId);

int valueListSize = profileValuePicksOfFrom.size();
int sumOfWeight = 0;
for (int i = 0; i < valueListSize; i++) {
ProfileValuePick profileValuePickOfFrom = profileValuePicksOfFrom.get(i);
ProfileValuePick profileValuePickOfTo = profileValuePicksOfTo.get(i);
if (profileValuePickOfFrom.getSelectedAnswer()
.equals(profileValuePickOfTo.getSelectedAnswer())) {
sumOfWeight++;
}
}
return sumOfWeight;
}

private boolean checkBlock(Long user1, Long user2) {
for (Blocker blocker : blockers) {
boolean blocked = blocker.blocked(user1, user2);
if (blocked) {
return true;
}
}
return false;
}
return false;
}
}
Loading

0 comments on commit 13f8b20

Please sign in to comment.