#include "../pch/pch.h" #include "CWaimaiOrder.h" CWaimaiOrder::CWaimaiOrder() { } CWaimaiOrder::~CWaimaiOrder() { } //通过订单ID,获取订单详情 bool CWaimaiOrder::InitData(std::string order_id, std::string order_no) { std::map params; params["id"] = order_id; params["order_no"] = order_no; std::string response; bool ret = CLewaimaiHttpClient::Request("/order/getorderrow", params, response); if (!ret) { LOG_INFO("网络请求出错"); return false; } rapidjson::Document document; document.Parse(response.c_str()); if (document.HasParseError()) { LOG_INFO("parse response error!"); return false; } else { if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data")) { LOG_INFO("json error!"); return false; } rapidjson::Value& v_errcode = document["errcode"]; int errcode = v_errcode.GetInt(); if (errcode != 0) { LOG_INFO("response failed! message:" << document["errmsg"].GetString()); return false; } { //获得数据成功 rapidjson::Value& data = document["data"]; m_order_id = CLewaimaiJson::ToString(data["id"]); m_shop_id = CLewaimaiJson::ToString(data["shop_id"]); m_restaurant_number = CLewaimaiJson::ToString(data["restaurant_number"]); m_customer_id = CLewaimaiJson::ToString(data["customer_id"]); m_customer_name = CLewaimaiJson::ToString(data["customer_name"]); m_phone = CLewaimaiJson::ToString(data["phone"]); m_address = CLewaimaiJson::ToString(data["address"]); m_memo = CLewaimaiJson::ToString(data["memo"]); m_pay_type = CLewaimaiJson::ToString(data["pay_type"]); m_promotion = CLewaimaiJson::ToString(data["promotion"]); m_is_member_discount = CLewaimaiJson::ToString(data["is_member_discount"]); m_member_discount = CLewaimaiJson::ToString(data["member_discount"]); m_discount = atof(CLewaimaiJson::ToString(data["discount"]).c_str()); m_coupon = atof(CLewaimaiJson::ToString(data["coupon"]).c_str()); m_delivery = atof(CLewaimaiJson::ToString(data["delivery"]).c_str()); m_price = atof(CLewaimaiJson::ToString(data["price"]).c_str()); m_order_date = CLewaimaiJson::ToString(data["order_date"]); m_order_status = CLewaimaiJson::ToString(data["order_status"]); m_courier_id = CLewaimaiJson::ToString(data["courier_id"]); m_is_selftake = CLewaimaiJson::ToString(data["is_selftake"]); m_delivery_mode = CLewaimaiJson::ToString(data["delivery_mode"]); m_is_dabao = CLewaimaiJson::ToString(data["is_dabao"]); m_dabao_money = CLewaimaiJson::ToString(data["dabao_money"]); m_order_num = CLewaimaiJson::ToString(data["order_num"]); m_from_type = CLewaimaiJson::ToString(data["from_type"]); m_is_refund = CLewaimaiJson::ToString(data["is_refund"]); m_refund_status = CLewaimaiJson::ToString(data["refund_status"]); m_is_pickup = CLewaimaiJson::ToString(data["is_pickup"]); m_pickup_time = CLewaimaiJson::ToString(data["pickup_time"]); m_refund_failed_reason = CLewaimaiJson::ToString(data["refund_failed_reason"]); m_refund_time = CLewaimaiJson::ToString(data["refund_time"]); m_failed_reason = CLewaimaiJson::ToString(data["failed_reason"]); m_configmemo = CLewaimaiJson::ToString(data["configmemo"]); m_courier_name = CLewaimaiJson::ToString(data["courier_name"]); m_courier_phone = CLewaimaiJson::ToString(data["courier_phone"]); m_order_no = CLewaimaiJson::ToString(data["order_no"]); m_is_firstcut = CLewaimaiJson::ToString(data["is_firstcut"]); m_firstcut_value = CLewaimaiJson::ToString(data["firstcut_value"]); m_need_to_refund = CLewaimaiJson::ToString(data["need_to_refund"]); m_shop_name = CLewaimaiJson::ToString(data["shop_name"]); m_longitude = CLewaimaiJson::ToString(data["longitude"]); m_latitude = CLewaimaiJson::ToString(data["latitude"]); m_open_selftake = CLewaimaiJson::ToString(data["open_selftake"]); m_delivery_date = CLewaimaiJson::ToString(data["delivery_date"]); m_showordernum = CLewaimaiJson::ToString(data["showordernum"]); m_customer_order_total = CLewaimaiJson::ToString(data["customer_order_total"]); m_printer_tip_name = CLewaimaiJson::ToString(data["printer_tip_name"]); m_is_book = CLewaimaiJson::ToString(data["is_book"]); m_is_upstairs = CLewaimaiJson::ToString(data["spread_info"]["is_upstairs"]); m_is_delivery_upstairs = CLewaimaiJson::ToString(data["spread_info"]["is_delivery_upstairs"]); //开始保存订单详情 rapidjson::Value& v_rows = data["order_item"]; for (rapidjson::SizeType i = 0; i < v_rows.Size(); ++i) { rapidjson::Value& v_row_i = v_rows[i]; CWaimaiOrderItem newItem; newItem.m_food_name = CLewaimaiJson::ToString(v_row_i["food_name"]); newItem.m_item_price = CLewaimaiJson::ToString(v_row_i["item_price"]); newItem.m_quantity = CLewaimaiJson::ToString(v_row_i["quantity"]); newItem.m_type_id = CLewaimaiJson::ToString(v_row_i["type_id"]); newItem.m_foodpackage_id = CLewaimaiJson::ToString(v_row_i["foodpackage_id"]); newItem.m_is_foodpackage = CLewaimaiJson::ToString(v_row_i["is_foodpackage"]); newItem.m_pocket_id = CLewaimaiJson::ToString(v_row_i["pocket_id"]); m_order_items.push_back(newItem); } this->UpdateKoudaiItems(); //开始保存预设选项 v_rows = data["order_field"]; for (rapidjson::SizeType i = 0; i < v_rows.Size(); ++i) { rapidjson::Value& v_row_i = v_rows[i]; CWaimaiOrderField newItem; newItem.name = CLewaimaiJson::ToString(v_row_i["name"]); newItem.value = CLewaimaiJson::ToString(v_row_i["value"]); m_order_field.push_back(newItem); } //开始保存增值服务费 v_rows = data["addservice"]; for (rapidjson::SizeType i = 0; i < v_rows.Size(); ++i) { rapidjson::Value& v_row_i = v_rows[i]; CWaimaiOrderField newItem; newItem.name = CLewaimaiJson::ToString(v_row_i["name"]); newItem.value = CLewaimaiJson::ToString(v_row_i["value"]); m_addservie.push_back(newItem); } m_show_qiangdan_qrcode = CLewaimaiJson::ToString(data["show_qiangdan_qrcode"]); m_manzeng_name = CLewaimaiJson::ToString(data["manzeng_name"]); m_show_whole_phone = CLewaimaiJson::ToString(data["show_whole_phone"]); m_is_apply_refund = CLewaimaiJson::ToString(data["is_apply_refund"]); if (m_is_apply_refund == "1") { m_refund_reason_first = CLewaimaiJson::ToString(data["refundInfo"]["first_refund_reason"]); m_refund_info_status = CLewaimaiJson::ToString(data["refundInfo"]["refund_status"]); } } } return true; } bool CWaimaiOrder::ConfirmeOrder(std::string order_id) { std::string url = "/order/orderconfirm"; //请求外卖的未处理订单 std::map params; params["ids"] = order_id; std::string response; CLewaimaiHttpClient::Request(url.c_str(), params, response); rapidjson::Document document; document.Parse(response.c_str()); if (document.HasParseError()) { LOG_INFO("parse response error!"); return false; } if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data")) { LOG_INFO("json error!"); return false; } rapidjson::Value& v_errcode = document["errcode"]; int errcode = v_errcode.GetInt(); if (errcode != 0) { LOG_INFO("response failed! message:" << document["errmsg"].GetString()); return false; } //获得数据成功 rapidjson::Value& data = document["data"]; rapidjson::Value& v_count = data["count"]; string count = CLewaimaiJson::ToString(v_count); return true; } bool CWaimaiOrder::SuccessOrder(std::string order_id) { std::string url = "/order/ordersucceeded"; //请求外卖的未处理订单 std::map params; params["ids"] = order_id; std::string response; CLewaimaiHttpClient::Request(url.c_str(), params, response); rapidjson::Document document; document.Parse(response.c_str()); if (document.HasParseError()) { LOG_INFO("parse response error!"); return false; } if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data")) { LOG_INFO("json error!"); return false; } rapidjson::Value& v_errcode = document["errcode"]; int errcode = v_errcode.GetInt(); if (errcode != 0) { LOG_INFO("response failed! message:" << document["errmsg"].GetString()); return false; } //获得数据成功 rapidjson::Value& data = document["data"]; rapidjson::Value& v_count = data["count"]; string count = CLewaimaiJson::ToString(v_count); return true; } bool CWaimaiOrder::FailOrder(std::string order_id, std::string reason) { std::string url = "/order/orderfail"; //请求外卖的未处理订单 std::map params; params["ids"] = order_id; params["failed_reason"] = reason; std::string response; CLewaimaiHttpClient::Request(url.c_str(), params, response); rapidjson::Document document; document.Parse(response.c_str()); if (document.HasParseError()) { LOG_INFO("parse response error!"); return false; } if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data")) { LOG_INFO("json error!"); return false; } rapidjson::Value& v_errcode = document["errcode"]; int errcode = v_errcode.GetInt(); if (errcode != 0) { LOG_INFO("response failed! message:" << document["errmsg"].GetString()); return false; } //获得数据成功 rapidjson::Value& data = document["data"]; rapidjson::Value& v_count = data["count"]; string count = CLewaimaiJson::ToString(v_count); return true; } bool CWaimaiOrder::AgreeRefund(std::string order_id) { std::string url = "/order/refundorder"; //请求外卖的未处理订单 std::map params; params["order_id"] = order_id; std::string response; CLewaimaiHttpClient::Request(url.c_str(), params, response); rapidjson::Document document; document.Parse(response.c_str()); if (document.HasParseError()) { LOG_INFO("parse response error!"); return false; } if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data")) { LOG_INFO("json error!"); return false; } rapidjson::Value& v_errcode = document["errcode"]; int errcode = v_errcode.GetInt(); if (errcode != 0) { LOG_INFO("response failed! message:" << document["errmsg"].GetString()); return false; } //获得数据成功 rapidjson::Value& data = document["data"]; return true; } bool CWaimaiOrder::DisagreeRefund(std::string order_id) { std::string url = "/order/refuserefundorder"; //请求外卖的未处理订单 std::map params; params["order_id"] = order_id; std::string response; CLewaimaiHttpClient::Request(url.c_str(), params, response); rapidjson::Document document; document.Parse(response.c_str()); if (document.HasParseError()) { LOG_INFO("parse response error!"); return false; } if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data")) { LOG_INFO("json error!"); return false; } rapidjson::Value& v_errcode = document["errcode"]; int errcode = v_errcode.GetInt(); if (errcode != 0) { LOG_INFO("response failed! message:" << document["errmsg"].GetString()); return false; } //获得数据成功 rapidjson::Value& data = document["data"]; return true; } bool CWaimaiOrder::Refund(std::string order_id) { std::string url = "/order/lewaimairefund"; //请求外卖的未处理订单 std::map params; params["order_id"] = order_id; std::string response; CLewaimaiHttpClient::Request(url.c_str(), params, response); rapidjson::Document document; document.Parse(response.c_str()); if (document.HasParseError()) { LOG_INFO("parse response error!"); return false; } if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data")) { LOG_INFO("json error!"); return false; } rapidjson::Value& v_errcode = document["errcode"]; int errcode = v_errcode.GetInt(); if (errcode != 0) { LOG_INFO("response failed! message:" << document["errmsg"].GetString()); return false; } //获得数据成功 rapidjson::Value& data = document["data"]; order_id = CLewaimaiJson::ToString(data["order_id"]); return true; } void CWaimaiOrder::UpdateKoudaiItems() { m_order_koudai_items.clear(); m_order_koudai_items = this->UpdateKoudaiItems(m_order_items); } std::map> CWaimaiOrder::UpdateKoudaiItems(std::vector order_items) { std::map> order_koudai_items; order_koudai_items.clear(); for (std::vector::iterator it = order_items.begin(); it != order_items.end(); it++) { std::string koudai_id = it->m_pocket_id; if (order_koudai_items.find(koudai_id) == order_koudai_items.end()) { //说明还没这个口袋ID std::vector newItemVector; newItemVector.push_back(*it); order_koudai_items[koudai_id] = newItemVector; } else { //说明已经有过这个口袋ID了 order_koudai_items[koudai_id].push_back(*it); } } return order_koudai_items; }