Commit 5c90a39c by wuyang.zou

New Feature: 新增动态扩展字段: extendedAttributes, 以后新增独立意义的字段时,将不需要再升级程序;

Version: 1.2.6 Rc
git commit -m
parent 15320fc4
......@@ -43,6 +43,8 @@ struct paymentDetail
std::string trans_id; //支付交易号
std::string account_id; //支付账户号
std::string pay_code; //支付码
int platformServiceFee; //平台服务费 单位:分
int performanceServiceFee; //履约服务费 单位 : 分
};
//支付信息
......@@ -218,6 +220,13 @@ struct orderObj
std::vector<promotions> vecPromotions; //促销列表
std::vector<ecoupon> vecEcoupon; //电子点标
std::vector<orderCoupon> vecOrderCoupons; //订单优惠券信息
std::string extendedAttributes; //订单扩展属性: 存放Json对象对应的字符串;
// extendedAttributes.discountAmount 会员⽇促销折扣总额单位:分
// extendedAttributes.discountThreshold 折扣门槛金额 单位:分
// extendedAttributes.discountMax 最大折扣额度 单位:分
// extendedAttributes.discountRate 折扣率(10-100)例:10:一折,100:不打折
// extendedAttributes.memberDay 是否是会员日 0:不是 1:是
};
//订单状态
......
......@@ -277,6 +277,8 @@ bool JsonModule::getPushOrders(IN const char* json,OUT orderObj &order)
detail.trans_id = GetJsonStringSafe(payInfos_obj,"transNum");
detail.account_id=GetJsonStringSafe(payInfos_obj,"accountId");
detail.pay_code= GetJsonStringSafe(payInfos_obj, "payCode");
detail.platformServiceFee = GetJsonIntSafe(payInfos_obj, "platformServiceFee");
detail.performanceServiceFee = GetJsonIntSafe(payInfos_obj, "performanceServiceFee");
order.payInfo.vecDetail.push_back(detail);
}
......@@ -421,6 +423,15 @@ bool JsonModule::getPushOrders(IN const char* json,OUT orderObj &order)
}
}
//订单扩展属性信息
if (orderContent_obj.HasMember("extendedAttributes")) {
rapidjson::Value& extAttributes = orderContent_obj["extendedAttributes"];
rapidjson::StringBuffer subBuff;
rapidjson::Writer<rapidjson::StringBuffer> jWriter(subBuff);
extAttributes.Accept(jWriter);
order.extendedAttributes = subBuff.GetString();
}
}
//第三方商户信息
if ( document.HasMember("sellerInfo") ) {
......@@ -934,6 +945,7 @@ std::string JsonModule::_convertToNewOrderJson(orderObj &obj)
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
writer.StartObject();
{
writer.Key("fm_cmd");
writer.Int(REQUEST_TYPE_NEWORDER_PUSH);
writer.Key("channel");
......@@ -982,8 +994,10 @@ std::string JsonModule::_convertToNewOrderJson(orderObj &obj)
writer.Int(obj.totalCouponDiscount);
writer.Key("totalExcessiveCharge");
writer.Int(obj.totalExcessiveCharge);
}
//----------------门店信息----------------
{
writer.Key("store");
writer.StartObject();
writer.Key("store_id");
......@@ -1000,9 +1014,11 @@ std::string JsonModule::_convertToNewOrderJson(orderObj &obj)
writer.String(obj.storeInfo.child_store_id.c_str());
writer.EndObject();
}
//----------------门店信息 结束-----------
//----------------配送信息----------------
{
writer.Key("delivery");
writer.StartObject();
......@@ -1018,9 +1034,11 @@ std::string JsonModule::_convertToNewOrderJson(orderObj &obj)
writer.String(obj.deliveryInfo.driver_phone.c_str());
writer.EndObject();
}
//----------------配送信息 结束-----------
//----------------点取分离----------------
{
writer.Key("appointment");
writer.StartObject();
......@@ -1030,9 +1048,11 @@ std::string JsonModule::_convertToNewOrderJson(orderObj &obj)
writer.Int(obj.appointmentInfo.is_appointment);
writer.EndObject();
}
//----------------点取分离 结束-----------
//----------------顾客信息----------------
{
writer.Key("customer");
writer.StartObject();
......@@ -1052,9 +1072,11 @@ std::string JsonModule::_convertToNewOrderJson(orderObj &obj)
writer.String(obj.customerInfo.card_no.c_str());
writer.EndObject();
}
//----------------顾客信息 结束-----------
//----------------商品信息----------------
{
writer.Key("products");
writer.StartArray();
......@@ -1109,9 +1131,11 @@ std::string JsonModule::_convertToNewOrderJson(orderObj &obj)
}
writer.EndArray();
}
//----------------商品信息 结束-----------
//----------------付款明细----------------
{
writer.Key("payment");
writer.StartObject();
......@@ -1134,15 +1158,21 @@ std::string JsonModule::_convertToNewOrderJson(orderObj &obj)
writer.String(obj.payInfo.vecDetail[i].account_id.c_str());
writer.Key("pay_code");
writer.String(obj.payInfo.vecDetail[i].pay_code.c_str());
writer.Key("platformServiceFee");
writer.Int(obj.payInfo.vecDetail[i].platformServiceFee);
writer.Key("performanceServiceFee");
writer.Int(obj.payInfo.vecDetail[i].performanceServiceFee);
writer.EndObject();
}
writer.EndArray();
//-----------------end 付款详情--------------------
writer.EndObject();
}
//----------------付款明细 结束-----------
//----------------消费积分----------------
{
writer.Key("bonusBasic");
writer.Int(obj.bonus_basic);
writer.Key("bonusExtra");
......@@ -1193,9 +1223,11 @@ std::string JsonModule::_convertToNewOrderJson(orderObj &obj)
writer.EndObject();
}
writer.EndArray();
}
//----------------消费积分 结束-----------
//----------------促销----------------
{
writer.Key("promotions");
writer.StartArray();
for ( unsigned int i=0; i<obj.vecPromotions.size(); i++ ) {
......@@ -1229,9 +1261,11 @@ std::string JsonModule::_convertToNewOrderJson(orderObj &obj)
writer.EndObject();
}
writer.EndArray();
}
//----------------促销 结束-----------
//----------------电子点标----------------
{
writer.Key("ecoupon");
writer.StartArray();
for ( unsigned int i=0; i<obj.vecEcoupon.size(); i++ ) {
......@@ -1257,9 +1291,11 @@ std::string JsonModule::_convertToNewOrderJson(orderObj &obj)
writer.EndObject();
}
writer.EndArray();
}
//----------------电子点标 结束-----------
//----------------订单优惠券信息-----------
{
writer.Key("orderCoupons");
writer.StartArray();
for ( unsigned int i = 0; i<obj.vecOrderCoupons.size(); i++ ) {
......@@ -1303,10 +1339,36 @@ std::string JsonModule::_convertToNewOrderJson(orderObj &obj)
writer.EndObject();
}
writer.EndArray();
}
//----------------订单优惠券信息 结束----
writer.EndObject();
//----------------订单扩展信息----------------
if (obj.extendedAttributes.length()) {
rapidjson::Document extAttributesDoc;
extAttributesDoc.Parse(obj.extendedAttributes.c_str());
if (extAttributesDoc.HasParseError()) { // 通过HasParseError()来判断解析是否成功
LOG(ERROR) << "obj.extendedAttributes parse error:" << extAttributesDoc.GetParseError() << ":" << extAttributesDoc.GetErrorOffset();
}
else {
rapidjson::Document orderConvertedDoc;
orderConvertedDoc.Parse(buffer.GetString());
if (extAttributesDoc.HasParseError()) {
LOG(ERROR) << " Origin Order Buffer parse error:" << orderConvertedDoc.GetParseError() << ":" << orderConvertedDoc.GetErrorOffset();
}
else {
orderConvertedDoc.AddMember("extendedAttributes", extAttributesDoc, orderConvertedDoc.GetAllocator());
rapidjson::StringBuffer bufferConvert;
rapidjson::Writer<rapidjson::StringBuffer> writerConvert(bufferConvert);
orderConvertedDoc.Accept(writerConvert);
return bufferConvert.GetString();
}
}
}
//----------------订单扩展信息 结束----
return buffer.GetString();
}
......
......@@ -12,7 +12,7 @@ extern std::string g_pos_id;
extern bool g_pos_ismaster;
#define VERSION "1.2.4 RC" //版本号;
#define VERSION "1.2.6 RC" //版本号;
class JsonModule
......
......@@ -314,10 +314,13 @@ int main(int argc,char *argv[])
#ifdef WIN32
// Test Add New Feature Convert Result: Column Field
std::string testOrderJson = jsonToolTemp.getTestOrderJson();
LOG(INFO) << "----------- Plugin Read Local Test Order File Success ------------" << testOrderJson << '\n';
std::string convertTestOrderJson = jsonToolTemp.getConvertOrderJson(testOrderJson);
if (testOrderJson.length() && convertTestOrderJson.length() ) {
LOG(INFO) << "----------- Plugin Read&Convert Local Test Order File Success ------------";
LOG(INFO) << charset_u2g(convertTestOrderJson);
LOG(INFO) << "----------No charset_u2g(*)-------------";
LOG(INFO) << convertTestOrderJson;
} else {
LOG(INFO) << "----------- Plugin Read&Convert Local Test Order File Failed------------";
}
......
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