Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Server lipton #145

Merged
merged 6 commits into from
May 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM openjdk:11-jdk
EXPOSE 8080
ARG JAR_FILE=build/libs/*.jar
ARG JAR_FILE=build/libs/*-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar","-Dspring.config.location=classpath:/application.properties,classpath:/application-DB.properties,classpath:/application-jwt.properties,classpath:/application-oauth2.properties","/app.jar"]

1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// security 설정 유의, 개발 후 적용
// implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-test:2.7.13'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-web-services'
implementation 'org.springframework.boot:spring-boot-starter-validation'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,7 @@ public interface CalendarRepository extends JpaRepository<Calendar,Long> {
"and MONTH(c.startDate) <= :m and MONTH(c.endDate) >= :m "
)
List<Calendar> findCalendarMonth(User user , int y, int m);

@Query("select c from Calendar c where c.user = :user and c.startDate <= :date and c.endDate >= :date")
List<Calendar> findCalendarDay(User user, LocalDate date);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.umc.mada.custom.domain.CustomItem;
import com.umc.mada.custom.domain.HaveItem;
import com.umc.mada.custom.domain.ItemType;
import com.umc.mada.user.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
Expand All @@ -18,8 +19,8 @@ public interface HaveItemRepository extends JpaRepository<HaveItem, Long> {
List<HaveItem> findByUser(User user);
List<HaveItem> findByUserAndWearing(User user, boolean wearing);
boolean existsByCustomItemAndUser(CustomItem customItem, User user);

Boolean deleteByUserAndCustomItem(User user, CustomItem customItem);
@Query("delete from HaveItem h where h.user = :user and h.customItem.unlockCondition = :unlockCond")
Boolean deleteByUserAndUnlockCond(@Param("user") User user, @Param("unlockCond") CustomItem.ItemUnlockCondition unlockCond);
@Query("select h.customItem from HaveItem h where h.user = :user and h.wearing = :wearing")
List<CustomItem> findCustomItemByUserAndWearing(@Param("user") User user, @Param("wearing") boolean wearing);
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package com.umc.mada.timetable.controller;

import com.umc.mada.calendar.domain.Calendar;
import com.umc.mada.calendar.repository.CalendarRepository;
import com.umc.mada.timetable.domain.DayOfWeek;
import com.umc.mada.timetable.dto.CommentRequestDto;
import com.umc.mada.timetable.dto.CommentResponseDto;
import com.umc.mada.timetable.dto.TimetableRequestDto;
import com.umc.mada.timetable.dto.TimetableResponseDto;
import com.umc.mada.timetable.service.TimetableService;
import com.umc.mada.todo.domain.Todo;
import com.umc.mada.todo.repository.TodoRepository;
import com.umc.mada.user.domain.User;
import com.umc.mada.user.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.*;
Expand Down Expand Up @@ -41,7 +45,8 @@ public TimetableController(TodoRepository todoRepository, CalendarRepository cal
@PostMapping("/comment")
public ResponseEntity<Map<String, Object>> createTimetableComment(Authentication authentication, @RequestBody CommentRequestDto commentRequestDto){
// comment 생성 API
User user = userRepository.findByAuthIdAndAccountExpired(authentication.getName(), false).orElseThrow(()-> new RuntimeException("올바른 유저 ID가 아닙니다."));
Optional<User> userOptional = userRepository.findByAuthId(authentication.getName());
User user = userOptional.get();
CommentResponseDto newComment = timetableService.createComment(user, commentRequestDto);
Map<String, Object> data = new LinkedHashMap<>();
data.put("Comment", newComment);
Expand All @@ -53,7 +58,8 @@ public ResponseEntity<Map<String, Object>> createTimetableComment(Authentication
@PatchMapping("/comment/update/{date}")
public ResponseEntity<Map<String, Object>> updateTimetableComment(Authentication authentication, @PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date, @RequestBody CommentRequestDto commentRequestDto){
// comment 수정 API
User user = userRepository.findByAuthIdAndAccountExpired(authentication.getName(), false).orElseThrow(()-> new RuntimeException("올바른 유저 ID가 아닙니다."));
Optional<User> userOptional = userRepository.findByAuthId(authentication.getName());
User user = userOptional.get();
CommentResponseDto updatedComment = timetableService.updateComment(user, date, commentRequestDto);
Map<String, Object> data = new LinkedHashMap<>();
data.put("Comment", updatedComment);
Expand All @@ -64,7 +70,8 @@ public ResponseEntity<Map<String, Object>> updateTimetableComment(Authentication

@GetMapping("/comment/date/{date}")
public ResponseEntity<Map<String, Object>> getUserTimetableComment(Authentication authentication, @PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date){
User user = userRepository.findByAuthIdAndAccountExpired(authentication.getName(), false).orElseThrow(()-> new RuntimeException("올바른 유저 ID가 아닙니다."));
Optional<User> userOptional = userRepository.findByAuthId(authentication.getName());
User user = userOptional.get();
CommentResponseDto userComment = timetableService.getUserComment(user, date);
Map<String, Object> data = new LinkedHashMap<>();
data.put("Comment", userComment);
Expand All @@ -81,7 +88,8 @@ public ResponseEntity<Map<String, Object>> getUserTimetableComment(Authenticatio
@PostMapping("/daily")
public ResponseEntity<Map<String, Object>> createDailyTimetable(Authentication authentication, @RequestBody TimetableRequestDto timetableRequestDto){
// 일일 시간표 일정 생성 API
User user = userRepository.findByAuthIdAndAccountExpired(authentication.getName(), false).orElseThrow(()-> new RuntimeException("올바른 유저 ID가 아닙니다."));
Optional<User> userOptional = userRepository.findByAuthId(authentication.getName());
User user = userOptional.get();
TimetableResponseDto newTimetable = timetableService.createTimetable(user, timetableRequestDto);
Map<String, Object> data = new LinkedHashMap<>();
data.put("DailyTimetable", newTimetable);
Expand All @@ -96,7 +104,8 @@ public ResponseEntity<Map<String, Object>> createDailyTimetable(Authentication a
@PostMapping("/daily/loadWeekly/{date}")
public ResponseEntity<Map<String, Object>> loadDailyTimetableFromWeekly(Authentication authentication, @PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date){
// 주간시간표 불러오기 API
User user = userRepository.findByAuthIdAndAccountExpired(authentication.getName(), false).orElseThrow(()-> new RuntimeException("올바른 유저 ID가 아닙니다."));
Optional<User> userOptional = userRepository.findByAuthId(authentication.getName());
User user = userOptional.get();
Map<String, Object> map = timetableService.checkAndLoadDailyData(user, date);
//result.put("status", 200);
//result.put("success", true);
Expand All @@ -107,7 +116,8 @@ public ResponseEntity<Map<String, Object>> loadDailyTimetableFromWeekly(Authenti
@PatchMapping("/daily/update/{scheduleId}")
public ResponseEntity<Map<String, Object>> updateDailyTimetable(Authentication authentication, @PathVariable int scheduleId, @RequestBody TimetableRequestDto timetableRequestDto){
// 일일 시간표 일정 수정 API
User user = userRepository.findByAuthIdAndAccountExpired(authentication.getName(), false).orElseThrow(()-> new RuntimeException("올바른 유저 ID가 아닙니다."));
Optional<User> userOptional = userRepository.findByAuthId(authentication.getName());
User user = userOptional.get();
TimetableResponseDto updatedTimetable = timetableService.updateTimetable(user, scheduleId, timetableRequestDto);
Map<String, Object> data = new LinkedHashMap<>();
data.put("DailyTimetable", updatedTimetable);
Expand All @@ -122,7 +132,8 @@ public ResponseEntity<Map<String, Object>> updateDailyTimetable(Authentication a
@PatchMapping("/daily/delete/{scheduleId}")
public ResponseEntity<Map<String, Object>> deleteDailyTimetable(Authentication authentication, @PathVariable int scheduleId) {
// 일일 시간표 일정 삭제 API
User user = userRepository.findByAuthIdAndAccountExpired(authentication.getName(), false).orElseThrow(()-> new RuntimeException("올바른 유저 ID가 아닙니다."));
Optional<User> userOptional = userRepository.findByAuthId(authentication.getName());
User user = userOptional.get();
timetableService.deleteTimetable(user, scheduleId);
Map<String, Object> result = new LinkedHashMap<>();
//result.put("status", 200);
Expand All @@ -134,7 +145,8 @@ public ResponseEntity<Map<String, Object>> deleteDailyTimetable(Authentication a
@GetMapping("/daily/date/{date}")
// 일일 시간표 조회 API
public ResponseEntity<Map<String, Object>> getUserDailyTimetable(Authentication authentication, @PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date){
User user = userRepository.findByAuthIdAndAccountExpired(authentication.getName(), false).orElseThrow(()-> new RuntimeException("올바른 유저 ID가 아닙니다."));
Optional<User> userOptional = userRepository.findByAuthId(authentication.getName());
User user = userOptional.get();
List<TimetableResponseDto> userTimetables = timetableService.getDailyTimetable(user, date);
Map<String, Object> data = new LinkedHashMap<>();
data.put("DailyTimetableList", userTimetables);
Expand All @@ -153,7 +165,8 @@ public ResponseEntity<Map<String, Object>> getUserDailyTimetable(Authentication
@PostMapping("/weekly/create")
public ResponseEntity<Map<String, Object>> createWeeklyTimetable(Authentication authentication, @RequestBody TimetableRequestDto timetableRequestDto){
// 주간 시간표 일정 생성 API
User user = userRepository.findByAuthIdAndAccountExpired(authentication.getName(), false).orElseThrow(()-> new RuntimeException("올바른 유저 ID가 아닙니다."));
Optional<User> userOptional = userRepository.findByAuthId(authentication.getName());
User user = userOptional.get();
TimetableResponseDto newTimetable = timetableService.createTimetable(user, timetableRequestDto);
Map<String, Object> data = new LinkedHashMap<>();
data.put("WeeklyTimetable", newTimetable);
Expand All @@ -168,7 +181,8 @@ public ResponseEntity<Map<String, Object>> createWeeklyTimetable(Authentication
@PatchMapping("/weekly/update/{scheduleId}")
public ResponseEntity<Map<String, Object>> updateWeeklyTimetable(Authentication authentication, @PathVariable int scheduleId, @RequestBody TimetableRequestDto timetableRequestDto){
// 주간 시간표 일정 수정 API
User user = userRepository.findByAuthIdAndAccountExpired(authentication.getName(), false).orElseThrow(()-> new RuntimeException("올바른 유저 ID가 아닙니다."));
Optional<User> userOptional = userRepository.findByAuthId(authentication.getName());
User user = userOptional.get();
TimetableResponseDto updatedTimetable = timetableService.updateTimetable(user, scheduleId, timetableRequestDto);
Map<String, Object> data = new LinkedHashMap<>();
data.put("WeeklyTimetable", updatedTimetable);
Expand All @@ -183,7 +197,8 @@ public ResponseEntity<Map<String, Object>> updateWeeklyTimetable(Authentication
@PatchMapping("/weekly/delete/{scheduleId}")
public ResponseEntity<Map<String, Object>> deleteWeeklyTimetable(Authentication authentication, @PathVariable int scheduleId) {
// 주간 시간표 일정 삭제 API
User user = userRepository.findByAuthIdAndAccountExpired(authentication.getName(), false).orElseThrow(()-> new RuntimeException("올바른 유저 ID가 아닙니다."));
Optional<User> userOptional = userRepository.findByAuthId(authentication.getName());
User user = userOptional.get();
timetableService.deleteTimetable(user, scheduleId);
Map<String, Object> result = new LinkedHashMap<>();
//result.put("status", 200);
Expand All @@ -195,7 +210,8 @@ public ResponseEntity<Map<String, Object>> deleteWeeklyTimetable(Authentication
@GetMapping("/weekly")
// 주간 시간표 일정 조회 API
public ResponseEntity<Map<String, Object>> getUserWeeklyTimetable(Authentication authentication){
User user = userRepository.findByAuthIdAndAccountExpired(authentication.getName(), false).orElseThrow(()-> new RuntimeException("올바른 유저 ID가 아닙니다."));
Optional<User> userOptional = userRepository.findByAuthId(authentication.getName());
User user = userOptional.get();
List<TimetableResponseDto> userTimetables = timetableService.getWeeklyTimetable(user);
Map<String, Object> data = new LinkedHashMap<>();
data.put("WeeklyTimetableList", userTimetables);
Expand All @@ -211,8 +227,9 @@ public ResponseEntity<Map<String, Object>> getUserWeeklyTimetable(Authentication
@GetMapping("search/date/{date}")
// 시간표 추가 시, 특정 유저 일정(캘린더)과 투두 조회 API
public ResponseEntity<Map<String, Object>> getTodoAndCalendar(Authentication authentication, @PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date) {
User user = userRepository.findByAuthIdAndAccountExpired(authentication.getName(), false).orElseThrow(()-> new RuntimeException("올바른 유저 ID가 아닙니다."));
Optional<User> userOptional = userRepository.findByAuthId(authentication.getName());
User user = userOptional.get();
Map<String, Object> map = timetableService.getTodoAndCalendar(user, date);
return ResponseEntity.ok().body(map);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,4 @@ public interface TimetableRepository extends JpaRepository<Timetable, Integer> {
List<Timetable> findTimetablesByUserIdAndDayOfWeekIsNot(User userId, DayOfWeek dayOfWeek);
List<Timetable> findTimetablesByUserIdAndDateIsAndDayOfWeek(User userId, LocalDate date, DayOfWeek dayOfWeek);
List<Timetable> findTimetablesByUserIdAndDayOfWeekAndIsDeletedIsFalse(User userId, DayOfWeek dayOfWeek);

}
Original file line number Diff line number Diff line change
Expand Up @@ -327,4 +327,4 @@ private boolean isSameSchedule(Timetable dailyEntry, Timetable weeklyEntry) {
dailyEntry.getColor().equals(weeklyEntry.getColor()) &&
Objects.equals(dailyEntry.getMemo(), weeklyEntry.getMemo());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ public ResponseEntity<String> userRemove (Authentication authentication){ //@Aut
/**
* 구독 설정 API
*/
@Operation(description = "유료 회원 관리")
@PatchMapping("/subscribe")
public ResponseEntity<Void> subscribeToggleSave(Authentication authentication,@RequestBody Map<String,Boolean> is_subscribe){
// Map<String,Object> map = new HashMap<>();
Expand Down
6 changes: 2 additions & 4 deletions src/main/java/com/umc/mada/user/service/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -68,10 +69,7 @@ public Boolean isSubscribe(Authentication authentication, Map<String,Boolean> is
}
}
else{
List<CustomItem> subscribeCustomItems = customRepository.findByUnlockCondition(CustomItem.ItemUnlockCondition.PREMINUM);
for (CustomItem customItem : subscribeCustomItems){
haveItemRepository.deleteByUserAndCustomItem(user,customItem);
}
haveItemRepository.deleteByUserAndUnlockCond(user, CustomItem.ItemUnlockCondition.PREMINUM);
}
}

Expand Down
Loading