8
8
import io .sobok .SobokSobok .exception .model .ConflictException ;
9
9
import io .sobok .SobokSobok .exception .model .ForbiddenException ;
10
10
import io .sobok .SobokSobok .exception .model .NotFoundException ;
11
+ import io .sobok .SobokSobok .external .aws .s3 .S3Service ;
11
12
import io .sobok .SobokSobok .external .firebase .FCMPushService ;
12
13
import io .sobok .SobokSobok .external .firebase .dto .PushNotificationRequest ;
13
14
import io .sobok .SobokSobok .friend .infrastructure .FriendQueryRepository ;
18
19
import io .sobok .SobokSobok .pill .infrastructure .PillRepository ;
19
20
import io .sobok .SobokSobok .pill .infrastructure .PillScheduleRepository ;
20
21
import io .sobok .SobokSobok .sticker .domain .LikeSchedule ;
22
+ import io .sobok .SobokSobok .sticker .domain .Sticker ;
21
23
import io .sobok .SobokSobok .sticker .infrastructure .LikeScheduleQueryRepository ;
22
24
import io .sobok .SobokSobok .sticker .infrastructure .LikeScheduleRepository ;
23
25
import io .sobok .SobokSobok .sticker .infrastructure .StickerRepository ;
24
26
import io .sobok .SobokSobok .sticker .ui .dto .ReceivedStickerResponse ;
25
27
import io .sobok .SobokSobok .sticker .ui .dto .StickerActionResponse ;
26
28
import io .sobok .SobokSobok .sticker .ui .dto .StickerResponse ;
27
-
28
29
import java .util .List ;
29
30
import java .util .stream .Collectors ;
30
-
31
31
import lombok .RequiredArgsConstructor ;
32
32
import org .springframework .stereotype .Service ;
33
33
import org .springframework .transaction .annotation .Transactional ;
34
+ import org .springframework .web .multipart .MultipartFile ;
34
35
35
36
@ Service
36
37
@ RequiredArgsConstructor
37
38
public class StickerService {
38
39
39
40
private final FCMPushService fcmPushService ;
41
+ private final S3Service s3Service ;
40
42
41
43
private final StickerRepository stickerRepository ;
42
44
private final UserRepository userRepository ;
@@ -49,18 +51,18 @@ public class StickerService {
49
51
@ Transactional
50
52
public List <StickerResponse > getStickerList () {
51
53
return stickerRepository .findAll ().stream ().map (
52
- sticker -> StickerResponse .builder ()
53
- .stickerId (sticker .getId ())
54
- .stickerImg (sticker .getStickerImg ())
55
- .build ()
54
+ sticker -> StickerResponse .builder ()
55
+ .stickerId (sticker .getId ())
56
+ .stickerImg (sticker .getStickerImg ())
57
+ .build ()
56
58
).collect (Collectors .toList ());
57
59
}
58
60
59
61
@ Transactional
60
62
public StickerActionResponse sendSticker (Long userId , Long scheduleId , Long stickerId ) {
61
63
UserServiceUtil .existsUserById (userRepository , userId );
62
64
PillSchedule pillSchedule = PillScheduleServiceUtil .findPillScheduleById (
63
- pillScheduleRepository , scheduleId );
65
+ pillScheduleRepository , scheduleId );
64
66
StickerServiceUtil .existsStickerById (stickerRepository , stickerId );
65
67
66
68
if (!pillSchedule .getIsCheck ()) {
@@ -79,36 +81,36 @@ public StickerActionResponse sendSticker(Long userId, Long scheduleId, Long stic
79
81
}
80
82
81
83
LikeSchedule likeSchedule = likeScheduleRepository .save (
82
- LikeSchedule .builder ()
83
- .scheduleId (scheduleId )
84
- .senderId (userId )
85
- .stickerId (stickerId )
86
- .build ()
84
+ LikeSchedule .builder ()
85
+ .scheduleId (scheduleId )
86
+ .senderId (userId )
87
+ .stickerId (stickerId )
88
+ .build ()
87
89
);
88
90
89
91
fcmPushService .sendNotificationByToken (PushNotificationRequest .builder ()
90
- .userId (receiver .getId ())
91
- .title (senderUsername + "님이 " + pill .getPillName () + " 복약에 반응을 남겼어요!" )
92
- .body ("받은 스티커를 확인해보세요" )
93
- .type ("main" )
94
- .build ());
92
+ .userId (receiver .getId ())
93
+ .title (senderUsername + "님이 " + pill .getPillName () + " 복약에 반응을 남겼어요!" )
94
+ .body ("받은 스티커를 확인해보세요" )
95
+ .type ("main" )
96
+ .build ());
95
97
96
98
return StickerActionResponse .builder ()
97
- .likeScheduleId (likeSchedule .getId ())
98
- .scheduleId (likeSchedule .getScheduleId ())
99
- .senderId (likeSchedule .getSenderId ())
100
- .stickerId (likeSchedule .getStickerId ())
101
- .createdAt (likeSchedule .getCreatedAt ())
102
- .updatedAt (likeSchedule .getUpdatedAt ())
103
- .build ();
99
+ .likeScheduleId (likeSchedule .getId ())
100
+ .scheduleId (likeSchedule .getScheduleId ())
101
+ .senderId (likeSchedule .getSenderId ())
102
+ .stickerId (likeSchedule .getStickerId ())
103
+ .createdAt (likeSchedule .getCreatedAt ())
104
+ .updatedAt (likeSchedule .getUpdatedAt ())
105
+ .build ();
104
106
}
105
107
106
108
@ Transactional
107
109
public StickerActionResponse updateSendSticker (Long userId , Long likeScheduleId ,
108
- Long stickerId ) {
110
+ Long stickerId ) {
109
111
UserServiceUtil .existsUserById (userRepository , userId );
110
112
LikeSchedule likeSchedule = likeScheduleRepository .findById (likeScheduleId )
111
- .orElseThrow (() -> new NotFoundException (ErrorCode .UNREGISTERED_LIKE_SCHEDULE ));
113
+ .orElseThrow (() -> new NotFoundException (ErrorCode .UNREGISTERED_LIKE_SCHEDULE ));
112
114
StickerServiceUtil .existsStickerById (stickerRepository , stickerId );
113
115
114
116
if (!likeSchedule .isLikeScheduleSender (userId )) {
@@ -118,26 +120,35 @@ public StickerActionResponse updateSendSticker(Long userId, Long likeScheduleId,
118
120
likeSchedule .changeSticker (stickerId );
119
121
120
122
return StickerActionResponse .builder ()
121
- .likeScheduleId (likeSchedule .getId ())
122
- .scheduleId (likeSchedule .getScheduleId ())
123
- .senderId (likeSchedule .getSenderId ())
124
- .stickerId (likeSchedule .getStickerId ())
125
- .createdAt (likeSchedule .getCreatedAt ())
126
- .updatedAt (likeSchedule .getUpdatedAt ())
127
- .build ();
123
+ .likeScheduleId (likeSchedule .getId ())
124
+ .scheduleId (likeSchedule .getScheduleId ())
125
+ .senderId (likeSchedule .getSenderId ())
126
+ .stickerId (likeSchedule .getStickerId ())
127
+ .createdAt (likeSchedule .getCreatedAt ())
128
+ .updatedAt (likeSchedule .getUpdatedAt ())
129
+ .build ();
128
130
}
129
131
130
132
@ Transactional
131
133
public List <ReceivedStickerResponse > getReceivedStickerList (Long userId , Long scheduleId ) {
132
134
UserServiceUtil .existsUserById (userRepository , userId );
133
135
PillSchedule pillSchedule = PillScheduleServiceUtil .findPillScheduleById (
134
- pillScheduleRepository , scheduleId );
136
+ pillScheduleRepository , scheduleId );
135
137
Pill pill = PillServiceUtil .findPillById (pillRepository , pillSchedule .getPillId ());
136
138
137
- if (!pill .isPillUser (userId ) && !friendQueryRepository .isAlreadyFriend (userId , pill .getUserId ())) {
139
+ if (!pill .isPillUser (userId ) && !friendQueryRepository .isAlreadyFriend (userId ,
140
+ pill .getUserId ())) {
138
141
throw new ForbiddenException (ErrorCode .FORBIDDEN_EXCEPTION );
139
142
}
140
143
141
144
return likeScheduleQueryRepository .getReceivedStickerList (scheduleId , userId );
142
145
}
146
+
147
+ @ Transactional
148
+ public void uploadStickerImage (MultipartFile stickerImage ) {
149
+ if (!stickerImage .isEmpty ()) {
150
+ String stickerImageUrl = s3Service .uploadImage (stickerImage , "sticker" );
151
+ stickerRepository .save (Sticker .builder ().stickerImg (stickerImageUrl ).build ());
152
+ }
153
+ }
143
154
}
0 commit comments