
package com.tmerclub.cloud.multishop.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.*;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * 店铺详情DTO
 *
 * @author tmerclub
 * @date 2020-12-05 15:50:25
 */
@Data
public class ShopDetailDTO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    @Schema(description = "店铺id")
    private Long shopId;

    @Schema(description = "店铺类型1自营店 2普通店")
    @Max(value = 2, message = "只能为1或2")
    @Min(value = 1, message = "只能为1或2")
    private Integer type;

    @Schema(description = "商家名称")
    @NotBlank(message = "商家名称不能为空")
    @Length(min = 2, max = 10, message = "商家名称需要在2到10个字符之间")
    private String merchantName;

    @Schema(description = "店铺名称")
    @NotBlank(message = "店铺名称不能为空")
    @Length(min = 2, max = 20, message = "店铺名称需要在2到20个字符之间")
    private String shopName;

    @Schema(description = "联系人姓名")
    @NotBlank(message = "联系人不能为空")
    @Length(min = 2, max = 10, message = "联系人姓名需要在2到10个字符之间")
    private String contactName;

    @Schema(description = "联系方式")
    @NotBlank(message = "联系方式不能为空")
    private String contactPhone;

    @Schema(description = "店铺简介")
    @Length(max = 200, message = "店铺简介字符不能超过200")
    private String intro;

    @Schema(description = "接收短信号码")
    private String noticeMobile;

    @Schema(description = "店铺logo(可修改)")
    private String shopLogo;

    @Schema(description = "店铺状态(-1:已删除 0: 停业中 1:营业中 2:平台下线 3:开店申请待审核 4:店铺申请中 5:上线申请待审核 6.审核失败（通联）)")
    private Integer shopStatus;

    @Schema(description = "备注信息")
    private String remarks;

    @Schema(description = "是否优选好店 1.是 0.不是")
    @Max(value = 1, message = "只能为0或1")
    @Min(value = 0, message = "只能为0或1")
    private Integer isPreferred;

    @Schema(description = "账号名", requiredMode = Schema.RequiredMode.REQUIRED)
    private String username;

    @Size(max = 64)
    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED)
    private String password;

    @Size(max = 15)
    @Schema(description = "手机号", requiredMode = Schema.RequiredMode.REQUIRED)
    private String phone;

    @Schema(description = "验证码", requiredMode = Schema.RequiredMode.REQUIRED)
    private String code;

    @Schema(description = "移动端背景图")
    private String mobileBackgroundPic;

    @Schema(description = "pc背景图")
    private String pcBackgroundPic;

    @Schema(description = "店铺中的商品数量")
    @Max(value = 5, message = "最多只能返回5个商品")
    @Min(value = 0, message = "spuNum不能小于0")
    private Integer spuNum;

    @Schema(description = "签约起始时间")
    private Date contractStartTime;

    @Schema(description = "签约终止时间")
    private Date contractEndTime;

    @Schema(description = "支付系统类型")
    private Integer paySysType;

    public Date getContractStartTime() {
        return contractStartTime;
    }

    public void setContractStartTime(Date contractStartTime) {
        this.contractStartTime = contractStartTime;
    }

    public Date getContractEndTime() {
        return contractEndTime;
    }

    public void setContractEndTime(Date contractEndTime) {
        this.contractEndTime = contractEndTime;
    }

    public String getContactPhone() {
        return contactPhone;
    }

    public void setContactPhone(String contactPhone) {
        this.contactPhone = contactPhone;
    }

    public String getMobileBackgroundPic() {
        return mobileBackgroundPic;
    }

    public void setMobileBackgroundPic(String mobileBackgroundPic) {
        this.mobileBackgroundPic = mobileBackgroundPic;
    }

    public String getPcBackgroundPic() {
        return pcBackgroundPic;
    }

    public void setPcBackgroundPic(String pcBackgroundPic) {
        this.pcBackgroundPic = pcBackgroundPic;
    }

    public Integer getIsPreferred() {
        return isPreferred;
    }

    public void setIsPreferred(Integer isPreferred) {
        this.isPreferred = isPreferred;
    }

    public Long getShopId() {
        return shopId;
    }

    public void setShopId(Long shopId) {
        this.shopId = shopId;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public String getIntro() {
        return intro;
    }

    public void setIntro(String intro) {
        this.intro = intro;
    }

    public String getNoticeMobile() {
        return noticeMobile;
    }

    public void setNoticeMobile(String noticeMobile) {
        this.noticeMobile = noticeMobile;
    }

    public String getShopLogo() {
        return shopLogo;
    }

    public void setShopLogo(String shopLogo) {
        this.shopLogo = shopLogo;
    }

    public Integer getShopStatus() {
        return shopStatus;
    }

    public void setShopStatus(Integer shopStatus) {
        this.shopStatus = shopStatus;
    }

    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    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 getPhone() {
        return phone;
    }

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

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public Integer getSpuNum() {
        return spuNum;
    }

    public void setSpuNum(Integer spuNum) {
        this.spuNum = spuNum;
    }

    public String getMerchantName() {
        return merchantName;
    }

    public void setMerchantName(String merchantName) {
        this.merchantName = merchantName;
    }

    public String getContactName() {
        return contactName;
    }

    public void setContactName(String contactName) {
        this.contactName = contactName;
    }

    public Integer getPaySysType() {
        return paySysType;
    }

    public void setPaySysType(Integer paySysType) {
        this.paySysType = paySysType;
    }

    @Override
    public String toString() {
        return "ShopDetailDTO{" +
                "shopId=" + shopId +
                ", type=" + type +
                ", merchantName='" + merchantName + '\'' +
                ", shopName='" + shopName + '\'' +
                ", contactName='" + contactName + '\'' +
                ", contactPhone='" + contactPhone + '\'' +
                ", intro='" + intro + '\'' +
                ", noticeMobile='" + noticeMobile + '\'' +
                ", shopLogo='" + shopLogo + '\'' +
                ", remarks='" + remarks + '\'' +
                ", shopStatus=" + shopStatus +
                ", isPreferred=" + isPreferred +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", phone='" + phone + '\'' +
                ", code='" + code + '\'' +
                ", mobileBackgroundPic='" + mobileBackgroundPic + '\'' +
                ", pcBackgroundPic='" + pcBackgroundPic + '\'' +
                ", spuNum=" + spuNum +
                ", contractStartTime=" + contractStartTime +
                ", contractEndTime=" + contractEndTime +
                ", paySysType=" + paySysType +
                '}';
    }
}
