From 92e147a7df2cf81004bcd09d23db4702b9d535eb Mon Sep 17 00:00:00 2001 From: nevermoregb Date: Mon, 31 Mar 2025 13:14:37 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A9=94=EC=9D=B8=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/MainController.java | 62 ++++++++++++ .../localhost/mapper/LocalevntMapper.java | 20 ++++ .../localhost/mapper/NetmemberMapper.java | 5 + .../localhost/mapper/commoncodMapper.java | 2 + .../localhost/mapper/localvacaMapper.java | 2 + .../localhost/service/LocalevntService.java | 53 ++++++++++ .../localhost/service/MainService.java | 98 +++++++++++++++++++ .../localhost/service/NetmemberService.java | 22 +++++ .../localhost/service/commoncodService.java | 11 +++ .../localhost/service/localvacaService.java | 4 + .../company/localhost/utils/StringUtil.java | 10 +- src/main/resources/mapper/LocalevntMapper.xml | 57 +++++++++++ src/main/resources/mapper/NetmemberMapper.xml | 33 +++++++ src/main/resources/mapper/commoncodMapper.xml | 16 +++ src/main/resources/mapper/localvacaMapper.xml | 31 +++++- 15 files changed, 424 insertions(+), 2 deletions(-) create mode 100644 src/main/java/io/company/localhost/controller/api/MainController.java create mode 100644 src/main/java/io/company/localhost/mapper/LocalevntMapper.java create mode 100644 src/main/java/io/company/localhost/service/LocalevntService.java create mode 100644 src/main/java/io/company/localhost/service/MainService.java create mode 100644 src/main/resources/mapper/LocalevntMapper.xml diff --git a/src/main/java/io/company/localhost/controller/api/MainController.java b/src/main/java/io/company/localhost/controller/api/MainController.java new file mode 100644 index 0000000..817d573 --- /dev/null +++ b/src/main/java/io/company/localhost/controller/api/MainController.java @@ -0,0 +1,62 @@ +package io.company.localhost.controller.api; + +import java.util.List; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import io.company.localhost.common.annotation.Admin; +import io.company.localhost.common.annotation.Member; +import io.company.localhost.common.annotation.ParameterCheck; +import io.company.localhost.common.annotation.ReqMap; +import io.company.localhost.common.dto.ApiResponse; +import io.company.localhost.common.dto.MapDto; +import io.company.localhost.service.MainService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/main") +public class MainController { + + private final MainService mainService; + + @Member + @ParameterCheck + @GetMapping("/category") + public ApiResponse> selectMainMenuCategory() { + return mainService.selectMainMenuCategory(); + } + + @Member + @ParameterCheck + @GetMapping("/eventList") + public ApiResponse selectEventList(@ReqMap MapDto map) { + return mainService.selectEventList(map); + } + + @Member + @ParameterCheck + @PostMapping("/toggleEvent") + public ApiResponse toggleEvent(@ReqMap MapDto map) { + return mainService.toggleEvent(map); + } + + @Member + @ParameterCheck + @PostMapping("/inserEvent") + public ApiResponse inserEvent(@ReqMap MapDto map) { + return mainService.inserEvent(map); + } + + @Admin + @ParameterCheck + @GetMapping("/registerMemberList") + public ApiResponse> registerMemberList() { + return mainService.registerMemberList(); + } +} diff --git a/src/main/java/io/company/localhost/mapper/LocalevntMapper.java b/src/main/java/io/company/localhost/mapper/LocalevntMapper.java new file mode 100644 index 0000000..db34fee --- /dev/null +++ b/src/main/java/io/company/localhost/mapper/LocalevntMapper.java @@ -0,0 +1,20 @@ +package io.company.localhost.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Mapper; + +import io.company.localhost.common.dto.MapDto; + +@Mapper +public interface LocalevntMapper { + + int insertEvent(MapDto map); + + int selectCheckEvent(MapDto map); + + List selectEventList(MapDto map); + + int deleteEvent(MapDto map); + +} diff --git a/src/main/java/io/company/localhost/mapper/NetmemberMapper.java b/src/main/java/io/company/localhost/mapper/NetmemberMapper.java index c7b2aa5..0ac83dd 100644 --- a/src/main/java/io/company/localhost/mapper/NetmemberMapper.java +++ b/src/main/java/io/company/localhost/mapper/NetmemberMapper.java @@ -18,6 +18,7 @@ import java.util.List; import org.apache.ibatis.annotations.Mapper; +import io.company.localhost.common.dto.ApiResponse; import io.company.localhost.common.dto.MapDto; import io.company.localhost.vo.MemberVo; @@ -46,4 +47,8 @@ public interface NetmemberMapper { void updateUserRole(Long id, String role); + List selectMemberBirthDay(MapDto map); + + List selectRegisterMemberList(); + } diff --git a/src/main/java/io/company/localhost/mapper/commoncodMapper.java b/src/main/java/io/company/localhost/mapper/commoncodMapper.java index 8ba1e94..e4e306f 100644 --- a/src/main/java/io/company/localhost/mapper/commoncodMapper.java +++ b/src/main/java/io/company/localhost/mapper/commoncodMapper.java @@ -44,4 +44,6 @@ public interface commoncodMapper { Long selectcheckCategoryExists(MapDto map); List selectVacationType(); + + List selectCodeList(MapDto map); } diff --git a/src/main/java/io/company/localhost/mapper/localvacaMapper.java b/src/main/java/io/company/localhost/mapper/localvacaMapper.java index ad7643b..5cdd2c1 100644 --- a/src/main/java/io/company/localhost/mapper/localvacaMapper.java +++ b/src/main/java/io/company/localhost/mapper/localvacaMapper.java @@ -41,6 +41,8 @@ public interface localvacaMapper { Long findVacationIdByDate(@Param("userId") Long employeeId, @Param("date") String date); void updateVacation(MapDto vacation); + + List selectMemberVacationsInMain(@Param("year") int year, @Param("month") int month); } diff --git a/src/main/java/io/company/localhost/service/LocalevntService.java b/src/main/java/io/company/localhost/service/LocalevntService.java new file mode 100644 index 0000000..5ebcd0d --- /dev/null +++ b/src/main/java/io/company/localhost/service/LocalevntService.java @@ -0,0 +1,53 @@ +/************************************************************ + * + * @packageName : io.company.localhost.service + * @fileName : LocalbordService.java + * @author : 박성용 + * @date : 25.03.30 + * @description : + * + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 25.03.30 박성용 최초 생성 + * + *************************************************************/ + +package io.company.localhost.service; + +import java.util.List; + +import org.springframework.stereotype.Service; + +import io.company.localhost.common.dto.ApiResponse; +import io.company.localhost.common.dto.MapDto; +import io.company.localhost.mapper.LocalevntMapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Service +@RequiredArgsConstructor +@Slf4j +public class LocalevntService { + + private final LocalevntMapper localevntMapper; + + + public int insertEvent(MapDto map) { + return localevntMapper.insertEvent(map); + } + + public int selectCheckEvent(MapDto map) { + return localevntMapper.selectCheckEvent(map); + } + + public List selectEventList(MapDto map) { + return localevntMapper.selectEventList(map); + } + + public int deleteEvent(MapDto map) { + return localevntMapper.deleteEvent(map); + } + + +} diff --git a/src/main/java/io/company/localhost/service/MainService.java b/src/main/java/io/company/localhost/service/MainService.java new file mode 100644 index 0000000..08950e7 --- /dev/null +++ b/src/main/java/io/company/localhost/service/MainService.java @@ -0,0 +1,98 @@ +/************************************************************ + * + * @packageName : io.company.localhost.CommutersService + * @fileName : MainService.java + * @author : 박성용 + * @date : 25.03.17 + * @description : 메인페이지 비지니스 로직 + * + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 25.03.17 박성용 최초 생성 + * + *************************************************************/ +package io.company.localhost.service; + +import java.util.List; + +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import io.company.localhost.common.dto.ApiResponse; +import io.company.localhost.common.dto.MapDto; +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class MainService { + + private final commoncodService commoncodService; + + private final NetmemberService netmemberService; + + private final localvacaService localvacaService; + + private final LocalevntService localevntService; + + + /** + * 메인페이지 카테고리 메뉴 조회 + * + * @return + */ + public ApiResponse> selectMainMenuCategory() { + return ApiResponse.ok(commoncodService.selectCodeList("300", "200")); + } + + /** + * 메인페이지 이벤트 리스트 + * + * @param map (year, month) + * @return { 생일자, 휴가자, 생일파티, 회식, 티타임, 워크샵 } 일정 + */ + public ApiResponse selectEventList(MapDto map) { + int year = Integer.valueOf(map.getString("year")); + int month = Integer.valueOf(map.getString("month")); + + map.put("memberBirthdayList", netmemberService.selectMemberBirthDay(map)); //생일자 조회 + map.put("memberVacationList", localvacaService.selectMemberVacationsInMain(year, month)); //휴가자 조회 + map.put("eventList", localevntService.selectEventList(map)); + + return ApiResponse.ok(map); + } + + /** + * 이벤트 생성/삭제 + * + * @param map (code, date) + * @return + */ + public ApiResponse toggleEvent(MapDto map) { + if(localevntService.selectCheckEvent(map) > 0) { + localevntService.deleteEvent(map); + return ApiResponse.okMessage("이벤트 삭제"); + //return ApiResponse.error(HttpStatus.CONFLICT, "이미 동일한 이벤트가 존재합니다"); + } else { +// localevntService.insertEvent(map); +// return ApiResponse.okMessage("이벤트 추가"); + return ApiResponse.error(HttpStatus.CONFLICT, "해당 이벤트가 존재하지 않습니다"); + } + } + + public ApiResponse inserEvent(MapDto map) { + if(localevntService.selectCheckEvent(map) > 0) { + return ApiResponse.error(HttpStatus.CONFLICT, "이미 동일한 이벤트가 존재합니다"); + } else { + localevntService.insertEvent(map); + return ApiResponse.okMessage("이벤트 추가"); + } + } + + public ApiResponse> registerMemberList() { + return ApiResponse.ok(netmemberService.selectRegisterMemberList()); + } + + + +} diff --git a/src/main/java/io/company/localhost/service/NetmemberService.java b/src/main/java/io/company/localhost/service/NetmemberService.java index 045da8d..9e689ea 100644 --- a/src/main/java/io/company/localhost/service/NetmemberService.java +++ b/src/main/java/io/company/localhost/service/NetmemberService.java @@ -21,6 +21,7 @@ import org.springframework.security.crypto.password.DelegatingPasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import io.company.localhost.common.dto.ApiResponse; import io.company.localhost.common.dto.MapDto; import io.company.localhost.mapper.NetmemberMapper; import io.company.localhost.mapper.PromemberMapper; @@ -179,5 +180,26 @@ public class NetmemberService { System.out.println("암호화된 비밀번호: " + encodedPassword); return memberMapper.updatePassword(map) > 0; } + + /** + * 멤버 생일 조회 + * + * @param map (year, month) + * @return + */ + public List selectMemberBirthDay(MapDto map) { + return memberMapper.selectMemberBirthDay(map); + } + + + /** + * 등록 대기 멤버 조회 + * + * @param map + * @return + */ + public List selectRegisterMemberList() { + return memberMapper.selectRegisterMemberList(); + } } diff --git a/src/main/java/io/company/localhost/service/commoncodService.java b/src/main/java/io/company/localhost/service/commoncodService.java index ff2e280..b469273 100644 --- a/src/main/java/io/company/localhost/service/commoncodService.java +++ b/src/main/java/io/company/localhost/service/commoncodService.java @@ -22,6 +22,7 @@ import org.springframework.stereotype.Service; import io.company.localhost.common.dto.MapDto; import io.company.localhost.common.exception.NotFoundHandler; import io.company.localhost.mapper.commoncodMapper; +import io.company.localhost.utils.StringUtil; import lombok.RequiredArgsConstructor; @Service @@ -60,4 +61,14 @@ public class commoncodService { // 데이터가 비어있으면 빈 리스트 반환 (null 방지) return (codeList != null) ? codeList : new ArrayList<>(); } + + public List selectCodeList(String code1, String code2) { + if(!StringUtil.isNumeric(code1) || !StringUtil.isNumeric(code2)) throw new IllegalArgumentException("파라미터는 반드시 숫자 타입이여야 함"); + + MapDto map = new MapDto(); + map.put("CMNCODLV1", code1); + map.put("CMNCODLV2", code2.substring(0, 1)); + + return commoncodmapper.selectCodeList(map); + } } diff --git a/src/main/java/io/company/localhost/service/localvacaService.java b/src/main/java/io/company/localhost/service/localvacaService.java index f7b9493..9013dd4 100644 --- a/src/main/java/io/company/localhost/service/localvacaService.java +++ b/src/main/java/io/company/localhost/service/localvacaService.java @@ -320,4 +320,8 @@ public class localvacaService { public List selectSentVacationCount(MapDto map) { return localvacaMapper.selectSentVacationCount(map); } + + public List selectMemberVacationsInMain(int year, int month) { + return localvacaMapper.selectMemberVacationsInMain(year, month); + } } diff --git a/src/main/java/io/company/localhost/utils/StringUtil.java b/src/main/java/io/company/localhost/utils/StringUtil.java index 56503a7..3147da2 100644 --- a/src/main/java/io/company/localhost/utils/StringUtil.java +++ b/src/main/java/io/company/localhost/utils/StringUtil.java @@ -18,7 +18,15 @@ import org.springframework.util.StringUtils; public class StringUtil extends StringUtils { - //String Util 여기서 작성 + /** + * 정수타입 확인 + * + * @param str + * @return + */ + public static boolean isNumeric(String str) { + return str.matches("\\d+"); + } public StringUtil() {} } diff --git a/src/main/resources/mapper/LocalevntMapper.xml b/src/main/resources/mapper/LocalevntMapper.xml new file mode 100644 index 0000000..b1b058c --- /dev/null +++ b/src/main/resources/mapper/LocalevntMapper.xml @@ -0,0 +1,57 @@ + + + + + + + /* 이벤트 작성 */ + INSERT INTO LOCALEVNT ( + CMNCODVAL, + LOCEVTPLC, + LOCEVTTME, + LOCEVTRDT + ) VALUES ( + #{code}, + + + #{place}, + + + null, + + + #{date}, + NOW() + ) + + + + + + + + /* 이벤트 제거 */ + DELETE FROM + LOCALEVNT + WHERE + CMNCODVAL = #{code} AND DATE(LOCEVTTME) = DATE(#{date}) + + + + diff --git a/src/main/resources/mapper/NetmemberMapper.xml b/src/main/resources/mapper/NetmemberMapper.xml index 0470d2e..5765122 100644 --- a/src/main/resources/mapper/NetmemberMapper.xml +++ b/src/main/resources/mapper/NetmemberMapper.xml @@ -155,5 +155,38 @@ UPDATE netmember SET MEMBERROL = #{role} WHERE MEMBERSEQ = #{id} + + + + diff --git a/src/main/resources/mapper/commoncodMapper.xml b/src/main/resources/mapper/commoncodMapper.xml index 2caead2..9947a51 100644 --- a/src/main/resources/mapper/commoncodMapper.xml +++ b/src/main/resources/mapper/commoncodMapper.xml @@ -146,4 +146,20 @@ FROM commoncod WHERE CMNCODVAL IN ('700101', '700102', '700103') + + + + diff --git a/src/main/resources/mapper/localvacaMapper.xml b/src/main/resources/mapper/localvacaMapper.xml index 15e3d0a..25131f2 100644 --- a/src/main/resources/mapper/localvacaMapper.xml +++ b/src/main/resources/mapper/localvacaMapper.xml @@ -35,13 +35,17 @@ @@ -148,5 +152,30 @@ SELECT COUNT(*) as count FROM localvaca WHERE MEMBERSEQ = #{userId} AND LOCVACRMM = #{receiverId} AND YEAR(LOCVACUDT) = YEAR(NOW()) + + \ No newline at end of file