|
| 1 | +use std::fmt::Display; |
1 | 2 | use serde::{Deserialize, Serialize}; |
2 | 3 | use serde_json::Value; |
3 | 4 |
|
@@ -128,39 +129,53 @@ pub struct ChatNotice { |
128 | 129 | #[derive(Debug, Clone, Serialize, Deserialize, Default)] |
129 | 130 | pub struct ChatData { |
130 | 131 | /// 接收 id |
131 | | - #[serde(rename = "toId")] |
| 132 | + #[serde(rename = "toId", default)] |
132 | 133 | pub to_id: String, |
133 | 134 | /// 预览内容 |
| 135 | + #[serde(default)] |
134 | 136 | pub preview: String, |
135 | 137 | /// 用户会话 |
136 | | - #[serde(rename = "user_session")] |
| 138 | + #[serde(rename = "user_session", default)] |
137 | 139 | pub user_session: String, |
138 | 140 | /// 发送者头像 |
139 | | - #[serde(rename = "senderAvatar")] |
| 141 | + #[serde(rename = "senderAvatar", default)] |
140 | 142 | pub sender_avatar: String, |
141 | 143 | /// markdown内容 |
| 144 | + #[serde(default)] |
142 | 145 | pub markdown: String, |
143 | 146 | /// 接收者头像 |
144 | | - #[serde(rename = "receiverAvatar")] |
| 147 | + #[serde(rename = "receiverAvatar", default)] |
145 | 148 | pub receiver_avatar: String, |
146 | 149 | /// 消息ID |
147 | | - #[serde(rename = "oId")] |
| 150 | + #[serde(rename = "oId", default)] |
148 | 151 | pub oid: String, |
149 | 152 | /// 时间 |
| 153 | + #[serde(default)] |
150 | 154 | pub time: String, |
151 | 155 | /// 发送 id |
152 | | - #[serde(rename = "fromId")] |
| 156 | + #[serde(rename = "fromId", default)] |
153 | 157 | pub from_id: String, |
154 | 158 | /// 发送者用户名 |
155 | | - #[serde(rename = "senderUserName")] |
| 159 | + #[serde(rename = "senderUserName", default)] |
156 | 160 | pub sender_user_name: String, |
157 | 161 | /// 内容 |
| 162 | + #[serde(default)] |
158 | 163 | pub content: String, |
159 | 164 | /// 接收者用户名 |
160 | | - #[serde(rename = "receiverUserName")] |
| 165 | + #[serde(rename = "receiverUserName", default)] |
161 | 166 | pub receiver_user_name: String, |
162 | 167 | } |
163 | 168 |
|
| 169 | +impl Display for ChatData { |
| 170 | + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
| 171 | + write!( |
| 172 | + f, |
| 173 | + "{} 给你发送了私信", |
| 174 | + self.sender_name(), |
| 175 | + ) |
| 176 | + } |
| 177 | +} |
| 178 | + |
164 | 179 | impl ChatData { |
165 | 180 | pub fn from_json(value: &Value) -> Option<Self> { |
166 | 181 | serde_json::from_value(value.clone()).ok() |
@@ -206,6 +221,13 @@ impl ChatData { |
206 | 221 | } |
207 | 222 | } |
208 | 223 |
|
| 224 | + pub fn count(sender: &str, count: usize)-> String { |
| 225 | + if count == 1 { |
| 226 | + format!("{} 给你发送了 1 条私信", sender) |
| 227 | + } else { |
| 228 | + format!("{} 给你发送了 {} 条私信", sender, count) |
| 229 | + } |
| 230 | + } |
209 | 231 | } |
210 | 232 |
|
211 | 233 | /// 聊天撤回 |
|
0 commit comments