CWaimaiOrder.cpp 9.8 KB

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