package shop.alien.entity.store.dto;

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 = "StoreRenovationBrowseRequirementDto对象", description = "装修商铺浏览过的装修需求DTO")
public class StoreRenovationBrowseRequirementDto {

    @ApiModelProperty(value = "装修需求ID")
    private Integer requirementId;

    @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 = "详细地址")
    private String detailedAddress;

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

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

    @ApiModelProperty(value = "是否已联系（0:未联系, 1:已联系）")
    private Integer isContacted;

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

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

