1use serde::{Deserialize, Serialize};
6use serde_repr::{Deserialize_repr, Serialize_repr};
7
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
12#[repr(u8)]
13pub enum SignUrlType {
14 Official = 0,
16 Official1 = 1,
18 Official2 = 2,
20 WithParse = 3,
22 WithSimpleDetail = 4,
24 WithFullDetail = 5,
26}
27
28impl Default for SignUrlType {
29 fn default() -> Self {
30 SignUrlType::Official
31 }
32}
33
34#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
38#[repr(u8)]
39pub enum ChainType {
40 Long = 1,
42 Short = 2,
44 Both = 3,
46}
47
48impl Default for ChainType {
49 fn default() -> Self {
50 ChainType::Long
51 }
52}
53
54#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
58#[serde(rename_all = "lowercase")]
59pub enum SortDirection {
60 Asc,
62 Desc,
64}
65
66impl Default for SortDirection {
67 fn default() -> Self {
68 SortDirection::Desc
69 }
70}
71
72#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
76#[repr(u32)]
77pub enum JdEliteId {
78 GoodCoupon = 1,
80 Selected = 2,
82 NineNine = 10,
84 JdDelivery = 15,
86 HotSale = 22,
88 Recommend = 23,
90 Digital = 24,
92 Supermarket = 25,
94 Baby = 26,
96 Home = 27,
98 Beauty = 28,
100 Book = 30,
102 TodayMust = 31,
104 JdGood = 32,
106 Seckill = 33,
108 Pingou = 34,
110 HighProfit = 40,
112 SelfHot = 41,
114 SeckillNow = 108,
116 NewProduct = 109,
118 SelfOperated = 110,
120 JdHot = 112,
122 FirstBuy = 125,
124 HighCommission = 129,
126 Video = 130,
128 LowestPrice = 153,
130}
131
132impl Default for JdEliteId {
133 fn default() -> Self {
134 JdEliteId::GoodCoupon
135 }
136}
137
138#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
142#[serde(rename_all = "camelCase")]
143pub enum JdSortField {
144 Price,
146 CommissionShare,
148 Commission,
150 InOrderCount30DaysSku,
152 Comments,
154 GoodComments,
156}
157
158impl Default for JdSortField {
159 fn default() -> Self {
160 JdSortField::InOrderCount30DaysSku
161 }
162}
163
164#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
168#[repr(u8)]
169pub enum OrderQueryType {
170 OrderTime = 1,
172 FinishTime = 2,
174 UpdateTime = 3,
176}
177
178impl Default for OrderQueryType {
179 fn default() -> Self {
180 OrderQueryType::OrderTime
181 }
182}
183
184#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
188#[repr(u8)]
189pub enum ShopType {
190 Taobao = 0,
192 Tmall = 1,
194}
195
196impl Default for ShopType {
197 fn default() -> Self {
198 ShopType::Taobao
199 }
200}
201
202#[cfg(test)]
203mod tests {
204 use super::*;
205
206 #[test]
207 fn test_sign_url_type_serialize() {
208 let value = SignUrlType::WithFullDetail;
209 let json = serde_json::to_string(&value).unwrap();
210 assert_eq!(json, "5");
211 }
212
213 #[test]
214 fn test_sign_url_type_deserialize() {
215 let value: SignUrlType = serde_json::from_str("3").unwrap();
216 assert_eq!(value, SignUrlType::WithParse);
217 }
218
219 #[test]
220 fn test_chain_type_serialize() {
221 let value = ChainType::Short;
222 let json = serde_json::to_string(&value).unwrap();
223 assert_eq!(json, "2");
224 }
225
226 #[test]
227 fn test_chain_type_deserialize() {
228 let value: ChainType = serde_json::from_str("1").unwrap();
229 assert_eq!(value, ChainType::Long);
230 }
231
232 #[test]
233 fn test_sort_direction_serialize() {
234 let value = SortDirection::Asc;
235 let json = serde_json::to_string(&value).unwrap();
236 assert_eq!(json, "\"asc\"");
237 }
238
239 #[test]
240 fn test_sort_direction_deserialize() {
241 let value: SortDirection = serde_json::from_str("\"desc\"").unwrap();
242 assert_eq!(value, SortDirection::Desc);
243 }
244
245 #[test]
246 fn test_jd_elite_id_serialize() {
247 let value = JdEliteId::HotSale;
248 let json = serde_json::to_string(&value).unwrap();
249 assert_eq!(json, "22");
250 }
251
252 #[test]
253 fn test_jd_elite_id_deserialize() {
254 let value: JdEliteId = serde_json::from_str("33").unwrap();
255 assert_eq!(value, JdEliteId::Seckill);
256 }
257
258 #[test]
259 fn test_jd_sort_field_serialize() {
260 let value = JdSortField::CommissionShare;
261 let json = serde_json::to_string(&value).unwrap();
262 assert_eq!(json, "\"commissionShare\"");
263 }
264
265 #[test]
266 fn test_order_query_type_serialize() {
267 let value = OrderQueryType::UpdateTime;
268 let json = serde_json::to_string(&value).unwrap();
269 assert_eq!(json, "3");
270 }
271
272 #[test]
273 fn test_shop_type_serialize() {
274 let value = ShopType::Tmall;
275 let json = serde_json::to_string(&value).unwrap();
276 assert_eq!(json, "1");
277 }
278}