package com.tourism.webadmin.app.website.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.tourism.common.core.annotation.RelationDict;
import com.tourism.common.core.base.vo.BaseVo;
import com.tourism.webadmin.back.model.TourUser;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

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 WebSiteTourNoticeVo extends BaseVo {

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

    /**
     * 实际业务关联对象。评论/收藏操作用户ID；游记ID等。
     */
    @Schema(description = "实际业务关联对象。评论/收藏操作用户ID；游记ID等")
    private String relationId;

    /**
     * 消息类型：1消息回复；2收藏提醒；3游记审核。
     */
    @Schema(description = "消息类型：1消息回复；2收藏提醒；3游记审核")
    private Integer noticeType;

    /**
     * 消息内容。
     */
    @Schema(description = "消息内容")
    private String noticeContent;

    /**
     * notice_type=1有值，评论ID。
     */
    @Schema(description = "notice_type=1有值，评论ID")
    private String commentId;

    /**
     * 通知用户。
     */
    @Schema(description = "通知用户")
    private Long userId;

    /**
     * 通知时间。
     */
    @Schema(description = "通知时间")
    private Date sendTime;

    /**
     * 是否已读：0未读；1已读。
     */
    @Schema(description = "是否已读：0未读；1已读")
    private Integer beenRead;

    /**
     * 读取时间。
     */
    @Schema(description = "读取时间")
    private Date readTime;

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

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

    /**
     * 用户昵称。
     */
    @Schema(description = "昵称")
    private String showName;

    /**
     * 用户头像的Url。
     */
    @Schema(description = "用户头像的Url")
    private String headImageUrl;

    /**
     * 游记列表图url转换。
     */
    @Schema(description = "游记列表图url转换")
    private String tourismUrlsAfterConvert;

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

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

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

    @RelationDict(
            masterIdField = "createUserId",
            slaveModelClass = TourUser.class,
            slaveIdField = "userId",
            slaveNameField = "headImageUrl")
    @TableField(exist = false)
    private Map<String, Object> createUserIdHeadImageUrlDictMap;

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

    /**
     * noticeTitle 消息标题。
     */
    @Schema(description = "noticeTitle 消息标题")
    private String noticeTitle;
}
