From cf7cd445e7e06fe36c0fcc958d8062a54fb2cc0d Mon Sep 17 00:00:00 2001 From: songhao Date: Wed, 3 Apr 2019 21:02:29 +0800 Subject: [PATCH] =?UTF-8?q?gm=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/payserver/handlermgr.cc | 42 ++++++++++++++++++++++++++++++++++ server/payserver/ordermgr.cc | 24 +++++++++++++++++++ server/payserver/ordermgr.h | 2 ++ 3 files changed, 68 insertions(+) diff --git a/server/payserver/handlermgr.cc b/server/payserver/handlermgr.cc index d625068..0c29e1a 100644 --- a/server/payserver/handlermgr.cc +++ b/server/payserver/handlermgr.cc @@ -62,12 +62,54 @@ static void _GMPayNotify(f8::JsonHttpRequest* request) request->resp_xobj->SetVal("errmsg", errmsg); } +static void _AddVirtualOrder(f8::JsonHttpRequest* request) +{ + int errcode = 0; + std::string errmsg = ""; + OrderInfo orderinfo; + orderinfo.orderid = ""; + if (!OrderMgr::Instance()->AddNewOrder( + request->request.Get("accountid").GetString(), + request->request.Get("serverid").GetInt(), + request->request.Get("roleid").GetString(), + request->request.Get("rolename").GetString(), + request->request.Get("itemid").GetInt(), + request->request.Get("price").GetInt(), + "gmtool", + orderinfo + )) { + errcode = 1; + errmsg = "添加新订单失败"; + } + int result = 1; + OrderMgr::Instance()->AddNewPayNotify( + 1, + orderinfo.orderid, + 1, + result + ); + if (result != 0) { + errcode = 2; + errmsg = "新订单付费失败"; + } + request->resp_xobj->SetVal("errcode", errcode); + request->resp_xobj->SetVal("errmsg", errmsg); + request->resp_xobj->SetVal("orderid", orderinfo.orderid); +} + +static void _ExecSql(f8::JsonHttpRequest* request) +{ + OrderMgr::Instance()->ExecSql(request); +} + void HandlerMgr::Init() { RegisterNetMsgHandlers(); RegisterGMMsgHandler("Ops$selfChecking", _GMOpsSelfChecking); RegisterGMMsgHandler("Pay$getOrderId", _GMPayGetOrderId); RegisterGMMsgHandler("Pay$payNotify", _GMPayNotify); + RegisterGMMsgHandler("GMTool$addVirtualOrder", _AddVirtualOrder); + RegisterGMMsgHandler("GMTool$execSql", _ExecSql); } void HandlerMgr::UnInit() diff --git a/server/payserver/ordermgr.cc b/server/payserver/ordermgr.cc index 738702c..2bdcf25 100644 --- a/server/payserver/ordermgr.cc +++ b/server/payserver/ordermgr.cc @@ -849,3 +849,27 @@ void OrderMgr::SendGMMsg(int serverid, ); delete params_xobj; } + +void OrderMgr::ExecSql(f8::JsonHttpRequest* request) +{ + int ret = query_->ExecQuery(request->request.Get("sql").GetString().c_str(), {}); + if (ret >= 0) { + request->resp_xobj->SetVal("errcode", 0); + request->resp_xobj->SetVal("errmsg", ""); + a8::MutableXObject* dataset = a8::MutableXObject::NewArray(); + while (!query_->Eof()) { + a8::MutableXObject* row = a8::MutableXObject::NewArray(); + for (int i = 0; i < query_->FieldsNum(); ++i) { + row->Push(query_->GetValue(i)); + } + dataset->Push(*row); + delete row; + query_->Next(); + } + request->resp_xobj->SetVal("dataset", *dataset); + delete dataset; + } else { + request->resp_xobj->SetVal("errcode", 100); + request->resp_xobj->SetVal("errmsg", query_->GetError()); + } +} diff --git a/server/payserver/ordermgr.h b/server/payserver/ordermgr.h index 44e3210..b5cfdd4 100644 --- a/server/payserver/ordermgr.h +++ b/server/payserver/ordermgr.h @@ -95,6 +95,8 @@ class OrderMgr : public a8::Singleton int& result); void G2PPayNotifyACK(a8::XParams& param, a8::XObject& data); + void ExecSql(f8::JsonHttpRequest* request); + private: void ProcessOrderMsg(); void ProcessNotifyMsg();