package com.style24.persistence.domain;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.style24.core.support.util.CryptoUtils;
import com.style24.persistence.TscBaseDomain;

import lombok.Data;

/**
 * 고객 Domain
 * @JsonSerialize 애노테이션을 지정해야 세션을 레디스에 저장할 수 있다.
 * @author gagamel
 * @since 2019. 12. 4
 */
@SuppressWarnings("serial")
@Data
@JsonSerialize
@JsonIgnoreProperties(ignoreUnknown = true)
public class Login extends TscBaseDomain {

	// 세션을 JSON 형식으로 레디스에 저장하려면 기본 생성자를 반드시 명시해야 한다
	public Login() {

	}

	private Integer custNo;			// 고객번호
	private String custId;			// 고객ID
	private String custNm;			// 고객명
	private String passwd;			// 비밀번호
	private String custGb;			// 고객구분
	private String custGbNm;		// 고객구분명
	private String custGrade;		// 고객등급
	private String custGradeNm;		// 고객등급명
	private String custStat;		// 고객상태
	private String cellPhnno;		// 휴대전화번호
	private String email;			// 이메일
	private String birthYmd;		// 생년월일
	private String sexGb;			// 성별
	private String snsType;			// SNS유형
	private String snsId;			// SNS가입ID
	private int loginFailCnt;		// 로그인실패건수
	private int blockSecs;			// 로그인블락시간(초)
	private String siteCd;			// 가입사이트코드(공통코드G000)
	private String frontGb;			// 프론트구분(P:PC, M:모바일)
	private String ipAddr;			// IP주소
	private String loginLdt;		// 최종로그인일시
	private String loginFailYn;		// 로그인실패여부
	private String tempPasswdYn;	// 임시비밀번호여부
	private int pwdChgDay;			// 비밀번호변경일자
	private String ci;				// CI(본인인증여부)
	private String appAgreeYn;		// 앱푸시수신동의여부
	private String appAgreeDt;		// 앱푸시수신동의일시
	private String mkAgreeYn;		// 마케팅푸시수신동의여부
	private String mkAgreeDt;		// 마케팅푸시수신동의일시

	// 암호화 대상 복호화 처리 =================================================
	public String getCustNm() {
		this.custNm = CryptoUtils.decryptAES(this.custNm);
		return this.custNm;
	}

	public String getCellPhnno() {
		this.cellPhnno = CryptoUtils.decryptAES(this.cellPhnno);
		return this.cellPhnno;
	}

	public String getEmail() {
		this.email = CryptoUtils.decryptAES(this.email);
		return this.email;
	}

	public String getBirthYmd() {
		this.birthYmd = CryptoUtils.decryptAES(this.birthYmd);
		return this.birthYmd;
	}

	public String getSexGb() {
		this.sexGb = CryptoUtils.decryptAES(this.sexGb);
		return this.sexGb;
	}
	// 암호화 대상 복호화 처리 =================================================

}
