package com.cym.model;

import java.io.Serializable;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;

import com.cym.bean.CreateTime;
import com.cym.bean.InitValue;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.SchemaProperty;

@Schema(description ="用户")
@Entity
public class User implements Serializable {

	private static final long serialVersionUID = -3591882129154972699L;

	@Schema(description ="主键")
	@Id
	String id;
	@Schema(description ="用户名")
	@Column(unique = true)
	String name;
	@Schema(description ="用户真实名称")
	String realname;
	@Schema(description ="地址")
	String addr;
	
	/*-----------OEM信息----------*/
	@Schema(description ="访问域名")
	String host;
	@Schema(description ="公司名")
	String companyName;
	@Schema(description ="版权")
	String copyright;

	@Schema(description ="qq")
	String qq;
	@Schema(description ="电话")
	String phone;
	@Schema(description ="邮箱")
	String email;
	@Schema(description ="密码")
	String pass;

	@Schema(description ="货币类型 CNY:人民币 USD:美元")
	@InitValue("CNY")
	String moneyType;

	@Schema(description ="余额")
	@Column(columnDefinition = "decimal(20,2)")
	@InitValue("0")
	Double money;

	@Schema(description ="分润(美元)")
	@InitValue("0")
	Double profitUsd;

	
	@Schema(description ="注册ip")
	String registIp;

	@Schema(description ="注册时间")
	Long registTime;

	@Schema(description ="实名认证状态 0:未认证 1:认证中 2:已认证 3:认证失败")
	@InitValue("0")
	Integer realNameStatus;

	@Schema(description ="推广人id")
	String parentUserId;

	@Schema(description ="api key")
	String apiKey;

	@Schema(description ="api apiSecret")
	String apiSecret;

	@Schema(description ="api token")
	String token;

	@Schema(description ="token有效期")
	Long tokenExpiresTime;

	@Schema(description ="用户等级id")
	String levelId;

	@Schema(description ="身份证号码")
	String idCard;

	@Schema(description ="身份证正面")
	String cardFront;

	@Schema(description ="身份证背面")
	String cardBack;

	@Schema(description ="手持身份证照片")
	String cardHand;

	@Schema(description ="自动登录key")
	String autoKey;

	@Schema(description ="创建时间")
	@CreateTime
	Long createTime;

	@Schema(description ="是否从fk同步过来")
	@InitValue("false")
	Boolean fromFk;

	@InitValue("0")
	@Schema(description ="保证金")
	Double ensureMoney;

	@Schema(description ="保证金时间")
	Long ensureMoneyTime;

	@InitValue("false")
	@Schema(description ="是否长期合作伙伴")
	Boolean longTime;

	@Schema(description ="tg对话id")
	String chatId;
	
	@Schema(description ="短信条数")
	@InitValue("0")
	Long smsCount;

	@Schema(description ="使用短信通知")
	@InitValue("false")
	Boolean smsNotice;


	// acme-dns需要的参数
	String username;
	String password;
	String fulldomain;
	String subdomain;

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getFulldomain() {
		return fulldomain;
	}

	public void setFulldomain(String fulldomain) {
		this.fulldomain = fulldomain;
	}

	public String getSubdomain() {
		return subdomain;
	}

	public void setSubdomain(String subdomain) {
		this.subdomain = subdomain;
	}
	
	public Boolean getSmsNotice() {
		return smsNotice;
	}

	public void setSmsNotice(Boolean smsNotice) {
		this.smsNotice = smsNotice;
	}

	public Long getSmsCount() {
		return smsCount;
	}

	public void setSmsCount(Long smsCount) {
		this.smsCount = smsCount;
	}

	public Double getProfitUsd() {
		return profitUsd;
	}

	public void setProfitUsd(Double profitUsd) {
		this.profitUsd = profitUsd;
	}

	public String getChatId() {
		return chatId;
	}

	public void setChatId(String chatId) {
		this.chatId = chatId;
	}

	public String getCopyright() {
		return copyright;
	}

	public void setCopyright(String copyright) {
		this.copyright = copyright;
	}

	public Boolean getLongTime() {
		return longTime;
	}

	public void setLongTime(Boolean longTime) {
		this.longTime = longTime;
	}

	public Double getMoney() {
		return money;
	}

	public void setMoney(Double money) {
		this.money = money;
	}

	public Double getEnsureMoney() {
		return ensureMoney;
	}

	public void setEnsureMoney(Double ensureMoney) {
		this.ensureMoney = ensureMoney;
	}

	public Long getEnsureMoneyTime() {
		return ensureMoneyTime;
	}

	public void setEnsureMoneyTime(Long ensureMoneyTime) {
		this.ensureMoneyTime = ensureMoneyTime;
	}

	public String getCardHand() {
		return cardHand;
	}

	public void setCardHand(String cardHand) {
		this.cardHand = cardHand;
	}

	public Boolean getFromFk() {
		return fromFk;
	}

	public void setFromFk(Boolean fromFk) {
		this.fromFk = fromFk;
	}

	public Long getCreateTime() {
		return createTime;
	}

	public Long getRegistTime() {
		return registTime;
	}

	public void setRegistTime(Long registTime) {
		this.registTime = registTime;
	}

	public void setCreateTime(Long createTime) {
		this.createTime = createTime;
	}

	public String getAutoKey() {
		return autoKey;
	}

	public void setAutoKey(String autoKey) {
		this.autoKey = autoKey;
	}

	public String getIdCard() {
		return idCard;
	}

	public void setIdCard(String idCard) {
		this.idCard = idCard;
	}

	public String getCardFront() {
		return cardFront;
	}

	public void setCardFront(String cardFront) {
		this.cardFront = cardFront;
	}

	public String getCardBack() {
		return cardBack;
	}

	public void setCardBack(String cardBack) {
		this.cardBack = cardBack;
	}

//	public String getAdminId() {
//		return adminId;
//	}
//
//	public void setAdminId(String adminId) {
//		this.adminId = adminId;
//	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public String getHost() {
		return host;
	}

	public void setHost(String host) {
		this.host = host;
	}

	public String getLevelId() {
		return levelId;
	}

	public void setLevelId(String levelId) {
		this.levelId = levelId;
	}

	public String getApiKey() {
		return apiKey;
	}

	public void setApiKey(String apiKey) {
		this.apiKey = apiKey;
	}

	public String getApiSecret() {
		return apiSecret;
	}

	public void setApiSecret(String apiSecret) {
		this.apiSecret = apiSecret;
	}

	public String getToken() {
		return token;
	}

	public void setToken(String token) {
		this.token = token;
	}

	public Long getTokenExpiresTime() {
		return tokenExpiresTime;
	}

	public void setTokenExpiresTime(Long tokenExpiresTime) {
		this.tokenExpiresTime = tokenExpiresTime;
	}

	public String getParentUserId() {
		return parentUserId;
	}

	public void setParentUserId(String parentUserId) {
		this.parentUserId = parentUserId;
	}

//	public Integer getMoneyType() {
//		return moneyType;
//	}
//
//	public void setMoneyType(Integer moneyType) {
//		this.moneyType = moneyType;
//	}

	public Integer getRealNameStatus() {
		return realNameStatus;
	}

	public void setRealNameStatus(Integer realNameStatus) {
		this.realNameStatus = realNameStatus;
	}

	public String getRegistIp() {
		return registIp;
	}

	public void setRegistIp(String registIp) {
		this.registIp = registIp;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPass() {
		return pass;
	}

	public void setPass(String pass) {
		this.pass = pass;
	}

	public String getRealname() {
		return realname;
	}

	public void setRealname(String realname) {
		this.realname = realname;
	}

	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}

	public String getCompanyName() {
		return companyName;
	}

	public void setCompanyName(String companyName) {
		this.companyName = companyName;
	}

	public String getQq() {
		return qq;
	}

	public void setQq(String qq) {
		this.qq = qq;
	}

	public String getMoneyType() {
		return moneyType;
	}

	public void setMoneyType(String moneyType) {
		this.moneyType = moneyType;
	}

}
