package com.tourism.webadmin.back.vo;

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

import java.util.Map;
import java.util.List;

/**
 * 聊天群聊管理VO视图对象。
 *
 * @author 吃饭睡觉
 * @date 2024-09-06
 */
@Schema(description = "聊天群聊管理VO视图对象")
@Data
@EqualsAndHashCode(callSuper = true)
public class TourImGroupVo extends BaseVo {

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

    /**
     * 群聊所属类型id。
     */
    @Schema(description = "群聊所属类型id")
    private String belongTypeId;

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

    /**
     * 群聊名称。
     */
    @Schema(description = "群聊名称")
    private String groupName;

    /**
     * 群聊头像。
     */
    @Schema(description = "群聊头像")
    private String groupAvatar;

    /**
     * 群聊描述。
     */
    @Schema(description = "群聊描述")
    private String description;

    /**
     * 是否公开展示 0隐藏 1公开。
     */
    @Schema(description = "是否公开展示 0隐藏 1公开")
    private Integer isPublic;

    /**
     * 是否开启群聊邀请确认 0不开启 1开启。
     */
    @Schema(description = "是否开启群聊邀请确认")
    private Integer isNeedConfirm;

    /**
     * 通知分类 0单聊 1群聊。
     */
    @Schema(description = "通知分类 0单聊 1群聊")
    private Integer noticeType;

    /**
     * 是否封禁 0封禁 1正常。
     */
    @Schema(description = "是否正常 0封禁 1正常")
    private Integer bannedStatus;

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

    /**
     * 解散标记。
     */
    @Schema(description = "解散标记")
    private Integer dataState;

    /**
     * TourImGroupInvitation 的一对多关联表数据对象。数据对应类型为TourImGroupInvitation。
     */
    @Schema(description = "TourImGroupInvitation 的一对多关联表数据对象。数据对应类型为TourImGroupInvitation")
    private List<Map<String, Object>> tourImGroupInvitationList;

    /**
     * TourImMember 的一对多关联表数据对象。数据对应类型为TourImMember。
     */
    @Schema(description = "TourImMember 的一对多关联表数据对象。数据对应类型为TourImMember")
    private List<Map<String, Object>> tourImMemberList;

    /**
     * TourImMember 的一对多关联表数据对象。数据对应类型为TourImMember。
     */
    @Schema(description = "TourImMember 的一对多关联表数据对象。数据对应类型为TourImMember")
    private List<TourImMemberVo> memberList;

    /**
     * TourImMessage 的一对多关联表数据对象。数据对应类型为TourImMessage。
     */
    @Schema(description = "TourImMessage 的一对多关联表数据对象。数据对应类型为TourImMessage")
    private List<Map<String, Object>> tourImMessageList;

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

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

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

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

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

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

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

    /**
     * 二维码分享状态
     */
    @Schema(description = "codeShowStatus 二维码分享状态 0未加入 1加入 2一封禁 3已解散 4申请中")
    private Integer codeShowStatus;

    /**
     * 群公告和发布时间
     */
    @Schema(description = "群公告和发布时间")
    private Object groupNotice;

    @TableField(exist = false)
    private List<TourUser> userList;



}
