CWaimaiOrder.cpp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394
  1. #include "../pch/pch.h"
  2. #include "CWaimaiOrder.h"
  3. CWaimaiOrder::CWaimaiOrder()
  4. {
  5. }
  6. CWaimaiOrder::~CWaimaiOrder()
  7. {
  8. }
  9. //通过订单ID,获取订单详情
  10. bool CWaimaiOrder::InitData(std::string order_id, std::string order_no)
  11. {
  12. std::map<string, string> params;
  13. params["id"] = order_id;
  14. params["order_no"] = order_no;
  15. std::string response;
  16. bool ret = CZhipuziHttpClient::Request("/waimaiorder/getorderdetail", params, response);
  17. if(!ret)
  18. {
  19. LOG_INFO("网络请求出错");
  20. return false;
  21. }
  22. rapidjson::Document document;
  23. document.Parse(response.c_str());
  24. if(document.HasParseError())
  25. {
  26. LOG_INFO("parse response error!");
  27. return false;
  28. }
  29. else
  30. {
  31. if(!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  32. {
  33. LOG_INFO("json error!");
  34. return false;
  35. }
  36. rapidjson::Value& v_errcode = document["errcode"];
  37. int errcode = v_errcode.GetInt();
  38. if(errcode != 0)
  39. {
  40. LOG_INFO("response failed! message:" << document["errmsg"].GetString());
  41. return false;
  42. }
  43. {
  44. //获得数据成功
  45. rapidjson::Value& data = document["data"];
  46. m_order_id = data["id"].GetString();
  47. m_shop_id = data["shop_id"].GetString();
  48. m_restaurant_number = data["restaurant_number"].GetString();
  49. m_customer_id = data["customer_id"].GetString();
  50. m_customer_name = data["customer_name"].GetString();
  51. m_phone = data["phone"].GetString();
  52. m_address = data["address"].GetString();
  53. m_memo = data["memo"].GetString();
  54. m_pay_type = data["pay_type"].GetString();
  55. m_promotion = data["promotion"].GetString();
  56. m_is_member_discount = data["is_member_discount"].GetString();
  57. m_member_discount = data["member_discount"].GetString();
  58. m_discount = data["discount"].GetFloat();
  59. m_coupon = data["coupon"].GetFloat();
  60. m_delivery = data["delivery"].GetFloat();
  61. m_price = data["price"].GetFloat();
  62. m_order_date = data["order_date"].GetString();
  63. m_order_fields = data["order_fields"].GetString();
  64. m_order_status = data["order_status"].GetString();
  65. m_courier_id = data["courier_id"].GetString();
  66. m_is_selftake = data["is_selftake"].GetString();
  67. //m_addservice_text = data["addservice_text"].GetString();
  68. m_is_dabao = data["is_dabao"].GetString();
  69. m_dabao_money = data["dabao_money"].GetString();
  70. m_phone_customer_id = data["phone_customer_id"].GetString();
  71. m_order_num = data["order_num"].GetString();
  72. m_from_type = data["from_type"].GetString();
  73. m_is_refund = data["is_refund"].GetString();
  74. m_refund_status = data["refund_status"].GetString();
  75. m_is_pickup = data["is_pickup"].GetString();
  76. m_pickup_time = data["pickup_time"].GetString();
  77. m_verify_time = data["verify_time"].GetString();
  78. m_verify_user = data["verify_user"].GetString();
  79. m_refund_failed_reason = data["refund_failed_reason"].GetString();
  80. m_refund_time = data["refund_time"].GetString();
  81. m_failed_reason = data["failed_reason"].GetString();
  82. m_configmemo = data["configmemo"].GetString();
  83. m_courier_type = data["courier_type"].GetString();
  84. m_courier_name = data["courier_name"].GetString();
  85. m_courier_phone = data["courier_phone"].GetString();
  86. m_receiver_lng = data["receiver_lng"].GetString();
  87. m_receiver_lat = data["receiver_lat"].GetString();
  88. m_reduction_value = data["reduction_value"].GetString();
  89. m_price_moling = data["price_moling"].GetString();
  90. m_price_plus = data["price_plus"].GetString();
  91. m_discount_price = data["discount_price"].GetString();
  92. m_order_no = data["order_no"].GetString();
  93. m_is_firstcut = data["is_firstcut"].GetString();
  94. m_firstcut_value = data["firstcut_value"].GetString();
  95. m_goods_coupon_value = data["goods_coupon_value"].GetString();
  96. m_take_food_code = data["take_food_code"].GetString();
  97. m_need_to_refund = data["need_to_refund"].GetString();
  98. m_is_nowprinter = data["is_nowprinter"].GetInt();
  99. m_shop_name = data["shop_name"].GetString();
  100. m_longitude = data["longitude"].GetString();
  101. m_latitude = data["latitude"].GetString();
  102. m_open_selftake = data["open_selftake"].GetString();
  103. m_invitetimetimerange = data["invitetimetimerange"].GetString();
  104. m_machine_qrcode_open = data["machine_qrcode_open"].GetString();
  105. m_machine_qrcode_url = data["machine_qrcode_url"].GetString();
  106. m_machine_qrcode_title = data["machine_qrcode_title"].GetString();
  107. m_delivery_date = data["delivery_date"].GetString();
  108. m_head_picture = data["head_picture"].GetString();
  109. m_courier = data["courier"].GetString();
  110. m_delivertime = data["delivertime"].GetString();
  111. m_customer_order_total = data["customer_order_total"].GetString();
  112. m_invoice = data["invoice"].GetInt();
  113. m_invoice_type = data["invoice_type"].GetString();
  114. m_tax_payer_id = data["tax_payer_id"].GetString();
  115. //开始保存订单详情
  116. rapidjson::Value& v_rows = data["order_item"];
  117. for(rapidjson::SizeType i = 0; i < v_rows.Size(); ++i)
  118. {
  119. rapidjson::Value& v_row_i = v_rows[i];
  120. CWaimaiOrderItem newItem;
  121. newItem.m_id = v_row_i["id"].GetString();
  122. newItem.m_food_name = v_row_i["food_name"].GetString();
  123. newItem.m_item_price = v_row_i["item_price"].GetString();
  124. newItem.m_quantity = v_row_i["quantity"].GetString();
  125. newItem.m_type_id = v_row_i["type_id"].GetString();
  126. newItem.m_foodpackage_id = v_row_i["foodpackage_id"].GetString();
  127. newItem.m_is_foodpackage = v_row_i["is_foodpackage"].GetString();
  128. newItem.m_food_unit = v_row_i["food_unit"].GetString();
  129. newItem.m_order_item_id = v_row_i["order_item_id"].GetString();
  130. newItem.m_food_id = v_row_i["food_id"].GetString();
  131. newItem.m_barcode = v_row_i["barcode"].GetString();
  132. m_order_items.push_back(newItem);
  133. }
  134. //开始保存预设选项
  135. v_rows = data["order_field"];
  136. for(rapidjson::SizeType i = 0; i < v_rows.Size(); ++i)
  137. {
  138. rapidjson::Value& v_row_i = v_rows[i];
  139. CWaimaiOrderField newItem;
  140. newItem.name = v_row_i["name"].GetString();
  141. newItem.value = v_row_i["value"].GetString();
  142. m_order_field.push_back(newItem);
  143. }
  144. //开始保存增值服务费
  145. v_rows = data["addservice"];
  146. for(rapidjson::SizeType i = 0; i < v_rows.Size(); ++i)
  147. {
  148. rapidjson::Value& v_row_i = v_rows[i];
  149. CWaimaiOrderField newItem;
  150. newItem.name = v_row_i["name"].GetString();
  151. newItem.value = v_row_i["value"].GetString();
  152. m_addservie.push_back(newItem);
  153. }
  154. }
  155. }
  156. return true;
  157. }
  158. bool CWaimaiOrder::ConfirmeOrder(std::string order_id)
  159. {
  160. std::string url = "/waimaiorder/orderconfirm";
  161. //请求外卖的未处理订单
  162. std::map<string, string> params;
  163. params["id"] = order_id;
  164. std::string response;
  165. CZhipuziHttpClient::Request(url.c_str(), params, response);
  166. rapidjson::Document document;
  167. document.Parse(response.c_str());
  168. if(document.HasParseError())
  169. {
  170. LOG_INFO("parse response error!");
  171. return false;
  172. }
  173. if(!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  174. {
  175. LOG_INFO("json error!");
  176. return false;
  177. }
  178. rapidjson::Value& v_errcode = document["errcode"];
  179. int errcode = v_errcode.GetInt();
  180. if(errcode != 0)
  181. {
  182. LOG_INFO("response failed! message:" << document["errmsg"].GetString());
  183. return false;
  184. }
  185. //获得数据成功
  186. rapidjson::Value& data = document["data"];
  187. rapidjson::Value& v_count = data["count"];
  188. string count = v_count.GetString();
  189. return true;
  190. }
  191. bool CWaimaiOrder::SuccessOrder(std::string order_id)
  192. {
  193. std::string url = "/waimaiorder/ordersucceeded";
  194. //请求外卖的未处理订单
  195. std::map<string, string> params;
  196. params["id"] = order_id;
  197. std::string response;
  198. CZhipuziHttpClient::Request(url.c_str(), params, response);
  199. rapidjson::Document document;
  200. document.Parse(response.c_str());
  201. if(document.HasParseError())
  202. {
  203. LOG_INFO("parse response error!");
  204. return false;
  205. }
  206. if(!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  207. {
  208. LOG_INFO("json error!");
  209. return false;
  210. }
  211. rapidjson::Value& v_errcode = document["errcode"];
  212. int errcode = v_errcode.GetInt();
  213. if(errcode != 0)
  214. {
  215. LOG_INFO("response failed! message:" << document["errmsg"].GetString());
  216. return false;
  217. }
  218. //获得数据成功
  219. rapidjson::Value& data = document["data"];
  220. rapidjson::Value& v_count = data["count"];
  221. string count = v_count.GetString();
  222. return true;
  223. }
  224. bool CWaimaiOrder::FailOrder(std::string order_id, std::string reason)
  225. {
  226. std::string url = "/waimaiorder/orderfail";
  227. //请求外卖的未处理订单
  228. std::map<string, string> params;
  229. params["id"] = order_id;
  230. params["failed_reason"] = reason;
  231. std::string response;
  232. CZhipuziHttpClient::Request(url.c_str(), params, response);
  233. rapidjson::Document document;
  234. document.Parse(response.c_str());
  235. if(document.HasParseError())
  236. {
  237. LOG_INFO("parse response error!");
  238. return false;
  239. }
  240. if(!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  241. {
  242. LOG_INFO("json error!");
  243. return false;
  244. }
  245. rapidjson::Value& v_errcode = document["errcode"];
  246. int errcode = v_errcode.GetInt();
  247. if(errcode != 0)
  248. {
  249. LOG_INFO("response failed! message:" << document["errmsg"].GetString());
  250. return false;
  251. }
  252. //获得数据成功
  253. rapidjson::Value& data = document["data"];
  254. rapidjson::Value& v_count = data["count"];
  255. string count = v_count.GetString();
  256. return true;
  257. }
  258. bool CWaimaiOrder::AgreeRefund(std::string order_id)
  259. {
  260. std::string url = "/waimaiorder/agreerefund";
  261. //请求外卖的未处理订单
  262. std::map<string, string> params;
  263. params["order_id"] = order_id;
  264. std::string response;
  265. CZhipuziHttpClient::Request(url.c_str(), params, response);
  266. rapidjson::Document document;
  267. document.Parse(response.c_str());
  268. if(document.HasParseError())
  269. {
  270. LOG_INFO("parse response error!");
  271. return false;
  272. }
  273. if(!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  274. {
  275. LOG_INFO("json error!");
  276. return false;
  277. }
  278. rapidjson::Value& v_errcode = document["errcode"];
  279. int errcode = v_errcode.GetInt();
  280. if(errcode != 0)
  281. {
  282. LOG_INFO("response failed! message:" << document["errmsg"].GetString());
  283. return false;
  284. }
  285. //获得数据成功
  286. rapidjson::Value& data = document["data"];
  287. rapidjson::Value& v_count = data["count"];
  288. string count = v_count.GetString();
  289. return true;
  290. }
  291. bool CWaimaiOrder::DisagreeRefund(std::string order_id)
  292. {
  293. std::string url = "/waimaiorder/disagreerefund";
  294. //请求外卖的未处理订单
  295. std::map<string, string> params;
  296. params["order_id"] = order_id;
  297. std::string response;
  298. CZhipuziHttpClient::Request(url.c_str(), params, response);
  299. rapidjson::Document document;
  300. document.Parse(response.c_str());
  301. if(document.HasParseError())
  302. {
  303. LOG_INFO("parse response error!");
  304. return false;
  305. }
  306. if(!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  307. {
  308. LOG_INFO("json error!");
  309. return false;
  310. }
  311. rapidjson::Value& v_errcode = document["errcode"];
  312. int errcode = v_errcode.GetInt();
  313. if(errcode != 0)
  314. {
  315. LOG_INFO("response failed! message:" << document["errmsg"].GetString());
  316. return false;
  317. }
  318. //获得数据成功
  319. rapidjson::Value& data = document["data"];
  320. rapidjson::Value& v_count = data["count"];
  321. string count = v_count.GetString();
  322. return true;
  323. }