Skip to content

Commit 07412f6

Browse files
authored
Merge pull request #196 from Central-MakeUs/release
Release
2 parents 0b7cc45 + 62d8bfb commit 07412f6

File tree

3 files changed

+87
-28
lines changed

3 files changed

+87
-28
lines changed

src/main/java/com/example/ForDay/domain/record/dummy/DataInitializer.java

Lines changed: 68 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,63 +4,106 @@
44
import com.example.ForDay.domain.activity.repository.ActivityRepository;
55
import com.example.ForDay.domain.hobby.entity.Hobby;
66
import com.example.ForDay.domain.hobby.repository.HobbyRepository;
7+
import com.example.ForDay.domain.hobby.type.HobbyStatus;
78
import com.example.ForDay.domain.record.entity.ActivityRecord;
89
import com.example.ForDay.domain.record.repository.ActivityRecordRepository;
910
import com.example.ForDay.domain.record.type.RecordVisibility;
1011
import com.example.ForDay.domain.user.entity.User;
1112
import com.example.ForDay.domain.user.repository.UserRepository;
13+
import com.example.ForDay.domain.user.type.Role;
14+
import com.example.ForDay.domain.user.type.SocialType;
1215
import lombok.RequiredArgsConstructor;
16+
import lombok.extern.slf4j.Slf4j;
17+
import org.springframework.boot.context.event.ApplicationReadyEvent;
1318
import org.springframework.context.annotation.Profile;
19+
import org.springframework.context.event.EventListener;
1420
import org.springframework.stereotype.Component;
21+
import org.springframework.transaction.annotation.Transactional;
1522

1623
import java.util.List;
24+
import java.util.Random;
25+
import java.util.UUID;
1726

18-
//@Component
27+
@Slf4j
28+
@Component
1929
@Profile("local")
2030
@RequiredArgsConstructor
2131
public class DataInitializer {
2232

23-
private final ActivityRecordRepository activityRecordRepository;
2433
private final UserRepository userRepository;
2534
private final HobbyRepository hobbyRepository;
2635
private final ActivityRepository activityRepository;
36+
private final ActivityRecordRepository activityRecordRepository;
2737

28-
private void insertDummyRecords() {
29-
User user = userRepository.findById("7746f373-4dea-41af-8512-b3a3ad3f2608")
30-
.orElseThrow(() -> new IllegalStateException("User not found"));
38+
@EventListener(ApplicationReadyEvent.class)
39+
@Transactional
40+
public void initData() {
41+
if (userRepository.count() >= 12) {
42+
log.info("이미 더미 데이터가 존재하여 생성을 건너뜁니다.");
43+
return;
44+
}
3145

32-
// hobby 1 → activity 1,2,3
33-
createRecords(user, 1L, List.of(1L, 2L, 3L));
46+
log.info("더미 데이터 생성을 시작합니다...");
3447

35-
// hobby 2 → activity 4~9
36-
createRecords(user, 2L, List.of(4L, 5L, 6L, 7L, 8L, 9L));
37-
}
48+
// 1. 12명의 유저 생성 (3명씩 hobbyInfoId 1, 2, 3, 4 할당을 위해)
49+
for (int i = 1; i <= 12; i++) {
50+
User user = User.builder()
51+
.email("user" + i + "@example.com")
52+
.nickname("Hobbyist_" + i)
53+
.role(Role.USER)
54+
.socialType(SocialType.KAKAO)
55+
.socialId("kakao_social_id_" + UUID.randomUUID().toString().substring(0, 8))
56+
.onboardingCompleted(true)
57+
.build();
58+
userRepository.save(user);
3859

39-
private void createRecords(
40-
User user,
41-
Long hobbyId,
42-
List<Long> activityIds
43-
) {
44-
Hobby hobby = hobbyRepository.findById(hobbyId)
45-
.orElseThrow(() -> new IllegalStateException("Hobby not found: " + hobbyId));
60+
// 2. 유저당 1개의 취미 생성 (hobbyInfoId: 1~4 반복 할당)
61+
long hobbyInfoId = ((i - 1) / 3) + 1; // 1~3번: 1, 4~6번: 2 ...
62+
Hobby hobby = Hobby.builder()
63+
.user(user)
64+
.hobbyInfoId(hobbyInfoId)
65+
.hobbyName("Hobby Name " + hobbyInfoId)
66+
.hobbyPurpose("Purpose of hobby " + i)
67+
.hobbyTimeMinutes(30)
68+
.executionCount(0)
69+
.currentStickerNum(0)
70+
.status(HobbyStatus.IN_PROGRESS)
71+
.build();
72+
hobbyRepository.save(hobby);
4673

47-
for (Long activityId : activityIds) {
48-
Activity activity = activityRepository.findById(activityId)
49-
.orElseThrow(() -> new IllegalStateException("Activity not found: " + activityId));
74+
// 3. 취미당 1개의 활동 생성
75+
Activity activity = Activity.builder()
76+
.user(user)
77+
.hobby(hobby)
78+
.content("Main Activity for " + hobby.getHobbyName())
79+
.aiRecommended(false)
80+
.collectedStickerNum(0)
81+
.build();
82+
activityRepository.save(activity);
83+
84+
// 4. 활동 1개당 3개의 기록 생성
85+
List<String> stickerImages = List.of("smile.jpg", "sad.jpg", "laugh.jpg", "angry.jpg");
86+
Random random = new Random();
87+
88+
for (int j = 1; j <= 10; j++) {
89+
// 2. 리스트에서 랜덤하게 하나 추출
90+
String randomSticker = stickerImages.get(random.nextInt(stickerImages.size()));
5091

51-
for (int i = 1; i <= 3; i++) {
5292
ActivityRecord record = ActivityRecord.builder()
5393
.user(user)
5494
.hobby(hobby)
5595
.activity(activity)
56-
.sticker("STICKER_" + i)
57-
.memo("activity " + activityId + " record " + i)
96+
.sticker(randomSticker) // 랜덤 이미지 적용
97+
.memo("Day " + j + " record for user " + i)
5898
.visibility(RecordVisibility.PUBLIC)
59-
.imageUrl("https://dummy.image/activity_" + activityId + "_" + i + ".jpg")
99+
.imageUrl("https://dummy.image/record_" + i + "_" + j + ".jpg")
60100
.build();
61101

62102
activityRecordRepository.save(record);
63103
}
104+
105+
// Entity의 비즈니스 로직 호출 (카운트 증가 등 연관관계 편의 로직)
106+
activity.record();
64107
}
65108
}
66-
}
109+
}

src/main/java/com/example/ForDay/domain/record/repository/ActivityRecordRepositoryImpl.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import com.example.ForDay.domain.user.dto.response.GetUserFeedListResDto;
1717
import com.example.ForDay.domain.user.entity.QUser;
1818
import com.example.ForDay.domain.user.entity.User;
19+
import com.example.ForDay.domain.user.type.Role;
20+
import com.querydsl.core.BooleanBuilder;
1921
import com.querydsl.core.types.Order;
2022
import com.querydsl.core.types.OrderSpecifier;
2123
import com.querydsl.core.types.Projections;
@@ -24,6 +26,7 @@
2426
import com.querydsl.jpa.JPAExpressions;
2527
import com.querydsl.jpa.impl.JPAQueryFactory;
2628
import lombok.RequiredArgsConstructor;
29+
import org.springframework.util.StringUtils;
2730

2831
import java.util.Collections;
2932
import java.util.List;
@@ -220,6 +223,7 @@ public List<GetActivityRecordByStoryResDto.RecordDto> getActivityRecordByStory(
220223
hobbyCondition(hobbyInfoId, hobbyName),
221224
user.id.ne(currentUserId),
222225
user.deleted.isFalse(),
226+
user.role.eq(Role.USER),
223227
record.deleted.isFalse(),
224228
storyFilterType == StoryFilterType.HOT ? record.id.in(hotIds) : ltLastRecordId(lastRecordId),
225229
notInBlockList(blockFriendIds),
@@ -235,8 +239,20 @@ public List<GetActivityRecordByStoryResDto.RecordDto> getActivityRecordByStory(
235239
// --- Helper Methods ---
236240

237241
private BooleanExpression hobbyCondition(Long hobbyInfoId, String hobbyName) {
238-
return record.hobby.hobbyInfoId.eq(hobbyInfoId)
239-
.or(record.hobby.hobbyName.eq(hobbyName));
242+
if (hobbyInfoId != null && StringUtils.hasText(hobbyName)) {
243+
return record.hobby.hobbyInfoId.eq(hobbyInfoId)
244+
.or(record.hobby.hobbyName.eq(hobbyName));
245+
}
246+
247+
if (hobbyInfoId != null) {
248+
return record.hobby.hobbyInfoId.eq(hobbyInfoId);
249+
}
250+
251+
if (StringUtils.hasText(hobbyName)) {
252+
return record.hobby.hobbyName.eq(hobbyName);
253+
}
254+
255+
return null;
240256
}
241257

242258
private BooleanExpression ltLastRecordId(Long lastRecordId) {

src/main/java/com/example/ForDay/domain/record/service/ActivityRecordService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -557,7 +557,7 @@ private GetRecordDetailResDto buildGetRecordDetailResDtoFromDto(RecordDetailQuer
557557
.userInfo(!isOwner ? GetRecordDetailResDto.UserInfoDto.builder()
558558
.userId(detail.writerId())
559559
.nickname(detail.writerNickname())
560-
.profileImageUrl(detail.imageUrl())
560+
.profileImageUrl(s3Util.toProfileMainResizedUrl(detail.writerProfileImageUrl()))
561561
.build() : null)
562562
.visibility(detail.visibility())
563563
.newReaction(newR)

0 commit comments

Comments
 (0)