package com.style24.batch.biz.dao;

import java.util.Collection;

import com.style24.core.support.annotation.ShopDs;
import com.style24.persistence.domain.Coupon;
import com.style24.persistence.domain.Goods;
import com.style24.persistence.domain.GoodsSafeNo;
import com.style24.persistence.domain.GoodsSummary;

/**
 * 상품 Dao
 *
 * @author eskim
 * @since 2020. 11. 27
 */
@ShopDs
public interface TsbGoodsDao {

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

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

	/**
	 * 상품 타이틀예약 종료처리
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodsTnmRes();

	/**
	 * 상품 타이틀예약 작업
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodsTnm();

	/**
	 * 상품 가격 예약건 초기화
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodPriceInit();

	/**
	 * 상품 가격예약 종료처리
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodsPriceRes();

	/**
	 * 상품 가격예약 작업
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodsPrice();

	/**
	 * 상품 검색어 작업
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodsSnmByGoodsSnm1Null();

	/**
	 * 상품 자동 검색어 조회
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	Collection<Goods> getGoodsByGooodsSnm1List();

	/**
	 * 상품 검색어 작업
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodsSnm(Goods goods);

	/**
	 * 상품즉시할인가 temp 테이블 삭제
	 *
	 * @param
	 * @author eskim
	 * @since 2020. 12. 02
	 */
	void deleteGoodsBenefitPriceTemp();

	/**
	 * 상품즉시할인가 temp 적용 변경
	 *
	 * @param
	 * @author eskim
	 * @since 2020. 12. 02
	 */
	void crteateGoodsBenefitPriceTemp(Coupon coupon);

	/**
	 * 상품즉시할인가 temp 적용 변경
	 *
	 * @param
	 * @author eskim
	 * @since 2020. 12. 02
	 */
	void updateGoodsBenefitPriceTemp(Coupon coupon);

	/**
	 * 상품즉시할인가 테이블 삭제
	 *
	 * @param
	 * @author eskim
	 * @since 2020. 12. 02
	 */
	void deleteGoodsBenefitPrice();

	/**
	 * 상품즉시할인가 생성
	 *
	 * @param
	 * @author eskim
	 * @since 2020. 12. 02
	 */
	void createGoodsBenefitPrice();

	/**
	 * 연관상품보기 스코어링 삭제
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void deleteGoodsRelate(String workDt);

	/**
	 * 연관상품보기 스코어링 생성
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsRelate(String work7agoDt);

	/**
	 * 전시상품 통계정보작업 - temp 테이블 삭제
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void deleteGoodsSummaryTemp();

	/**
	 * 전시상품 통계정보작업 - 상품 판매수량
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsSummaryBySale(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 -상품 조회수
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsSummaryByView(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 - 상품평 건수
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsSummaryByReviewCount(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 - 상품평 점수합계
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsSummaryByReviewSum(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 - 상품평 스코어합계
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsSummaryByReviewScore(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 - 상품문의
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsSummaryByCounsel(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 - 통계정보 저장
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void saveGoodsSummary();

	/**
	 * 안전인증대상 상품 조회
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	Collection<GoodsSafeNo> getGoodsSafeNoList();

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


}
