package com.ylx.moment.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 动态列表项VO
 * <p>
 * 用于返回技师动态列表中的单条动态信息，包含动态基本信息、
 * 技师信息、状态信息等。主要用于推荐、同城、附近等动态列表接口。
 * </p>
 *
 * @author ylx
 * @since 2025-01-19
 */
@Data
@ApiModel("动态列表项")
public class MomentListVO {

    /**
     * 动态ID
     */
    @ApiModelProperty("动态ID")
    private Long id;

    /**
     * 动态标题
     */
    @ApiModelProperty("动态标题")
    private String title;

    /**
     * 动态内容
     */
    private String content;

    /**
     * 媒体类型:1-图片,2-视频
     */
    @ApiModelProperty("媒体类型:1-图片,2-视频")
    private Integer mediaType;

    /**
     * 封面图URL
     * 动态封面图片的访问地址，默认取第一张图片或视频封面图
     */
    @ApiModelProperty("封面图URL")
    private String coverUrl;

    /**
     * 地址
     */
    @ApiModelProperty("地址")
    private String location;

    /**
     * 浏览量
     */
    @ApiModelProperty("浏览量")
    private Integer viewCount;

    /**
     * 发布时间
     */
    @ApiModelProperty("发布时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" ,timezone = "GMT+8")
    private LocalDateTime publishTime;

    /**
     * 技师ID
     */
    @ApiModelProperty("技师ID")
    private Integer technicianId;

    /**
     * 技师昵称
     */
    @ApiModelProperty("技师昵称")
    private String technicianNickName;

    /**
     * 技师头像图片的访问地址
     */
    @ApiModelProperty("技师头像")
    private String technicianAvatar;

    /**
     * 技师状态
     * <ul>
     *   <li>1 - 可服务：当前时间技师空闲，可以接单</li>
     *   <li>2 - 可预约：当前时间技师"已接单-服务中"</li>
     * </ul>
     */
    @ApiModelProperty("技师状态:1-可服务,2-可预约")
    private Integer technicianStatus;

    /**
     * 审核状态:0-草稿,1-待审核,2-审核通过,3-审核拒绝
     */
    @ApiModelProperty("审核状态:0-草稿,1-待审核,2-审核通过,3-审核拒绝")
    private Integer auditStatus;

    /**
     * 拒绝原因
     */
    @ApiModelProperty("拒绝原因")
    private String rejectReason;

    /**
     * 距离
     * 用户与动态发布位置的距离，单位：千米(km)
     * <ul>
     *   <li>推荐动态：该字段为null</li>
     *   <li>同城动态：该字段为null</li>
     *   <li>附近动态：该字段有具体数值，保留两位小数</li>
     * </ul>
     */
    @ApiModelProperty("距离(km)")
    private Double distance;
}
