#include "../pch/pch.h" #include "OrderListUI.h" #include "CWaimaiOrderItemUI.h" #include "ControlEx.h" void OrderListUI::Refresh() { std::string url; if (m_status == 1) { url = "/waimaiorder/getopenlist"; } else if (m_status == 2) { url = "/waimaiorder/getconfirmedlist"; } else if (m_status == 3) { url = "/waimaiorder/getdeliverylist"; } else if (m_status == 4) { url = "/waimaiorder/getsucceededlist"; } else if (m_status == 5) { url = "/waimaiorder/getfailedlist"; } else if (m_status == 6) { url = "/waimaiorder/getcancelledlist"; } else if (m_status == 7) { url = "/waimaiorder/getrefundlist"; } //请求外卖的未处理订单,直接用当前的page值去请求 std::map params; params["page"] = to_string(m_page); std::string response; CZhipuziHttpClient::RequestOld(url.c_str(), params, response); //请求成功之后,清空之前的数据 this->RemoveAll(); rapidjson::Document document; document.Parse(response.c_str()); if (document.HasParseError()) { LOG_INFO("parse response error!"); return; } if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data")) { LOG_INFO("json error!"); return; } rapidjson::Value& v_errcode = document["errcode"]; int errcode = v_errcode.GetInt(); if (errcode != 0) { LOG_INFO("response failed! message:" << document["errmsg"].GetString()); return; } //获得数据成功 rapidjson::Value& data = document["data"]; rapidjson::Value& v_count = data["count"]; string count = v_count.GetString(); //处理页数 int nCount = atoi(count.c_str()); m_total_page = (int)ceil(nCount / 20.0); if (m_total_page < 1) { m_total_page = 1; } if (m_page <= 1) { m_page = 1; CButtonUI* pControl = static_cast(m_pManager->FindControl(_T("waimai_order_list_last"))); pControl->SetEnabled(false); } if (m_page >= m_total_page) { m_page = m_total_page; CButtonUI* pControl = static_cast(m_pManager->FindControl(_T("waimai_order_list_next"))); pControl->SetEnabled(false); } CLabelUI* pControl = static_cast(m_pManager->FindControl(_T("waimai_order_list_page"))); wstring pageinfo = _T("第 ") + CLewaimaiString::ANSIToUnicode(to_string(m_page)) + _T("页/共 ") + CLewaimaiString::ANSIToUnicode(to_string(m_total_page)) + _T("页"); pControl->SetText(pageinfo.c_str()); rapidjson::Value& v_rows = data["rows"]; for (rapidjson::SizeType i = 0; i < v_rows.Size(); ++i) { rapidjson::Value& v_row_i = v_rows[i]; //创建一个对象 CDialogBuilder builder; CDialogBuilderCallbackEx cb; CWaimaiOrderItemUI* pItem = static_cast(builder.Create(_T("waimai_order_item.xml"), (UINT)0, &cb, m_pManager)); if (pItem != NULL) { //初始化该对应的数据 pItem->SetStatus(m_status); pItem->SetData(v_row_i); this->Add(pItem); pItem = NULL; } else { LOG_INFO("create waimai_order_item fail!"); } } //重置滚动条的位置 tagSIZE size; size.cx = 0; size.cy = 0; this->SetScrollPos(size); } void OrderListUI::LastPage() { m_page--; if (m_page < 1) { m_page = 1; } if (m_page == 1) { CButtonUI* pControl = static_cast(m_pManager->FindControl(_T("waimai_order_list_last"))); pControl->SetEnabled(false); } Refresh(); } void OrderListUI::NextPage() { m_page++; if (m_page > m_total_page) { m_page = m_total_page; } if (m_page == m_total_page) { CButtonUI* pControl = static_cast(m_pManager->FindControl(_T("waimai_order_list_next"))); pControl->SetEnabled(false); } Refresh(); } void OrderListUI::DoEvent(TEventUI& event) { CVerticalLayoutUI::DoEvent(event); }