package com.yutou.biliapi.bean.user;

import com.alibaba.fastjson2.annotation.JSONField;
import com.yutou.common.okhttp.BaseBean;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

@EqualsAndHashCode(callSuper = true)
@Data
public class UserHomeInfoBean extends BaseBean {

    @JSONField(name = "mid")
    private long mid;

    @JSONField(name = "name")
    private String name;

    @JSONField(name = "sex")
    private String sex;

    @JSONField(name = "face")
    private String face;

    @JSONField(name = "face_nft")
    private long faceNft;

    @JSONField(name = "face_nft_type")
    private long faceNftType;

    @JSONField(name = "sign")
    private String sign;

    @JSONField(name = "rank")
    private long rank;

    @JSONField(name = "level")
    private long level;

    @JSONField(name = "jointime")
    private long jointime;

    @JSONField(name = "moral")
    private long moral;

    @JSONField(name = "silence")
    private long silence;

    @JSONField(name = "coins")
    private long coins;

    @JSONField(name = "fans_badge")
    private boolean fansBadge;

    @JSONField(name = "fans_medal")
    private FansMedal fansMedal;

    @JSONField(name = "official")
    private Official official;

    @JSONField(name = "vip")
    private Vip vip;

    @JSONField(name = "pendant")
    private Pendant pendant;

    @JSONField(name = "nameplate")
    private Nameplate nameplate;

    @JSONField(name = "user_honour_info")
    private UserHonourInfo userHonourInfo;

    @JSONField(name = "is_followed")
    private boolean isFollowed;

    @JSONField(name = "top_photo")
    private String topPhoto;

    @JSONField(name = "theme")
    private SysNotice theme;

    @JSONField(name = "sys_notice")
    private SysNotice sysNotice;

    @JSONField(name = "live_room")
    private LiveRoom liveRoom;

    @JSONField(name = "birthday")
    private String birthday;

    @JSONField(name = "school")
    private Object school;

    @JSONField(name = "profession")
    private Profession profession;

    @JSONField(name = "tags")
    private List<String> tags;

    @JSONField(name = "series")
    private Series series;

    @JSONField(name = "is_senior_member")
    private long isSeniorMember;

    @JSONField(name = "mcn_info")
    private Object mcnInfo;

    @JSONField(name = "gaia_res_type")
    private long gaiaResType;

    @JSONField(name = "gaia_data")
    private Object gaiaData;

    @JSONField(name = "is_risk")
    private boolean isRisk;

    @JSONField(name = "elec")
    private Elec elec;

    @JSONField(name = "contract")
    private Object contract;

    @JSONField(name = "certificate_show")
    private boolean certificateShow;

    @JSONField(name = "name_render")
    private Object nameRender;



    @Data
    public static class Elec {
        @JSONField(name = "show_info")
        private ShowInfo showInfo;
    }



    @Data
    public static class ShowInfo {
        @JSONField(name = "show")
        private boolean show;

        @JSONField(name = "state")
        private long state;

        @JSONField(name = "title")
        private String title;

        @JSONField(name = "icon")
        private String icon;

        @JSONField(name = "jump_url")
        private String jumpURL;
    }

    @Data
    public static class FansMedal {
        @JSONField(name = "show")
        private boolean show;

        @JSONField(name = "wear")
        private boolean wear;

        @JSONField(name = "medal")
        private Medal medal;
    }


    @Data
    public static class Medal {

        @JSONField(name = "uid")
        private long uid;

        @JSONField(name = "target_id")
        private long targetID;

        @JSONField(name = "medal_id")
        private long medalID;

        @JSONField(name = "level")
        private long level;

        @JSONField(name = "medal_name")
        private String medalName;

        @JSONField(name = "medal_color")
        private long medalColor;

        @JSONField(name = "intimacy")
        private long intimacy;

        @JSONField(name = "next_intimacy")
        private long nextIntimacy;

        @JSONField(name = "day_limit")
        private long dayLimit;

        @JSONField(name = "today_feed")
        private long todayFeed;

        @JSONField(name = "medal_color_start")
        private long medalColorStart;

        @JSONField(name = "medal_color_end")
        private long medalColorEnd;

        @JSONField(name = "medal_color_border")
        private long medalColorBorder;

        @JSONField(name = "is_lighted")
        private long isLighted;

        @JSONField(name = "guard_level")
        private long guardLevel;

        @JSONField(name = "light_status")
        private long lightStatus;

        @JSONField(name = "wearing_status")
        private long wearingStatus;

        @JSONField(name = "score")
        private long score;
    }


    @Data
    public static class LiveRoom {

        @JSONField(name = "roomStatus")
        private long roomStatus;

        @JSONField(name = "liveStatus")
        private long liveStatus;

        @JSONField(name = "url")
        private String url;

        @JSONField(name = "title")
        private String title;

        @JSONField(name = "cover")
        private String cover;

        @JSONField(name = "roomid")
        private long roomid;

        @JSONField(name = "roundStatus")
        private long roundStatus;

        @JSONField(name = "broadcast_type")
        private long broadcastType;

        @JSONField(name = "watched_show")
        private WatchedShow watchedShow;
    }


    @Data
    public static class WatchedShow {

        @JSONField(name = "switch")
        private boolean watchedShowSwitch;

        @JSONField(name = "num")
        private long num;

        @JSONField(name = "text_small")
        private String textSmall;

        @JSONField(name = "text_large")
        private String textLarge;

        @JSONField(name = "icon")
        private String icon;

        @JSONField(name = "icon_location")
        private String iconLocation;

        @JSONField(name = "icon_web")
        private String iconWeb;
    }

    @Data
    public static class Nameplate {

        @JSONField(name = "nid")
        private long nid;

        @JSONField(name = "name")
        private String name;

        @JSONField(name = "image")
        private String image;

        @JSONField(name = "image_small")
        private String imageSmall;

        @JSONField(name = "level")
        private String level;

        @JSONField(name = "condition")
        private String condition;
    }

    @Data
    public static class Official {

        @JSONField(name = "role")
        private long role;

        @JSONField(name = "title")
        private String title;

        @JSONField(name = "desc")
        private String desc;

        @JSONField(name = "type")
        private long type;
    }

    @Data
    public static class Pendant {

        @JSONField(name = "pid")
        private long pid;

        @JSONField(name = "name")
        private String name;

        @JSONField(name = "image")
        private String image;

        @JSONField(name = "expire")
        private long expire;

        @JSONField(name = "image_enhance")
        private String imageEnhance;

        @JSONField(name = "image_enhance_frame")
        private String imageEnhanceFrame;

        @JSONField(name = "n_pid")
        private long nPID;
    }

    @Data
    public static class Profession {

        @JSONField(name = "name")
        private String name;

        @JSONField(name = "department")
        private String department;

        @JSONField(name = "title")
        private String title;

        @JSONField(name = "is_show")
        private long isShow;
    }

    @Data
    public static class Series {

        @JSONField(name = "user_upgrade_status")
        private long userUpgradeStatus;

        @JSONField(name = "show_upgrade_window")
        private boolean showUpgradeWindow;
    }

    @Data
    public static class SysNotice {
    }

    @Data
    public static class UserHonourInfo {

        @JSONField(name = "mid")
        private long mid;

        @JSONField(name = "colour")
        private Object colour;

        @JSONField(name = "tags")
        private List<Object> tags;

        @JSONField(name = "is_latest_100honour")
        private long isLatest100Honour;
    }

    @Data
    public static class Vip {

        @JSONField(name = "type")
        private long type;

        @JSONField(name = "status")
        private long status;

        @JSONField(name = "due_date")
        private long dueDate;

        @JSONField(name = "vip_pay_type")
        private long vipPayType;

        @JSONField(name = "theme_type")
        private long themeType;

        @JSONField(name = "label")
        private Label label;

        @JSONField(name = "avatar_subscript")
        private long avatarSubscript;

        @JSONField(name = "nickname_color")
        private String nicknameColor;

        @JSONField(name = "role")
        private long role;

        @JSONField(name = "avatar_subscript_url")
        private String avatarSubscriptURL;

        @JSONField(name = "tv_vip_status")
        private long tvVipStatus;

        @JSONField(name = "tv_vip_pay_type")
        private long tvVipPayType;

        @JSONField(name = "tv_due_date")
        private long tvDueDate;

        @JSONField(name = "avatar_icon")
        private AvatarIcon avatarIcon;
    }

    @Data
    public static class AvatarIcon {

        @JSONField(name = "icon_type")
        private long iconType;

        @JSONField(name = "icon_resource")
        private SysNotice iconResource;
    }

    @Data
    public static class Label {

        @JSONField(name = "path")
        private String path;

        @JSONField(name = "text")
        private String text;

        @JSONField(name = "label_theme")
        private String labelTheme;

        @JSONField(name = "text_color")
        private String textColor;

        @JSONField(name = "bg_style")
        private long bgStyle;

        @JSONField(name = "bg_color")
        private String bgColor;

        @JSONField(name = "border_color")
        private String borderColor;

        @JSONField(name = "use_img_label")
        private boolean useImgLabel;

        @JSONField(name = "img_label_uri_hans")
        private String imgLabelURIHans;

        @JSONField(name = "img_label_uri_hant")
        private String imgLabelURIHant;

        @JSONField(name = "img_label_uri_hans_static")
        private String imgLabelURIHansStatic;

        @JSONField(name = "img_label_uri_hant_static")
        private String imgLabelURIHantStatic;
    }

}


