package com.tourism.webadmin.back.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.tourism.common.core.annotation.RelationOneToOne;
import com.tourism.common.core.base.vo.BaseVo;
import com.tourism.webadmin.app.website.vo.NotesNameVo;
import com.tourism.webadmin.back.dto.TourTravelNotesMentionUserDto;
import com.tourism.webadmin.back.model.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 发布游记VO视图对象。
 *
 * @author 吃饭睡觉
 * @date 2024-09-06
 */
@Schema(description = "发布游记VO视图对象")
@Data
@EqualsAndHashCode(callSuper = true)
public class TourismProjectTravelNotesWriteVo extends BaseVo {

    /**
     * 主键id。
     */
    @Schema(description = "主键id")
    private String id;

    /**
     * 项目标题。
     */
    @Schema(description = "项目标题")
    private String projectTitle;

    /**
     * 出发时间。
     */
    @Schema(description = "出发时间")
    private LocalDate departureTime;

    /**
     * 总天数。
     */
    @Schema(description = "总天数")
    private String countTimes;

    /**
     * 人物关系。
     */
    @Schema(description = "人物关系")
    private String role;

    /**
     * 推荐指数。
     */
    @Schema(description = "推荐指数")
    private Integer recommendationRate;

    /**
     * 人均费用。
     */
    @Schema(description = "人均费用")
    private String averageCost;

    /**
     * 审核状态(0,未审核;1,审核通过;2、审核不通过)。
     */
    @Schema(description = "审核状态(0,未审核;1,审核通过;2、审核不通过)")
    private Integer state;

    /**
     * 审核不通过的原因。
     */
    @Schema(description = "审核不通过的原因")
    private String reason;

    /**
     * 发布游记的banner图。
     */
    @Schema(description = "发布游记的banner图")
    private String travelNotesBanner;

    /**
     * 游记内容中的图片。
     */
    @Schema(description = "游记内容中的图片")
    private String tourismTavelNotesUrl;

    /**
     * 上下架状态(0,下架;1,上架)。
     */
    @Schema(description = "上下架状态(0,下架;1,上架)")
    private Integer unmountState;

    /**
     * 项目展示图片。
     */
    @Schema(description = "项目展示图片")
    private String tourismUrl;

    /**
     * 项目简述。
     */
    @Schema(description = "项目简述")
    private String remarks;

    /**
     * 是否热点，0非热点，1热点。
     */
    @Schema(description = "是否热点，0非热点，1热点")
    private Integer isHotspot;

    /**
     * 标签。
     */
    @Schema(description = "标签")
    private String noteLabel;

    /**
     * 点赞数。
     */
    @Schema(description = "点赞数")
    private Integer likeCount;

    /**
     * 浏览量。
     */
    @Schema(description = "浏览量")
    private Integer pageViewCount;

    /**
     * 热度值。
     */
    @Schema(description = "热度值")
    private Integer hotValue;

    /**
     * 是否原创(0:非原创;1:原创)。
     */
    @Schema(description = "是否原创(0:非原创;1:原创)")
    private Integer isOriginal;

    /**
     * 目的地。
     */
    @Schema(description = "目的地")
    private String endPlace;

    /**
     * 自动审核结果1：通过，2未通过。
     */
    @Schema(description = "自动审核结果1：通过，2未通过")
    private Integer autoAuditStatus;

    /**
     * 自动审核未通过原因。
     */
    @Schema(description = "自动审核未通过原因")
    private String autoRejectReason;

    /**
     * endPlace 字典关联数据。
     */
    @Schema(description = "endPlace 字典关联数据")
    private Map<String, Object> endPlaceDictMap;

    /**
     * state 常量字典关联数据。
     */
    @Schema(description = "state 常量字典关联数据")
    private Map<String, Object> stateDictMap;

    /**
     * tourismProjectTravelNotesContentDraft 游记内容。
     */
    @Schema(description = "tourismProjectTravelNotesContentDraft 游记内容")
    private List<TourismTravelNotesContentWriteVo> travelNotesContent;

    /**
     * isHotspot 常量字典关联数据。
     */
    @Schema(description = "isHotspot 常量字典关联数据")
    private Map<String, Object> isHotspotDictMap;

    /**
     * isOriginal 常量字典关联数据。
     */
    @Schema(description = "isOriginal 常量字典关联数据")
    private Map<String, Object> isOriginalDictMap;

    @Schema(description = "热门图url转换")
    private List<String> homeHotPicturesAfterConvert;

    @Schema(description = "游记列表图url转换")
    private List<String> tourismUrlsAfterConvert;

    @Schema(description = "联系人图片")
    private String contactCodeConvert;

    @Schema(description = "联系人图片")
    private List<String> travelNotesBannerAfterConvert;

    /**
     * autoAuditStatus 常量字典关联数据。
     */
    @Schema(description = "autoAuditStatus 常量字典关联数据")
    private Map<String, Object> autoAuditStatusDictMap;

    /**
     * 出行方式。
     */
    @Schema(description = "出行方式")
    private String travelMode;

    /**
     * travelMode 全局字典关联数据。
     */
    @Schema(description = "travelMode 全局字典关联数据")
    private Map<String, Object> travelModeDictMap;

    /**
     * 游玩人数。
     */
    @Schema(description = "游玩人数")
    private String travelNumber;

    /**
     * 群聊id。
     */
    @Schema(description = "群聊id")
    private String tourImGroupId;

    /**
     * 群聊。
     */
    @Schema(description = "群聊")
    private TourImGroupVo tourImGroup;

    /**
     * 群聊人数。
     */
    @Schema(description = "群聊人数")
    private Integer tourImGroupCount;

    /**
     * 目的地区。
     */
    @Schema(description = "目的地区")
    private String endArea;

    /**
     * 游记关联的话题列表。
     */
    @Schema(description = "游记关联的话题列表")
    private List<TourTravelNotesTopicRelation> tourTravelNotesTopicRelationList;

    /**
     * 拼接多个话题为字符串。
     */
    @Schema(description = "拼接多个话题为字符串")
    private String tourTravelNotesTopicRelationName;

    /**
     * 多张图片路径。
     */
    @Schema(description = "多张图片路径")
    private List<String> imgUrls;

    /**
     * 游记内容提及的话题名称。
     */
    @Schema(description = "游记内容提及的话题名称。")
    private List<String> topics;

    /**
     * 游记内容提及的用户信息。
     */
    @Schema(description = "游记内容提及的用户信息。")
    private List<TourTravelNotesMentionUserVo> mentions;

    /**
     * id 的一对一关联数据对象，数据对应类型为TourTourismProjectTravelNotesWriteContentVo。
     */
    @Schema(description = "id 的一对一关联数据对象，数据对应类型为TourTourismProjectTravelNotesWriteContentVo")
    private Map<String, Object> tourTourismProjectTravelNotesWriteContent;

    /**
     * 可见范围(0.全部可见;1.仅自己可见)。
     */
    @Schema(description = "可见范围(0.全部可见;1.仅自己可见)。")
    private Integer visibleRange;

    /**
     * visibleRange 全局字典关联数据。
     */
    @Schema(description = "visibleRange 全局字典关联数据")
    private Map<String, Object> visibleRangeDictMap;

    /**
     * publishTime 游记发布时间。
     */
    @Schema(description = "publishTime 游记发布时间")
    private Date publishTime;

    /**
     * commentCount 评论数。
     */
    @Schema(description = "commentCount 评论数")
    private Integer commentCount;

    /**
     * commentCount 群主Id。
     */
    @Schema(description = "groupOwnerId 群主Id")
    private String groupOwnerId;

    /**
     * commentCount 群主。
     */
    @Schema(description = "groupOwner 群主名称")
    private String groupOwnerName;

    /**
     * commentCount 群主。
     */
    @Schema(description = "groupOwner 群主头像")
    private String groupOwnerImage;

    /**
     * createId 创建人头像。
     */
    @Schema(description = "createImage 创建人头像")
    private String createImage;
    /**
     * createId 创建名称。
     */
    @Schema(description = "createId 创建人头像")
    private String createName;

    /**
     * 登录用户与游记创建人关注状态。
     */
    @Schema(description = "userState 登录用户与游记创建人关注状态")
    private String userState;

    /**
     *  创建人
     */
    @Schema(description = "createUser 创建人")
    private String createUser;

    /**
     * 该评论是否被收藏(0,未收藏;1,已收藏)。
     */
    @Schema(description = "该评论是否被收藏(0,未收藏;1,已收藏)。")
    private Integer isCollect;

    /**
     * 该评论是否被点赞(0,未点赞;1,,已点赞)。
     */
    @Schema(description = "该评论是否被点赞(0,未点赞;1,,已点赞)。")
    private Integer isLike;

    /**
     *  收藏数量
     */
    @Schema(description = "收藏数量")
    private Long collectCount;

    /**
     *  群聊类型
     */
    private TourImGroupType type;


    /**
     *  关联的专题
     */
    private List<NotesNameVo> topicsList;

}
