Commit f531d5aa by guanghui.cui

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

2、折扣率计算精度增加,小数点后4位
parent 36e62741
......@@ -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;
......
......@@ -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;
fmPOSType posTakeway;
......@@ -332,7 +332,7 @@ int COrderInfo::SetTakeawayOrder(TakeawayOrder &order)
float disRate=(order.service_fee*1.00)/(order.products_fee-order.dis_shop_fee); //平台服务费率
bool bDisShop=false; //是否已经计算商户优惠金额
int iDisShopIndex=0; //写入商户优惠的商品索引
float fRateProShop=0.00; //使用商户优惠商品的折扣率;
float fRateProShop=0.0000; //使用商户优惠商品的折扣率;
int itemIndex=0;
for(auto dish:vecDish){
bool bDiscOnItem=false;
......@@ -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)){
discount_product=(tot_product-order.dis_shop_fee/100.00)*disRate+order.dis_shop_fee/100.00;
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;
//写入商品折扣表
......@@ -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);
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,\
ApplyStation,ApplyEmp,IsDiscBefore,Rate,DiscTot)\
VALUES('%s',%d,%d,1,%d,'plantform fee','plantform fee','ƽ̨·þÎñ·Ñ',%d,0,15,'%s',99,2,'1',%.2f,%.2f)", \
strDate.data(),orderId,iOutlet,_plantformFeeId,itemIndex,chTime,-disRate,-dis_platform);
VALUES('%s',%d,%d,%d,%d,'plantform fee','plantform fee','ƽ̨·þÎñ·Ñ',%d,0,15,'%s',99,2,'1',%.4f,%.2f)", \
strDate.data(),orderId,iOutlet,discType,_plantformFeeId,itemIndex,chTime,-disRate,-dis_platform);
LOG(INFO)<<"======disc info insert:"<<mysql->sqlStr;
nErrCode = mysql->insert();
if(nErrCode != EC_OK)
......@@ -465,7 +468,7 @@ int COrderInfo::SetTakeawayOrder(TakeawayOrder &order)
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,\
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);
LOG(INFO)<<"======disc info insert:"<<mysql->sqlStr;
nErrCode = mysql->insert();
......@@ -478,7 +481,8 @@ int COrderInfo::SetTakeawayOrder(TakeawayOrder &order)
}
pthread_mutex_unlock(&mutex); //解锁
return 0;
posOrderId=orderIdStr;
return EC_OK;
}
//外卖退单数据库操作
......
......@@ -61,7 +61,7 @@ public:
//外卖订单相关操作
//设置外卖订单信息数据表
int SetTakeawayOrder(TakeawayOrder &order);
int SetTakeawayOrder(IN TakeawayOrder &order,OUT std::string &orderId);
//外卖退单数据库操作
int CancleTakeaway(TakeawayOrder &order);
......
......@@ -227,7 +227,7 @@ void *FunPrintLable(void* lpParamter)
msg = "print failed";
}
std::string strReturnJson = GetTakeawayResultJson(statusCode,msg.data());
std::string strReturnJson = GetTakeawayResultJson(statusCode,msg.data(),"");
//发送返回数据
int result = socketSendData(strReturnJson.data(), connect_fd);
LOG(INFO)<<"外卖发送处理结果:"<<strReturnJson.c_str();
......@@ -299,12 +299,13 @@ void *FunTakeaway(void* lpParamter)
//根据请求类型进行不同操作
int statusCode;
std::string msg;
std::string orderId;
if(order.fm_cmd == "put_order")
{
LOG(INFO)<<"新外卖订单,fmId:"<<order.fm_id.data();
nErrCode = dbOperation->SetTakeawayOrder(order);
nErrCode = dbOperation->SetTakeawayOrder(order,orderId);
LOG(INFO)<<"---------------nErrCode:"<<nErrCode;
if(nErrCode == EC_OK)
{
......@@ -360,7 +361,7 @@ void *FunTakeaway(void* lpParamter)
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 = socketSendData(strReturnJson.data(), connect_fd);
......
......@@ -185,7 +185,7 @@ bool GetTakeawayOrder(const char* lpJson, TakeawayOrder &order)
//获取外卖订单返回结果的json字串
// statuscode 状态码
// 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::Writer<rapidjson::StringBuffer> writer(buffer);
......@@ -197,6 +197,9 @@ std::string GetTakeawayResultJson(const int statuscode,const char* msg)
writer.Key("msg");
writer.String(msg);
writer.Key("orderid");
writer.String(orderid);
writer.EndObject();
return buffer.GetString();
......
......@@ -13,7 +13,7 @@ std::string GetPayJson(FM_ORDER_INFO &OrderInfo);
bool GetTakeawayOrder(const char* json, TakeawayOrder &order);
//获取外卖订单返回结果的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);
......
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