package com.style24.persistence.domain.searchengine;

import java.io.Serializable;
import java.util.Collection;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.style24.persistence.TscPageRequest;

import lombok.Data;

/**
 * 검색엔진 연동 도메인
 * 
 * @author gagamel
 * @since 2021. 4. 29
 */
@SuppressWarnings("serial")
@Data
public class SearchEngine implements Serializable {

	// 인기검색어 목록
	Collection<Trend> trendList;

	// 파라미터
	private String siteCd;			// 사이트코드
	private String cateGb;			// 카테고리구분
	private String filterGb;		// 필터구분
	private Integer custNo;			// 고객번호

	private Integer cate1No;		// 카테고리1번호
	private Integer cate2No;		// 카테고리2번호
	private Integer cate3No;		// 카테고리3번호
	private Integer cate4No;		// 카테고리4번호
	private Integer cate5No;		// 카테고리5번호
	private String keyword;			// 키워드
	private Integer brandGroupNo;	// 브랜드그룹번호
	private String formalGb;		// 정상이월구분
	private String defaultCateYn;	// 기본카테고리사용여부
	private String frontGb;			// 프론트구분
	private String custGb;			// 고객구분
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] brandGroupArr;	// 브랜드그룹배열
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] sizeArr;		// 사이즈배열
	private Integer priceFrom;		// 가격From
	private Integer priceTo;		// 가격To
	private Integer dcRateFrom;		// 할인율From
	private Integer dcRateTo;		// 할인율To
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] ageArr;		// 사이즈배열
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] seasonArr;		// 시즌배열
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] colorArr;		// 색상배열
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] benefitArr;	// 혜택배열
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] priceArr;	// 가격배열
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] dcRateArr;	// 할인율배열
	private String unisex;			// 남여공용만보기(성별구분:G007_Z)
	private String newGoods;		// 신상품만보기(혜택구분:40)
	private String sortingType;		// 정렬순서(BELOVED: 인기상품순, REVIEW: 리뷰많은순 그외는 최신상품순)
	private String priceSql;
	private String dcRateSql;
	private int pageNo = 1;			// 페이지번호
	private int pageSize = 50;		// 페이지사이즈
	private int pageUnit = 10;		// 페이지단위
	private TscPageRequest pageable;

	// Result - 상품리스트
	private String brandGroupNm;	// 브랜드그룹명
	private String goodsCd;			// 상품코드
	private String goodsFullNm;		// 상품FULL명
	private String goodsTnm;		// 상품타이틀명
	private int listPrice;			// 정상가
	private int currPrice;			// 현재판매가(=혜택가)
	private String sysImgNm;		// 상품시스템파일명(썸네일 기본 이미지)
	private String sysImgNm2;		// 상품시스템파일명2(썸네일 마우스오버 이미지)
	private String videos;			// 동영상들(,로 연결된 문자열. 동영상구분:미디어컨텐츠 또는 유튜브동영상ID, ...)
	private String colorChips;		// 컬러칩들(,로 연결된 문자열. 색상코드:컬러칩, ...)
	private String sizes;			// 사이즈들(,로 연결된 문자열. 사이즈코드:품절여부, ...)
	private String benefits;		// 혜택들(,로 연결된 문자열. 혜택구분:혜택명, ...)
	private String likeIt;			// 좋아요(위시리스트에담긴상품)
	private String mainColorCd;		// 메인컬러
	private String selfGoodsYn;		// 자사상품여부
	private String colorCd;
	private String adFlag;			// 광고상품여부
	private String id;
	private String goodsType;

//	private String adminIp;			// 검색엔진IP
//	private String adminPort;		// 검색엔진포트
	private String returnCode;		// 검색오류코드(양수: 정상, 음수: 오류)

	// 기획전 리스트
	private String mainPimg;		//메인이미지(Pc)
	Collection<PlanningGoods> planningGoodsList;
	private String planNm;			//기획전명
	private Integer planSq;			//기획전일련번호(SeqPlan sequence)
	private String dtlTitle1;		//상세제목1
	private String brandNm;
	private String newYn;

	// 이벤트 리스트
	private String dispStdt;			//기획전 시작일시
	private String dispEddt;			//기획전 종료일시

	// 연관검색어 로그 쌓기
	private int feedbackLog;

	@Data
	public class Trend {
		// 인기검색어
		private String keyword;	// 키워드
		private int prevRank;	// 이전랭킹
		private int ranking;	// 랭킹
	}

	@Data
	public class PlanningGoods {
		// 기획전,이벤트
		private String goodsCd;				// 상품 코드
		private String goodsNm;				// 상품 명
		private int currPrice;			// 판매가
		private String sysImgNm;			// 상품 이미지
		private int listPrice;			// 최소 소비자가
	}

}
