CWaimaiOrder.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419
  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 = CLewaimaiHttpClient::Request("/order/getorderrow", 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 = atof(data["discount"].GetString());
  59. m_coupon = atof(data["coupon"].GetString());
  60. m_delivery = atof(data["delivery"].GetString());
  61. m_price = atof(data["price"].GetString());
  62. m_order_date = data["order_date"].GetString();
  63. m_order_status = data["order_status"].GetString();
  64. m_courier_id = data["courier_id"].GetString();
  65. m_is_selftake = data["is_selftake"].GetString();
  66. m_delivery_mode = data["delivery_mode"].GetString();
  67. m_is_dabao = data["is_dabao"].GetString();
  68. m_dabao_money = data["dabao_money"].GetString();
  69. //m_phone_customer_id = data["phone_customer_id"].GetString();
  70. m_order_num = data["order_num"].GetString();
  71. m_from_type = data["from_type"].GetString();
  72. m_is_refund = data["is_refund"].GetString();
  73. m_refund_status = data["refund_status"].GetString();
  74. m_is_pickup = data["is_pickup"].GetString();
  75. m_pickup_time = data["pickup_time"].GetString();
  76. //m_verify_time = data["verify_time"].GetString();
  77. //m_verify_user = data["verify_user"].GetString();
  78. m_refund_failed_reason = data["refund_failed_reason"].GetString();
  79. m_refund_time = data["refund_time"].GetString();
  80. m_failed_reason = data["failed_reason"].GetString();
  81. m_configmemo = data["configmemo"].GetString();
  82. //m_courier_type = data["courier_type"].GetString();
  83. m_courier_name = data["courier_name"].GetString();
  84. m_courier_phone = data["courier_phone"].GetString();
  85. //m_receiver_lng = data["receiver_lng"].GetString();
  86. //m_receiver_lat = data["receiver_lat"].GetString();
  87. //m_discount_price = data["discount_price"].GetString();
  88. m_order_no = data["order_no"].GetString();
  89. m_is_firstcut = data["is_firstcut"].GetString();
  90. m_firstcut_value = data["firstcut_value"].GetString();
  91. m_need_to_refund = data["need_to_refund"].GetString();
  92. m_shop_name = data["shop_name"].GetString();
  93. m_longitude = data["longitude"].GetString();
  94. m_latitude = data["latitude"].GetString();
  95. m_open_selftake = data["open_selftake"].GetString();
  96. m_delivery_date = data["delivery_date"].GetString();
  97. m_customer_order_total = data["customer_order_total"].GetString();
  98. m_printer_tip_name = data["printer_tip_name"].GetString();
  99. m_is_book = data["is_book"].GetString();
  100. //开始保存订单详情
  101. rapidjson::Value& v_rows = data["order_item"];
  102. for (rapidjson::SizeType i = 0; i < v_rows.Size(); ++i)
  103. {
  104. rapidjson::Value& v_row_i = v_rows[i];
  105. CWaimaiOrderItem newItem;
  106. newItem.m_food_name = v_row_i["food_name"].GetString();
  107. newItem.m_item_price = v_row_i["item_price"].GetString();
  108. newItem.m_quantity = v_row_i["quantity"].GetString();
  109. //newItem.m_type_id = v_row_i["type_id"].GetString();
  110. newItem.m_foodpackage_id = v_row_i["foodpackage_id"].GetString();
  111. newItem.m_is_foodpackage = v_row_i["is_foodpackage"].GetString();
  112. m_order_items.push_back(newItem);
  113. }
  114. //开始保存预设选项
  115. v_rows = data["order_field"];
  116. for (rapidjson::SizeType i = 0; i < v_rows.Size(); ++i)
  117. {
  118. rapidjson::Value& v_row_i = v_rows[i];
  119. CWaimaiOrderField newItem;
  120. newItem.name = v_row_i["name"].GetString();
  121. newItem.value = v_row_i["value"].GetString();
  122. m_order_field.push_back(newItem);
  123. }
  124. //开始保存增值服务费
  125. v_rows = data["addservice"];
  126. for (rapidjson::SizeType i = 0; i < v_rows.Size(); ++i)
  127. {
  128. rapidjson::Value& v_row_i = v_rows[i];
  129. CWaimaiOrderField newItem;
  130. newItem.name = v_row_i["name"].GetString();
  131. newItem.value = v_row_i["value"].GetString();
  132. m_addservie.push_back(newItem);
  133. }
  134. m_show_qiangdan_qrcode = data["show_qiangdan_qrcode"].GetString();
  135. }
  136. }
  137. return true;
  138. }
  139. bool CWaimaiOrder::ConfirmeOrder(std::string order_id)
  140. {
  141. std::string url = "/order/orderconfirm";
  142. //请求外卖的未处理订单
  143. std::map<string, string> params;
  144. params["ids"] = order_id;
  145. std::string response;
  146. CLewaimaiHttpClient::Request(url.c_str(), params, response);
  147. rapidjson::Document document;
  148. document.Parse(response.c_str());
  149. if (document.HasParseError())
  150. {
  151. LOG_INFO("parse response error!");
  152. return false;
  153. }
  154. if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  155. {
  156. LOG_INFO("json error!");
  157. return false;
  158. }
  159. rapidjson::Value& v_errcode = document["errcode"];
  160. int errcode = v_errcode.GetInt();
  161. if (errcode != 0)
  162. {
  163. LOG_INFO("response failed! message:" << document["errmsg"].GetString());
  164. return false;
  165. }
  166. //获得数据成功
  167. rapidjson::Value& data = document["data"];
  168. rapidjson::Value& v_count = data["count"];
  169. string count = v_count.GetString();
  170. return true;
  171. }
  172. bool CWaimaiOrder::SuccessOrder(std::string order_id)
  173. {
  174. std::string url = "/order/ordersucceeded";
  175. //请求外卖的未处理订单
  176. std::map<string, string> params;
  177. params["ids"] = order_id;
  178. std::string response;
  179. CLewaimaiHttpClient::Request(url.c_str(), params, response);
  180. rapidjson::Document document;
  181. document.Parse(response.c_str());
  182. if (document.HasParseError())
  183. {
  184. LOG_INFO("parse response error!");
  185. return false;
  186. }
  187. if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  188. {
  189. LOG_INFO("json error!");
  190. return false;
  191. }
  192. rapidjson::Value& v_errcode = document["errcode"];
  193. int errcode = v_errcode.GetInt();
  194. if (errcode != 0)
  195. {
  196. LOG_INFO("response failed! message:" << document["errmsg"].GetString());
  197. return false;
  198. }
  199. //获得数据成功
  200. rapidjson::Value& data = document["data"];
  201. rapidjson::Value& v_count = data["count"];
  202. string count = v_count.GetString();
  203. return true;
  204. }
  205. bool CWaimaiOrder::FailOrder(std::string order_id, std::string reason)
  206. {
  207. std::string url = "/order/orderfail";
  208. //请求外卖的未处理订单
  209. std::map<string, string> params;
  210. params["ids"] = order_id;
  211. params["failed_reason"] = reason;
  212. std::string response;
  213. CLewaimaiHttpClient::Request(url.c_str(), params, response);
  214. rapidjson::Document document;
  215. document.Parse(response.c_str());
  216. if (document.HasParseError())
  217. {
  218. LOG_INFO("parse response error!");
  219. return false;
  220. }
  221. if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  222. {
  223. LOG_INFO("json error!");
  224. return false;
  225. }
  226. rapidjson::Value& v_errcode = document["errcode"];
  227. int errcode = v_errcode.GetInt();
  228. if (errcode != 0)
  229. {
  230. LOG_INFO("response failed! message:" << document["errmsg"].GetString());
  231. return false;
  232. }
  233. //获得数据成功
  234. rapidjson::Value& data = document["data"];
  235. rapidjson::Value& v_count = data["count"];
  236. string count = v_count.GetString();
  237. return true;
  238. }
  239. bool CWaimaiOrder::AgreeRefund(std::string order_id)
  240. {
  241. std::string url = "/order/agreerefund";
  242. //请求外卖的未处理订单
  243. std::map<string, string> params;
  244. params["order_id"] = order_id;
  245. std::string response;
  246. CLewaimaiHttpClient::Request(url.c_str(), params, response);
  247. rapidjson::Document document;
  248. document.Parse(response.c_str());
  249. if (document.HasParseError())
  250. {
  251. LOG_INFO("parse response error!");
  252. return false;
  253. }
  254. if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  255. {
  256. LOG_INFO("json error!");
  257. return false;
  258. }
  259. rapidjson::Value& v_errcode = document["errcode"];
  260. int errcode = v_errcode.GetInt();
  261. if (errcode != 0)
  262. {
  263. LOG_INFO("response failed! message:" << document["errmsg"].GetString());
  264. return false;
  265. }
  266. //获得数据成功
  267. rapidjson::Value& data = document["data"];
  268. order_id = data["order_id"].GetString();
  269. return true;
  270. }
  271. bool CWaimaiOrder::DisagreeRefund(std::string order_id)
  272. {
  273. std::string url = "/order/disagreerefund";
  274. //请求外卖的未处理订单
  275. std::map<string, string> params;
  276. params["order_id"] = order_id;
  277. std::string response;
  278. CLewaimaiHttpClient::Request(url.c_str(), params, response);
  279. rapidjson::Document document;
  280. document.Parse(response.c_str());
  281. if (document.HasParseError())
  282. {
  283. LOG_INFO("parse response error!");
  284. return false;
  285. }
  286. if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  287. {
  288. LOG_INFO("json error!");
  289. return false;
  290. }
  291. rapidjson::Value& v_errcode = document["errcode"];
  292. int errcode = v_errcode.GetInt();
  293. if (errcode != 0)
  294. {
  295. LOG_INFO("response failed! message:" << document["errmsg"].GetString());
  296. return false;
  297. }
  298. //获得数据成功
  299. rapidjson::Value& data = document["data"];
  300. order_id = data["order_id"].GetString();
  301. return true;
  302. }
  303. bool CWaimaiOrder::Refund(std::string order_id)
  304. {
  305. std::string url = "/order/lewaimairefund";
  306. //请求外卖的未处理订单
  307. std::map<string, string> params;
  308. params["order_id"] = order_id;
  309. std::string response;
  310. CLewaimaiHttpClient::Request(url.c_str(), params, response);
  311. rapidjson::Document document;
  312. document.Parse(response.c_str());
  313. if (document.HasParseError())
  314. {
  315. LOG_INFO("parse response error!");
  316. return false;
  317. }
  318. if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  319. {
  320. LOG_INFO("json error!");
  321. return false;
  322. }
  323. rapidjson::Value& v_errcode = document["errcode"];
  324. int errcode = v_errcode.GetInt();
  325. if (errcode != 0)
  326. {
  327. LOG_INFO("response failed! message:" << document["errmsg"].GetString());
  328. return false;
  329. }
  330. //获得数据成功
  331. rapidjson::Value& data = document["data"];
  332. order_id = data["order_id"].GetString();
  333. return true;
  334. }