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.Date;

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

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

    @JSONField(name = "email_verified")
    private int emailVerified;

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

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

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

    @JSONField(name = "level_info")
    private LevelInfo levelInfo;

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

    @JSONField(name = "mobile_verified")
    private int mobileVerified;

    @JSONField(name = "money")
    private double money;

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

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

    @JSONField(name = "officialVerify")
    private OfficialVerify officialVerify;

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

    @JSONField(name = "scores")
    private int scores;

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

    @JSONField(name = "vipDueDate")
    private Date vipDueDate;

    @JSONField(name = "vipStatus")
    private int vipStatus;

    @JSONField(name = "vipType")
    private int vipType;

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

    @JSONField(name = "vip_theme_type")
    private int vipThemeType;

    @JSONField(name = "vip_label")
    private VipLabel vipLabel;

    @JSONField(name = "vip_avatar_subscript")
    private int vipAvatarSubscript;

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

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

    @JSONField(name = "wallet")
    private Wallet wallet;

    @JSONField(name = "has_shop")
    private boolean hasShop;

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

    @JSONField(name = "allowance_count")
    private int allowanceCount;

    @JSONField(name = "answer_status")
    private int answerStatus;

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

    @JSONField(name = "wbi_img")
    private WbiImg wbiImg;

    @JSONField(name = "is_jury")
    private boolean isJury;

    // 省略了getters和setters

    // level_info的内部数据结构
    @Data
    public static class LevelInfo {
        @JSONField(name = "current_level")
        private int currentLevel;

        @JSONField(name = "current_min")
        private int currentMin;

        @JSONField(name = "current_exp")
        private int currentExp;

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

        // getters and setters
    }

    // official的结构
    @Data
    public static class Official {
        @JSONField(name = "role")
        private int role;

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

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

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

        // getters and setters
    }

    // officialVerify的结构
    @Data
    public static class OfficialVerify {
        @JSONField(name = "type")
        private int type;

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

        // getters and setters
    }

    // pendant的结构
    @Data
    public static class Pendant {
        @JSONField(name = "pid")
        private int pid;

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

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

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

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

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

        @JSONField(name = "n_pid")
        private int nPid;

        // getters and setters
    }

    // vipLabel的结构
    @Data
    public static class VipLabel {
        @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 String 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;

        // getters and setters
    }

    // vip的结构，和vipLabel类似
    @Data
    public static class Vip {
        @JSONField(name = "type")
        private int type;

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

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

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

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

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

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

        @JSONField(name = "nickname_color")
        private String nicknameColor;
        // getters and setters
    }

    // wallet的结构
    @Data
    public static class Wallet {
        @JSONField(name = "mid")
        private long mid;

        @JSONField(name = "bcoin_balance")
        private int bcoinBalance;

        @JSONField(name = "coupon_balance")
        private int couponBalance;

        @JSONField(name = "coupon_due_time")
        private int couponDueTime;
        // getters and setters
    }

    // WbiImg的结构
    @Data
    public static class WbiImg {
        @JSONField(name = "img_url")
        private String imgUrl;

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

        // getters and setters
    }
}
