diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..a5891cf --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,45 @@ +pipeline { + agent any + tools { + gradle 'gradle8' + } + + stages { + stage('Clean & Build') { + steps { + bat './gradlew clean build -x test' + } + } + + stage('Deploy') { + steps { + bat ''' + echo "checking Tomcat is running" + netstat -ano | find "8005" > nul + + if errorlevel 1 ( + echo "Tomcat is not running, skipping shutdown..." + ) else ( + echo "Tomcat is running, shutting down..." + cd C:\\localhost-tomcat\\apache-tomcat-10.1.36-windows-x64\\apache-tomcat-10.1.36\\bin + call shutdown.bat + ping -n 5 127.0.0.1 > nul + ) + + echo "del" + del /F /Q C:\\localhost-tomcat\\apache-tomcat-10.1.36-windows-x64\\apache-tomcat-10.1.36\\webapps\\*.war + ping -n 3 127.0.0.1 > nul + + echo "copy" + copy /Y /B "%WORKSPACE%\\build\\libs\\*-plain.war" "C:\\localhost-tomcat\\apache-tomcat-10.1.36-windows-x64\\apache-tomcat-10.1.36\\webapps\\ROOT.war" + ping -n 5 127.0.0.1 > nul + + echo "start" + cd /d C:\\localhost-tomcat\\apache-tomcat-10.1.36-windows-x64\\apache-tomcat-10.1.36\\bin + call startup.bat + ping -n 5 127.0.0.1 > nul + ''' + } + } + } +} diff --git a/build.gradle b/build.gradle index 9a467ae..9f8bb2f 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,7 @@ plugins { id 'java' id 'org.springframework.boot' version "${springBootVersion}" id 'io.spring.dependency-management' version "${springDependencyManagementVersion}" + id 'war' } group = "${projectGroup}" @@ -77,6 +78,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-actuator-autoconfigure' /*implementation 'org.springframework.boot:spring-boot-starter-batch'*/ + providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' /** spring-boot-starter-security */ implementation 'org.springframework.boot:spring-boot-starter-security' diff --git a/src/main/java/io/company/localhost/controller/api/BoardController.java b/src/main/java/io/company/localhost/controller/api/BoardController.java index 7b6bbf1..ef5fc4b 100644 --- a/src/main/java/io/company/localhost/controller/api/BoardController.java +++ b/src/main/java/io/company/localhost/controller/api/BoardController.java @@ -80,8 +80,7 @@ public class BoardController { @ParameterCheck @PostMapping public ApiResponse createBoard(@ReqMap MapDto map) { - Long userId = AuthUtil.getUser().getId(); - map.put("MEMBERSEQ", userId); + if (map.containsKey("LOCBRDPWD") && !map.getString("LOCBRDPWD").trim().isEmpty()) { // 빈 값 체크 String rawPassword = map.getString("LOCBRDPWD"); @@ -204,9 +203,6 @@ public class BoardController { @ParameterCheck @PostMapping("/{LOCBRDSEQ}/comment") public ApiResponse addCommentOrReply(@ReqMap MapDto map) { - Long userId = AuthUtil.getUser().getId(); - map.put("MEMBERSEQ", userId); - if (map.containsKey("LOCCMTPWD") && !map.getString("LOCCMTPWD").trim().isEmpty()) { // 빈 값 체크 String rawPassword = map.getString("LOCCMTPWD"); String hashedPassword = passwordEncoder.encode(rawPassword); 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..6817454 100644 --- a/src/main/java/io/company/localhost/controller/api/VacationController.java +++ b/src/main/java/io/company/localhost/controller/api/VacationController.java @@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import io.company.localhost.common.annotation.Member; @@ -29,11 +30,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 +52,6 @@ public class VacationController { throw new IllegalArgumentException("요청 데이터에 누락된 값이 있습니다: " + request); } - // count 필드가 있으면, 해당 값만큼 반복해서 insert Integer count = request.getInt("count"); if (count == null || count < 1) { count = 1; @@ -56,11 +62,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 +91,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(@RequestParam("year") int year) { Long userId = AuthUtil.getUser().getId(); - return ApiResponse.ok(localVacaService.getUserVacationHistory(userId)); + return ApiResponse.ok(localVacaService.selectUserVacationHistory(userId, year)); } - + /** + * 사원별 남은 연차 개수 조회 + */ + @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/api/VoteBoardController.java b/src/main/java/io/company/localhost/controller/api/VoteBoardController.java index f33a200..3aa110c 100644 --- a/src/main/java/io/company/localhost/controller/api/VoteBoardController.java +++ b/src/main/java/io/company/localhost/controller/api/VoteBoardController.java @@ -36,12 +36,12 @@ public class VoteBoardController { @Member @ParameterCheck @GetMapping("getVoteList") - public ApiResponse> getVoteList(@AuthenticationPrincipal MemberVo memberVo,@ReqMap MapDto map) { + public ApiResponse> selectVoteList(@AuthenticationPrincipal MemberVo memberVo,@ReqMap MapDto map) { //userId Long userId = AuthUtil.getUser().getId(); map.put("userId", userId); - PageInfo VoteList = localvoteservice.getVoteList(map); + PageInfo VoteList = localvoteservice.selectVoteList(map); return ApiResponse.ok(VoteList); @@ -90,6 +90,16 @@ public class VoteBoardController { map.put("userId", userId); return ApiResponse.ok(localvoteservice.updateEndData(map)); } - + /** + * 투표 랜덤뽑기 + * @param randomList 랜덤리스트 ,voteid 투표 번호 + * @return + */ + @Member + @PostMapping("randomList") + public ApiResponse randomList(@ReqMap MapDto map) { + return ApiResponse.ok(localvoteservice.updateRandomResult(map)); + } + } diff --git a/src/main/java/io/company/localhost/controller/api/worddictController.java b/src/main/java/io/company/localhost/controller/api/worddictController.java index 606710d..3748e29 100644 --- a/src/main/java/io/company/localhost/controller/api/worddictController.java +++ b/src/main/java/io/company/localhost/controller/api/worddictController.java @@ -88,29 +88,13 @@ public class worddictController { return ApiResponse.ok( worddictyservice.getWordDetail(map)); } /** - * 용어집 카테고리 등록 - * @param CMNCODNAM 용어집 등록 카테고리 이름 - * @return - */ - @Member - @ParameterCheck - @PostMapping("insertCategory") - public ApiResponse insertCategory(@ReqMap MapDto map) { - Long result = commoncodservice.insertCategory(map); - if(result == -1) { - return ApiResponse.okMessage("이미 존재하는 카테고리명입니다."); - } - return ApiResponse.ok(result); - } - /** - * 용어 등록 - * @param WRDDICCAT 카테고리 코드값 ,WRDDICTTL 용어,WRDDICCON 내용 ,WRDDICRIK 링크 + * 용어 등록 - 카테고리 등록 + * @param WRDDICCAT 카테고리 코드값 ,WRDDICTTL 용어,WRDDICCON 내용 ,WRDDICRIK 링크 ,CMNCODNAM 추가 등록 카테고리 이름 * @return */ @Member @PostMapping("insertWord") public ApiResponse insertWord(@AuthenticationPrincipal MemberVo memberVo,@ReqMap MapDto map) { - //userId //Long userId = AuthUtil.getUser().getId(); //임시 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 d3c34ba..221b1a6 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/VotDetailMapper.java b/src/main/java/io/company/localhost/mapper/VotDetailMapper.java index 6ec0e88..76b321d 100644 --- a/src/main/java/io/company/localhost/mapper/VotDetailMapper.java +++ b/src/main/java/io/company/localhost/mapper/VotDetailMapper.java @@ -11,6 +11,6 @@ public interface VotDetailMapper { Long insertdetail(MapDto map); - List getVoteDetails(int locvotSeq); + List selectVoteDetails(int locvotSeq); } diff --git a/src/main/java/io/company/localhost/mapper/VotMemberMapper.java b/src/main/java/io/company/localhost/mapper/VotMemberMapper.java index 4da7f8b..7879e48 100644 --- a/src/main/java/io/company/localhost/mapper/VotMemberMapper.java +++ b/src/main/java/io/company/localhost/mapper/VotMemberMapper.java @@ -11,7 +11,7 @@ public interface VotMemberMapper { void insertmem(MapDto map); - List getVoteMember(Integer locvotSeq); + List selectVoteMember(Integer locvotSeq); diff --git a/src/main/java/io/company/localhost/mapper/VotRecordMapper.java b/src/main/java/io/company/localhost/mapper/VotRecordMapper.java index a9ad991..29e28a4 100644 --- a/src/main/java/io/company/localhost/mapper/VotRecordMapper.java +++ b/src/main/java/io/company/localhost/mapper/VotRecordMapper.java @@ -7,7 +7,7 @@ import io.company.localhost.common.dto.MapDto; @Mapper public interface VotRecordMapper { - int yesVotetotal(MapDto map); + int selectYesVotetotal(MapDto map); Long insertCheckedNums(MapDto map); diff --git a/src/main/java/io/company/localhost/mapper/VotchoiceMapper.java b/src/main/java/io/company/localhost/mapper/VotchoiceMapper.java index 9fa11b2..44ca86a 100644 --- a/src/main/java/io/company/localhost/mapper/VotchoiceMapper.java +++ b/src/main/java/io/company/localhost/mapper/VotchoiceMapper.java @@ -1,5 +1,7 @@ package io.company.localhost.mapper; +import java.util.List; + import org.apache.ibatis.annotations.Mapper; import io.company.localhost.common.dto.MapDto; @@ -9,4 +11,6 @@ public interface VotchoiceMapper { void insertChoice(MapDto map); + List selectVoteResult(Integer locvotSeq); + } 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..f6488c7 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, @Param("year") int year); - List getReceivedVacations(@Param("userId") Long userId); + List selectReceivedVacations(@Param("userId") Long userId, @Param("year") int year); - List getEmployeeRemainingVacation(); + List selectEmployeeRemainingVacation(); - List getCommonCodeNames(); - - List countSentVacations(MapDto map); + List selectSentVacationCount(MapDto map); } diff --git a/src/main/java/io/company/localhost/mapper/localvoteMapper.java b/src/main/java/io/company/localhost/mapper/localvoteMapper.java index 2d93447..07e9adc 100644 --- a/src/main/java/io/company/localhost/mapper/localvoteMapper.java +++ b/src/main/java/io/company/localhost/mapper/localvoteMapper.java @@ -13,9 +13,11 @@ public interface localvoteMapper { Long insertVote(MapDto map); - List getVoteList(MapDto map); + List selectVoteList(MapDto map); Long updateEndData(MapDto map); + Long updateRandomResult(MapDto selectedItem); + } diff --git a/src/main/java/io/company/localhost/service/commoncodService.java b/src/main/java/io/company/localhost/service/commoncodService.java index 06711ab..ff2e280 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; @@ -28,19 +29,11 @@ import lombok.RequiredArgsConstructor; public class commoncodService { private final commoncodMapper commoncodmapper; - + public List selectWordCategory() { return commoncodmapper.selectWordCategory(); } - public Long insertCategory(MapDto map) { - Long count = commoncodmapper.selectcheckCategoryExists(map); - if(count > 0) { - return -1L; - } - return commoncodmapper.insertCategory(map); - } - public List selectColorList(String type) { return commoncodmapper.selectColorList(type); } @@ -60,4 +53,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/localbordService.java b/src/main/java/io/company/localhost/service/localbordService.java index 298d3ba..98b00c8 100644 --- a/src/main/java/io/company/localhost/service/localbordService.java +++ b/src/main/java/io/company/localhost/service/localbordService.java @@ -16,6 +16,7 @@ import com.github.pagehelper.PageInfo; import io.company.localhost.common.dto.MapDto; import io.company.localhost.mapper.localbordMapper; +import io.company.localhost.utils.AuthUtil; import io.company.localhost.utils.PageUtil; import lombok.RequiredArgsConstructor; @@ -54,6 +55,13 @@ public class localbordService { } public BigInteger insertBoard(MapDto map) { + // 익명게시판이면 회원 정보를 null로 설정 + if ("300102".equals(String.valueOf(map.get("LOCBRDTYP")))) { + map.put("MEMBERSEQ", null); + }else { + Long userId = AuthUtil.getUser().getId(); + map.put("MEMBERSEQ", userId); + } boardMapper.insertBoard(map); return (BigInteger) map.get("LOCBRDSEQ"); } @@ -126,6 +134,13 @@ public class localbordService { } public void insertCommentOrReply(MapDto map) { + // 익명게시판이면 회원 정보를 null로 설정 + if ("300102".equals(String.valueOf(map.get("LOCBRDTYP")))) { + map.put("MEMBERSEQ", null); + }else { + Long userId = AuthUtil.getUser().getId(); + map.put("MEMBERSEQ", userId); + } if (map.get("LOCCMTPNT") == null) { map.put("LOCCMTPNT", null); } diff --git a/src/main/java/io/company/localhost/service/localvacaService.java b/src/main/java/io/company/localhost/service/localvacaService.java index bdc2350..05c7a48 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, int year) { + List usedVacations = localvacaMapper.selectUsedVacations(userId,year); + List receivedVacations = localvacaMapper.selectReceivedVacations(userId,year); 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/java/io/company/localhost/service/localvoteService.java b/src/main/java/io/company/localhost/service/localvoteService.java index e4ccbc5..3e4aa3c 100644 --- a/src/main/java/io/company/localhost/service/localvoteService.java +++ b/src/main/java/io/company/localhost/service/localvoteService.java @@ -2,12 +2,16 @@ package io.company.localhost.service; import java.util.ArrayList; import java.util.List; +import java.util.Random; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import com.fasterxml.jackson.databind.ObjectMapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import io.company.localhost.common.dto.ApiResponse; import io.company.localhost.common.dto.MapDto; import io.company.localhost.mapper.VotDetailMapper; import io.company.localhost.mapper.VotMemberMapper; @@ -30,7 +34,6 @@ public class localvoteService { public Long insertVote(MapDto map) { Long result = 0L; - int voteIdInt = 0 ; if(map.get("voteId") != null) { voteIdInt = (int) map.get("voteId"); @@ -48,12 +51,11 @@ public class localvoteService { } return result; } - - public PageInfo getVoteList(MapDto map) { + public PageInfo selectVoteList(MapDto map) { //투표 목록조회 int page = map.getString("page") != null ? Integer.parseInt(map.getString("page")) : 1; PageHelper.startPage(page, 10); - PageInfo localvote = PageUtil.redefineNavigation(new PageInfo<>(localvotemapper.getVoteList(map),10)); + PageInfo localvote = PageUtil.redefineNavigation(new PageInfo<>(localvotemapper.selectVoteList(map),10)); List resultList = new ArrayList<>(); List voteList = localvote.getList(); @@ -63,15 +65,19 @@ public class localvoteService { voteMap.put("localVote", vote); Integer locvotSeq = (Integer) vote.get("LOCVOTSEQ"); //투표 항목조회 - List voteDetails = votdetailmapper.getVoteDetails(locvotSeq); + List voteDetails = votdetailmapper.selectVoteDetails(locvotSeq); //투표 가능 멤버 조회 - List voteMembers = votmembermapper.getVoteMember(locvotSeq); + List voteMembers = votmembermapper.selectVoteMember(locvotSeq); + //투표 결과 조회 + List voteResult = votchoicemapper.selectVoteResult(locvotSeq); + voteMap.put("voteDetails", voteDetails); voteMap.put("voteMembers", voteMembers); + voteMap.put("voteResult", voteResult); map.put("id",locvotSeq); //투표 여부 - int yesVotetotal = votrecordmapper.yesVotetotal(map); + int yesVotetotal = votrecordmapper.selectYesVotetotal(map); voteMap.put("yesVotetotal", yesVotetotal); resultList.add(voteMap); @@ -94,5 +100,23 @@ public class localvoteService { return localvotemapper.updateEndData(map); } + public Long updateRandomResult(MapDto map) { + + Long result = 0L; + ObjectMapper objectMapper = new ObjectMapper(); + Object randomListObj = map.get("randomList"); + if (randomListObj instanceof List) { + List rawList = (List) randomListObj; + if (!rawList.isEmpty()) { + //랜덤뽑기 + Object selectedObj = rawList.get(new Random().nextInt(rawList.size())); + MapDto selectedItem = objectMapper.convertValue(selectedObj, MapDto.class); + selectedItem.put("voteid", map.get("voteid")); + //투표결과 저장 + result = localvotemapper.updateRandomResult(selectedItem); + } + } + return result; + } } diff --git a/src/main/java/io/company/localhost/service/worddictyService.java b/src/main/java/io/company/localhost/service/worddictyService.java index c19987a..fddf11e 100644 --- a/src/main/java/io/company/localhost/service/worddictyService.java +++ b/src/main/java/io/company/localhost/service/worddictyService.java @@ -21,6 +21,7 @@ import java.util.List; import org.springframework.stereotype.Service; import io.company.localhost.common.dto.MapDto; +import io.company.localhost.mapper.commoncodMapper; import io.company.localhost.mapper.worddictyMapper; import lombok.RequiredArgsConstructor; @@ -29,6 +30,8 @@ import lombok.RequiredArgsConstructor; public class worddictyService { private final worddictyMapper worddictymapper; + private final commoncodMapper commoncodmapper; + public List getWordList(MapDto map) { List wordList = worddictymapper.getWordList(map); @@ -59,6 +62,10 @@ public class worddictyService { } public Long insertWord(MapDto map) { + + if (map.containsKey("CMNCODNAM") && map.get("CMNCODNAM") != null) { + commoncodmapper.insertCategory(map); + } return worddictymapper.insertWord(map); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 92e1fa3..7060bfc 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -81,6 +81,11 @@ server: http-only: false secure: true same-site: NONE + partitioned: true + ssl: + key-store: classpath:localhost.p12 + key-store-password: pmgk1234 + key-store-type: PKCS12 logging: level: diff --git a/src/main/resources/localhost.p12 b/src/main/resources/localhost.p12 new file mode 100644 index 0000000..8006561 Binary files /dev/null and b/src/main/resources/localhost.p12 differ diff --git a/src/main/resources/mapper/VotDetailMapper.xml b/src/main/resources/mapper/VotDetailMapper.xml index b933cbd..472a3e5 100644 --- a/src/main/resources/mapper/VotDetailMapper.xml +++ b/src/main/resources/mapper/VotDetailMapper.xml @@ -16,7 +16,7 @@ ) - select * from diff --git a/src/main/resources/mapper/VotMemberMapper.xml b/src/main/resources/mapper/VotMemberMapper.xml index ef68c2f..a9393cd 100644 --- a/src/main/resources/mapper/VotMemberMapper.xml +++ b/src/main/resources/mapper/VotMemberMapper.xml @@ -11,7 +11,7 @@ (#{voteId}, #{user.id}) - SELECT a.*, n.*, diff --git a/src/main/resources/mapper/VotRecordMapper.xml b/src/main/resources/mapper/VotRecordMapper.xml index 8e00221..16cf2e8 100644 --- a/src/main/resources/mapper/VotRecordMapper.xml +++ b/src/main/resources/mapper/VotRecordMapper.xml @@ -1,7 +1,7 @@ - select count(*) as yesvote from votrecord diff --git a/src/main/resources/mapper/VotchoiceMapper.xml b/src/main/resources/mapper/VotchoiceMapper.xml index 817a6b3..9838833 100644 --- a/src/main/resources/mapper/VotchoiceMapper.xml +++ b/src/main/resources/mapper/VotchoiceMapper.xml @@ -1,8 +1,7 @@ - - + INSERT INTO votchoice ( LOCVOTSEQ @@ -16,5 +15,21 @@ ) + 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/localbordMapper.xml b/src/main/resources/mapper/localbordMapper.xml index 2bc1946..04f1409 100644 --- a/src/main/resources/mapper/localbordMapper.xml +++ b/src/main/resources/mapper/localbordMapper.xml @@ -74,7 +74,8 @@ b.LOCBRDUDT AS date, b.LOCBRDTYP AS type, b.LOCBRDCNT AS cnt, - m.MEMBERNAM AS author + m.MEMBERNAM AS author, + m.MEMBERSEQ AS authorId FROM localbord b LEFT JOIN netmember m ON b.MEMBERSEQ = m.MEMBERSEQ WHERE b.LOCBRDSEQ = #{boardId} @@ -137,7 +138,8 @@ SELECT c.LOCCMTSEQ,c.LOCBRDSEQ,c.LOCCMTPNT,c.LOCCMTRPY, c.LOCCMTUDT,c.LOCCMTPWD,c.LOCCMTRDT,c.LOCCMTPNT, - m.MEMBERNAM AS author + m.MEMBERNAM AS author, + m.MEMBERSEQ AS authorId FROM localcomt c LEFT JOIN netmember m ON c.MEMBERSEQ = m.MEMBERSEQ WHERE LOCBRDSEQ = #{LOCBRDSEQ} and LOCCMTPNT = 1 @@ -149,7 +151,8 @@ SELECT c.LOCCMTSEQ,c.LOCBRDSEQ,c.LOCCMTPNT,c.LOCCMTRPY, c.LOCCMTUDT,c.LOCCMTPWD,c.LOCCMTRDT,c.LOCCMTPNT, - m.MEMBERNAM AS author + m.MEMBERNAM AS author, + m.MEMBERSEQ AS authorId FROM localcomt c LEFT JOIN netmember m ON c.MEMBERSEQ = m.MEMBERSEQ WHERE LOCCMTPNT = #{LOCCMTPNT} and LOCCMTPNT != 1 diff --git a/src/main/resources/mapper/localvacaMapper.xml b/src/main/resources/mapper/localvacaMapper.xml index 88a948d..b8dde0c 100644 --- a/src/main/resources/mapper/localvacaMapper.xml +++ b/src/main/resources/mapper/localvacaMapper.xml @@ -15,15 +15,15 @@ - SELECT LOCVACSEQ, MEMBERSEQ, LOCVACUDT, LOCVACTYP, LOCVACRMM FROM localvaca WHERE DATE_FORMAT(LOCVACUDT, '%Y-%m') = CONCAT(#{year}, '-', LPAD(#{month}, 2, '0')) - + SELECT LOCVACSEQ AS id, LOCVACUDT AS date, LOCVACTYP AS type, LOCVACRMM AS receiverId, -- 반차(700101, 700102)는 0.5, 연차(700103)는 1로 계산 SUM(CASE WHEN LOCVACTYP IN ('700101', '700102') THEN 0.5 @@ -32,16 +32,18 @@ END) AS used_quota FROM localvaca WHERE MEMBERSEQ = #{userId} + AND YEAR(LOCVACUDT) = #{year} AND DATE_FORMAT(LOCVACUDT, '%Y') = DATE_FORMAT(CURDATE(), '%Y') GROUP BY LOCVACUDT, LOCVACTYP, LOCVACRMM ORDER BY LOCVACUDT DESC - SELECT LOCVACUDT AS date, LOCVACTYP AS type, MEMBERSEQ AS senderId FROM localvaca WHERE LOCVACRMM = #{userId} + AND YEAR(LOCVACUDT) = #{year} AND DATE_FORMAT(LOCVACUDT, '%Y') = DATE_FORMAT(CURDATE(), '%Y') GROUP BY LOCVACUDT, LOCVACTYP, MEMBERSEQ ORDER BY LOCVACUDT DESC @@ -49,7 +51,7 @@ - - - - - SELECT COUNT(*) as count FROM localvaca WHERE MEMBERSEQ = #{userId} AND LOCVACRMM = #{receiverId} diff --git a/src/main/resources/mapper/localvoteMapper.xml b/src/main/resources/mapper/localvoteMapper.xml index ad4af19..4766735 100644 --- a/src/main/resources/mapper/localvoteMapper.xml +++ b/src/main/resources/mapper/localvoteMapper.xml @@ -22,7 +22,7 @@ ,#{votemMltiIs} ) - select a.* ,DATE_FORMAT(a.LOCVOTRDT, '%Y-%m-%d %H:%i') AS formatted_LOCVOTRDT @@ -49,4 +49,11 @@ LOCVOTDDT = now() WHERE LOCVOTSEQ = #{endVoteId} + + UPDATE + localvote + SET + LOCVOTRES = #{LOCVOTCON} + WHERE LOCVOTSEQ = #{voteid} +