Commit f531d5aa by guanghui.cui

1、入库成功后,订单号发送给服务端

2、折扣率计算精度增加,小数点后4位
parent 36e62741
...@@ -43,7 +43,7 @@ public: ...@@ -43,7 +43,7 @@ public:
//外卖订单相关操作 //外卖订单相关操作
//设置外卖订单信息数据表 //设置外卖订单信息数据表
virtual int SetTakeawayOrder(TakeawayOrder &order)=0; virtual int SetTakeawayOrder(IN TakeawayOrder &order,OUT std::string &orderId)=0;
//外卖退单数据库操作 //外卖退单数据库操作
virtual int CancleTakeaway(TakeawayOrder &order)=0; virtual int CancleTakeaway(TakeawayOrder &order)=0;
......
...@@ -155,7 +155,7 @@ int COrderInfo::SetPayResult(IN std::string& strOrderId, //订单 ...@@ -155,7 +155,7 @@ int COrderInfo::SetPayResult(IN std::string& strOrderId, //订单
//外卖订单相关操作 //外卖订单相关操作
//设置外卖订单信息数据表 //设置外卖订单信息数据表
int COrderInfo::SetTakeawayOrder(TakeawayOrder &order) int COrderInfo::SetTakeawayOrder(IN TakeawayOrder &order,OUT std::string &posOrderId)
{ {
int nErrCode = EC_OK; int nErrCode = EC_OK;
fmPOSType posTakeway; fmPOSType posTakeway;
...@@ -332,7 +332,7 @@ int COrderInfo::SetTakeawayOrder(TakeawayOrder &order) ...@@ -332,7 +332,7 @@ int COrderInfo::SetTakeawayOrder(TakeawayOrder &order)
float disRate=(order.service_fee*1.00)/(order.products_fee-order.dis_shop_fee); //平台服务费率 float disRate=(order.service_fee*1.00)/(order.products_fee-order.dis_shop_fee); //平台服务费率
bool bDisShop=false; //是否已经计算商户优惠金额 bool bDisShop=false; //是否已经计算商户优惠金额
int iDisShopIndex=0; //写入商户优惠的商品索引 int iDisShopIndex=0; //写入商户优惠的商品索引
float fRateProShop=0.00; //使用商户优惠商品的折扣率; float fRateProShop=0.0000; //使用商户优惠商品的折扣率;
int itemIndex=0; int itemIndex=0;
for(auto dish:vecDish){ for(auto dish:vecDish){
bool bDiscOnItem=false; bool bDiscOnItem=false;
...@@ -345,7 +345,7 @@ int COrderInfo::SetTakeawayOrder(TakeawayOrder &order) ...@@ -345,7 +345,7 @@ int COrderInfo::SetTakeawayOrder(TakeawayOrder &order)
if(!bDisShop&&order.dis_shop_fee>0&&tot_product>((tot_product-order.dis_shop_fee/100.00)*disRate+order.dis_shop_fee/100.00)){ if(!bDisShop&&order.dis_shop_fee>0&&tot_product>((tot_product-order.dis_shop_fee/100.00)*disRate+order.dis_shop_fee/100.00)){
discount_product=(tot_product-order.dis_shop_fee/100.00)*disRate+order.dis_shop_fee/100.00; discount_product=(tot_product-order.dis_shop_fee/100.00)*disRate+order.dis_shop_fee/100.00;
iDisShopIndex=itemIndex; iDisShopIndex=itemIndex;
fRateProShop=order.dis_shop_fee*1.00/(dish.original_price*dish.consume_num); fRateProShop=order.dis_shop_fee*1.0000/(dish.original_price*dish.consume_num);
bDisShop=true; bDisShop=true;
//写入商品折扣表 //写入商品折扣表
...@@ -447,10 +447,13 @@ int COrderInfo::SetTakeawayOrder(TakeawayOrder &order) ...@@ -447,10 +447,13 @@ int COrderInfo::SetTakeawayOrder(TakeawayOrder &order)
//VALUES('2017-10-26',1234567,1390,1,7,'takeout discount','takeout discount','ÍâÂôÕÛ¿Û',2,0,15,'2017-10-26 18:23:08',99,2,'1',-0.1000,-20.08); //VALUES('2017-10-26',1234567,1390,1,7,'takeout discount','takeout discount','ÍâÂôÕÛ¿Û',2,0,15,'2017-10-26 18:23:08',99,2,'1',-0.1000,-20.08);
float dis_platform=(order.service_fee)/100.00; //折扣金额 float dis_platform=(order.service_fee)/100.00; //折扣金额
int discType=1;
if(order.dis_shop_fee>0)
discType=2;
snprintf(mysql->sqlStr,SQL_BUFFER_SIZE, "INSERT INTO tbl_Disc(`Date`,`Check`,Outlet,DiscIdx,DiscNo,Name1,Name2,Name3,ItemIdx,StartLevel,EndLevel,ApplyTime,\ snprintf(mysql->sqlStr,SQL_BUFFER_SIZE, "INSERT INTO tbl_Disc(`Date`,`Check`,Outlet,DiscIdx,DiscNo,Name1,Name2,Name3,ItemIdx,StartLevel,EndLevel,ApplyTime,\
ApplyStation,ApplyEmp,IsDiscBefore,Rate,DiscTot)\ ApplyStation,ApplyEmp,IsDiscBefore,Rate,DiscTot)\
VALUES('%s',%d,%d,1,%d,'plantform fee','plantform fee','ƽ̨·þÎñ·Ñ',%d,0,15,'%s',99,2,'1',%.2f,%.2f)", \ VALUES('%s',%d,%d,%d,%d,'plantform fee','plantform fee','ƽ̨·þÎñ·Ñ',%d,0,15,'%s',99,2,'1',%.4f,%.2f)", \
strDate.data(),orderId,iOutlet,_plantformFeeId,itemIndex,chTime,-disRate,-dis_platform); strDate.data(),orderId,iOutlet,discType,_plantformFeeId,itemIndex,chTime,-disRate,-dis_platform);
LOG(INFO)<<"======disc info insert:"<<mysql->sqlStr; LOG(INFO)<<"======disc info insert:"<<mysql->sqlStr;
nErrCode = mysql->insert(); nErrCode = mysql->insert();
if(nErrCode != EC_OK) if(nErrCode != EC_OK)
...@@ -465,7 +468,7 @@ int COrderInfo::SetTakeawayOrder(TakeawayOrder &order) ...@@ -465,7 +468,7 @@ int COrderInfo::SetTakeawayOrder(TakeawayOrder &order)
float shopRate=(order.dis_shop_fee*1.00)/order.products_fee; float shopRate=(order.dis_shop_fee*1.00)/order.products_fee;
snprintf(mysql->sqlStr,SQL_BUFFER_SIZE, "INSERT INTO tbl_Disc(`Date`,`Check`,Outlet,DiscIdx,DiscNo,Name1,Name2,Name3,ItemIdx,StartLevel,EndLevel,ApplyTime,\ snprintf(mysql->sqlStr,SQL_BUFFER_SIZE, "INSERT INTO tbl_Disc(`Date`,`Check`,Outlet,DiscIdx,DiscNo,Name1,Name2,Name3,ItemIdx,StartLevel,EndLevel,ApplyTime,\
ApplyStation,ApplyEmp,IsDiscBefore,Rate,DiscTot)\ ApplyStation,ApplyEmp,IsDiscBefore,Rate,DiscTot)\
VALUES('%s',%d,%d,2,%d,'merchant discount','merchant discount','ÉÌ»§ÓÅ»Ý',%d,0,15,'%s',99,2,'1',%.2f,%.2f)", \ VALUES('%s',%d,%d,1,%d,'merchant discount','merchant discount','ÉÌ»§ÓÅ»Ý',%d,0,15,'%s',99,2,'1',%.4f,%.2f)", \
strDate.data(),orderId,iOutlet,_merchantDisId,iDisShopIndex,chTime,-fRateProShop,-dis_shop); strDate.data(),orderId,iOutlet,_merchantDisId,iDisShopIndex,chTime,-fRateProShop,-dis_shop);
LOG(INFO)<<"======disc info insert:"<<mysql->sqlStr; LOG(INFO)<<"======disc info insert:"<<mysql->sqlStr;
nErrCode = mysql->insert(); nErrCode = mysql->insert();
...@@ -478,7 +481,8 @@ int COrderInfo::SetTakeawayOrder(TakeawayOrder &order) ...@@ -478,7 +481,8 @@ int COrderInfo::SetTakeawayOrder(TakeawayOrder &order)
} }
pthread_mutex_unlock(&mutex); //解锁 pthread_mutex_unlock(&mutex); //解锁
return 0; posOrderId=orderIdStr;
return EC_OK;
} }
//外卖退单数据库操作 //外卖退单数据库操作
......
...@@ -61,7 +61,7 @@ public: ...@@ -61,7 +61,7 @@ public:
//外卖订单相关操作 //外卖订单相关操作
//设置外卖订单信息数据表 //设置外卖订单信息数据表
int SetTakeawayOrder(TakeawayOrder &order); int SetTakeawayOrder(IN TakeawayOrder &order,OUT std::string &orderId);
//外卖退单数据库操作 //外卖退单数据库操作
int CancleTakeaway(TakeawayOrder &order); int CancleTakeaway(TakeawayOrder &order);
......
...@@ -227,7 +227,7 @@ void *FunPrintLable(void* lpParamter) ...@@ -227,7 +227,7 @@ void *FunPrintLable(void* lpParamter)
msg = "print failed"; msg = "print failed";
} }
std::string strReturnJson = GetTakeawayResultJson(statusCode,msg.data()); std::string strReturnJson = GetTakeawayResultJson(statusCode,msg.data(),"");
//发送返回数据 //发送返回数据
int result = socketSendData(strReturnJson.data(), connect_fd); int result = socketSendData(strReturnJson.data(), connect_fd);
LOG(INFO)<<"外卖发送处理结果:"<<strReturnJson.c_str(); LOG(INFO)<<"外卖发送处理结果:"<<strReturnJson.c_str();
...@@ -299,12 +299,13 @@ void *FunTakeaway(void* lpParamter) ...@@ -299,12 +299,13 @@ void *FunTakeaway(void* lpParamter)
//根据请求类型进行不同操作 //根据请求类型进行不同操作
int statusCode; int statusCode;
std::string msg; std::string msg;
std::string orderId;
if(order.fm_cmd == "put_order") if(order.fm_cmd == "put_order")
{ {
LOG(INFO)<<"新外卖订单,fmId:"<<order.fm_id.data(); LOG(INFO)<<"新外卖订单,fmId:"<<order.fm_id.data();
nErrCode = dbOperation->SetTakeawayOrder(order); nErrCode = dbOperation->SetTakeawayOrder(order,orderId);
LOG(INFO)<<"---------------nErrCode:"<<nErrCode; LOG(INFO)<<"---------------nErrCode:"<<nErrCode;
if(nErrCode == EC_OK) if(nErrCode == EC_OK)
{ {
...@@ -360,7 +361,7 @@ void *FunTakeaway(void* lpParamter) ...@@ -360,7 +361,7 @@ void *FunTakeaway(void* lpParamter)
if(order.fm_cmd == "put_order" || order.fm_cmd == "refund_order") if(order.fm_cmd == "put_order" || order.fm_cmd == "refund_order")
{ {
std::string strReturnJson = GetTakeawayResultJson(statusCode,msg.data()); std::string strReturnJson = GetTakeawayResultJson(statusCode,msg.data(),orderId.data());
//发送返回数据 //发送返回数据
//int result = send(connect_fd, strReturnJson.data(), strReturnJson.length(), 0); //int result = send(connect_fd, strReturnJson.data(), strReturnJson.length(), 0);
int result = socketSendData(strReturnJson.data(), connect_fd); int result = socketSendData(strReturnJson.data(), connect_fd);
......
...@@ -185,7 +185,7 @@ bool GetTakeawayOrder(const char* lpJson, TakeawayOrder &order) ...@@ -185,7 +185,7 @@ bool GetTakeawayOrder(const char* lpJson, TakeawayOrder &order)
//获取外卖订单返回结果的json字串 //获取外卖订单返回结果的json字串
// statuscode 状态码 // statuscode 状态码
// msg 状态信息 // msg 状态信息
std::string GetTakeawayResultJson(const int statuscode,const char* msg) std::string GetTakeawayResultJson(const int statuscode,const char* msg,const char* orderid)
{ {
rapidjson::StringBuffer buffer; rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer); rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
...@@ -197,6 +197,9 @@ std::string GetTakeawayResultJson(const int statuscode,const char* msg) ...@@ -197,6 +197,9 @@ std::string GetTakeawayResultJson(const int statuscode,const char* msg)
writer.Key("msg"); writer.Key("msg");
writer.String(msg); writer.String(msg);
writer.Key("orderid");
writer.String(orderid);
writer.EndObject(); writer.EndObject();
return buffer.GetString(); return buffer.GetString();
......
...@@ -13,7 +13,7 @@ std::string GetPayJson(FM_ORDER_INFO &OrderInfo); ...@@ -13,7 +13,7 @@ std::string GetPayJson(FM_ORDER_INFO &OrderInfo);
bool GetTakeawayOrder(const char* json, TakeawayOrder &order); bool GetTakeawayOrder(const char* json, TakeawayOrder &order);
//获取外卖订单返回结果的json字串 //获取外卖订单返回结果的json字串
std::string GetTakeawayResultJson(const int statuscode,const char* msg); std::string GetTakeawayResultJson(const int statuscode,const char* msg,const char* orderid);
std::string GetPOSMenuJson(std::vector<PrinterMenu> &vecMenu,std::map<std::string, std::vector<SetMenuItem>> &mapSetMenu); std::string GetPOSMenuJson(std::vector<PrinterMenu> &vecMenu,std::map<std::string, std::vector<SetMenuItem>> &mapSetMenu);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment