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.dto.deserializer.StringToListDeserializer;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 装修需求动态DTO
 *
 * @author auto-generated
 * @since 2025-01-15
 */
@Data
@JsonInclude
@ApiModel(value = "StoreRenovationRequirementDto对象", description = "装修需求动态DTO")
public class StoreRenovationRequirementDto {

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

    @ApiModelProperty(value = "门店ID")
    private Integer storeId;

    @ApiModelProperty(value = "需求标题")
    private String requirementTitle;

    @ApiModelProperty(value = "装修类型（1:新房装修, 2:旧房改造, 3:局部装修）")
    private Integer renovationType;

    @ApiModelProperty(value = "房屋面积（平方米）")
    private BigDecimal houseArea;

    @ApiModelProperty(value = "装修预算（万元）")
    private BigDecimal renovationBudget;

    @ApiModelProperty(value = "详细需求描述")
    private String detailedRequirement;

    @ApiModelProperty(value = "期望装修时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date expectedRenovationTime;

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

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

    @ApiModelProperty(value = "所在城市")
    private String city;

    @ApiModelProperty(value = "城市编码（adcode）")
    private String cityAdcode;

    @ApiModelProperty(value = "详细地址")
    private String detailedAddress;

    @ApiModelProperty(value = "服务协议确认（0:未确认, 1:已确认）")
    private Integer agreementConfirmed;

    @ApiModelProperty(value = "动态状态（0:草稿, 1:已发布, 2:已下架）")
    private Integer status;

    @ApiModelProperty(value = "审核状态（0:待审核, 1:审核通过, 2:审核失败）")
    private Integer auditStatus;

    @ApiModelProperty(value = "浏览数")
    private Integer viewCount;

    @ApiModelProperty(value = "咨询数")
    private Integer inquiryCount;

    @ApiModelProperty(value = "附件列表（图片/视频URL列表）")
    @JsonDeserialize(using = StringToListDeserializer.class)
    private List<String> attachmentUrls;

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

    @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 = "商铺名称")
    private String storeName;

    @ApiModelProperty(value = "商铺电话")
    private String storeTel;

    @ApiModelProperty(value = "商铺地址")
    private String storeAddress;

    @ApiModelProperty(value = "商铺简介")
    private String storeBlurb;

    @ApiModelProperty(value = "商铺头像")
    private String storeAvatar;

    @ApiModelProperty(value = "是否已与发布商铺发生沟通（true:已沟通, false:未沟通）")
    private Boolean hasCommunicated;

    @ApiModelProperty(value = "审核失败原因")
    private String auditReason;
}

