package shop.alien.entity.store.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import shop.alien.entity.store.StoreBusinessInfo;
import shop.alien.entity.store.dto.deserializer.StringToListDeserializer;

import java.util.Date;
import java.util.List;

/**
 * 二期-门店信息
 *
 * @author ssk
 * @since 2024-12-05
 */
@Data
@JsonInclude
@ApiModel(value = "StoreInfoDto对象", description = "门店信息")
public class StoreInfoDto {

    @ApiModelProperty(value = "主键")
    private Integer id;

    @ApiModelProperty(value = "门店名称")
    private String storeName;

    @ApiModelProperty(value = "联系人姓名")
    private String storeContact;

    @ApiModelProperty(value = "联系人电话")
    private String storePhone;

    @ApiModelProperty(value = "联系人密码")
    private String password;

    @ApiModelProperty(value = "营业状态(0:正常营业, 1:暂停营业, 2:筹建中, 99:永久关门)")
    private Integer businessStatus;

    @ApiModelProperty(value = "门店电话")
    private String storeTel;

    @ApiModelProperty(value = "容纳人数")
    private String storeCapacity;

    @ApiModelProperty(value = "门店面积(1:小于20平米, 2:20~50平米, 3:50~100平米, 4:100~300平米, 5:500~1000平米, 6:大于1000平米)")
    private Integer storeArea;

    @ApiModelProperty(value = "门店地址")
    private String storeAddress;

    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
    private Integer deleteFlag;

    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdTime;

    @ApiModelProperty(value = "创建人ID")
    @TableField("created_user_id")
    private Integer createdUserId;

    @ApiModelProperty(value = "修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updatedTime;

    @ApiModelProperty(value = "修改人ID")
    private Integer updatedUserId;

    @ApiModelProperty(value = "门店简介")
    private String storeBlurb;

    @ApiModelProperty(value = "门店类型(1:中餐, 2:烧烤, 3:饮品, 4:甜点, 5:火锅, 6:宵夜, 7:西餐, 8:轻食, 9:水果)")
    private List<String> storeTypeList;

    @ApiModelProperty(value = "是否连锁, 0:否, 1:是")
    private Integer isChain;

    @ApiModelProperty(value = "门店状态")
    private Integer storeStatus;

    @ApiModelProperty(value = "到期时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date expirationTime;

    @ApiModelProperty(value = "门店坐标")
    private String storePosition;

    @ApiModelProperty(value = "门店坐标经度")
    private String storePositionLongitude;

    @ApiModelProperty(value = "门店坐标纬度")
    private String storePositionLatitude;

    @ApiModelProperty(value = "门店密码")
    private String storePass;

    @ApiModelProperty(value = "身份证")
    private String idCard;

    @ApiModelProperty(value = "经营板块id（1-特色美食，2-休闲娱乐，3-生活服务）")
    private Integer businessSection;

    @ApiModelProperty(value = "经营板块名称")
    private String businessSectionName;

    @ApiModelProperty(value = "经营类型英文值")
    private String businessTypeValue;

    @ApiModelProperty(value = "经营种类集合（废弃）")
    @JsonDeserialize(using = StringToListDeserializer.class)
    private List<String> businessTypesList;

    @ApiModelProperty(value = "经营种类ids（废弃）")
    @JsonDeserialize(using = StringToListDeserializer.class)
    private List<String> businessTypes;

    @ApiModelProperty(value = "经营种类名称s（废弃）")
    private String businessTypesName;

    @ApiModelProperty(value = "用户账号")
    private String userAccount;

    @ApiModelProperty(value = "营业执照图片地址")
    @JsonDeserialize(using = StringToListDeserializer.class)
    private List<String> businessLicenseAddress;

    @ApiModelProperty(value = "合同图片地址")
    @JsonDeserialize(using = StringToListDeserializer.class)
    private List<String> contractImageList;

    @ApiModelProperty(value = "经营许可证图片地址")
    private String foodLicenceUrl;

    @ApiModelProperty(value = "查询经纬度时查询地点存储")
    private String queryAddress;

    @ApiModelProperty(value = "行政区域省名称")
    private String administrativeRegionProvinceName;

    @ApiModelProperty(value = "行政区域省adcode")
    private String administrativeRegionProvinceAdcode;

    @ApiModelProperty(value = "行政区域市名称")
    private String administrativeRegionCityName;

    @ApiModelProperty(value = "行政区域市adcode")
    private String administrativeRegionCityAdcode;

    @ApiModelProperty(value = "行政区域区名称")
    private String administrativeRegionDistrictName;

    @ApiModelProperty(value = "行政区域区adcode")
    private String administrativeRegionDistrictAdcode;

    @ApiModelProperty(value = "抽成比例")
    @TableField("commission_rate")
    private String commissionRate;

    @ApiModelProperty(value = "门店营业时间")
    private List<StoreBusinessInfo> storeBusinessTime;

    @ApiModelProperty(value = "审核续签合同原因")
    private String contractReason;

    @ApiModelProperty(value = "审核续签合同状态")
    private Integer renewContractStatus;

    @ApiModelProperty(value = "食品经营许可证原因")
    private String foodLicenceReason;

    @ApiModelProperty(value = "审核食品经营许可证状态")
    private Integer foodLicenceStatus;

    @ApiModelProperty(value = "经营许可证到期时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date foodLicenceExpirationTime;

    @ApiModelProperty(value = "分类id(词典表 键为 business_classify)(多个ID用逗号拼接)（废弃）")
    @JsonDeserialize(using = StringToListDeserializer.class)
    private List<String> businessClassify;

    @ApiModelProperty(value = "分类名称（废弃）")
    private String businessClassifyName;

    @ApiModelProperty(value = "是否提供餐食")
    private Integer mealsFlag;

    @ApiModelProperty(value = "娱乐经营许可证图片地址")
    private String entertainmentLicenceUrl;

    @ApiModelProperty(value = "娱乐经营许可证状态")
    private Integer entertainmentLicenceStatus;

    @ApiModelProperty(value = "娱乐经营许可证")
    private List<String> entertainmentLicenseAddress;

    @ApiModelProperty(value = "娱乐经营许可证原因")
    private String entertainmentLicenceReason;

    @ApiModelProperty(value = "娱乐经营许可证到期时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date entertainmentLicenceExpirationTime;

    @ApiModelProperty(value = "人工复核状态(1:通过,2:拒绝)")
    private Integer manualReviewStatus;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "人工复核时间")
    private Date manualReviewTime;

    @ApiModelProperty(value = "人工复核原因")
    private String manualReviewReason;

    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "审核时间")
    private Date reviewDate;

//    @ApiModelProperty(value = "分类id(词典表 键为 business_classify)(多个ID用逗号拼接)")
//    @JsonDeserialize(using = StringToListDeserializer.class)
//    private List<String> businessClassify;
    @ApiModelProperty(value = "营业执照图片URL")
    private String businessLicenseUrl;

    @ApiModelProperty(value = "营业执照状态 字典 foodLicenceStatus")
    private Integer businessLicenseStatus;

    @ApiModelProperty(value = "营业执照失败原因")
    private String businessLicenseReason;

    @ApiModelProperty(value = "营业执照到期时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date businessLicenseExpirationTime;

    @ApiModelProperty(value = "店铺评价")
    private String storeEvaluate;

    @ApiModelProperty(value = "经营种类名称")
    private String businessTypeName;

    @ApiModelProperty(value = "经营类目名称")
    private String businessCategoryName;

    @ApiModelProperty(value = "其他资质证明图片地址列表")
    @JsonDeserialize(using = StringToListDeserializer.class)
    private List<String> otherQualificationImages;

    @ApiModelProperty(value = "门店类型（0-其他，1-装修公司）")
    @TableField("store_tickets")
    private Integer storeTickets;

    @ApiModelProperty(value = "预约服务 0不提供 1提供")
    private Integer bookingService;
}
