package com.style24.persistence.domain;

import java.util.Collection;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.style24.core.support.util.MaskingUtils;
import com.style24.persistence.TscBaseDomain;
import com.style24.persistence.TscPageRequest;

import lombok.Data;

/**
 * 상품평 Domain
 *
 * @author eskim
 * @since 2021. 03. 15
 */
@SuppressWarnings("serial")
@Data
public class Review extends TscBaseDomain {

	private Integer reviewSq;		// 상품평일련번호
	private String goodsCd;			// 상품코드
	private String reviewGb;		// 상품평구분(R:일반상품평, P:프리미엄상품평)
	private Integer custNo;			// 고객번호
	private Integer ordNo;			// 주문번호
	private Integer ordDtlNo;		// 주문상세번호
	private String reviewTitle;		// 상품평제목
	private String reviewContent;	// 상품평내용
	private String score;			// 구매평점
	private int height;				// 키
	private int weight;				// 몸무게
	private String scoreSize;		// 사이즈점수(공통코드G040)
	private String scoreColor;		// 컬러점수(공통코드G039)
	private String scoreFit;		// 핏점수(공통코드G042)
	private String scoreThick;		// 두께감점수(공통코드G079)
	private String scoreWeight;		// 무게감점수(공통코드G080)
	private String scoreBall;		// 볼넓이점수(공통코드G041)
	private int giveDuePnt;			// 지급예정포인트
	private String pntGiveStat;		// 포인트지급상태(공통코드G043)
	private String bestYn;			// 베스트여부
	private int giveDueBpnt;		// 베스트지급예정포인트
	private String bpntGiveYn;		// 베스트포인트지급여부
	private String dispYn;			// 표시여부
	private String delYn;			// 삭제여부a
	private String confirmYn;		// 확인여부
	private int confirmUno;			// 확인자번호
	private String confirmDt;		// 확인일시
	private String admRpl;			// 관리자댓글
	private int admRplRegNo;		// 댓글등록자번호
	private String admRplDt;		// 관리자댓글등록일시
	private String frontGb;
	private String custGb;
	private String brandNm;
	private int attachSq;

	private String custId;			// 고객ID
	private String sysImgNm;		// 상품대표이미지
	private String sizeGb;			// 사이즈구분(T:상의, B:하의, S:신발)
	private String scoreSizeNm;		// 사이즈점수(공통코드G040)
	private String scoreColorNm;	// 컬러점수(공통코드G039)
	private String scoreFitNm;		// 핏점수(공통코드G042)
	private String scoreThickNm;	// 두께감점수(공통코드G079)
	private String scoreWeightNm;	// 무게감점수(공통코드G080)
	private String scoreBallNm;		// 볼넓이점수(공통코드G041)
	private String photoYn;			// 포토상품평유무
	private String goodsType;		// 상품유형
	private String selfGoodsYn;		// 자사상품여부
	private int iscore;				// 구매평점(상품상세용)
	private int rownum;

	private String reviewScore;		// 상품평 검색조건 평점
	private String reviewOption;	// 상품평 검색조건 옵션
	private String reviewHeight;	// 상품평 검색조건 키	0-150
	private int reviewHeightSt;	// 상품평 검색조건 구간시작	0
	private int reviewHeightEd;	// 상품평 검색조건 구간종료	150
	private String reviewWeight;	// 상품평 검색조건 몸무게	0-50
	private int reviewWeightSt;	// 상품평 검색조건 몸무게 구간시작	0
	private int reviewWeightEd;	// 상품평 검색조건 몸무게 구간종료	50

	private String reviewSysImg;	// 리뷰대표이미지
	private String sysFileNm;		//시스템 파일명
	private String orgFileNm;		// 원본 파일명
	private String goodsImageYn;	// 이미지 여부
	private int rankno;				// 리뷰 순서
	private Integer planSq;			// 기획전 번호
	private String title;			// 기획전 타이틀
	private String goodsNm;			// 상품이름
	private int currPrice;		// 현재가
	private String fileGb;			// 첨부파일 종류
	private int cnt;				// 작성가능한 리뷰 카운트
	private int count;				// 작성한 리뷰 카운트
	private String siteCd;
	private String reviewStat;		// 리뷰상태(수정or등록)
	private String rplCfmYn;		//관리자댓글확인여부(고객)
	private String rplCfmDt;		//관리자댓글확인일시(고객)
	private String payDt;
	private String brandEnm;
	private String optCd1;
	private String optCd2;
	private String optCd1Nm;
	private String remainDt;
	private String itemNm;
	private String colorNm;
	private int prevReviewSq;
	private int nextReviewSq;
	private int reviewExpireDay;
	private String kmcKey;
	private String kufKey;
	private Integer rvAtcSq;
	private String ordDt;
	
	private Integer custPntSq;		// 고객포인트일련번호
	private int gvPntAmt;			// 지급포인트금액
	private String occurGb;			// 포인트발생구분
	private String occurDtlDesc;	// 포인트발생상세설명
	private int pntAmt;				// 포인트금액
	private String pntUploadStat;	// 포인트반영상태

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] orgFileNmArr;
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] sysFileNmArr;
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] kmcKeyArr;
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] kufKeyArr;
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] itemNmArr;		// 옵션코드
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] optCdArr;		// 옵션코드
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] colorNmArr;	// 컬러명
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] optCd1Arr;		// 옵션코드
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] optCd2Arr;		// 옵션코드
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] itemQtyArr;	// 구성상품번호

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)

	// Masking
	public String getMaskingCustId() {
		return (this.custId != null) ? MaskingUtils.id(this.custId) : this.custId;
	}

	Collection<ReviewAttach> reviewAttachList;	//상품평 첨부파일목록

	Collection<Goods> goodsOptionList;			//상품평 상품 옵션목록

	// Pagination
	@JsonInclude(JsonInclude.Include.NON_EMPTY)
	private TscPageRequest pageable;
	@JsonInclude(JsonInclude.Include.NON_EMPTY)
	private TscPageRequest pageable2;

	private int pageNo = 1;							// 페이지번호
	private int pageSize = 10;						// 페이지목록수
	private int pageUnit = 10;						// 페이지번호수

	private int pageNo2 = 1;							// 페이지번호
	private int pageSize2 = 10;						// 페이지목록수
	private int pageUnit2 = 10;						// 페이지번호수

}
