From 3d417c7b094c35a19e2ec26bedb5df6f11a8134d Mon Sep 17 00:00:00 2001 From: hylee Date: Mon, 19 Aug 2024 20:49:59 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=B8=EC=9E=90=EC=98=A8=20=EC=8A=A4?= =?UTF-8?q?=ED=8C=B8=EB=AC=B8=EC=9E=90=20=ED=95=84=ED=84=B0=EB=A7=81=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B0=9C=EB=B0=9C=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 +- src/main/java/com/itn/admin/cmn/vo/CmnVO.java | 37 ++++++ .../itn/mjon/spam/mapper/SpamMapper.java | 4 + .../itn/mjon/spam/mapper/domain/SpamVO.java | 7 +- .../itn/mjon/spam/service/SpamService.java | 2 + .../spam/service/impl/SpamServiceImpl.java | 32 ++++- .../itn/mjon/spam/web/RestSpamController.java | 12 -- .../itn/mjon/spam/web/SpamController.java | 12 +- .../mapper/itn/mjon/spam/SpamMapper.xml | 27 ++++ .../templates/fragments/mainsidebar.html | 2 +- .../resources/templates/mjon/spam/select.html | 122 +++++++++++++----- 11 files changed, 201 insertions(+), 63 deletions(-) create mode 100644 src/main/java/com/itn/admin/cmn/vo/CmnVO.java diff --git a/pom.xml b/pom.xml index 4aee1d1..01f727f 100644 --- a/pom.xml +++ b/pom.xml @@ -160,12 +160,13 @@ 2.3.1 - - org.springframework.boot - spring-boot-starter-webflux + com.github.pagehelper + pagehelper-spring-boot-starter + 1.4.2 + diff --git a/src/main/java/com/itn/admin/cmn/vo/CmnVO.java b/src/main/java/com/itn/admin/cmn/vo/CmnVO.java new file mode 100644 index 0000000..eaced8e --- /dev/null +++ b/src/main/java/com/itn/admin/cmn/vo/CmnVO.java @@ -0,0 +1,37 @@ +package com.itn.admin.cmn.vo; + +import lombok.*; + +@NoArgsConstructor +@AllArgsConstructor +@Getter +@Setter +public class CmnVO { + + private int pageNum = 1; // 현재 페이지 번호 기본값 설정 + private int pageSize = 10; // 한 페이지에 보여줄 데이터 개수 기본값 설정 + private int offset; // SQL 쿼리에서 사용할 OFFSET + private int limit; // SQL 쿼리에서 사용할 LIMIT + + private int totalCount; // 총 데이터 수 + private int totalPageCount; // 총 페이지 수 + private int startPage; // 페이지네이션의 시작 페이지 번호 + private int endPage; // 페이지네이션의 끝 페이지 번호 + + // 페이징을 위한 offset과 limit을 계산하는 메서드 + public void calculatePaging(int totalRecordCount) { + this.totalCount = totalRecordCount; + this.offset = (pageNum - 1) * pageSize; + this.limit = pageSize; + + // 총 페이지 수 계산 + this.totalPageCount = (int) Math.ceil((double) totalRecordCount / pageSize); + + // 페이지네이션의 시작과 끝 페이지 계산 + int pageBlockSize = 10; // 한 블록에 표시할 페이지 수 + this.startPage = ((pageNum - 1) / pageBlockSize) * pageBlockSize + 1; + this.endPage = Math.min(startPage + pageBlockSize - 1, totalPageCount); + } + + +} diff --git a/src/main/java/com/itn/admin/itn/mjon/spam/mapper/SpamMapper.java b/src/main/java/com/itn/admin/itn/mjon/spam/mapper/SpamMapper.java index d8d44eb..f520b95 100644 --- a/src/main/java/com/itn/admin/itn/mjon/spam/mapper/SpamMapper.java +++ b/src/main/java/com/itn/admin/itn/mjon/spam/mapper/SpamMapper.java @@ -16,4 +16,8 @@ public interface SpamMapper { List getListWhereKeywordsIsNull(SpamVO spamVO); void update(SpamVO spamVO); + + List getSpamList(SpamVO spamVO); + + int getTotalRecordCount(); } diff --git a/src/main/java/com/itn/admin/itn/mjon/spam/mapper/domain/SpamVO.java b/src/main/java/com/itn/admin/itn/mjon/spam/mapper/domain/SpamVO.java index 956ac4d..00537ae 100644 --- a/src/main/java/com/itn/admin/itn/mjon/spam/mapper/domain/SpamVO.java +++ b/src/main/java/com/itn/admin/itn/mjon/spam/mapper/domain/SpamVO.java @@ -1,9 +1,11 @@ package com.itn.admin.itn.mjon.spam.mapper.domain; +import com.itn.admin.cmn.vo.CmnVO; import lombok.*; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.List; /** * packageName : com.itn.admin.itn.mjon.spam.mapper.domain @@ -23,7 +25,7 @@ import java.time.LocalDateTime; @Getter @Setter @ToString -public class SpamVO implements Serializable { +public class SpamVO extends CmnVO implements Serializable { private static final long serialVersionUID = 1L; @@ -40,4 +42,7 @@ public class SpamVO implements Serializable { private String lastUpdusrId; // 최종수정자ID private LocalDateTime lastUpdtPnttm; // 최종수정일자 + + // spam_keywords TB 외 필드들 + private List keywordList; // 키워드 리스트 } diff --git a/src/main/java/com/itn/admin/itn/mjon/spam/service/SpamService.java b/src/main/java/com/itn/admin/itn/mjon/spam/service/SpamService.java index 35508c8..ab76f90 100644 --- a/src/main/java/com/itn/admin/itn/mjon/spam/service/SpamService.java +++ b/src/main/java/com/itn/admin/itn/mjon/spam/service/SpamService.java @@ -11,4 +11,6 @@ public interface SpamService { Map getList(SpamVO spamVO); void analyze(); + + Map getSpamList(SpamVO spamVO); } diff --git a/src/main/java/com/itn/admin/itn/mjon/spam/service/impl/SpamServiceImpl.java b/src/main/java/com/itn/admin/itn/mjon/spam/service/impl/SpamServiceImpl.java index 433cfb9..fbcacca 100644 --- a/src/main/java/com/itn/admin/itn/mjon/spam/service/impl/SpamServiceImpl.java +++ b/src/main/java/com/itn/admin/itn/mjon/spam/service/impl/SpamServiceImpl.java @@ -9,13 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.*; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; -import org.springframework.web.reactive.function.client.WebClient; -import java.time.Duration; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @Slf4j @Service @@ -57,7 +52,7 @@ public class SpamServiceImpl implements SpamService { // for (SpamVO spamVO : spamList) { - // API 호출 및 데이터 수신 + // API 호출 및 데이터 수신 List spamList = spamMapper.getListWhereKeywordsIsNull(new SpamVO()); @@ -111,4 +106,27 @@ public class SpamServiceImpl implements SpamService { } } } + + @Override + public Map getSpamList(SpamVO spamVO) { + int totalRecordCount = spamMapper.getTotalRecordCount(); + spamVO.calculatePaging(totalRecordCount); + + List spamList = spamMapper.getSpamList(spamVO); + + + // 키워드를 버튼용 배열로 변환 + for (SpamVO spam : spamList) { + if (spam.getKeywords() != null) { + spam.setKeywordList(Arrays.asList(spam.getKeywords().split(", "))); + } + } + + Map resultMap = new HashMap<>(); + resultMap.put("spamList", spamList); + resultMap.put("totalRecordCount", totalRecordCount); + resultMap.put("totalPageCount", spamVO.getTotalPageCount()); + + return resultMap; + } } diff --git a/src/main/java/com/itn/admin/itn/mjon/spam/web/RestSpamController.java b/src/main/java/com/itn/admin/itn/mjon/spam/web/RestSpamController.java index 5fb60e1..9247380 100644 --- a/src/main/java/com/itn/admin/itn/mjon/spam/web/RestSpamController.java +++ b/src/main/java/com/itn/admin/itn/mjon/spam/web/RestSpamController.java @@ -1,23 +1,11 @@ package com.itn.admin.itn.mjon.spam.web; -import com.itn.admin.itn.mjon.spam.mapper.domain.SpamVO; import com.itn.admin.itn.mjon.spam.service.SpamService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.client.RestTemplate; -import org.springframework.web.reactive.function.client.WebClient; -import reactor.core.publisher.Mono; - -import java.lang.module.ModuleDescriptor; -import java.util.Arrays; -import java.util.List; -import java.util.Map; @Slf4j @RestController diff --git a/src/main/java/com/itn/admin/itn/mjon/spam/web/SpamController.java b/src/main/java/com/itn/admin/itn/mjon/spam/web/SpamController.java index 64e3683..769787f 100644 --- a/src/main/java/com/itn/admin/itn/mjon/spam/web/SpamController.java +++ b/src/main/java/com/itn/admin/itn/mjon/spam/web/SpamController.java @@ -9,6 +9,8 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; +import java.util.HashMap; +import java.util.List; import java.util.Map; @Controller @@ -23,13 +25,11 @@ public class SpamController { @GetMapping(value = "/mjon/spam/select") public String select(@ModelAttribute("spamVO") SpamVO spamVO, Model model) { -// -// -// Map resultMap = spamService.getList(spamVO); -// model.addAttribute("spamList", resultMap.get("spamList")); -// -// model.addAttribute("list", resultMap.get("resultList")); + Map map = spamService.getSpamList(spamVO); + + model.addAttribute("spamList", map.get("spamList")); + model.addAttribute("pagingVO", spamVO); return "mjon/spam/select"; } diff --git a/src/main/resources/mapper/itn/mjon/spam/SpamMapper.xml b/src/main/resources/mapper/itn/mjon/spam/SpamMapper.xml index d3f5ae5..e06ebad 100644 --- a/src/main/resources/mapper/itn/mjon/spam/SpamMapper.xml +++ b/src/main/resources/mapper/itn/mjon/spam/SpamMapper.xml @@ -4,6 +4,33 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + +