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(u32)]
13pub enum JdEliteId {
14 GoodCoupon = 1,
16 Selected = 2,
18 NineNine = 10,
20 JdDelivery = 15,
22 HotSale = 22,
24 Recommend = 23,
26 Digital = 24,
28 Supermarket = 25,
30 Baby = 26,
32 Home = 27,
34 Beauty = 28,
36 Book = 30,
38 TodayMust = 31,
40 JdGood = 32,
42 Seckill = 33,
44 Pingou = 34,
46 HighProfit = 40,
48 SelfHot = 41,
50 SeckillNow = 108,
52 NewProduct = 109,
54 SelfOperated = 110,
56 JdHot = 112,
58 FirstBuy = 125,
60 HighCommission = 129,
62 Video = 130,
64 LowestPrice = 153,
66}
67
68impl Default for JdEliteId {
69 fn default() -> Self {
70 JdEliteId::GoodCoupon
71 }
72}
73
74#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
78#[serde(rename_all = "camelCase")]
79pub enum JdSortField {
80 Price,
82 CommissionShare,
84 Commission,
86 InOrderCount30DaysSku,
88 Comments,
90 GoodComments,
92}
93
94impl Default for JdSortField {
95 fn default() -> Self {
96 JdSortField::InOrderCount30DaysSku
97 }
98}
99
100#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
104#[repr(u8)]
105pub enum JdChainType {
106 Long = 1,
108 Short = 2,
110 Both = 3,
112}
113
114impl Default for JdChainType {
115 fn default() -> Self {
116 JdChainType::Short
117 }
118}
119
120#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
124#[repr(u8)]
125pub enum JdOrderQueryType {
126 OrderTime = 1,
128 FinishTime = 2,
130 UpdateTime = 3,
132}
133
134impl Default for JdOrderQueryType {
135 fn default() -> Self {
136 JdOrderQueryType::OrderTime
137 }
138}
139
140#[cfg(test)]
141mod tests {
142 use super::*;
143
144 #[test]
145 fn test_jd_elite_id_serialize() {
146 let value = JdEliteId::HotSale;
147 let json = serde_json::to_string(&value).unwrap();
148 assert_eq!(json, "22");
149 }
150
151 #[test]
152 fn test_jd_elite_id_deserialize() {
153 let value: JdEliteId = serde_json::from_str("33").unwrap();
154 assert_eq!(value, JdEliteId::Seckill);
155 }
156
157 #[test]
158 fn test_jd_sort_field_serialize() {
159 let value = JdSortField::CommissionShare;
160 let json = serde_json::to_string(&value).unwrap();
161 assert_eq!(json, "\"commissionShare\"");
162 }
163
164 #[test]
165 fn test_jd_sort_field_deserialize() {
166 let value: JdSortField = serde_json::from_str("\"price\"").unwrap();
167 assert_eq!(value, JdSortField::Price);
168 }
169
170 #[test]
171 fn test_jd_chain_type_serialize() {
172 let value = JdChainType::Short;
173 let json = serde_json::to_string(&value).unwrap();
174 assert_eq!(json, "2");
175 }
176
177 #[test]
178 fn test_jd_chain_type_deserialize() {
179 let value: JdChainType = serde_json::from_str("1").unwrap();
180 assert_eq!(value, JdChainType::Long);
181 }
182
183 #[test]
184 fn test_jd_order_query_type_serialize() {
185 let value = JdOrderQueryType::UpdateTime;
186 let json = serde_json::to_string(&value).unwrap();
187 assert_eq!(json, "3");
188 }
189
190 #[test]
191 fn test_jd_order_query_type_deserialize() {
192 let value: JdOrderQueryType = serde_json::from_str("2").unwrap();
193 assert_eq!(value, JdOrderQueryType::FinishTime);
194 }
195
196 #[test]
197 fn test_default_values() {
198 assert_eq!(JdEliteId::default(), JdEliteId::GoodCoupon);
199 assert_eq!(JdSortField::default(), JdSortField::InOrderCount30DaysSku);
200 assert_eq!(JdChainType::default(), JdChainType::Short);
201 assert_eq!(JdOrderQueryType::default(), JdOrderQueryType::OrderTime);
202 }
203}