diff --git a/nw/src/main/java/lab/cherry/nw/controller/OrgController.java b/nw/src/main/java/lab/cherry/nw/controller/OrgController.java index 6a04038..719c3f1 100644 --- a/nw/src/main/java/lab/cherry/nw/controller/OrgController.java +++ b/nw/src/main/java/lab/cherry/nw/controller/OrgController.java @@ -199,7 +199,8 @@ public ResponseEntity deleteOrganization(@PathVariable("id") String id) { @GetMapping("/invite") @Operation(summary = "사용자(랑부) 초대", description = "이메일로 조직 초대 메일을 발송합니다.") - public ResponseEntity inviteUser(@RequestParam(required = false) String orgid, @RequestParam(required = false) String email) { + public ResponseEntity inviteUser(@RequestParam(required = false) String orgid, + @RequestParam(required = false) String email) { log.info("[OrgController] inviteUser...!"); orgService.inviteOrgSend(orgid, email); diff --git a/nw/src/main/java/lab/cherry/nw/controller/ScheduleController.java b/nw/src/main/java/lab/cherry/nw/controller/ScheduleController.java index 7fe8335..45642a2 100644 --- a/nw/src/main/java/lab/cherry/nw/controller/ScheduleController.java +++ b/nw/src/main/java/lab/cherry/nw/controller/ScheduleController.java @@ -8,7 +8,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lab.cherry.nw.error.ErrorResponse; -import lab.cherry.nw.model.FinalTemplEntity; import lab.cherry.nw.model.ScheduleEntity; import lab.cherry.nw.service.ScheduleService; import lab.cherry.nw.util.Common; @@ -23,9 +22,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.time.Instant; -import java.time.LocalDate; -import java.time.ZoneId; /** *
@@ -93,34 +89,7 @@ public ResponseEntity findByScheduleId(@PathVariable("id") String id) {
 		return new ResponseEntity<>(scheduleService.findById(id), new HttpHeaders(), HttpStatus.OK);
 	}
 
-    /**
-     * [ScheduleController] 스케줄표 컬럼 변경 함수
-     *
-     * @param tranClounm 최종확인서에서 스케줄표에 필요한 컬럼만 담고 있는 객체입니다.
-     * @return
-     * 
-     * true  : 성공(200)을 반환합니다.
-     * false : 에러(400)를 반환합니다.
-     * 
- * - * Author : hhhaeri(yhoo0020@gmail.com) - */ - @PostMapping("/column") - @Operation(summary = "스케줄표 컬럼 변환", description = "최종확인서에 있는 컬럼을 스케줄표로 변환.") - @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "스케줄표 컬럼 변환이 완료되었습니다.", content = @Content(schema = @Schema(implementation = ResponseEntity.class))), - @ApiResponse(responseCode = "400", description = "입력 값이 잘못되었습니다.", content = @Content(schema = @Schema(implementation = ErrorResponse.class))) - }) - public ResponseEntity fianlToSchedule(@Valid @RequestBody(required = false) ScheduleEntity.transDto scheduleTransDto) { - - log.info("[ScheduleController] fianlToSchedule...!"); - - ScheduleEntity scheduleEntity = scheduleService.transColumn(scheduleTransDto); - - return new ResponseEntity<>(scheduleEntity, new HttpHeaders(), HttpStatus.OK); - } - - + /** * [ScheduleController] 스케줄표 생성 함수 * @@ -148,41 +117,4 @@ public ResponseEntity createFinalTemplate(@Valid @RequestBody(required = fals return new ResponseEntity<>(scheduleEntity, new HttpHeaders(), HttpStatus.OK); } - - - - // /** - // * [ScheduleController] 스케줄표 날짜 기준 조회 - // * - // * @param 날짜 기준으로 스케줄표를 조회합니다. - // * @return - // *
-	//  * true  : 성공(200)을 반환합니다.
-	//  * false : 에러(400)를 반환합니다.
-	//  * 
- // * - // * Author : hhhaeri(yhoo0020@gmail.com) - // */ - // @PostMapping("/date/{start}/{end}") - // @Operation(summary = "스케줄표 날짜 조회", description = "최종확인서에 있는 날짜 기준 조회") - // @ApiResponses(value = { - // @ApiResponse(responseCode = "200", description = "날짜 기준으로 조회를 완료되었습니다.", content = @Content(schema = @Schema(implementation = ResponseEntity.class))), - // @ApiResponse(responseCode = "400", description = "입력 값이 잘못되었습니다.", content = @Content(schema = @Schema(implementation = ErrorResponse.class))) - // }) - // public ResponseEntity fianlToDateSchedule(@Valid @PathVariable("start") String start, @PathVariable("end") String end) { - - // log.info("[ScheduleController] fianlToDateSchedule...!"); - - // LocalDate localStartDate = LocalDate.parse(start); - // LocalDate localEndDate = LocalDate.parse(end); - - // // LocalDate를 Instant로 변환 (00:00:00 시간으로 설정) - // Instant startDate = localStartDate.atStartOfDay(ZoneId.systemDefault()).toInstant(); - // Instant endDate = localEndDate.atStartOfDay(ZoneId.systemDefault()).toInstant(); - - // ScheduleEntity scheduleEntity = scheduleService.scheduleByDate(startDate,endDate); - - // return new ResponseEntity<>(scheduleEntity, new HttpHeaders(), HttpStatus.OK); - // } - } diff --git a/nw/src/main/java/lab/cherry/nw/error/handler/CustomAccessDeniedHandler.java b/nw/src/main/java/lab/cherry/nw/error/handler/CustomAccessDeniedHandler.java index 38978d4..51296dd 100644 --- a/nw/src/main/java/lab/cherry/nw/error/handler/CustomAccessDeniedHandler.java +++ b/nw/src/main/java/lab/cherry/nw/error/handler/CustomAccessDeniedHandler.java @@ -2,6 +2,7 @@ import lab.cherry.nw.error.enums.ErrorCode; import lab.cherry.nw.util.FormatConverter; +import lombok.extern.slf4j.Slf4j; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; diff --git a/nw/src/main/java/lab/cherry/nw/error/handler/GlobalExceptionHandler.java b/nw/src/main/java/lab/cherry/nw/error/handler/GlobalExceptionHandler.java index c08f555..499777d 100644 --- a/nw/src/main/java/lab/cherry/nw/error/handler/GlobalExceptionHandler.java +++ b/nw/src/main/java/lab/cherry/nw/error/handler/GlobalExceptionHandler.java @@ -1,10 +1,6 @@ package lab.cherry.nw.error.handler; -import lab.cherry.nw.error.ErrorResponse; -import lab.cherry.nw.error.enums.ErrorCode; -import lab.cherry.nw.error.exception.CustomException; -import lab.cherry.nw.error.exception.EntityNotFoundException; -import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.AccessDeniedException; import org.springframework.dao.DuplicateKeyException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -13,14 +9,13 @@ import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; -import org.springframework.web.context.request.WebRequest; import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; -import org.springframework.web.servlet.NoHandlerFoundException; -import jakarta.servlet.http.HttpServletResponse; -import java.nio.file.AccessDeniedException; -import java.util.HashMap; +import lab.cherry.nw.error.ErrorResponse; +import lab.cherry.nw.error.enums.ErrorCode; +import lab.cherry.nw.error.exception.CustomException; +import lab.cherry.nw.error.exception.EntityNotFoundException; +import lombok.extern.slf4j.Slf4j; @Slf4j @RestControllerAdvice diff --git a/nw/src/main/java/lab/cherry/nw/model/EventEntity.java b/nw/src/main/java/lab/cherry/nw/model/EventEntity.java index b843344..09bcc31 100644 --- a/nw/src/main/java/lab/cherry/nw/model/EventEntity.java +++ b/nw/src/main/java/lab/cherry/nw/model/EventEntity.java @@ -28,16 +28,14 @@ @Builder @NoArgsConstructor @AllArgsConstructor @Document(collection = "events") -@JsonPropertyOrder({ "eventSeq", "eventTitle", "eventLocation", "resDate", "weddingDate", "evenDate", "updated_at" }) +@JsonPropertyOrder({ "id", "title", "location", "resDate", "weddingDate", "updated_at" }) public class EventEntity implements Serializable { @Id - @JsonProperty("eventSeq") @Schema(title = "이벤트 고유번호", example = "64ed89aa9e813b5ab16da6de") private String id; @NotNull - @JsonProperty("eventTitle") @Schema(title = "이벤트 이름", example = "{time}시 {title}") @Size(min = 1, max = 20, message = "이벤트 이름은 20자 이내로만 가능합니다.") private String title; @@ -48,18 +46,20 @@ public class EventEntity implements Serializable { // private String description; @NotNull - @JsonProperty("eventLocation") @Schema(title = "이벤트 장소", example = "더모멘트홀") @Size(min = 1, max = 20, message = "이벤트 장소명은 20글자 이내로만 가능합니다.") private String location; @NotBlank - @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss", locale = "ko_KR", timezone = "Asia/Seoul") + @JsonProperty("resDate") + @JsonFormat(locale = "ko_KR", timezone = "Asia/Seoul") + // @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss", locale = "ko_KR", timezone = "Asia/Seoul") @Schema(title = "예약 날짜", example = "2023-08-29T05:11:38.002Z") private String resDate; @NotBlank - @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss", locale = "ko_KR", timezone = "Asia/Seoul") + @JsonFormat(locale = "ko_KR", timezone = "Asia/Seoul") + // @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss", locale = "ko_KR", timezone = "Asia/Seoul") @Schema(title = "예식 날짜", example = "2023-08-29T05:11:38.002Z") private String weddingDate; diff --git a/nw/src/main/java/lab/cherry/nw/model/FinalTemplEntity.java b/nw/src/main/java/lab/cherry/nw/model/FinalTemplEntity.java index a793c99..363bbea 100644 --- a/nw/src/main/java/lab/cherry/nw/model/FinalTemplEntity.java +++ b/nw/src/main/java/lab/cherry/nw/model/FinalTemplEntity.java @@ -17,6 +17,7 @@ import java.io.Serializable; import java.time.Instant; +import java.util.List; import java.util.Map; /** @@ -53,7 +54,9 @@ public class FinalTemplEntity implements Serializable { @JsonProperty("content") @Schema(title = "최종확인서 템플릿 내용", example = "문서 내용") - private Map content; + // private Map content; + private List content; + @JsonProperty("updated_at") @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss", locale = "ko_KR", timezone = "Asia/Seoul") @@ -81,8 +84,8 @@ public static class FinalTemplCreateDto { private String orgId; @Schema(title = "최종확인서 템플릿 내용", example = "문서 내용") - private Map content; - + private List content; + } @Getter @@ -90,14 +93,14 @@ public static class FinalTemplCreateDto { @NoArgsConstructor @AllArgsConstructor public static class FinalTemplUpdateDto { - @Schema(title = "사용자 고유 번호", example = "64ed89aa9e813b5ab16da6de") - private String userSeq; + @Schema(title = "사용자 고유 번호", example = "64ed89aa9e813b5ab16da6de") + private String userSeq; - @Schema(title = "조직 고유 번호", example = "64ed89aa9e813b5ab16da6de") - private String orgId; + @Schema(title = "조직 고유 번호", example = "64ed89aa9e813b5ab16da6de") + private String orgId; - @Schema(title = "최종확인서 템플릿 내용", example = "문서 내용") - private Map content; + @Schema(title = "최종확인서 템플릿 내용", example = "문서 내용") + private List content; } diff --git a/nw/src/main/java/lab/cherry/nw/model/FinaldocsEntity.java b/nw/src/main/java/lab/cherry/nw/model/FinaldocsEntity.java index c9a6030..0ef4f54 100644 --- a/nw/src/main/java/lab/cherry/nw/model/FinaldocsEntity.java +++ b/nw/src/main/java/lab/cherry/nw/model/FinaldocsEntity.java @@ -17,6 +17,7 @@ import java.io.Serializable; import java.time.Instant; +import java.util.List; import java.util.Map; /** @@ -64,8 +65,7 @@ public class FinaldocsEntity implements Serializable { @JsonProperty("content") @Schema(title = "최종확인서 내용", example = "") - private Map content; - + private List content; @JsonProperty("updated_at") @@ -109,7 +109,7 @@ public static class FinaldocsCreateDto { // @NotBlank @JsonProperty("content") @Schema(title = "최종확인서 내용", example = "") - private Map content; + private List content; } @@ -133,7 +133,7 @@ public static class FinaldocsUpdateDto { private String org; @Schema(title = "최종확인서 내용", example = "") - private Map content; + private List content; } diff --git a/nw/src/main/java/lab/cherry/nw/model/ScheduleEntity.java b/nw/src/main/java/lab/cherry/nw/model/ScheduleEntity.java index edafddb..4affc70 100644 --- a/nw/src/main/java/lab/cherry/nw/model/ScheduleEntity.java +++ b/nw/src/main/java/lab/cherry/nw/model/ScheduleEntity.java @@ -48,7 +48,7 @@ public class ScheduleEntity implements Serializable { @JsonProperty("scheduleContent") @Schema(title = "스케줄표 내용", example = "[]") - private Map content; + private List content; @JsonProperty("column") @Schema(title = "스케줄표 컬럼", example = "") @@ -65,36 +65,13 @@ public class ScheduleEntity implements Serializable { @NoArgsConstructor @AllArgsConstructor public static class ScheduleCreateDto { - @NotBlank @Schema(title = "조직 고유번호", example = "64ed89aa9e813b5ab16da6de") private String orgId; - @Schema(title = "스케줄표 템플릿 내용", example = "문서 내용") - private Map content; + private List content; } - - ////////////////////////////////////////////////////////////////////////// - - @Getter - @Setter - @Builder - @NoArgsConstructor @AllArgsConstructor - public static class transDto { - - @Schema(title = "스케줄표 고유번호", example = "64ed89aa9e813b5ab16da6de") - private String finalTemplId; - - @Schema(title = "조직 고유번호", example = "64ed89aa9e813b5ab16da6de") - private String orgId; - - @JsonProperty("scheduleContent") - @Schema(title = "스케줄표 내용", example = "[]") - private Map content; - - } - } \ No newline at end of file diff --git a/nw/src/main/java/lab/cherry/nw/service/EventService.java b/nw/src/main/java/lab/cherry/nw/service/EventService.java index 62cec6a..3b2cf1a 100644 --- a/nw/src/main/java/lab/cherry/nw/service/EventService.java +++ b/nw/src/main/java/lab/cherry/nw/service/EventService.java @@ -18,9 +18,7 @@ public interface EventService { Page getEvents(Pageable pageable); EventEntity createEvent(String id); -// void updateById(String id, WeddinghallEntity.UpdateDto weddinghall); EventEntity findById(String id); -// WeddinghallEntity findByName(String name); void deleteById(String id); - // Page findPageByName(String name, Pageable pageable); + boolean checkExistsWithEventId(String id); } diff --git a/nw/src/main/java/lab/cherry/nw/service/Impl/EmailAuthServiceImpl.java b/nw/src/main/java/lab/cherry/nw/service/Impl/EmailAuthServiceImpl.java index d5d2e99..e9c6900 100644 --- a/nw/src/main/java/lab/cherry/nw/service/Impl/EmailAuthServiceImpl.java +++ b/nw/src/main/java/lab/cherry/nw/service/Impl/EmailAuthServiceImpl.java @@ -119,7 +119,7 @@ public void ResetPasswordSend(String email, String password) { public void InviteOrgSend(String orgid, String orgname, String email) { MimeMessage message = javaMmailSender.createMimeMessage(); - String _link = FRONTEND_ADDR + "/auth/register/org/" + orgid; + String _link = FRONTEND_ADDR + "/register/org/" + orgid; try { message.addRecipients(MimeMessage.RecipientType.TO, email); diff --git a/nw/src/main/java/lab/cherry/nw/service/Impl/EventServiceImpl.java b/nw/src/main/java/lab/cherry/nw/service/Impl/EventServiceImpl.java index 7739515..aea4b37 100644 --- a/nw/src/main/java/lab/cherry/nw/service/Impl/EventServiceImpl.java +++ b/nw/src/main/java/lab/cherry/nw/service/Impl/EventServiceImpl.java @@ -73,10 +73,10 @@ public EventEntity createEvent(String id) { dateFormat = FormatConverter.convertDateFormat(userCardEntity.getResDate()); // {hour}:{min} {groom}♥{bride} - String eventName = dateFormat.get("hour") + ":" + dateFormat.get("minute") + " " + userCardEntity.getGroom().getName() + "♥" + userCardEntity.getBride().getName(); + String eventName = dateFormat.get("hour") + ":" + ((dateFormat.get("minute") == 0) ? "00" : dateFormat.get("minute")) + " " + userCardEntity.getGroom().getName() + "♥" + userCardEntity.getBride().getName(); EventEntity eventEntity = EventEntity.builder() - .id(userCardEntity.getUserinfo().getId()) + .id(userCardEntity.getId()) .title(eventName) .location(userCardEntity.getWeddinghall().getName()) .resDate(userCardEntity.getResDate()) @@ -161,4 +161,14 @@ public UserCardEntity userCardFindById(String id) { return userCardRepository.findById(id).orElseThrow(() -> new EntityNotFoundException("Usercard with Id " + id + " Not Found.")); } + @Transactional(readOnly = true) + public boolean checkExistsWithEventId(String id) { + if (eventRepository.findById(id).isPresent()) { + return true; + } else { + return false; + } + } + + } \ No newline at end of file diff --git a/nw/src/main/java/lab/cherry/nw/service/Impl/OrgServiceImpl.java b/nw/src/main/java/lab/cherry/nw/service/Impl/OrgServiceImpl.java index 3288188..2a05cad 100644 --- a/nw/src/main/java/lab/cherry/nw/service/Impl/OrgServiceImpl.java +++ b/nw/src/main/java/lab/cherry/nw/service/Impl/OrgServiceImpl.java @@ -221,6 +221,8 @@ public Page findPageByName(String name, Pageable pageable) { public void inviteOrgSend(String orgid, String email) { + log.error("orgid is {}", orgid); + OrgEntity orgEntity = findById(orgid); emailAuthService.InviteOrgSend(orgEntity.getId(), orgEntity.getName(), email); diff --git a/nw/src/main/java/lab/cherry/nw/service/Impl/ScheduleServiceImpl.java b/nw/src/main/java/lab/cherry/nw/service/Impl/ScheduleServiceImpl.java index 9872e49..9f9bfa9 100644 --- a/nw/src/main/java/lab/cherry/nw/service/Impl/ScheduleServiceImpl.java +++ b/nw/src/main/java/lab/cherry/nw/service/Impl/ScheduleServiceImpl.java @@ -82,46 +82,6 @@ public ScheduleEntity createSchedule(ScheduleEntity.ScheduleCreateDto scheduleCr return scheduleRepository.save(scheduleEntity); } - - - /** - * [scheduleServiceImpl] 스케줄표 생성 함수 - * - * @param scheduleTransDto 스케줄표 생성에 필요한 최종확인서 정보를 담은 개체입니다. - * @return 최종확인서에서 스케줄표에 필요한 컬럼을 저장한 정보를 리턴합니다. - *
-     * 스케줄표 컬럼을 등록합니다.
-     * 
- * - * Author : hhhaeri(yhoo0020@gmail.com) - */ - @Transactional(readOnly = true) - @Override - public ScheduleEntity transColumn(ScheduleEntity.transDto scheduleTransDto) { - - OrgEntity orgEntity = orgService.findById(scheduleTransDto.getOrgId()); - FinalTemplEntity finalTemplEntity = finalTemplService.findById(scheduleTransDto.getFinalTemplId()); - - Map content = finalTemplEntity.getContent(); - - // Null 값을 가진 값만 가져오기 - Map nullEntries = new HashMap<>(); - - for (Map.Entry entry : content.entrySet()) { - if (!entry.getValue().equals("")) { - nullEntries.put(entry.getKey(), entry.getValue()); - } - } - - ScheduleEntity scheduleEntity = ScheduleEntity.builder() - .column(nullEntries) - .org(orgEntity) - .build(); - - return scheduleRepository.save(scheduleEntity); - - } - /** * [scheduleServiceImpl] 스케줄표 삭제 함수 * diff --git a/nw/src/main/java/lab/cherry/nw/service/Impl/UserCardServiceImpl.java b/nw/src/main/java/lab/cherry/nw/service/Impl/UserCardServiceImpl.java index b8f567d..b68b6f8 100644 --- a/nw/src/main/java/lab/cherry/nw/service/Impl/UserCardServiceImpl.java +++ b/nw/src/main/java/lab/cherry/nw/service/Impl/UserCardServiceImpl.java @@ -36,7 +36,6 @@ public class UserCardServiceImpl implements UserCardService { private final UserCardRepository userCardRepository; - private final UserRepository userRepository; private final UserService userService; private final WeddinghallService weddinghallService; private final EventService eventService; @@ -200,7 +199,9 @@ public void updateWeddinghallByName(String id, String weddinghall) { */ public void deleteById(String id) { - eventService.deleteById(id); + if(eventService.checkExistsWithEventId(id)) { + eventService.deleteById(id); + } userCardRepository.delete(userCardRepository.findById(id).orElseThrow(() -> new EntityNotFoundException("Usercard with Id " + id + " Not Found."))); } diff --git a/nw/src/main/java/lab/cherry/nw/service/ScheduleService.java b/nw/src/main/java/lab/cherry/nw/service/ScheduleService.java index e90ab99..b2d544f 100644 --- a/nw/src/main/java/lab/cherry/nw/service/ScheduleService.java +++ b/nw/src/main/java/lab/cherry/nw/service/ScheduleService.java @@ -20,7 +20,6 @@ public interface ScheduleService { Page getSchedule(Pageable pageable); // ScheduleEntity scheduleByDate(Instant fromDate, Instant toDate); ScheduleEntity createSchedule(ScheduleEntity.ScheduleCreateDto scheduleCreateDto); - ScheduleEntity transColumn(ScheduleEntity.transDto scheduleTransDto); ScheduleEntity findById(String id); // ScheduleEntity findByName(String name); void deleteById(String id);