diff --git a/src/main/java/io/company/localhost/controller/api/VacationController.java b/src/main/java/io/company/localhost/controller/api/VacationController.java index 041cf3f..f0d9c3a 100644 --- a/src/main/java/io/company/localhost/controller/api/VacationController.java +++ b/src/main/java/io/company/localhost/controller/api/VacationController.java @@ -29,11 +29,17 @@ import lombok.extern.slf4j.Slf4j; public class VacationController { private final localvacaService localVacaService; + private final commoncodService commonCodService; + /** + * 휴가 선물하기 + * @ReqMap map 요청 파라미터 (LOCVACTYP, LOCVACRDT, LOCVACUDT, LOCVACRMM, MEMBERSEQ) + * @return 결과 메시지 + */ @Member @ParameterCheck @PostMapping - public ApiResponse saveVacations(@RequestBody List list) { + public ApiResponse insertVacations(@RequestBody List list) { Long user = AuthUtil.getUser().getId(); for (MapDto request : list) { String date = request.getString("date"); @@ -45,7 +51,6 @@ public class VacationController { throw new IllegalArgumentException("요청 데이터에 누락된 값이 있습니다: " + request); } - // count 필드가 있으면, 해당 값만큼 반복해서 insert Integer count = request.getInt("count"); if (count == null || count < 1) { count = 1; @@ -56,11 +61,16 @@ public class VacationController { } return ApiResponse.ok("모든 휴가가 성공적으로 저장되었습니다."); } - + + /** + * 휴가 저장/수정 + * @ReqMap map 요청 파라미터 (LOCVACTYP, LOCVACRDT, LOCVACUDT, MEMBERSEQ / LOCVACSEQ) + * @return 결과 메시지 + */ @Member @ParameterCheck @PostMapping("/batchUpdate") - public ApiResponse batchUpdateVacations(@ReqMap MapDto map) { + public ApiResponse saveVacations(@ReqMap MapDto map) { Long user = AuthUtil.getUser().getId(); List addRequests = map.getList("add", MapDto.class); List deleteIds = map.getList("delete", Long.class); @@ -80,56 +90,73 @@ public class VacationController { } /** - * 특정 연월에 대한 휴가 데이터 조회 + * 전체 사원의 휴가 조회 + * @param year, month + * @return 휴가 데이터 목록 */ @Member @ParameterCheck @GetMapping("/list/{year}/{month}") - public List getVacations(@PathVariable("year") int year, @PathVariable("month") int month) { - return localVacaService.getVacationList(year, month); + public List selectVacations(@PathVariable("year") int year, @PathVariable("month") int month) { + return localVacaService.selectVacationList(year, month); } /** - * 특정 연월에 대한 공휴일 데이터 조회 + * 공휴일 정보 조회 + * @param year, month + * @return 공휴일 데이터 목록 */ @Member @ParameterCheck @GetMapping("/{year}/{month}") - public List getHolidays(@PathVariable("year") int year, @PathVariable("month") int month) { - return localVacaService.getHolidays(year, month); + public List selectHolidays(@PathVariable("year") int year, @PathVariable("month") int month) { + return localVacaService.selectHolidays(year, month); } /** - * 내 연차 사용 내역 조회 + * 로그인한 회원의 연차 사용 내역 조회 */ @Member @ParameterCheck @GetMapping("/history") - public ApiResponse>> getUserVacationHistory() { + public ApiResponse>> selectUserVacationHistory() { Long userId = AuthUtil.getUser().getId(); - return ApiResponse.ok(localVacaService.getUserVacationHistory(userId)); + return ApiResponse.ok(localVacaService.selectUserVacationHistory(userId)); } - + /** + * 사원별 남은 연차 개수 조회 + */ + @Member + @ParameterCheck @GetMapping("/remaining") - public ApiResponse> getRemainingVacation() { - List employeeVacations = localVacaService.getEmployeeRemainingVacation(); + public ApiResponse> selectRemainingVacation() { + List employeeVacations = localVacaService.selectEmployeeRemainingVacation(); return ApiResponse.ok(employeeVacations); } + /** + * 휴가 종류 조회(공통코드) + */ + @Member + @ParameterCheck @GetMapping("/codes") - public ApiResponse> getVacationCodeNames() { - return ApiResponse.ok(localVacaService.getCommonCodeList()); + public ApiResponse> selectVacationType() { + return ApiResponse.ok(commonCodService.selectVacationType()); } + /** + * 사원 별 남은 보내기개수 + * @ReqMap map 요청 파라미터 (LOCVACRMM, MEMBERSEQ) + * @return 남은 선물보내기 개수 + */ + @Member + @ParameterCheck @GetMapping("/sent") - public ApiResponse> getSentVacations(@ReqMap MapDto map) { - Long userId = AuthUtil.getUser().getId(); // 현재 로그인한 사용자 ID - map.put("userId", userId); - List sentCount = localVacaService.getSentVacationCount(map); - - - return ApiResponse.ok(sentCount); + public ApiResponse> selectSentVacationCount(@ReqMap MapDto map) { + Long userId = AuthUtil.getUser().getId(); + map.put("userId", userId); + return ApiResponse.ok(localVacaService.selectSentVacationCount(map)); } } diff --git a/src/main/java/io/company/localhost/controller/common/UserController.java b/src/main/java/io/company/localhost/controller/common/UserController.java index 5dd9790..4a53dc2 100644 --- a/src/main/java/io/company/localhost/controller/common/UserController.java +++ b/src/main/java/io/company/localhost/controller/common/UserController.java @@ -15,6 +15,27 @@ *************************************************************/ package io.company.localhost.controller.common; +import static org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.security.authentication.RememberMeAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.context.SecurityContextHolderStrategy; +import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PatchMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + import io.company.localhost.common.annotation.Admin; import io.company.localhost.common.annotation.Guest; import io.company.localhost.common.annotation.Member; @@ -33,26 +54,6 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.security.authentication.RememberMeAuthenticationToken; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.annotation.AuthenticationPrincipal; -import org.springframework.security.core.context.SecurityContext; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.core.context.SecurityContextHolderStrategy; -import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PatchMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY; @Slf4j @RestController @@ -71,7 +72,7 @@ public class UserController { */ @ParameterCheck @GetMapping("/color") - public ApiResponse> selectColorList(String type) { + public ApiResponse> selectColorList(@RequestParam("type") String type) { List ColorList = commoncodservice.selectColorList(type); return ApiResponse.ok(ColorList); } @@ -123,7 +124,7 @@ public class UserController { * */ @GetMapping("/checkId") - public ApiResponse selectCheckId(@RequestParam String memberIds) { + public ApiResponse selectCheckId(@RequestParam("memberIds") String memberIds) { boolean isDuplicate = netmemberservice.selectCheckId(memberIds); return ApiResponse.ok(!isDuplicate); } diff --git a/src/main/java/io/company/localhost/mapper/commoncodMapper.java b/src/main/java/io/company/localhost/mapper/commoncodMapper.java index 00184da..8ba1e94 100644 --- a/src/main/java/io/company/localhost/mapper/commoncodMapper.java +++ b/src/main/java/io/company/localhost/mapper/commoncodMapper.java @@ -42,4 +42,6 @@ public interface commoncodMapper { List selectCategories(); Long selectcheckCategoryExists(MapDto map); + + List selectVacationType(); } diff --git a/src/main/java/io/company/localhost/mapper/localvacaMapper.java b/src/main/java/io/company/localhost/mapper/localvacaMapper.java index 00b8fb1..f18e4e5 100644 --- a/src/main/java/io/company/localhost/mapper/localvacaMapper.java +++ b/src/main/java/io/company/localhost/mapper/localvacaMapper.java @@ -14,17 +14,15 @@ public interface localvacaMapper { void deleteVacation(Long vacationId); - List findVacations(@Param("year") int year, @Param("month") int month); + List selectVacations(@Param("year") int year, @Param("month") int month); - List getUsedVacations(@Param("userId") Long userId); + List selectUsedVacations(@Param("userId") Long userId); - List getReceivedVacations(@Param("userId") Long userId); + List selectReceivedVacations(@Param("userId") Long userId); - List getEmployeeRemainingVacation(); + List selectEmployeeRemainingVacation(); - List getCommonCodeNames(); - - List countSentVacations(MapDto map); + List selectSentVacationCount(MapDto map); } diff --git a/src/main/java/io/company/localhost/service/commoncodService.java b/src/main/java/io/company/localhost/service/commoncodService.java index 06711ab..c09f81e 100644 --- a/src/main/java/io/company/localhost/service/commoncodService.java +++ b/src/main/java/io/company/localhost/service/commoncodService.java @@ -14,6 +14,7 @@ *************************************************************/ package io.company.localhost.service; +import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Service; @@ -60,4 +61,11 @@ public class commoncodService { public List selectCategoryList() { return commoncodmapper.selectCategories(); } + + public List selectVacationType() { + List codeList = commoncodmapper.selectVacationType(); + + // 데이터가 비어있으면 빈 리스트 반환 (null 방지) + return (codeList != null) ? codeList : new ArrayList<>(); + } } diff --git a/src/main/java/io/company/localhost/service/localvacaService.java b/src/main/java/io/company/localhost/service/localvacaService.java index bdc2350..a744c71 100644 --- a/src/main/java/io/company/localhost/service/localvacaService.java +++ b/src/main/java/io/company/localhost/service/localvacaService.java @@ -43,14 +43,14 @@ public class localvacaService { localvacaMapper.deleteVacation(vacationId); } - public List getVacationList(int year, int month) { - return localvacaMapper.findVacations(year, month); + public List selectVacationList(int year, int month) { + return localvacaMapper.selectVacations(year, month); } /** * 🔹 특정 연월에 대한 공휴일 데이터 조회 */ - public List getHolidays(int year, int month) { + public List selectHolidays(int year, int month) { // ✅ ServiceKey를 디코딩해서 사용 String decodedServiceKey = URLDecoder.decode(serviceKey, StandardCharsets.UTF_8); System.out.println("📌 디코딩된 ServiceKey: " + decodedServiceKey); @@ -158,9 +158,9 @@ public class localvacaService { /** * 내 연차 사용 내역 조회 (사용한 연차 & 받은 연차) */ - public Map> getUserVacationHistory(Long userId) { - List usedVacations = localvacaMapper.getUsedVacations(userId); - List receivedVacations = localvacaMapper.getReceivedVacations(userId); + public Map> selectUserVacationHistory(Long userId) { + List usedVacations = localvacaMapper.selectUsedVacations(userId); + List receivedVacations = localvacaMapper.selectReceivedVacations(userId); Map> history = new HashMap<>(); history.put("usedVacations", usedVacations); @@ -172,8 +172,8 @@ public class localvacaService { /** * 사원별 남은 연차 개수 조회 */ - public List getEmployeeRemainingVacation() { - List employeeVacations = localvacaMapper.getEmployeeRemainingVacation(); + public List selectEmployeeRemainingVacation() { + List employeeVacations = localvacaMapper.selectEmployeeRemainingVacation(); return employeeVacations.stream().map(emp -> { // 🔹 hireDate 변환 (포맷 정규화) @@ -191,7 +191,7 @@ public class localvacaService { } // 🔹 총 연차 개수 계산 - int totalVacation = calculateTotalVacation(hireDate); + int totalVacation = procCalculateTotalVacation(hireDate); // 🔹 사용한 연차 개수 처리 (null 방지) double usedVacation = emp.get("used_quota") != null ? ((Number) emp.get("used_quota")).doubleValue() : 0.0; @@ -215,7 +215,7 @@ public class localvacaService { /** * 총 연차 계산 로직 */ - private int calculateTotalVacation(LocalDate hireDate) { + private int procCalculateTotalVacation(LocalDate hireDate) { LocalDate today = LocalDate.now(); int yearsWorked = hireDate.until(today).getYears(); @@ -237,14 +237,7 @@ public class localvacaService { return totalVacation; } - public List getCommonCodeList() { - List codeList = localvacaMapper.getCommonCodeNames(); - - // 데이터가 비어있으면 빈 리스트 반환 (null 방지) - return (codeList != null) ? codeList : new ArrayList<>(); - } - - public List getSentVacationCount(MapDto map) { - return localvacaMapper.countSentVacations(map); + public List selectSentVacationCount(MapDto map) { + return localvacaMapper.selectSentVacationCount(map); } } diff --git a/src/main/resources/mapper/commoncodMapper.xml b/src/main/resources/mapper/commoncodMapper.xml index 2b11e3f..a020953 100644 --- a/src/main/resources/mapper/commoncodMapper.xml +++ b/src/main/resources/mapper/commoncodMapper.xml @@ -120,4 +120,11 @@ where CMNCODNAM = #{CMNCODNAM} + + + diff --git a/src/main/resources/mapper/localvacaMapper.xml b/src/main/resources/mapper/localvacaMapper.xml index 88a948d..c6f0151 100644 --- a/src/main/resources/mapper/localvacaMapper.xml +++ b/src/main/resources/mapper/localvacaMapper.xml @@ -15,14 +15,14 @@ - SELECT LOCVACSEQ, MEMBERSEQ, LOCVACUDT, LOCVACTYP, LOCVACRMM FROM localvaca WHERE DATE_FORMAT(LOCVACUDT, '%Y-%m') = CONCAT(#{year}, '-', LPAD(#{month}, 2, '0')) - SELECT LOCVACUDT AS date, LOCVACTYP AS type, LOCVACRMM AS receiverId, -- 반차(700101, 700102)는 0.5, 연차(700103)는 1로 계산 SUM(CASE @@ -38,7 +38,7 @@ - SELECT LOCVACUDT AS date, LOCVACTYP AS type, MEMBERSEQ AS senderId FROM localvaca WHERE LOCVACRMM = #{userId} @@ -49,7 +49,7 @@ - - - - - SELECT COUNT(*) as count FROM localvaca WHERE MEMBERSEQ = #{userId} AND LOCVACRMM = #{receiverId}