1313import backend .pirocheck .Assignment .entity .AssignmentStatus ;
1414import backend .pirocheck .Assignment .repository .AssignmentItemRepository ;
1515import backend .pirocheck .Assignment .repository .AssignmentRepository ;
16+ import backend .pirocheck .Deposit .entity .Deposit ;
17+ import backend .pirocheck .Deposit .repository .DepositRepository ;
18+ import backend .pirocheck .Deposit .service .DepositService ;
1619import backend .pirocheck .User .entity .Role ;
1720import backend .pirocheck .User .entity .User ;
1821import backend .pirocheck .User .repository .UserRepository ;
@@ -33,6 +36,7 @@ public class AssignmentService {
3336 private final AssignmentItemRepository assignmentItemRepository ;
3437 private final AssignmentRepository assignmentRepository ;
3538 private final UserRepository userRepository ;
39+ private final DepositService depositService ;
3640
3741 public List <AssignmentWeekRes > search (Long userId ) {
3842
@@ -95,14 +99,18 @@ public String createAssignment(AssignmentCreateReq assignmentCreateReq) {
9599
96100 for (User user : users ) {
97101
98- AssignmentItem item = AssignmentItem .create (user , assignment , AssignmentStatus .INSUFFICIENT );
102+ AssignmentItem item = AssignmentItem .create (user , assignment , AssignmentStatus .SUCCESS );
99103
100104 assignment .addAssignmentItem (item );
101105 user .addAssignmentItem (item );
102106
103107// assignmentItemRepository.save(item);
104108// Cascade 설정이 되어있으므로 assignment = assignmentRepository.save(assignment); 이 코드를 실행할 때 연관된 AssignmentItem도 함께 저장 됨
105109 }
110+ // assignment 저장 후 모든 유저 보증금 재계산
111+ for (User user : users ) {
112+ depositService .recalculateDeposit (user .getId ());
113+ }
106114
107115 return assignment .getAssignmentName ();
108116 }
@@ -132,6 +140,13 @@ public List<AssignmentRes> searchAssignment(AssignmentRes assignmentRes) {
132140 // 과제 삭제
133141 public String deleteAssignment (Long assignmentId ) {
134142 assignmentRepository .deleteById (assignmentId );
143+
144+ // 모든 MEMBER 유저 보증금 재계산
145+ List <User > members = userRepository .findByRole (Role .MEMBER );
146+ for (User user : members ) {
147+ depositService .recalculateDeposit (user .getId ());
148+ }
149+
135150 return "과제가 성공적으로 삭제되었습니다." ;
136151 }
137152
@@ -163,6 +178,9 @@ public AssignmentStatus createAssignmentItem(Long userId, Long assignmentId, Ass
163178
164179 assignmentItemRepository .save (assignmentItem );
165180
181+ // 보증금 즉시 재계산
182+ depositService .recalculateDeposit (userId );
183+
166184 return assignmentItem .getSubmitted ();
167185 }
168186
@@ -177,10 +195,12 @@ public AssignmentStatus updateAssignmentItem(Long userId, Long assignmentId, Ass
177195 AssignmentItem assignmentItem = assignmentItemRepository .findByUserAndAssignment (user , assignment )
178196 .orElseThrow (() -> new IllegalArgumentException ("해당 유저의 과제 채점 결과가 없습니다." ));
179197
180- assignmentItem .update (req .getStatus ()); // 상태 업데이트
181198
199+ assignmentItem .update (req .getStatus ()); // 상태 업데이트
182200 assignmentItemRepository .save (assignmentItem ); // 상태 저장
183201
202+ // 보증금 즉시 재계산
203+ depositService .recalculateDeposit (userId );
184204 return assignmentItem .getSubmitted ();
185205 }
186206}
0 commit comments