|
|
@@ -1,4 +1,4 @@
|
|
|
-#include "../pch/pch.h"
|
|
|
+锘�#include "../pch/pch.h"
|
|
|
#include "CDiandanOrder.h"
|
|
|
|
|
|
void CDiandanOrder::RefreshDiandanInfo()
|
|
|
@@ -52,6 +52,16 @@ int CDiandanOrder::getItemNum()
|
|
|
return m_items.size();
|
|
|
}
|
|
|
|
|
|
+int CDiandanOrder::getTotalNum()
|
|
|
+{
|
|
|
+ int total_num = 0;
|
|
|
+ for (std::vector<CDiandanOrderItem>::iterator it = m_items.begin(); it != m_items.end(); it++)
|
|
|
+ {
|
|
|
+ total_num += std::stoi((*it).num);
|
|
|
+ }
|
|
|
+ return total_num;
|
|
|
+}
|
|
|
+
|
|
|
std::string CDiandanOrder::getTotalPriceShow()
|
|
|
{
|
|
|
double total_price_show = 0;
|
|
|
@@ -83,8 +93,8 @@ CDiandanOrderItem CDiandanOrder::getDiandanOrderItem(int index)
|
|
|
return m_items[index];
|
|
|
}
|
|
|
|
|
|
-//这个函数的逻辑是选择一个新商品的时候,与已有商品进行对比,看看是加一个新的商品,还是对已有商品增加数量
|
|
|
-//返回值是表示新加的item,在第几个元素,方便刷新显示
|
|
|
+//杩欎釜鍑芥暟鐨勯€昏緫鏄�€夋嫨涓€涓�柊鍟嗗搧鐨勬椂鍊欙紝涓庡凡鏈夊晢鍝佽繘琛屽�姣旓紝鐪嬬湅鏄�姞涓€涓�柊鐨勫晢鍝侊紝杩樻槸瀵瑰凡鏈夊晢鍝佸�鍔犳暟閲�
|
|
|
+//杩斿洖鍊兼槸琛ㄧず鏂板姞鐨刬tem锛屽湪绗�嚑涓�厓绱狅紝鏂逛究鍒锋柊鏄剧ず
|
|
|
int CDiandanOrder::AddItem(CDiandanOrderItem newitem, bool& is_add_new)
|
|
|
{
|
|
|
int index = 0;
|
|
|
@@ -103,7 +113,7 @@ int CDiandanOrder::AddItem(CDiandanOrderItem newitem, bool& is_add_new)
|
|
|
index++;
|
|
|
}
|
|
|
|
|
|
- //如果找到了,更新数量
|
|
|
+ //濡傛灉鎵惧埌浜嗭紝鏇存柊鏁伴噺
|
|
|
if (is_found)
|
|
|
{
|
|
|
std::string old_num = m_items[index].num;
|
|
|
@@ -111,7 +121,7 @@ int CDiandanOrder::AddItem(CDiandanOrderItem newitem, bool& is_add_new)
|
|
|
double d_old_num = std::stod(old_num);
|
|
|
double d_new_num = d_old_num + std::stod(newitem.num);
|
|
|
|
|
|
- //如果新的数量是一个整数,那么展示的时候就把小数去掉
|
|
|
+ //濡傛灉鏂扮殑鏁伴噺鏄�竴涓�暣鏁帮紝閭d箞灞曠ず鐨勬椂鍊欏氨鎶婂皬鏁板幓鎺�
|
|
|
if (d_new_num - (int)d_new_num < 0.0001)
|
|
|
{
|
|
|
m_items[index].num = std::to_string((int)d_new_num);
|
|
|
@@ -127,7 +137,7 @@ int CDiandanOrder::AddItem(CDiandanOrderItem newitem, bool& is_add_new)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- //如果没找到,直接加一个新的item
|
|
|
+ //濡傛灉娌℃壘鍒帮紝鐩存帴鍔犱竴涓�柊鐨刬tem
|
|
|
m_items.push_back(newitem);
|
|
|
|
|
|
m_items[index].UpdateShowPrice();
|
|
|
@@ -145,7 +155,7 @@ void CDiandanOrder::UpdateItemGuige(int index, std::vector<FoodNatureSelectValue
|
|
|
this->UpdateGuigePrice(index);
|
|
|
}
|
|
|
|
|
|
-//给某一项添加一个数量
|
|
|
+//缁欐煇涓€椤规坊鍔犱竴涓�暟閲�
|
|
|
void CDiandanOrder::AddNum(int index)
|
|
|
{
|
|
|
std::string old_num = m_items[index].num;
|
|
|
@@ -153,7 +163,7 @@ void CDiandanOrder::AddNum(int index)
|
|
|
double d_old_num = std::stod(old_num);
|
|
|
double d_new_num = d_old_num + 1;
|
|
|
|
|
|
- //如果新的数量是一个整数,那么展示的时候就把小数去掉
|
|
|
+ //濡傛灉鏂扮殑鏁伴噺鏄�竴涓�暣鏁帮紝閭d箞灞曠ず鐨勬椂鍊欏氨鎶婂皬鏁板幓鎺�
|
|
|
if (d_new_num - (int)d_new_num < 0.0001)
|
|
|
{
|
|
|
m_items[index].num = std::to_string((int)d_new_num);
|
|
|
@@ -166,7 +176,7 @@ void CDiandanOrder::AddNum(int index)
|
|
|
m_items[index].UpdateShowPrice();
|
|
|
}
|
|
|
|
|
|
-//给某一项减少一个数量,返回值为true表示商品本删掉了,也就是为0份;如果为false表示没被删掉
|
|
|
+//缁欐煇涓€椤瑰噺灏戜竴涓�暟閲忥紝杩斿洖鍊间负true琛ㄧず鍟嗗搧鏈�垹鎺変簡锛屼篃灏辨槸涓�0浠斤紱濡傛灉涓篺alse琛ㄧず娌¤�鍒犳帀
|
|
|
bool CDiandanOrder::DelNum(int index)
|
|
|
{
|
|
|
std::string old_num = m_items[index].num;
|
|
|
@@ -176,14 +186,14 @@ bool CDiandanOrder::DelNum(int index)
|
|
|
|
|
|
if (d_new_num < 0.0001)
|
|
|
{
|
|
|
- //已经减为0了,那么就删掉这个item
|
|
|
+ //宸茬粡鍑忎负0浜嗭紝閭d箞灏卞垹鎺夎繖涓猧tem
|
|
|
m_items.erase(m_items.begin() + index);
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- //如果新的数量是一个整数,那么展示的时候就把小数去掉
|
|
|
+ //濡傛灉鏂扮殑鏁伴噺鏄�竴涓�暣鏁帮紝閭d箞灞曠ず鐨勬椂鍊欏氨鎶婂皬鏁板幓鎺�
|
|
|
if (d_new_num - (int)d_new_num < 0.0001)
|
|
|
{
|
|
|
m_items[index].num = std::to_string((int)d_new_num);
|
|
|
@@ -199,14 +209,14 @@ bool CDiandanOrder::DelNum(int index)
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
-//删除某一项
|
|
|
+//鍒犻櫎鏌愪竴椤�
|
|
|
void CDiandanOrder::Remove(int index)
|
|
|
{
|
|
|
- //已经减为0了,那么就删掉这个item
|
|
|
+ //宸茬粡鍑忎负0浜嗭紝閭d箞灏卞垹鎺夎繖涓猧tem
|
|
|
m_items.erase(m_items.begin() + index);
|
|
|
}
|
|
|
|
|
|
-//更新了某项的规格,那么重新刷新显示和价格
|
|
|
+//鏇存柊浜嗘煇椤圭殑瑙勬牸锛岄偅涔堥噸鏂板埛鏂版樉绀哄拰浠锋牸
|
|
|
void CDiandanOrder::UpdateGuigePrice(int index)
|
|
|
{
|
|
|
m_items[index].UpdateShowPrice();
|
|
|
@@ -217,7 +227,7 @@ void CDiandanOrder::SetDabao(int index)
|
|
|
m_items[index].SetDabao();
|
|
|
}
|
|
|
|
|
|
-//清空商品
|
|
|
+//娓呯┖鍟嗗搧
|
|
|
void CDiandanOrder::Clear()
|
|
|
{
|
|
|
m_items.clear();
|
|
|
@@ -241,15 +251,15 @@ bool CDiandanOrder::UseShangpinquan(std::string shangpinquan_food_id, double& yo
|
|
|
|
|
|
if (curItem.m_is_taocan == false && curItem.food_id == shangpinquan_food_id)
|
|
|
{
|
|
|
- //找到了可以使用的商品
|
|
|
+ //鎵惧埌浜嗗彲浠ヤ娇鐢ㄧ殑鍟嗗搧
|
|
|
if (atof(curItem.num.c_str()) > 0.99999)
|
|
|
{
|
|
|
- //如果当前份数大于1,那么抵扣价格就是商品单价
|
|
|
+ //濡傛灉褰撳墠浠芥暟澶т簬1锛岄偅涔堟姷鎵d环鏍煎氨鏄�晢鍝佸崟浠�
|
|
|
youhui_value = atof(curItem.price.c_str());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- //如果当前份数不足1份,那么就抵扣价格就是单价乘以数量
|
|
|
+ //濡傛灉褰撳墠浠芥暟涓嶈冻1浠斤紝閭d箞灏辨姷鎵d环鏍煎氨鏄�崟浠蜂箻浠ユ暟閲�
|
|
|
youhui_value = atof(curItem.price.c_str()) * atof(curItem.num.c_str());
|
|
|
}
|
|
|
|
|
|
@@ -268,22 +278,22 @@ bool CDiandanOrder::UseCikaDikou(std::string cika_food_id, double& youhui_value,
|
|
|
|
|
|
if (curItem.m_is_taocan == false && curItem.food_id == cika_food_id)
|
|
|
{
|
|
|
- //找到了可以使用的商品
|
|
|
+ //鎵惧埌浜嗗彲浠ヤ娇鐢ㄧ殑鍟嗗搧
|
|
|
if (is_shangpinquan_dikou)
|
|
|
{
|
|
|
if (atof(curItem.num.c_str()) > 1.99999)
|
|
|
{
|
|
|
- //如果当前份数大于2,那么抵扣价格就是商品单价
|
|
|
+ //濡傛灉褰撳墠浠芥暟澶т簬2锛岄偅涔堟姷鎵d环鏍煎氨鏄�晢鍝佸崟浠�
|
|
|
youhui_value = atof(curItem.price.c_str());
|
|
|
}
|
|
|
else if (atof(curItem.num.c_str()) > 0.99999)
|
|
|
{
|
|
|
- //如果当前份数不足2份,但是大于1份,那么就抵扣价格就是单价乘以数量
|
|
|
+ //濡傛灉褰撳墠浠芥暟涓嶈冻2浠斤紝浣嗘槸澶т簬1浠斤紝閭d箞灏辨姷鎵d环鏍煎氨鏄�崟浠蜂箻浠ユ暟閲�
|
|
|
youhui_value = atof(curItem.price.c_str()) * (atof(curItem.num.c_str()) - 1);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- //如果当前份数不足1份,那么已经被商品券抵扣了,次卡不再抵扣
|
|
|
+ //濡傛灉褰撳墠浠芥暟涓嶈冻1浠斤紝閭d箞宸茬粡琚�晢鍝佸埜鎶垫墸浜嗭紝娆″崱涓嶅啀鎶垫墸
|
|
|
youhui_value = 0;
|
|
|
|
|
|
return false;
|
|
|
@@ -293,12 +303,12 @@ bool CDiandanOrder::UseCikaDikou(std::string cika_food_id, double& youhui_value,
|
|
|
{
|
|
|
if (atof(curItem.num.c_str()) > 0.99999)
|
|
|
{
|
|
|
- //如果当前份数大于1,那么抵扣价格就是商品单价
|
|
|
+ //濡傛灉褰撳墠浠芥暟澶т簬1锛岄偅涔堟姷鎵d环鏍煎氨鏄�晢鍝佸崟浠�
|
|
|
youhui_value = atof(curItem.price.c_str());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- //如果当前份数不足1份,那么就抵扣价格就是单价乘以数量
|
|
|
+ //濡傛灉褰撳墠浠芥暟涓嶈冻1浠斤紝閭d箞灏辨姷鎵d环鏍煎氨鏄�崟浠蜂箻浠ユ暟閲�
|
|
|
youhui_value = atof(curItem.price.c_str()) * atof(curItem.num.c_str());
|
|
|
}
|
|
|
}
|
|
|
@@ -326,7 +336,7 @@ double CDiandanOrder::getTotalMemberYouhui(std::string member_level)
|
|
|
return total_youhui;
|
|
|
}
|
|
|
|
|
|
-//计算所有商品的总的打包费
|
|
|
+//璁$畻鎵€鏈夊晢鍝佺殑鎬荤殑鎵撳寘璐�
|
|
|
double CDiandanOrder::getDabaoMoney()
|
|
|
{
|
|
|
double total_dabao = 0;
|
|
|
@@ -343,7 +353,7 @@ double CDiandanOrder::getDabaoMoney()
|
|
|
return total_dabao;
|
|
|
}
|
|
|
|
|
|
-//获取点单相关的参数(仅用于非套餐)
|
|
|
+//鑾峰彇鐐瑰崟鐩稿叧鐨勫弬鏁帮紙浠呯敤浜庨潪濂楅�锛�
|
|
|
std::string CDiandanOrder::getDiandanFoodlistParam()
|
|
|
{
|
|
|
std::vector<std::map<std::string, std::string>> params;
|
|
|
@@ -363,12 +373,12 @@ std::string CDiandanOrder::getDiandanFoodlistParam()
|
|
|
return s_params;
|
|
|
}
|
|
|
|
|
|
-//获取点单相关的套餐参数(仅用于套餐)
|
|
|
+//鑾峰彇鐐瑰崟鐩稿叧鐨勫�椁愬弬鏁帮紙浠呯敤浜庡�椁愶級
|
|
|
std::string CDiandanOrder::getDiandanTaocanParam()
|
|
|
{
|
|
|
rapidjson::Document doc;
|
|
|
doc.SetArray();
|
|
|
- rapidjson::Document::AllocatorType &allocator = doc.GetAllocator(); //获取分配器
|
|
|
+ rapidjson::Document::AllocatorType &allocator = doc.GetAllocator(); //鑾峰彇鍒嗛厤鍣�
|
|
|
|
|
|
for (std::vector<CDiandanOrderItem>::iterator it = m_items.begin(); it != m_items.end(); it++)
|
|
|
{
|
|
|
@@ -395,7 +405,7 @@ bool CDiandanOrder::InitData(std::string order_id)
|
|
|
bool ret = CZhipuziHttpClient::GetInstance()->Request("/diancan/getorderdetail", params, response);
|
|
|
if (!ret)
|
|
|
{
|
|
|
- LOG_INFO("网络请求出错");
|
|
|
+ LOG_INFO("缃戠粶璇锋眰鍑洪敊");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
@@ -423,7 +433,7 @@ bool CDiandanOrder::InitData(std::string order_id)
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- //获得数据成功
|
|
|
+ //鑾峰緱鏁版嵁鎴愬姛
|
|
|
rapidjson::Value& data = document["data"];
|
|
|
|
|
|
m_order_id = data["id"].GetString();
|
|
|
@@ -469,7 +479,7 @@ bool CDiandanOrder::InitData(std::string order_id)
|
|
|
order_from = 3;
|
|
|
}
|
|
|
|
|
|
- //开始保存订单详情
|
|
|
+ //寮€濮嬩繚瀛樿�鍗曡�鎯�
|
|
|
rapidjson::Value& v_rows = data["order_item"];
|
|
|
|
|
|
for (rapidjson::SizeType i = 0; i < v_rows.Size(); ++i)
|
|
|
@@ -486,7 +496,7 @@ bool CDiandanOrder::InitData(std::string order_id)
|
|
|
m_items_print.push_back(itemPrint);
|
|
|
}
|
|
|
|
|
|
- //保存套餐的
|
|
|
+ //淇濆瓨濂楅�鐨�
|
|
|
rapidjson::Value& foodpackage_array = data["foodpackage_array"];
|
|
|
|
|
|
for (rapidjson::SizeType i = 0; i < foodpackage_array.Size(); ++i)
|
|
|
@@ -504,9 +514,9 @@ bool CDiandanOrder::InitData(std::string order_id)
|
|
|
|
|
|
itemPrint.is_taocan = true;
|
|
|
|
|
|
- taocan_name += CLewaimaiString::UnicodeToUTF8(L"【");
|
|
|
+ taocan_name += CLewaimaiString::UnicodeToUTF8(L"銆�");
|
|
|
|
|
|
- //接着保存套餐的item
|
|
|
+ //鎺ョ潃淇濆瓨濂楅�鐨刬tem
|
|
|
rapidjson::Value& food_item = cur_foodpackage["food_item"];
|
|
|
for (rapidjson::SizeType j = 0; j < food_item.Size(); ++j)
|
|
|
{
|
|
|
@@ -525,11 +535,11 @@ bool CDiandanOrder::InitData(std::string order_id)
|
|
|
|
|
|
if (j < food_item.Size() - 1)
|
|
|
{
|
|
|
- taocan_name += CLewaimaiString::UnicodeToUTF8(L"、");
|
|
|
+ taocan_name += CLewaimaiString::UnicodeToUTF8(L"銆�");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- taocan_name += CLewaimaiString::UnicodeToUTF8(L"】");
|
|
|
+ taocan_name += CLewaimaiString::UnicodeToUTF8(L"銆�");
|
|
|
|
|
|
itemPrint.m_food_name = taocan_name;
|
|
|
|
|
|
@@ -544,7 +554,7 @@ bool CDiandanOrder::Refund(std::string order_id)
|
|
|
{
|
|
|
std::string url = "/diancan/refund";
|
|
|
|
|
|
- //请求外卖的未处理订单
|
|
|
+ //璇锋眰澶栧崠鐨勬湭澶勭悊璁㈠崟
|
|
|
std::map<std::string, std::string> params;
|
|
|
params["id"] = order_id;
|
|
|
std::string response;
|