Skip to content

Commit

Permalink
Merge pull request #356 from Open-Eye-Im-Developer/develop
Browse files Browse the repository at this point in the history
[MERGE] develop을 main에 반영
  • Loading branch information
JIN-076 committed Mar 29, 2024
2 parents 32022ac + e6fda0f commit 5f55f93
Show file tree
Hide file tree
Showing 12 changed files with 83 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package io.oeid.mogakgo.common.aop;

import static io.oeid.mogakgo.exception.code.ErrorCode404.PROJECT_JOIN_REQUEST_NOT_FOUND;
import static io.oeid.mogakgo.exception.code.ErrorCode404.PROJECT_NOT_FOUND;

import io.oeid.mogakgo.domain.achievement.application.AchievementEventService;
import io.oeid.mogakgo.domain.achievement.application.AchievementProgressService;
import io.oeid.mogakgo.domain.achievement.domain.entity.enums.ActivityType;
import io.oeid.mogakgo.domain.matching.application.MatchingService;
import io.oeid.mogakgo.domain.profile.presentation.dto.req.UserProfileLikeCreateAPIReq;
import io.oeid.mogakgo.domain.project.domain.entity.Project;
import io.oeid.mogakgo.domain.project.exception.ProjectException;
import io.oeid.mogakgo.domain.project.infrastructure.ProjectJpaRepository;
import io.oeid.mogakgo.domain.project.presentation.dto.req.ProjectCreateReq;
import io.oeid.mogakgo.domain.project_join_req.application.dto.req.ProjectJoinCreateReq;
Expand Down Expand Up @@ -62,9 +65,9 @@ public void createLikeExecution() {}
public void publishCompletedEvent(JoinPoint joinPoint, Long userId, ReviewCreateReq request) {

// -- '리뷰' 잔디력이 업데이트되는 사용자에 대한 업적 이벤트 발행
User user = userCommonService.getUserById(userId);
achievementEventService.publishCompletedEventWithVerify(userId,
ActivityType.FRESH_DEVELOPER, user.getJandiRate());
User receiver = userCommonService.getUserById(request.getReceiverId());
achievementEventService.publishCompletedEventWithVerify(receiver.getId(),
ActivityType.FRESH_DEVELOPER, receiver.getJandiRate());
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
Expand All @@ -88,9 +91,10 @@ public void publishSequenceEvent(JoinPoint joinPoint, Long userId, ProjectCreate
public void publishAccumulateEvent(JoinPoint joinPoint, Long userId, ProjectJoinCreateReq request) {

// -- '생성자' 매칭 요청을 수신한 사용자에 대한 업적 이벤트 발행
Project project = getProject(request.getProjectId());
achievementEventService.publishAccumulateEventWithVerify(
userId, ActivityType.CATCH_ME_IF_YOU_CAN,
getAccumulatedProgressCount(userId, ActivityType.CATCH_ME_IF_YOU_CAN)
getAccumulatedProgressCount(project.getCreator().getId(), ActivityType.CATCH_ME_IF_YOU_CAN)
);
}

Expand Down Expand Up @@ -146,6 +150,11 @@ public void publishEventAboutLike(JoinPoint joinPoint, Long userId, UserProfileL
);
}

private Project getProject(Long projectId) {
return projectRepository.findById(projectId)
.orElseThrow(() -> new ProjectException(PROJECT_NOT_FOUND));
}

private Integer checkCreatedProjectCountByRegion(Long userId) {
Integer progressCount = projectRepository.getRegionCountByUserId(userId);
return progressCount.equals(MAX_SERVICE_AREA) ? 1 : 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ private List<UserAchievementInfoRes> getSequenceAchievementInfoAboutUser(Long us
.title(achievement.getTitle())
.imgUrl(achievement.getImgUrl())
.description(achievement.getDescription())
.progressLevel(achievement.getProgressLevel())
.requirementType(achievement.getRequirementType())
.requirementValue(achievement.getRequirementValue())
.progressCount(map.get(achievement.getActivityType()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,22 @@ public class UserAchievementInfoRes {
private final String title;
private final String imgUrl;
private final String description;
private final Integer progressLevel;
private final RequirementType requirementType;
private final Integer requirementValue;
private final Integer progressCount;
private final Boolean completed;

@Builder
private UserAchievementInfoRes(Long userId, Long achievementId, String title, String imgUrl,
String description, RequirementType requirementType, Integer requirementValue,
Integer progressCount, Boolean completed) {
String description, Integer progressLevel, RequirementType requirementType,
Integer requirementValue, Integer progressCount, Boolean completed) {
this.userId = userId;
this.achievementId = achievementId;
this.title = title;
this.imgUrl = imgUrl;
this.description = description;
this.progressLevel = progressLevel;
this.requirementType = requirementType;
this.requirementValue = requirementValue;
this.progressCount = progressCount;
Expand All @@ -40,6 +42,7 @@ public static UserAchievementInfoRes of(UserAchievement userAchievement, Integer
userAchievement.getAchievement().getTitle(),
userAchievement.getAchievement().getImgUrl(),
userAchievement.getAchievement().getDescription(),
userAchievement.getAchievement().getProgressLevel(),
userAchievement.getAchievement().getRequirementType(),
userAchievement.getAchievement().getRequirementValue(),
progressCount,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public List<UserAchievementInfoRes> getAchievementInfoAboutUser(Long userId) {
achievement.title,
achievement.imgUrl,
achievement.description,
achievement.progressLevel,
achievement.requirementType,
achievement.requirementValue,
Expressions.numberPath(Long.class, String.valueOf(0)),
Expand All @@ -66,6 +67,7 @@ public List<UserAchievementInfoRes> getAchievementInfoAboutUser(Long userId) {
userAchievement.achievement.title,
userAchievement.achievement.imgUrl,
userAchievement.achievement.description,
userAchievement.achievement.progressLevel,
userAchievement.achievement.requirementType,
userAchievement.achievement.requirementValue,
Expressions.numberPath(Long.class, String.valueOf(userActivity.createdAt.count())),
Expand Down Expand Up @@ -94,6 +96,7 @@ public List<UserAchievementInfoRes> getAchievementInfoAboutUser(Long userId) {
userAchievement.achievement.title,
userAchievement.achievement.imgUrl,
userAchievement.achievement.description,
userAchievement.achievement.progressLevel,
userAchievement.achievement.requirementType,
userAchievement.achievement.requirementValue,
userAchievement.completed
Expand All @@ -116,10 +119,11 @@ public List<UserAchievementInfoRes> getAchievementInfoAboutUser(Long userId) {
.title(tuple.get(2, String.class))
.imgUrl(tuple.get(3, String.class))
.description(tuple.get(4, String.class))
.requirementType(tuple.get(5, RequirementType.class))
.requirementValue(tuple.get(6, Integer.class))
.progressCount(Integer.valueOf(String.valueOf(tuple.get(7, Long.class))))
.completed(tuple.get(8, Boolean.class))
.progressLevel(tuple.get(5, Integer.class))
.requirementType(tuple.get(6, RequirementType.class))
.requirementValue(tuple.get(7, Integer.class))
.progressCount(Integer.valueOf(String.valueOf(tuple.get(8, Long.class))))
.completed(tuple.get(9, Boolean.class))
.build()
).toList();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ public class AchievementInfoAPIRes {
@Schema(description = "조회할 업적 상세 설명")
private final String description;

@Schema(description = "조회할 업적 단계")
private final Integer progressLevel;

@Schema(description = "조회할 업적 타입")
private final RequirementType requirementType;

Expand All @@ -36,6 +39,7 @@ public static AchievementInfoAPIRes from(Achievement achievement) {
achievement.getTitle(),
achievement.getImgUrl(),
achievement.getDescription(),
achievement.getProgressLevel(),
achievement.getRequirementType(),
achievement.getRequirementValue()
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ public class UserAchievementDetailAPIRes {
@Schema(description = "조회할 업적 상세 설명")
private final String description;

@Schema(description = "조회할 업적 단계")
private final Integer progressLevel;

@Schema(description = "조회할 업적 타입")
private final RequirementType requirementType;

Expand All @@ -46,6 +49,7 @@ public static UserAchievementDetailAPIRes from(UserAchievementInfoRes response)
response.getTitle(),
response.getImgUrl(),
response.getDescription(),
response.getProgressLevel(),
response.getRequirementType(),
response.getRequirementValue(),
response.getProgressCount(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,16 @@ public CursorPaginationResult<UserProfileInfoAPIRes> findByConditionWithPaginati

public List<ProfileCard> findByConditionWithPaginationPublic(@NonNull Region region,
Long cursorId, @NonNull Integer pageSize) {
return jpaQueryFactory.selectFrom(profileCard).innerJoin(profileCard.user, user)
return jpaQueryFactory.selectFrom(profileCard)
.innerJoin(profileCard.user, user)
.on(profileCard.user.id.eq(user.id))
.where(cursorIdCondition(cursorId), regionEq(region), deletedProfileCardEq())
.orderBy(profileCard.id.desc()).limit(pageSize + 1L).fetch();
.where(
cursorIdCondition(cursorId),
regionEq(region),
deletedProfileCardEq()
)
.orderBy(user.id.desc())
.limit(pageSize + 1L).fetch();
}

private Boolean validateProfileCardLikeBySenderId(Long receiverId, Long userId) {
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/io/oeid/mogakgo/domain/user/domain/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,9 @@ public void deleteAllDevelopLanguageTags() {
}

public void signUpComplete() {
if (Boolean.TRUE.equals(signupYn)) {
throw new UserException(ErrorCode400.USER_ALREADY_SIGNUP);
}
this.signupYn = true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public enum ErrorCode400 implements ErrorCode {
USER_AVAILABLE_LIKE_COUNT_IS_ZERO("E020107", "취소할 수 있는 찔러보기 요청이 존재하지 않습니다."),
USER_ID_NOT_NULL("E020001", "유저 아이디는 필수값입니다."),
USER_AVATAR_URL_NOT_NULL("E020109", "유저 프로필 이미지는 필수값입니다."),
USER_ALREADY_SIGNUP("E020110", "이미 회원가입한 유저입니다."),

PROFILE_CARD_LIKE_ALREADY_EXIST("E040102", "이미 찔러보기 요청을 전송한 프로필 카드에 찔러보기 요청을 전송할 수 없습니다."),
INVALID_PROFILE_CARD_LIKE_RECEIVER_INFO("E040103", "찔러보기 요청의 사용자가 존재하지 않습니다."),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public void executeSqlFile() {
String sql = loadSqlFromFile(statement);
jdbcTemplate.execute(sql);
}
closeChatRoom();
sendReviewNotification();
sendMatchFailNotification();
}
Expand Down Expand Up @@ -82,4 +83,10 @@ private void sendMatchFailNotification() {
);
}

private void closeChatRoom() {
jdbcTemplate.execute(
"UPDATE chat_room_tb SET status = 'CLOSE' WHERE project_id IN (SELECT pt.id FROM project_tb pt WHERE pt.project_status = 'FINISHED')"
);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,22 @@ void init() {
// Assert
}

@Test
void 유저_회원_실패_이미_회원입이_완료된_계정() {
// Arrange
user.signUpComplete();
var expectedUserId = 1L;
var expectedUsername = "tidavid1";
var expectedWantedJobs = List.of(WantedJob.BACKEND, WantedJob.DEVOPS);
var userSignUpRequest = new UserSignUpRequest(expectedUserId, expectedUsername,
expectedWantedJobs);
when(userCommonService.getUserById(expectedUserId)).thenReturn(user);
// Act & Assert
assertThatThrownBy(() -> userService.userSignUp(userSignUpRequest))
.isInstanceOf(UserException.class)
.hasFieldOrPropertyWithValue("errorCode", ErrorCode400.USER_ALREADY_SIGNUP);
}

@Test
void 유저_삭제_성공() {
// Arrange
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,18 @@ void init() {
.hasFieldOrPropertyWithValue("signupYn", true);
}

@Test
void 유저_회원_가_실패_이미_유저가_회원입을_완료한_경우() {
// Arrange
user.signUpComplete();
// Act
assertThatThrownBy(() -> user.signUpComplete())
.isInstanceOf(UserException.class)
.hasFieldOrPropertyWithValue(
"errorCode", ErrorCode400.USER_ALREADY_SIGNUP
);
}

@Test
void 유저_정보_업데이트_성공() {
// Arrange
Expand Down

0 comments on commit 5f55f93

Please sign in to comment.