diff --git a/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/ImagePaginationRenderer.java b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/ImagePaginationRenderer.java index ed1453e6..d8e5ea54 100644 --- a/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/ImagePaginationRenderer.java +++ b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/ImagePaginationRenderer.java @@ -34,7 +34,7 @@ public class ImagePaginationRenderer extends AbstractPaginationRenderer implemen //previousPageLabel = "
  • \"이전\"
  • "; previousPageLabel = ""; //currentPageLabel = "
  • {0}
  • "; - currentPageLabel = "
  • "; + currentPageLabel = "
  • "; //otherPageLabel = "
  • {2}
  • "; otherPageLabel = "
  • "; //nextPageLabel = "
  •  \"다음\"
  • "; diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/mapper/BOSubsvcMapper.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/mapper/BOSubsvcMapper.java index 75f8cdf7..edca404c 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/mapper/BOSubsvcMapper.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/mapper/BOSubsvcMapper.java @@ -1,6 +1,5 @@ package com.wb.domainserver.domain.gcone.goods.subsvc.mapper; -import com.wb.domainserver.domain.gcone.goods.banner.vo.BOBannerVO; import com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO; import com.wb.domainserver.util.dataaccess.DataMap; import org.apache.ibatis.annotations.Mapper; @@ -23,5 +22,6 @@ public interface BOSubsvcMapper { List selectBOMngrSrchSubsvcList(BOSubsvcVO vo); /** 관리자 구독서비스 조회조건 구독서비스별 기수*/ List selectBOMngrSrchSubsvcGnrList(BOSubsvcVO vo); - + /** 관리자 구독서비스 선택 삭제*/ + int deleteBOMngrSubsvc(BOSubsvcVO vo); } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/service/BOSubsvcService.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/service/BOSubsvcService.java index 01fad8b1..72edbffd 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/service/BOSubsvcService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/service/BOSubsvcService.java @@ -1,5 +1,6 @@ package com.wb.domainserver.domain.gcone.goods.subsvc.service; +import com.wb.domainserver.domain.gcone.goods.goodsinfo.vo.BOGoodsInfoVO; import com.wb.domainserver.domain.gcone.goods.subsvc.mapper.BOSubsvcMapper; import com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO; import com.wb.domainserver.util.dataaccess.DataMap; @@ -43,4 +44,51 @@ public class BOSubsvcService { return dataMap; } + /** + * 관리자 구독서비스 목록 조회 + * */ + public List selectBOMngrSubsvcList(BOSubsvcVO vo) { + List dataList = new ArrayList<>(); + + dataList = mapper.selectBOMngrSubsvcList(vo); + if(dataList == null || dataList.isEmpty()){ + vo.getPaginationInfo().setTotalRecordCount(0); + }else{ + vo.getPaginationInfo().setTotalRecordCount(((Long)dataList.get(0).get("totCnt")).intValue()); + } + + return dataList; + } + + /** + * 관리자 구독서비스 조회조건 구독서비스 + * */ + public List selectBOMngrSrchSubsvcList(BOSubsvcVO vo) { + List dataList = new ArrayList<>(); + + dataList = mapper.selectBOMngrSrchSubsvcList(vo); + + return dataList; + } + + /** + * 관리자 구독서비스 조회조건 구독서비스별 기수 + * */ + public List selectBOMngrSrchSubsvcGnrList(BOSubsvcVO vo) { + List dataList = new ArrayList<>(); + + dataList = mapper.selectBOMngrSrchSubsvcGnrList(vo); + + return dataList; + } + + public String deleteBOMngrSubsvc(BOSubsvcVO vo) { + String message = "fail"; + int result = mapper.deleteBOMngrSubsvc(vo); + if (result > 0) { + message = "success"; + } + return message; + } + } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/vo/BOSubsvcVO.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/vo/BOSubsvcVO.java index bbabfe90..4da718dd 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/vo/BOSubsvcVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/vo/BOSubsvcVO.java @@ -93,4 +93,6 @@ private static final long serialVersionUID = 1L; private String srchExpsrDvCd; /** 정렬구분 */ private String sortDv; + /** 배열 구독서비스고유번호 */ + private List arrSubsvcInnb; } diff --git a/src/main/java/com/wb/domainserver/domain/mngr/goods/subsvc/controller/SubsvcController.java b/src/main/java/com/wb/domainserver/domain/mngr/goods/subsvc/controller/SubsvcController.java new file mode 100644 index 00000000..c4bfd3f5 --- /dev/null +++ b/src/main/java/com/wb/domainserver/domain/mngr/goods/subsvc/controller/SubsvcController.java @@ -0,0 +1,214 @@ +package com.wb.domainserver.domain.mngr.goods.subsvc.controller; + +import com.wb.domainserver.common.msg.GconeMessageSource; +import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationInfo; +import com.wb.domainserver.common.prop.PaginationProperties; +import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService; +import com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO; +import com.wb.domainserver.domain.gcone.goods.cmnuse.vo.BOCmnuseVO; +import com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO; +import com.wb.domainserver.domain.gcone.goods.goodsinfo.vo.BOGoodsInfoVO; +import com.wb.domainserver.domain.gcone.goods.subsvc.service.BOSubsvcService; +import com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO; +import com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO; +import com.wb.domainserver.domain.mngr.goods.goodsinfo.vo.GoodsInfoVO; +import com.wb.domainserver.exception.WnbtRestException; +import com.wb.domainserver.response.WnbtResponse; +import com.wb.domainserver.response.WnbtResponseBody; +import com.wb.domainserver.security.authentication.AnonymousUser; +import com.wb.domainserver.security.authentication.MemberJwtContextHolder; +import com.wb.domainserver.security.authorization.annotation.AuthPolicy; +import com.wb.domainserver.security.authorization.annotation.Policy; +import com.wb.domainserver.util.communicate.SendToResrc; +import com.wb.domainserver.util.communicate.ValidateResultConverter; +import com.wb.domainserver.util.dataaccess.DataMap; +import io.micrometer.common.util.StringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.CookieValue; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** +* SubsvcController Controller Class +* +* @author +* @since 2026-01-23 +* @version 1.0 +* @see +* +*
    +* == (Modification Information) == 개정이력
    +*
    +* 수정일 수정자 수정내용
    +* ------- -------- ---------------------------
    +* 2026-01-23 jazz 최초 생성
    +*
    +* 
    +*/ + +@Slf4j +@Controller +@RequestMapping("/mngr/goods/subsvc") +public class SubsvcController { + + /** WebClient 호출을 위한 wrapper */ + @Autowired + private SendToResrc sendToResrc; + + /** 공통 메시지 처리를 위한 메시지 객체 */ + @Autowired + private GconeMessageSource gconeMessageSource; + + @Autowired + private BOSubsvcService service; + @Autowired + private BOMaComncdService boMaComncdService; + @Autowired + private PaginationProperties paginationProperties; + + /** + * 구독서비스 목록 조회 폼 + * @param vo + * @return SubsvcListForm.jsp + */ + @Policy(AuthPolicy.RESTRICTED) + @RequestMapping(value="/selectSubsvcListForm") + public String selectSubsvcListForm(BOSubsvcVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + Map content = new HashMap<>(); + content.put("paramVO", vo); + + // 조회조건 구독서비스 + List SrchSubsvcList = service.selectBOMngrSrchSubsvcList(vo); + content.put("srchSubsvcList", SrchSubsvcList); + + //조회조건 판매상태 + BOMaComncdVO param = new BOMaComncdVO(); + param.setGroupCd("GOODS_STTUS"); + List srchSubsvcSttusList = boMaComncdService.selectBOCommcdDetailList(param); + content.put("srchSubsvcSttusList", srchSubsvcSttusList); + + //조회조건 노출구분 + param.setGroupCd("EXPSR_DV"); + List srchExpsrDvList = boMaComncdService.selectBOCommcdDetailList(param); + content.put("srchExpsrDvList", srchExpsrDvList); + + model.addAttribute("resultMap", content); + return "mngr/goods/subsvc/SubsvcListForm"; + } + + /** + * 구독서비스 목록 조회 리스트 + * @param vo + * @param model + * @return SubsvcList.jsp + */ + @Policy(AuthPolicy.RESTRICTED) + @RequestMapping(value = "/selectSubsvcList") + public String selectSubsvcList(BOSubsvcVO vo,ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + // 페이징 객체 생성 & 페이징정보 할당 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(vo.getPageIndex()); + paginationInfo.setRecordCountPerPage(vo.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + vo.setPaginationInfo(paginationInfo); + vo.setFirstIndex(paginationInfo.getFirstRecordIndex()); + vo.setLastIndex(paginationInfo.getLastRecordIndex()); + vo.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + if(StringUtils.isEmpty(vo.getSortDv())){ + //정렬기준 초기값 셋팅 + vo.setSortDv("subsvcGnrAsc"); + } + + // 목록 조회 + List list = service.selectBOMngrSubsvcList(vo); + + Map content = new HashMap<>(); + content.put("paramVO", vo); + + content.put("list", list); + content.put("paginationInfo", vo.getPaginationInfo()); + + model.addAttribute("resultMap", content); + + return "mngr/goods/subsvc/SubsvcList"; + } + /** + * 구독서비스 선택삭제 + * @param vo + * @return ResponseEntity + */ + @Policy(AuthPolicy.RESTRICTED) + @RequestMapping(value = "/deleteSubsvc", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteSubsvc(BOSubsvcVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setUpdusr(user.getUserInnb()); //수정자 + + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + DataMap message = new DataMap(); + String result = service.deleteBOMngrSubsvc(vo); + message.put("message", result); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() + ); + } + + + /** + * 구독서비스 목록 조회 리스트 + * @param vo + * @return ResponseEntity + */ + @Policy(AuthPolicy.RESTRICTED) + @RequestMapping(value = "/selectSrchSubsvcGnrListAjax", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectSrchSubsvcGnrListAjax(BOSubsvcVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + Map content = new HashMap<>(); + + // 조회조건 구독서비스 + List SrchSubsvcGnrList = service.selectBOMngrSrchSubsvcGnrList(vo); + content.put("srchSubsvcGnrList", SrchSubsvcGnrList); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 9ded2c4c..880c0b9d 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -58,9 +58,9 @@ spring: gcone: hikari: driver-class-name: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://172.31.16.11:3306/gcone?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=false&verifyServerCertificate=false - username: winbit - password: dnlsqlxm1! + jdbc-url: jdbc:mysql://115.68.176.232:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false + username: sakeone + password: dnlfxjtm13@$ minimumIdle: 1 maximumPoolSize: 10 idleTimeout: 30000 #30초 @@ -70,9 +70,9 @@ spring: sure: hikari: driver-class-name: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://172.31.17.11:3306/nutricore - username: winbit - password: dnlsqlxm1! + jdbc-url: jdbc:mysql://115.68.176.232:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false + username: sakeone + password: dnlfxjtm13@$ minimumIdle: 1 maximumPoolSize: 10 idleTimeout: 30000 #30초 diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 18ac0efa..521ebbae 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -58,7 +58,7 @@ spring: gcone: hikari: driver-class-name: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://115.68.176.232:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=false&verifyServerCertificate=false + jdbc-url: jdbc:mysql://115.68.176.232:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false username: sakeone password: dnlfxjtm13@$ minimumIdle: 1 @@ -70,7 +70,7 @@ spring: sure: hikari: driver-class-name: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://115.68.176.232:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=false&verifyServerCertificate=false + jdbc-url: jdbc:mysql://115.68.176.232:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false username: sakeone password: dnlfxjtm13@$ minimumIdle: 1 diff --git a/src/main/resources/application-stage.yml b/src/main/resources/application-stage.yml index 30a6b6ac..ecc81044 100644 --- a/src/main/resources/application-stage.yml +++ b/src/main/resources/application-stage.yml @@ -58,7 +58,7 @@ spring: gcone: hikari: driver-class-name: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://10.2.1.101:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=false&verifyServerCertificate=false + jdbc-url: jdbc:mysql://10.2.1.101:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false username: sakeone password: dnlfxjtm13@$ minimumIdle: 10 @@ -70,7 +70,7 @@ spring: sure: hikari: driver-class-name: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://10.2.1.101:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=false&verifyServerCertificate=false + jdbc-url: jdbc:mysql://10.2.1.101:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false username: sakeone password: dnlfxjtm13@$ minimumIdle: 1 diff --git a/src/main/resources/mybatis/xml/mapper/gcone/goods/subsvc/BOSubsvcMapper.xml b/src/main/resources/mybatis/xml/mapper/gcone/goods/subsvc/BOSubsvcMapper.xml index 26a223dd..be095396 100644 --- a/src/main/resources/mybatis/xml/mapper/gcone/goods/subsvc/BOSubsvcMapper.xml +++ b/src/main/resources/mybatis/xml/mapper/gcone/goods/subsvc/BOSubsvcMapper.xml @@ -58,56 +58,66 @@ SELECT GC.SUBSVC_NM, MIN(GC.SUBSVC_INNB) SUBSVC_INNB FROM GC_SUBSVC GC + WHERE GC.SOPMAL_CD = #{sopmalCd} + AND GC.USE_AT = 'Y' GROUP BY GC.SUBSVC_NM ORDER BY SUBSVC_INNB ASC @@ -127,9 +139,30 @@ SELECT GC.SUBSVC_GNR, CONCAT(GC.SUBSVC_GNR , '기 (', GC.SUBSVC_GNR_NM, ')') SUBSVC_GNR_NM FROM GC_SUBSVC GC WHERE GC.SUBSVC_NM = #{srchSelSubsvcNm} + AND GC.SOPMAL_CD = #{sopmalCd} + AND GC.USE_AT = 'Y' GROUP BY GC.SUBSVC_GNR, GC.SUBSVC_GNR_NM ORDER BY GC.SUBSVC_GNR ASC ]]> + + + UPDATE GC_SUBSVC + SET USE_AT = 'N' + ,UPDUSR = #{updusr} + ,UPDT_DT = NOW() + WHERE SOPMAL_CD = #{sopmalCd} + + + AND SUBSVC_INNB IN + + #{subsvcInnb} + + + + AND 1=2 + + + diff --git a/src/main/webapp/WEB-INF/views/mngr/goods/subsvc/SubsvcList.jsp b/src/main/webapp/WEB-INF/views/mngr/goods/subsvc/SubsvcList.jsp new file mode 100644 index 00000000..f025ec31 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/mngr/goods/subsvc/SubsvcList.jsp @@ -0,0 +1,137 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %> +<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %> + +<%-- + Class Name : GoodsListR.jsp + Description : 상품 목록 조회 리스트 + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2024-03-20 리브가 최초 생성 +--%> +
    +
    +
    +
    + 총 건 +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    구독서비스 목록
    + + 번호구독서비스기수기수명배송횟수재고가용재고판매상태노출여부구독료1회배송비소비자가실판매가
    + + )" class="under-line">기 회
    +
    +
    + +
    + +
    \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/mngr/goods/subsvc/SubsvcListForm.jsp b/src/main/webapp/WEB-INF/views/mngr/goods/subsvc/SubsvcListForm.jsp new file mode 100644 index 00000000..6f28a855 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/mngr/goods/subsvc/SubsvcListForm.jsp @@ -0,0 +1,432 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %> +<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %> + +<%-- + Class Name : GoodsListRForm.jsp + Description : 상품 목록 조회 폼 + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2024-03-20 리브가 최초 생성 +--%> + + + + + + + 일반 관리자 + <%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%> + + + + +<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%> +
    + <%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%> +
    +
    + +
    +

    구독서비스 목록

    +
    + +
    +
    +
    "> + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    구독서비스 +
    +
    + +
    +
    + +
    +
    +
    구독서비스명 +
    + "> +
    +
    기수명 +
    + "> +
    +
    판매상태 +
    +
    + + + + +
    +
    +
    노출여부 +
    +
    +
    + + +
    + +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    + +
    +
    + + \ No newline at end of file