Skip to content

Commit

Permalink
Merge pull request #407 from Namo-log/refactor/406
Browse files Browse the repository at this point in the history
[Refactor/406] 개인/생일 일정 생성 시 participant 정보도 업데이트 되도록 수정
  • Loading branch information
joowojr authored Nov 1, 2024
2 parents 23d7d57 + 7620fec commit cec4480
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ private ScheduleConverter() {
throw new IllegalStateException("Util Class");
}

public static Schedule toBirthdaySchedule(String title, Period period){
public static Schedule toBirthdaySchedule(String title, String nickname, Period period){
return Schedule.builder()
.title(title)
.period(period)
.location(null)
.scheduleType(ScheduleType.BIRTHDAY.getValue())
.imageUrl(null)
.participantCount(null)
.participantNicknames(null)
.participantCount(1)
.participantNicknames(nickname)
.build();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package com.namo.spring.application.external.api.schedule.service;

import com.namo.spring.application.external.api.schedule.converter.LocationConverter;
import com.namo.spring.application.external.api.schedule.dto.MeetingScheduleRequest;
import com.namo.spring.application.external.api.schedule.dto.PersonalScheduleRequest;
import com.namo.spring.core.infra.common.properties.ImageUrlProperties;
import com.namo.spring.db.mysql.domains.schedule.entity.Schedule;
import com.namo.spring.db.mysql.domains.schedule.service.ScheduleService;
import com.namo.spring.db.mysql.domains.schedule.type.Location;
import com.namo.spring.db.mysql.domains.schedule.type.Period;
import com.namo.spring.db.mysql.domains.schedule.type.ScheduleType;
import com.namo.spring.db.mysql.domains.user.entity.Member;
Expand All @@ -32,15 +30,15 @@ public class ScheduleMaker {
private final ScheduleService scheduleService;
private final ImageUrlProperties imageUrlProperties;

public Schedule createPersonalSchedule(PersonalScheduleRequest.PostPersonalScheduleDto dto, Period period) {
Schedule schedule = toSchedule(dto.getTitle(), period, dto.getLocation(), PERSONAL_SCHEDULE_TYPE, null, null,
null);
public Schedule createPersonalSchedule(PersonalScheduleRequest.PostPersonalScheduleDto dto, Period period, String nickname) {
Schedule schedule = toSchedule(dto.getTitle(), period, dto.getLocation(), PERSONAL_SCHEDULE_TYPE, null, 1,
nickname);
return scheduleService.createSchedule(schedule);
}

public Schedule createMeetingSchedule(MeetingScheduleRequest.PostMeetingScheduleDto dto, Period period) {
public Schedule createMeetingSchedule(MeetingScheduleRequest.PostMeetingScheduleDto dto, Period period, String nickname) {
String imageUrl = dto.getImageUrl() != null ? dto.getImageUrl() : imageUrlProperties.getMeeting();
Schedule schedule = toSchedule(dto.getTitle(), period, dto.getLocation(), MEETING_SCHEDULE_TYPE, imageUrl, 0, "");
Schedule schedule = toSchedule(dto.getTitle(), period, dto.getLocation(), MEETING_SCHEDULE_TYPE, imageUrl, 1, nickname);
return scheduleService.createSchedule(schedule);
}

Expand All @@ -54,8 +52,8 @@ public void createBirthdaySchedules(Member member){
String title = member.getNickname() + "님의 생일";
Period currentYearPeriod = toPeriodOfBirthdaySchedule(member, currentYear);
Period nextYearPeriod = toPeriodOfBirthdaySchedule(member, currentYear+1);
Schedule currentYearBirthday = toBirthdaySchedule(title, currentYearPeriod);
Schedule nextYearBirthday = toBirthdaySchedule(title, nextYearPeriod);
Schedule currentYearBirthday = toBirthdaySchedule(title, member.getNickname(), currentYearPeriod);
Schedule nextYearBirthday = toBirthdaySchedule(title, member.getNickname(), nextYearPeriod);
scheduleService.createSchedules(List.of(currentYearBirthday, nextYearBirthday));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public Schedule getMeetingSchedule(Long scheduleId) {

public Schedule createPersonalSchedule(PersonalScheduleRequest.PostPersonalScheduleDto request, Member member) {
Period period = getValidatedPeriod(request.getPeriod().getStartDate(), request.getPeriod().getEndDate());
Schedule schedule = scheduleMaker.createPersonalSchedule(request, period);
Schedule schedule = scheduleMaker.createPersonalSchedule(request, period, member.getNickname());
participantManageService.createPersonalScheduleParticipant(member, schedule, request.getCategoryId());
return schedule;
}
Expand All @@ -83,7 +83,7 @@ public Schedule createMeetingSchedule(MeetingScheduleRequest.PostMeetingSchedule
List<Member> participants = participantManageService.getFriendshipValidatedParticipants(owner.getId(),
request.getParticipants());
Period period = getValidatedPeriod(request.getPeriod().getStartDate(), request.getPeriod().getEndDate());
Schedule schedule = scheduleMaker.createMeetingSchedule(request, period);
Schedule schedule = scheduleMaker.createMeetingSchedule(request, period, owner.getNickname());
participantManageService.createMeetingScheduleParticipants(owner, schedule, participants);
return schedule;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.util.List;
import java.util.Map;

import com.namo.spring.application.external.api.schedule.service.ScheduleMaker;
import org.apache.commons.lang3.tuple.Pair;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
Expand Down Expand Up @@ -35,6 +36,7 @@ public class AuthFacade {
private final MemberManageService memberManageService;
private final TagGenerator tagGenerator;
private final PaletteService paletteService;
private final ScheduleMaker scheduleMaker;

@Transactional
public MemberResponse.SignUpDto socialSignup(MemberRequest.SocialSignUpDto signUpDto, SocialType socialType) {
Expand Down Expand Up @@ -114,7 +116,8 @@ public Member completeSignup(MemberRequest.CompleteSignUpDto dto, Long memberId)
Palette palette = paletteService.getPalette(dto.getColorId());
member.signUpComplete(dto.getName(), dto.getNickname(), dto.getBirthday(), dto.getBio(), tag, palette,
dto.getProfileImage());
memberManageService.saveMember(member);
Member savedMember = memberManageService.saveMember(member);
scheduleMaker.createBirthdaySchedules(savedMember);
return member;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,10 @@ public class Schedule extends BaseTimeEntity {
@JdbcTypeCode(SqlTypes.VARCHAR)
private String imageUrl;

@Column(nullable = false)
private Integer participantCount;

@Column(nullable = false)
private String participantNicknames;

@OneToMany(mappedBy = "schedule", cascade = CascadeType.ALL, orphanRemoval = true)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-- V1.1.6__Modify_columns_from_schedule_table

-- participant_count 업데이트
UPDATE schedule
SET
participant_count = 1
WHERE
schedule_type = 0
AND participant_count IS NULL;

-- participant_nicknames 업데이트, 개인/생일 일정에 대해서만
UPDATE schedule s
SET s.participant_nicknames = (
SELECT m.nickname
FROM participant p
JOIN member m ON p.member_id = m.id
WHERE p.schedule_id = s.id
)
WHERE s.participant_nicknames IS NULL
AND s.schedule_type IN (0, 2);

-- NOT NULL 변경
ALTER TABLE schedule
MODIFY participant_nicknames VARCHAR(255) NOT NULL;

-- NOT NULL 변경
ALTER TABLE schedule
MODIFY participant_count INT NOT NULL;

0 comments on commit cec4480

Please sign in to comment.