package cn.pluss.platform.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 缴费通详情表
 * </p>
 *
 * @author Djh
 * @since 2022-06-22
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_pluss_jft_merc_base_info")
public class JftMercBaseInfo implements Serializable {

    public interface Common {}

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
//    @JSONField(serialize = false)
    private Long id;

    /**
     * 自动进件标识
     */
    @TableField(exist = false)
    private String autoFlag;

    /**
     * 与用户关联
     */
    @TableField("userId")
//    @JSONField(serialize = false)
    private Long userId;


    @TableField("merchantCode")
    private String merchantCode;


    /**
     * 商户名称。有营业执照的，要求与营业执照上的名称一致。
     */
    @NotEmpty(message = "商户名称不能为空", groups = {JftMercBaseInfo.Common.class})
    @TableField("merchantName")
    private String merchantName;


    /**
     * 商户类型/营业执照类型 可选值：
     * 1:小微
     * 2:个体3:企业
     */
    @NotEmpty(message = "商户类型不能为空", groups = {JftMercBaseInfo.Common.class})
    @TableField("merchantType")
    private String merchantType;


    /**
     * 经营类目编码
     */
    @NotEmpty(message = "经营类目mcc编码不能为空", groups = {JftMercBaseInfo.Common.class})
    @TableField("mcc")
    private String mcc;


    /**
     * 经营类目名称
     */
    @NotEmpty(message = "经营类目编码不能为空", groups = {JftMercBaseInfo.Common.class})
    @TableField("mccName")
    private String mccName;


    /**
     * 商户简称
     */
    @NotEmpty(message = "商户简称不能为空", groups = {JftMercBaseInfo.Common.class})
    @TableField("alias")
    private String alias;


    /**
     * 商家省市区编码（微信需要的）用横杠隔开-
     */
    @TableField("addressNo")
    private String addressNo;


    /**
     * 省份
     */
    @NotEmpty(message = "省份不能为空", groups = {JftMercBaseInfo.Common.class})
    @TableField("province")
    private String province;


    /**
     * 城市
     */
    @NotEmpty(message = "市不能为空", groups = {JftMercBaseInfo.Common.class})
    @TableField("city")
    private String city;


    /**
     * 区
     */
    @NotEmpty(message = "区/县不能为空", groups = {JftMercBaseInfo.Common.class})
    @TableField("district")
    private String district;


    /**
     * 店铺地址
     */
    @NotEmpty(message = "店铺地址不能为空", groups = {JftMercBaseInfo.Common.class})
    @TableField("address")
    private String address;


    /**
     * 负责人名称或企业法人代表姓名（营业执照上的姓名）
     */
    @TableField("principalPerson")
    private String principalPerson;


    /**
     * 营业执照名称
     */
    @TableField("bussAuthName")
    private String bussAuthName;


    /**
     * 营业执照工商注册号/营业执照号
     */
    @TableField("bussAuthNum")
    private String bussAuthNum;


    /**
     * 营业执照上的地址/营业执照注册地址
     */
    @TableField("bussAuthAddress")
    private String bussAuthAddress;


    /**
     * 营业执照注册开始时间
     */
    @TableField("bussAuthStartTime")
    private String bussAuthStartTime;


    /**
     * 营业执照有效期结束时间
     */
    @TableField("bussAuthEndTime")
    private String bussAuthEndTime;


    /**
     * 创建日期
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "createTime", fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 创建日期 开始时间
     */
    @JSONField(serialize = false)
    @TableField(exist = false, condition = "createTime &gt; #{%s}")
    private Date createTimeStart;

    /**
     * 创建日期 截止时间
     */
    @JSONField(serialize = false)
    @TableField(exist = false, condition = "createTime &lt; #{%s}")
    private Date createTimeEnd;

    /**
     * 修改日期
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "updateTime", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 修改日期 开始时间
     */
    @JSONField(serialize = false)
    @TableField(exist = false, condition = "updateTime &gt; #{%s}")
    private Date updateTimeStart;

    /**
     * 修改日期 截止时间
     */
    @JSONField(serialize = false)
    @TableField(exist = false, condition = "updateTime &lt; #{%s}")
    private Date updateTimeEnd;

    /**
     * 0短期有效 1长期有效
     */
    @TableField("buslicType")
    private String buslicType;

    /**
     * 门头照
     */
    @NotEmpty(message = "门头照不能为空", groups = {JftMercBaseInfo.Common.class})
    @TableField("frontPic")
    private String frontPic;

    /**
     * 收银台照
     */
    @NotEmpty(message = "收银台照不能为空", groups = {JftMercBaseInfo.Common.class})
    @TableField("cashDesk")
    private String cashDesk;

    /**
     * 门店内景照
     */
    @NotEmpty(message = "门店内景照不能为空", groups = {JftMercBaseInfo.Common.class})
    @TableField("interior")
    private String interior;

    @JSONField(serialize = false)
    @TableField("notifyUrl")
    private String notifyUrl;
}