Skip to main content

bpi_rs/models/
user.rs

1use serde::{Deserialize, Serialize};
2
3/// 通用账户字段
4#[derive(Debug, Clone, Deserialize, Serialize)]
5pub struct Account {
6    /// 用户mid
7    pub mid: u64,
8    /// 昵称
9    pub name: String,
10    /// 性别(男/女/保密)
11    pub sex: String,
12    /// 头像url
13    pub face: String,
14    /// 签名
15    pub sign: String,
16    /// 等级
17    pub rank: u32,
18    /// 生日(秒时间戳)。部分接口会用负值表示 1970 年前的日期。
19    pub birthday: i64,
20    /// 未知字段
21    pub is_fake_account: u32,
22    /// 是否注销(0:正常,1:注销)
23    pub is_deleted: u32,
24    /// 是否注册审核(0:正常,1:审核)
25    pub in_reg_audit: u32,
26    /// 是否转正(0:未转正,1:正式会员)
27    pub is_senior_member: u32,
28}
29
30#[cfg(test)]
31mod tests {
32    use super::*;
33
34    #[test]
35    fn account_deserializes_negative_birthday_timestamp() {
36        let account: Account = serde_json::from_str(
37            r#"{
38                "mid": 1000001,
39                "name": "sanitized",
40                "sex": "保密",
41                "face": "",
42                "sign": "",
43                "rank": 10000,
44                "birthday": -1,
45                "is_fake_account": 0,
46                "is_deleted": 0,
47                "in_reg_audit": 0,
48                "is_senior_member": 0
49            }"#,
50        )
51        .expect("account should parse negative birthday timestamps");
52
53        assert_eq!(account.birthday, -1);
54    }
55}