package com.style24.admin.biz.dao;

import java.util.Collection;

import com.style24.core.support.annotation.ShopDs;
import com.style24.persistence.domain.AdKeyword;
import com.style24.persistence.domain.AdKeywordGoods;
import com.style24.persistence.domain.Brand;
import com.style24.persistence.domain.Color;
import com.style24.persistence.domain.FreeGoods;
import com.style24.persistence.domain.Goods;
import com.style24.persistence.domain.GoodsCompose;
import com.style24.persistence.domain.GoodsContents;
import com.style24.persistence.domain.GoodsContentsData;
import com.style24.persistence.domain.GoodsDesc;
import com.style24.persistence.domain.GoodsEpSkip;
import com.style24.persistence.domain.GoodsHst;
import com.style24.persistence.domain.GoodsImg;
import com.style24.persistence.domain.GoodsMass;
import com.style24.persistence.domain.GoodsNaverLowestPrice;
import com.style24.persistence.domain.GoodsNotiInfo;
import com.style24.persistence.domain.GoodsPriceRes;
import com.style24.persistence.domain.GoodsResSell;
import com.style24.persistence.domain.GoodsSafeNo;
import com.style24.persistence.domain.GoodsSearch;
import com.style24.persistence.domain.GoodsSupplyPrice;
import com.style24.persistence.domain.GoodsTnmRes;
import com.style24.persistence.domain.GoodsVideo;
import com.style24.persistence.domain.IfIncomelot;
import com.style24.persistence.domain.IfProductSku;
import com.style24.persistence.domain.Itemkind;
import com.style24.persistence.domain.NotiInfo;
import com.style24.persistence.domain.Notice;
import com.style24.persistence.domain.NoticeGoods;
import com.style24.persistence.domain.Option;
import com.style24.persistence.domain.ReinboundInform;
import com.style24.persistence.domain.SizeInfo;
import com.style24.persistence.domain.WmsColorMapping;
import com.style24.persistence.domain.WmsGoods;
import com.style24.persistence.domain.WmsSeasonMapping;
import com.style24.persistence.domain.WmsStyleYearMapping;

import com.gagaframework.web.parameter.GagaMap;

/**
 * 상품관리 Dao
 *
 * @author eskim
 * @since 2020. 10. 16
 */
@ShopDs
public interface TsaGoodsDao {

	/**
	 * 품목 목록
	 * @param itemkind
	 * @return
	 * @author eskim
	 * @since 2020. 10. 16
	 */
	Collection<Itemkind> getItemkindList(Itemkind itemkind);

	/**
	 * 품목 저장(등록/저장)
	 * @param itemkind - 품목 정보
	 * @author eskim
	 * @since 2020. 10. 16
	 */
	void saveItemkindInfo(Itemkind itemkind);

	/**
	 * 품목 삭제
	 * @param itemkind - 품목 정보
	 * @author eskim
	 * @since 2020. 10. 16
	 */
	void deleteItemkindInfo(Itemkind itemkind);

	/**
	 * 색상목록 조회
	 *
	 * @param color
	 * @return
	 * @author eskim
	 * @since 2020. 10. 16
	 */
	Collection<Color> getColorList(Color color);

	/**
	 * 색상 저장
	 * @param color
	 * @author eskim
	 * @since 2020. 10. 16
	 */
	void saveColor(Color color);

	/**
	 * 상품정보고시 목록
	 * @param notiInfo
	 * @return
	 * @author eskim
	 * @since 2010. 10. 19
	 */
	Collection<NotiInfo> getNotiInfoList(NotiInfo notiInfo);

	/**
	 * 상품정보고시 항목 목록
	 * @param notiInfo
	 * @return
	 * @author eskim
	 * @since 2010. 10. 19
	 */
	Collection<NotiInfo> getNotiInfoItemList(NotiInfo notiInfo);

	/**
	 * 상품정보고시 상세 저장
	 * @param notiInfo
	 * @author eskim
	 * @since 2010. 10. 19
	 */
	void saveNotiInfo(NotiInfo notiInfo);

	/**
	 * WMS 색상 매핑목록 조회
	 *
	 * @param wmsColorMapping
	 * @return
	 * @author eskim
	 * @since 2020. 11. 12
	 */
	Collection<WmsColorMapping> getWmsColorMappingList(WmsColorMapping wmsColorMapping);

	/**
	 * WMS 색상 매핑 저장
	 * @param wmsColorMapping
	 * @author eskim
	 * @since 2020. 11. 12
	 */
	void saveWmsColorMapping(WmsColorMapping wmsColorMapping);

	/**
	 * WMS 스타일년도 매핑목록 조회
	 *
	 * @param wmsStyleYearMapping
	 * @return
	 * @author eskim
	 * @since 2020. 11. 13
	 */
	Collection<WmsStyleYearMapping> getWmsStyleYearMappingList(WmsStyleYearMapping wmsStyleYearMapping);

	/**
	 * WMS 스타일년도 매핑 저장
	 * @param wmsStyleYearMapping
	 * @author eskim
	 * @since 2020. 11. 13
	 */
	void saveWmsStyleYearMapping(WmsStyleYearMapping wmsStyleYearMapping);

	/**
	 * WMS 시즌 매핑목록 조회
	 *
	 * @param wmsStyleYearMapping
	 * @return
	 * @author eskim
	 * @since 2020. 11. 13
	 */
	Collection<WmsSeasonMapping> getWmsSeasonMappingList(WmsSeasonMapping wmsSeasonMapping);

	/**
	 * WMS 시즌 매핑 저장
	 * @param wmsStyleYearMapping
	 * @author eskim
	 * @since 2020. 11. 13
	 */
	void saveWmsSeasonMapping(WmsSeasonMapping wmsSeasonMapping);

	/**
	 * 상품 목록 건수
	 *
	 * @param goodsSearch
	 * @return
	 * @author eskim
	 * @since 2010. 10. 20
	 */
	int getGoodsListCount(GoodsSearch goodsSearch);

	/**
	 * 상품 목록
	 *
	 * @param goodsSearch
	 * @return
	 * @author eskim
	 * @since 2010. 10. 20
	 */
	Collection<Goods> getGoodsList(GoodsSearch goodsSearch);

	/**
	 * 상품 목록 기본정보 엑셀다운로드
	 *
	 * @param goodsSearch
	 * @return
	 * @author eskim
	 * @since 2020. 10. 22
	 */
	Collection<GagaMap> getGoodsInfoExcelList(GoodsSearch goodsSearch);


	/**
	 * 상품 이미지 필수 항목 입력 여부 조회
	 *
	 * @param goods
	 * @return
	 * @author eskim
	 * @since 2020. 10. 22
	 */
	Collection<Goods> getGoodsImgsYn(Goods goods);

	/**
	 * 상품 상세
	 *
	 * @param goods
	 * @return
	 * @author eskim
	 * @since 2020. 10. 22
	 */
	Goods getGoods(Goods goods);

	/**
	 * 상품 상세 정보 조회
	 *
	 * @param goodsVideo
	 * @return
	 * @author eskim
	 * @since 2020. 10. 22
	 */
	Collection<GoodsDesc> getGoodsDescList(GoodsDesc goodsDesc);

	/**
	 * 상품 정보 이력
	 *
	 * @param goods
	 * @return
	 * @author eskim
	 * @since 2019. 08. 12
	 */
	Collection<GoodsHst> getGoodsHstList(Goods goods);

	/**
	 * 상품 옵션 조회
	 *
	 * @param goods
	 * @return
	 * @author eskim
	 * @since 2020. 10. 26
	 */
	Collection<Option> getGoodsSizeList(Goods goods);

	/**
	 * 상품 색상목록 조회
	 *
	 * @param goods
	 * @return
	 * @author eskim
	 * @since 2020. 11. 18
	 */
	Collection<GoodsImg> getGoodsColorList(Goods goods);

	/**
	 * 상품 고시 조회
	 *
	 * @param goodsNotiInfo
	 * @return
	 * @author eskim
	 * @since 2020. 10. 12
	 */
	Collection<GoodsNotiInfo> getGoodsNotiInfoList(GoodsNotiInfo goodsNotiInfo);

	/**
	 * 상품의 정보고시 항목 목록
	 *
	 * @param notiInfo
	 * @return
	 * @author eskim
	 * @since 2020. 10. 18
	 */
	Collection<NotiInfo> getNotiGoodsInfoList(NotiInfo notiInfo);

	/**
	 * 구성상품 목록
	 *
	 * @param goodsNotiInfo
	 * @return
	 * @author eskim
	 * @since 2020. 10. 27
	 */
	Collection<GoodsCompose> getGoodsDetailComposeList(Goods goods);

	/**
	 * 안전인증대상 상품 저장
	 *
	 * @author eskim
	 * @since 2020. 12. 07
	 */
	void saveGoodsSafeNo(GoodsSafeNo goodsSafeNo);

	/**
	 * 상품 기본 정보 이력 생성
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 10. 22
	 */
	void createGoodsHst(Goods goods);

	/**
	 * 상품 수정 항목 일괄변경
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 10. 22
	 */
	void updateGoodsState(Goods goods);

	/**
	 * 상품 품목변경
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 10. 23
	 */
	void updateGoodItemKindCd(Goods goods);

	/**
	 * 상품 자동 검색어 조회
	 *
	 * @param goodsCd
	 * @return
	 * @author eskim
	 * @since 2020. 10. 23
	 */
	String getGoodsSnm(String goodsCd);

	/**
	 * 상품검색어 수정
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 10. 23
	 */
	void updateGoodsSnm(Goods goods);

	/**
	 * 상품 품목변경 고시정보 조회
	 *
	 * @param goods
	 * @return
	 * @author eskim
	 * @since 2020. 10. 23
	 */
	Collection<GoodsNotiInfo> getNewNotiInfo(Goods goods);

	/**
	 * 상품 품목변경 고시정보 삭제
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 10. 23
	 */
	void deleteGoodsNotiInfo(Goods goods);

	/**
	 * 상품 고시 정보 수정
	 *
	 * @param goodsNotiInfo
	 * @author eskim
	 * @since 2020. 10. 23
	 */
	void saveGoodsNotiInfo(GoodsNotiInfo goodsNotiInfo);

	/**
	 * 상품 기본 정보 수정
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 10. 27
	 */
	void updateGoods(Goods goods);

	/**
	 * 상품 상세정보 삭제
	 *
	 * @param godsDesc
	 * @author eskim
	 * @since 2020. 10. 27
	 */
	void deleteGoodsDesc(GoodsDesc godsDesc);

	/**
	 * 상품 상세 정보 이력 생성
	 * @param createGoodsDetailDesc
	 * @author eskim
	 * @since 2021. 01. 04
	 */
	public void createGoodsDetailDescHst(GoodsDesc godsDesc);

	/**
	 * 상품 상세정보 등록
	 *
	 * @param godsDesc
	 * @author eskim
	 * @since 2020. 10. 27
	 */
	void createGoodsDesc(GoodsDesc godsDesc);

	/**
	 * 구성상품 저장
	 *
	 * @param goodsCompose
	 * @author eskim
	 * @since 2020. 10. 27
	 */
	void saveGoodsCompose(GoodsCompose goodsCompose);

	/**
	 * 상품 옵션/재고 정보 이력생성
	 *
	 * @param option
	 * @author eskim
	 * @since 2020. 10. 27
	 */
	void createStockHst(Option option);

	/**
	 * 상품 옵션/재고 정보 수정
	 *
	 * @param stock
	 * @author eskim
	 * @since 2020. 10. 27
	 */
	void saveStock(Option option);

	/**
	 * 상품 기본 정보 등록
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 10. 30
	 */
	void createGoods(Goods goods);

	/**
	 * 상품통계 생성
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 10. 30
	 */
	void createGoodsSmmary(Goods goods);

//	/**
//	 * 상품 품목별 매핑 카테고리 저장
//	 *
//	 * @param goods
//	 * @author eskim
//	 * @since 2020. 10. 30
//	 */
//	void createCategoryGoods(Goods goods);

//	/**
//	 * 상품 이미지 저장
//	 *
//	 * @param goodsImg
//	 * @author eskim
//	 * @since 2020. 10. 30
//	 */
//	void saveGoodsImgInfo(GoodsImg goodsImg);

	/**
	 * 상품코드 생성
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 10. 30
	 */
	void createGoodsSequence(Goods goods);

	/**
	 * 상품 타이틀 관리 목록 건수
	 *
	 * @param goodsSearch
	 * @return
	 * @author eskim
	 * @since 2020. 10. 30
	 */
	int getGoodsTitleReserveCount(GoodsSearch goodsSearch);

	/**
	 * 상품 타이틀 관리 목록
	 *
	 * @param goodsSearch
	 * @return
	 * @author eskim
	 * @since 2020. 10. 30
	 */
	Collection<GoodsTnmRes> getGoodsTitleReserveList(GoodsSearch goodsSearch);

	/**
	 * 상품 타이틀 조회(기간 체크용)
	 *
	 * @param goodsTnmRes
	 * @return
	 * @author eskim
	 * @since 2020. 11. 02
	 */
	int getGoodsTnmDupChkCount(GoodsTnmRes goodsTnmRes);

	/**
	 * 상품 타이틀 예약 등록
	 *
	 * @param goodsTnmRes
	 * @author eskim
	 * @since 2020. 11. 02
	 */
	void createGoodTnmRes(GoodsTnmRes goodsTnmRes);

	/**
	 * 상품 타이틀 수정
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 11. 02
	 */
	void updateGoodTnm(Goods goods);

	/**
	 * 상품 타이틀 예약건 초기화
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 11. 02
	 */
	void updateGoodTnmInit(Goods goods);

	/**
	 * 상품 타이틀 예약 삭제
	 *
	 * @param goodsTnmRes
	 * @author eskim
	 * @since 2020. 11. 02
	 */
	void deleteGoodTnmRes(GoodsTnmRes goodsTnmRes);

	/**
	 * 상품 타이틀 초기값 조회
	 *
	 * @param goods
	 * @return
	 * @author eskim
	 * @since 2020. 11. 02
	 */
	Goods getGoodTnmInit(Goods goods);

	/**
	 * 상품예약판매 목록 건수
	 *
	 * @param goodsSearch
	 * @return Integer
	 * @author eskim
	 * @since 2020. 11. 12
	 */
	int getGoodsResSellCount(GoodsSearch goodsSearch);

	/**
	 * 상품예약판매 목록
	 *
	 * @param goodsSearch
	 * @return Collection<TsaGoodsResSell>
	 * @author eskim
	 * @since 2020. 11. 12
	 */
	Collection<GoodsResSell> getGoodsResSellList(GoodsSearch goodsSearch);

	/**
	 * 상품예약판매 조회(기간 체크용)
	 *
	 * @param goodsResSell
	 * @return int
	 * @author eskim
	 * @since 2020. 11. 12
	 */
	int getGoodsResSellDupChkCount(GoodsResSell goodsResSell);

	/**
	 * 상품예약판매 등록
	 *
	 * @param goodsResSell
	 * @return void
	 * @author eskim
	 * @since 2020. 11. 12
	 */
	void createGoodResSell(GoodsResSell goodsResSell);

	/**
	 * 상품예약판매 등록 시 재고연동 비활성화
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 11. 12
	 */
	void updateGoodsErpStockLinkYn(Goods goods);

	/**
	 * 상품예약판매 삭제
	 *
	 * @param goodsResSell
	 * @return void
	 * @author eskim
	 * @since 2020. 11. 12
	 */
	void deleteGoodResSell(GoodsResSell goodsResSell);

	/**
	 * 네이버 EP 제외 상품 목록 건수
	 *
	 * @param goodsSearch
	 * @return Integer
	 * @author eskim
	 * @since 2020. 11. 03
	 */
	int getGoodsEpSkipCount(GoodsSearch goodsSearch);

	/**
	 * 네이버 EP 제외 상품 목록
	 *
	 * @param goodsSearch
	 * @return Collection<GoodsEpSkip>
	 * @author eskim
	 * @since 2020. 11. 03
	 */
	Collection<GoodsEpSkip> getGoodsEpSkipList(GoodsSearch goodsSearch);

	/**
	 * 네이버 EP 제외 상품 조회(기간 체크용)
	 *
	 * @param GoodsEpSkip
	 * @return Collection<GoodsEpSkip>
	 * @author eskim
	 * @since 2020. 11. 03
	 */
	int getGoodsEpSkipDupChkCount(GoodsEpSkip GoodsEpSkip);

	/**
	 * 네이버 EP 제외 상품 예약 등록
	 *
	 * @param goodsEpSkip
	 * @return
	 * @author eskim
	 * @since 2020. 11. 03
	 */
	void createGoodEpSkip(GoodsEpSkip goodsEpSkip);

	/**
	 * 네이버 EP 제외 상품 예약 삭제
	 *
	 * @param goodsEpSkip
	 * @return
	 * @author eskim
	 * @since 2020. 11. 03
	 */
	void deleteGoodEpSkip(GoodsEpSkip goodsEpSkip);

	/**
	 * 상품 상세공지 목록
	 *
	 * @param goodsSearch
	 * @return
	 * @author eskim
	 * @since 2020. 11. 05
	 */
	Collection<Notice> getNoticeList(GoodsSearch goodsSearch);

	/**
	 * 상품 상세공지 상품 목록
	 *
	 * @param goodsSearch
	 * @return
	 * @author eskim
	 * @since 2020. 11. 06
	 */
	Collection<NoticeGoods> getNoticeGoodsList(Notice notice);

	/**
	 * 상품 상세공지 상품 저장
	 *
	 * @param noticeGoods
	 * @return
	 * @author eskim
	 * @since 2020. 11. 06
	 */
	void saveNoticeGoods(NoticeGoods noticeGoods);

	/**
	 * 상품 상세공지 상품 삭제
	 *
	 * @param noticeGoods
	 * @return
	 * @author eskim
	 * @since 2020. 11. 06
	 */
	void deleteNoticeGoods(NoticeGoods noticeGoods);

	/**
	 * 상품 가격예약 목록 건수
	 *
	 * @param goodsSearch
	 * @return Integer
	 * @author eskim
	 * @since 2020. 11. 13
	 */
	int getGoodsPriceResCount(GoodsSearch goodsSearch);

	/**
	 * 상품 가격예약 목록
	 *
	 * @param goodsSearch
	 * @return Collection<GoodsPriceRes>
	 * @author eskim
	 * @since 2020. 11. 13
	 */
	Collection<GoodsPriceRes> getGoodsPriceResList(GoodsSearch goodsSearch);

	/**
	 * 상품 가격예약 조회(기간 체크용)
	 *
	 * @param goodsPriceRes
	 * @return int
	 * @author eskim
	 * @since 2020. 11. 13
	 */
	int getGoodsPriceResDupChkCount(GoodsPriceRes goodsPriceRes);

	/**
	 * 상품 가격예약 등록(화면)
	 *
	 * @param goodsPriceRes
	 * @return void
	 * @author eskim
	 * @since 2020. 11. 13
	 */
	void createGoodPriceRes(GoodsPriceRes goodsPriceRes);

	/**
	 * 상품 가격예약 삭제
	 *
	 * @param goodsPriceRes
	 * @return void
	 * @author eskim
	 * @since 2020. 11. 13
	 */
	void deleteGoodPriceRes(GoodsPriceRes goodsPriceRes);

	/**
	 * 상품 동영상 목록 조회
	 *
	 * @param goodsVideo
	 * @return
	 * @author eskim
	 * @since 2020. 11. 16
	 */
	Collection<GoodsVideo> getGoodsVideoList(GoodsVideo goodsVideo);

	/**
	 * 상품 동영상 사용안함으로 변경
	 *
	 * @param video
	 * @author eskim
	 * @since 2020. 11. 16
	 */
	void updateNotUseGoodsVideo(GoodsVideo goodsVideo);

	/**
	 * 동영상 등록
	 *
	 * @param video
	 * @author eskim
	 * @since 2020. 11. 16
	 */
	void createGoodsVideo(GoodsVideo goodsVideo);

	/**
	 * 동영상 수정
	 *
	 * @param video
	 * @author eskim
	 * @since 2020. 11. 16
	 */
	void updateGoodsVideo(GoodsVideo goodsVideo);

	/**
	 * 상품 옵션 존재여부 확인
	 *
	 * @param option
	 * @return
	 * @author eskim
	 * @since 2020. 11. 17
	 */
	int getGoodsOptionCount(Option option);

	/**
	 * 상품 가격 승인 목록
	 *
	 * @param goodsPriceHst
	 * @return
	 * @author eskim
	 * @since 2020. 11. 26
	 */
	Collection<GoodsSupplyPrice> getGoodsSupplyPriceList(GoodsSupplyPrice goodsSupplyPrice);

	/**
	 * 상품 가격수정
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 11. 26
	 */
	void updateGoodsPrice(Goods goods);

	/**
	 * 상품 판매수수료율 수정
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 11. 26
	 */
	void updateSellFeeRate(Goods goods);

	/**
	 * 상품 가격승인 적용일자 변경
	 *
	 * @param goodsSupplyPrice
	 * @author eskim
	 * @since 2020. 11. 26
	 */
	void updateGoodsSupplyPricecfrmDt(GoodsSupplyPrice goodsSupplyPrice);

	/**
	 * 상품 네이버 최저가 목록
	 *
	 * @param goodsSearch
	 * @return
	 * @author eskim
	 * @since 2020. 12. 08
	 */
	Collection<GoodsNaverLowestPrice> getGoodsNaverPriceList(GoodsSearch goodsSearch);

	/**
	 * 상품 네이버 최저가 엑셀다운로드
	 *
	 * @param goodsSearch
	 * @return
	 * @author eskim
	 * @since 2021. 07. 09
	 */
	Collection<GagaMap> getGoodsNaverExcelList(GoodsSearch goodsSearch);
	
	/**
	 * 상품 네이버 최저가 최종 작업일
	 *
	 * @param
	 * @return
	 * @author eskim
	 * @since 2020. 12. 09
	 */
	String getGoodsNaverLowestPriceReqYmd();

	/**
	 * 상품 네이버 최저가  삭제
	 *
	 * @param
	 * @return
	 * @author eskim
	 * @since 2020. 12. 09
	 */
	void deleteGoodsNaverLowestPrice();

	/**
	 * 상품 네이버 최저가 저장
	 *
	 * @param goodsNaverLowestPrice
	 * @return
	 * @author eskim
	 * @since 2020. 12. 09
	 */
	void saveGoodsNaverLowestPrice(GoodsNaverLowestPrice goodsNaverLowestPrice);

	/**
	 * 상품 구매등급 조회
	 *
	 * @param goods
	 * @return
	 * @author eskim
	 * @since 2020. 12. 11
	 */
	Collection<Goods> getGoodsDetailOrderGradeList(Goods goods);

	/**
	 * 상품 안전인증 조회
	 *
	 * @param goods
	 * @return
	 * @author eskim
	 * @since 2021. 05. 10
	 */
	GoodsSafeNo getGoodsDetailSafe(Goods goods);

	/**
	 * 상품 구매등급 삭제
	 *
	 * @param map
	 * @return
	 * @author eskim
	 * @since 2020. 12. 11
	 */
	void deleteGoodsCustGrade(Goods goods);

	/**
	 * 상품 구매등급 저장
	 *
	 * @param map
	 * @return
	 * @author eskim
	 * @since 2020. 12. 11
	 */
	void createGoodsCustGrade(Goods goods);

	/**
	 * 광고 키워드 목록
	 *
	 * @param adKeyword
	 * @return
	 * @author eskim
	 * @since 2020. 12. 14
	 */
	Collection<AdKeyword> getAdKeywordList(AdKeyword adKeyword);

	/**
	 * 광고 키워드 저장
	 *
	 * @param adKeywordGoods
	 * @return
	 * @author eskim
	 * @since 2020. 12. 14
	 */
	void saveAdKeyword(AdKeyword adKeyword);

	/**
	 * 광고 키워드 상품 목록
	 *
	 * @param adKeyword
	 * @return
	 * @author eskim
	 * @since 2020. 12. 14
	 */
	Collection<AdKeywordGoods> getAdKeywordGoodsList(AdKeyword adKeyword);

	/**
	 * 광고 키워드 상품 저장
	 *
	 * @param adKeywordGoods
	 * @return
	 * @author eskim
	 * @since 2020. 12. 14
	 */
	void saveAdKeywordGoods(AdKeywordGoods adKeywordGoods);

	/**
	 * 광고 키워드 상품 삭제
	 *
	 * @param noticeGoods
	 * @return
	 * @author eskim
	 * @since 2020. 12. 14
	 */
	void deleteAdKeywordGoods(AdKeywordGoods adKeywordGoods);

	/**
	 * 재입고알림 목록 건수
	 *
	 * @param goodsSearch
	 * @return Integer
	 * @author eskim
	 * @since 2020. 12. 16
	 */
	int getReinboundInformCount(GoodsSearch goodsSearch);

	/**
	 * 재입고알림 목록
	 *
	 * @param goodsSearch
	 * @return Collection<ReinboundInform>
	 * @author eskim
	 * @since 2020. 12. 16
	 */
	Collection<ReinboundInform> getReinboundInformList(GoodsSearch goodsSearch);

	/**
	 * 재입고 알림톡 발송처리
	 *
	 * @param params
	 * @return void
	 * @author eskim
	 * @since 2020. 12. 17
	 */
	void updateReinboundInform(ReinboundInform reinboundInform);

	/**
	 * 상품이미지 목록
	 *
	 * @param goodsImg
	 * @return Collection<GoodsImg>
	 * @author eskim
	 * @since 2020. 12. 16
	 */
	Collection<GoodsImg> getGoodsImageList(GoodsImg goodsImg);

	/**
	 * 상품이미지 전체 삭제
	 * @param goodsImg - 상품이미지 정보
	 * @throws
	 * @author eskim
	 * @since 2020. 12. 21
	 */
	public void deleteGoodsImageTotal(GoodsImg goodsImg);

	/**
	 * 상품이미지 삭제
	 * @param goodsImg - 상품이미지 정보
	 * @throws
	 * @author eskim
	 * @since 2020. 12. 21
	 */
	public void deleteGoodsImage(GoodsImg goodsImg);

	/**
	 * 상품이미지 등록
	 * @param goodsImg - 상품이미지 정보
	 * @throws
	 * @author eskim
	 * @since 2020. 12. 21
	 */
	public void createGoodsImage(GoodsImg goodsImg);

	/**
	 * 사은품 목록
	 *
	 * @param GoodsSearch
	 * @return Collection<FreeGoods>
	 * @author eskim
	 * @since 2020. 12. 28
	 */
	Collection<FreeGoods> getFreeGoodsList(GoodsSearch goodsSearch);

	/**
	 * 사은품 정보 수정
	 * @param freeGoods
	 * @author eskim
	 * @since 2020. 12. 28
	 */
	public void updateFreeGoods(FreeGoods freeGoods);

	/**
	 * WMS입고상품관리 목록 건수
	 * @param goodsSearch
	 * @return Collection<WmsGoods>
	 * @author eskim
	 * @since 2021. 01. 04
	 */
	int getGoodsWmsIncomelotListCount(WmsGoods wmsGoods);

	/**
	 * WMS입고상품관리 목록 조회
	 * @param goodsSearch
	 * @return Collection<WmsGoods>
	 * @author eskim
	 * @since 2021. 01. 04
	 */
	Collection<WmsGoods> getGoodsWmsIncomelotList(WmsGoods wmsGoods);

	/**
	 *  WMS 입고상품 사은품 등록
	 * @param freeGoods
	 * @author eskim
	 * @since 2021. 01. 05
	 */
	public void saveFreeGoods(FreeGoods freeGoods);

	/**
	 *  WMS 입고상품 사은품 상품 구분 저장
	 * @param wmsGoods
	 * @author eskim
	 * @since 2021. 01. 05
	 */
	public void saveGoodsWmsIncomelot(WmsGoods wmsGoods);
	
	/**
	 *  WMS 입고상품  상품 구분 저장
	 * @param wmsGoods
	 * @author eskim
	 * @since 2021. 07. 07
	 */
	public void saveGoodsWmsIncomelotByModelNo(WmsGoods wmsGoods);

	/**
	 * 고시분류별 상품고시정보 목록
	 * @param goodsNotiInfo - 상품고시정보
	 * @return
	 * @author gagamel
	 * @since 2021. 1. 21
	 */
	public Collection<GoodsNotiInfo> getGoodsNotiInfoListByNotiClsf(GoodsNotiInfo goodsNotiInfo);

	/**
	 * 고시분류 칼럼 정보
	 * @param niClsfCd - 고시분류코드
	 * @return
	 * @author gagamel
	 * @since 2021. 1. 21
	 */
	GoodsNotiInfo getNotiClsfColumnInfo(String niClsfCd);

	/**
	 * 상품 품목별 매핑 카테고리 저장
	 *
	 * @param goods
	 * @author eskim
	 * @since 2021. 01. 24
	 */
	void createCategoryGoods(Goods goods);

	/**
	 * 상품 등록 로그 생성
	 *
	 * @param goodsMass
	 * @author eskim
	 * @since 2021. 01. 25
	 */
	void createGoodsRegLog(GoodsMass goodsMass);

	/**
	 * 상품 기본 정보 수정 - 대량엑셀
	 *
	 * @param goods
	 * @author eskim
	 * @since 2021. 1. 25
	 */
	void updateGoodsMass(Goods goods);

	/**
	 * 상품등록로그 목록
	 *
	 * @param goodsSearch
	 * @return
	 * @author eskim
	 * @since 2021. 01. 25
	 */
	Collection<GoodsMass> getGoodsRegLogList(GoodsSearch goodsSearch);

	/**
	 * 사이즈 정보 목록
	 *
	 * @param sizeInfo
	 * @return
	 * @author eskim
	 * @since 2021. 01. 26
	 */
	Collection<SizeInfo> getSizeInfoList(SizeInfo sizeInfo);

	/**
	 * 사이즈 정보 저장
	 *
	 * @param sizeInfo
	 * @return
	 * @author eskim
	 * @since 2021. 01. 27
	 */
	void saveSizeInfo(SizeInfo sizeInfo);

	/**
	 * 총알배송 제외 상품 목록
	 *
	 * @param sizeInfo
	 * @return
	 * @author eskim
	 * @since 2021. 02. 25
	 */
	Collection<Goods> getGoodsQuikDeleverySkipList(GoodsSearch goodsSearch);

	/**
	 * 총알배송 제외 상품 건수
	 *
	 * @param sizeInfo
	 * @return
	 * @author eskim
	 * @since 2021. 02. 25
	 */
	int getGoodsQuikDeleverySkipCount(GoodsSearch goodsSearch);

	/**
	 * 총알배송 제외 상품 저장
	 *
	 * @param sizeInfo
	 * @return
	 * @author eskim
	 * @since 2021. 02. 25
	 */
	void createGoodsQuikDeleverySkip(Goods goods);

	/**
	 * 총알배송 제외 상품 삭제
	 *
	 * @param sizeInfo
	 * @return
	 * @author eskim
	 * @since 2021. 02. 25
	 */
	void deleteGoodsQuikDeleverySkip(Goods goods);

	/**
	 * 상품 모델 정보
	 *
	 * @param goodsImg
	 * @return
	 * @author eskim
	 * @since 2021. 04. 27
	 */
	GoodsImg getGoodsModelInfo(GoodsImg goodsImg);

	/**
	 * 상품 모델 정보 저장
	 *
	 * @param goodsImg
	 * @return
	 * @author eskim
	 * @since 2021. 04. 27
	 */
	void saveGoodsModelInfo(GoodsImg goodsImg);

	/**
	 * WMS입고단품목록 건수
	 * @param goodsSearch
	 * @return Collection<WmsGoods>
	 * @author eskim
	 * @since 2021. 06. 28
	 */
	int getGoodsWmsIncomelotSkuListCount(IfIncomelot iIfIncomelot);

	/**
	 * WMS입고단품목록 조회
	 * @param goodsSearch
	 * @return Collection<WmsGoods>
	 * @author eskim
	 * @since 2021. 06. 28
	 */
	Collection<WmsGoods> getGoodsWmsIncomelotSkuList(IfIncomelot ifIncomelot);

	/**
	 * wms 상품정보 조회
	 *
	 * @param goodsMass
	 * @return
	 * @author eskim
	 * @since 2021. 07. 04
	 */
	WmsGoods getWmsGoodsInfo(Goods goods);

	/**
	 * wms 상품 색상, 재고판매율 적용 조회
	 *
	 * @param ifProductSku
	 * @return
	 * @author eskim
	 * @since 2021. 05. 29
	 */
	Option getWmsColorStock(IfProductSku ifProductSku);

	/**
	 * 자사브랜드, 업체 연관정보 확인 
	 *
	 * @param brand
	 * @return
	 * @author eskim
	 * @since 2021. 07. 04
	 */
	int getBrandSupplyCount(Brand brand);
	
	/**
	 * 상품 색상, 사이즈 정보 조회
	 *
	 * @param goods
	 * @return
	 * @author eskim
	 * @since 2021. 07. 05
	 */
	Goods getGoodsColorSize(Goods goods);
	
	/**
	 * 상품 대표색상 설정
	 *
	 * @param goods
	 * @return
	 * @author eskim
	 * @since 2021. 07. 05
	 */
	void updateGoodsMainColorCd(Goods goods);

	/**
	 * 상품 상세 컨텐츠 목록
	 *
	 * @param goodsSearch
	 * @return
	 * @author eskim
	 * @since 2021. 07. 14
	 */
	Collection<GoodsContents> getGoodsContentsList(GoodsSearch goodsSearch);

	/**
	 * 상품 상세 컨텐츠 상품 목록
	 *
	 * @param goodsSearch
	 * @return
	 * @author eskim
	 * @since 2021. 07. 14
	 */
	Collection<GoodsContentsData> getGoodsContentsDataList(GoodsContents goodsContents);

	/**
	 * 상품 상세 컨텐츠 저장
	 *
	 * @param noticeGoods
	 * @return
	 * @author eskim
	 * @since 2021. 07. 14
	 */
	void createGoodsContents(GoodsContents goodsContents);

	/**
	 * 상품 상세 컨텐츠 수정
	 *
	 * @param noticeGoods
	 * @return
	 * @author eskim
	 * @since 2021. 07. 14
	 */
	void updateGoodsContents(GoodsContents goodsContents);

	
	/**
	 * 상품 상세 컨텐츠 상품 저장
	 *
	 * @param noticeGoods
	 * @return
	 * @author eskim
	 * @since 2021. 07. 14
	 */
	void saveGoodsContent(GoodsContentsData goodsContentsData);

	
	/**
	 * 상품 상세 컨텐츠 상품 삭제
	 *
	 * @param noticeGoods
	 * @return
	 * @author eskim
	 * @since 2021. 07. 14
	 */
	void deleteGoodsContentGoods(GoodsContentsData goodsContentsData);
}
