From 9be57d2f294687a9283e6d3ed8599def4faf1fec Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 04 三月 2024 13:49:14 +0800 Subject: [PATCH] '功能修改' --- common/NetworkApi.cpp | 223 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 217 insertions(+), 6 deletions(-) diff --git a/common/NetworkApi.cpp b/common/NetworkApi.cpp index 48d2c33..1f4a616 100644 --- a/common/NetworkApi.cpp +++ b/common/NetworkApi.cpp @@ -79,11 +79,11 @@ } -//网络请求 -std::string NetworkApi::base_request(std::string data) { +std::string NetworkApi::load_request_data(std::string data) +{ rapidjson::Document document; document.Parse(data.c_str()); - string requestIdStr =(document["type"].IsInt()? std::to_string(document["type"].GetInt()) : document["type"].GetString()).append(get_rquest_id()); + string requestIdStr = (document["type"].IsInt() ? std::to_string(document["type"].GetInt()) : document["type"].GetString()).append(get_rquest_id()); rapidjson::Document::AllocatorType& allocator = document.GetAllocator(); // 添加 request_id 字段 @@ -106,7 +106,12 @@ ss << std::setw(8) << std::setfill('0') << jsonString.length(); std::string length_str = string("##").append(ss.str()); std::string fstr = length_str.append(jsonString); + return fstr; +} +//网络请求 +std::string NetworkApi::base_request(std::string data) { + std::string fstr = load_request_data(data); try { return SocketManager::sendMsg(_COMMON_SERVER_ADDR, _COMMON_SERVER_PORT, fstr.c_str()); } @@ -147,7 +152,7 @@ return SocketManager::sendMsg(_TRADE_SERVER_ADDR, _TRADE_SERVER_PORT, fstr.c_str()); } catch (...) { - throw CString(L"网络请求出错"); + throw wstring(L"网络请求出错"); } } @@ -325,6 +330,121 @@ } } +int NetworkApi::get_auto_cancel_sell_mode() +{ + rapidjson::StringBuffer buf; + rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buf); + writer.StartObject(); + writer.Key("type"); + writer.String("common"); + writer.Key("data"); + writer.StartObject(); + writer.Key("ctype"); + writer.String("auto_cancel_sell_mode"); + writer.Key("operate"); + writer.Int(3); + writer.EndObject(); + writer.EndObject(); + const char* json_content = buf.GetString(); + string result = base_request(std::string(json_content)); + //JSON解析 + rapidjson::GenericDocument<rapidjson::UTF16<>> root = JsonUtil::parseUTF16(result); + if (root[_T("code")].GetInt() != 0) { + throw wstring(root[_T("msg")].GetString()); + } + else { + return root[_T("data")][_T("mode")].GetInt(); + } +} + +void NetworkApi::set_auto_cancel_sell_mode(int mode) +{ + rapidjson::StringBuffer buf; + rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buf); + writer.StartObject(); + writer.Key("type"); + writer.String("common"); + writer.Key("data"); + writer.StartObject(); + writer.Key("ctype"); + writer.String("auto_cancel_sell_mode"); + writer.Key("operate"); + writer.Int(1); + writer.Key("mode"); + writer.Int(mode); + writer.EndObject(); + writer.EndObject(); + const char* json_content = buf.GetString(); + string result = base_request(std::string(json_content)); + //JSON解析 + rapidjson::GenericDocument<rapidjson::UTF16<>> root = JsonUtil::parseUTF16(result); + if (root[_T("code")].GetInt() != 0) { + throw wstring(root[_T("msg")].GetString()); + } +} + +int NetworkApi::get_market_situation() +{ + + rapidjson::StringBuffer buf; + rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buf); + writer.StartObject(); + writer.Key("type"); + writer.String("common"); + writer.Key("data"); + writer.StartObject(); + writer.Key("ctype"); + writer.String("market_situation"); + writer.Key("operate"); + writer.Int(3); + writer.EndObject(); + writer.EndObject(); + const char* json_content = buf.GetString(); + string result = base_trade_request(std::string(json_content)); + //JSON解析 + rapidjson::GenericDocument<rapidjson::UTF16<>> root = JsonUtil::parseUTF16(result); + + if (!root.IsObject()) { + throw wstring(L"JSON解析出错"); + } + + if (root[_T("code")].GetInt() != 0) { + throw wstring(root[_T("msg")].GetString()); + } + return root[L"data"][L"situation"].GetInt(); +} + +void NetworkApi::set_market_situation(int situation) +{ + rapidjson::StringBuffer buf; + rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buf); + writer.StartObject(); + writer.Key("type"); + writer.String("common"); + writer.Key("data"); + writer.StartObject(); + writer.Key("ctype"); + writer.String("market_situation"); + writer.Key("operate"); + writer.Int(1); + writer.Key("situation"); + writer.Int(situation); + writer.EndObject(); + writer.EndObject(); + const char* json_content = buf.GetString(); + string result = base_trade_request(std::string(json_content)); + //JSON解析 + rapidjson::GenericDocument<rapidjson::UTF16<>> root = JsonUtil::parseUTF16(result); + + if (!root.IsObject()) { + throw wstring(L"JSON解析出错"); + } + + if (root[_T("code")].GetInt() != 0) { + throw wstring(root[_T("msg")].GetString()); + } +} + // 加白名单 void NetworkApi::add_white(string code) { __request(code, 202); @@ -340,6 +460,11 @@ //加想买 void NetworkApi::add_want_buy(string code) { __request(code, 401); +} + +void NetworkApi::add_must_buy(std::string code) +{ + __request(code, 421); } // 移除白名单 @@ -359,6 +484,11 @@ __request(code, 402); } +void NetworkApi::remove_must_buy(std::string code) +{ + __request(code, 422); +} + //白名单列表 std::list<wstring> NetworkApi::list_white() { @@ -375,6 +505,11 @@ //想买列表 std::list<wstring> NetworkApi::list_want_buy() { return __request_list(403); +} + +std::list<std::wstring> NetworkApi::list_must_buy() +{ + return __request_list(423); } @@ -432,8 +567,10 @@ writer.StartObject(); writer.Key("code"); writer.String(code.c_str()); - writer.Key("volume"); - writer.Int(volume); + if (volume >= 0) { + writer.Key("volume"); + writer.Int(volume); + } writer.Key("price_type"); writer.Int(price_type); writer.Key("force"); @@ -469,7 +606,15 @@ writer.EndObject(); writer.EndObject(); const char* json_content = buf.GetString(); + + string result = base_trade_request(std::string(json_content)); + + //string result = "{\"code\": 0, \"data\": {\"code\": \"603200\", \"total\": 1200, \"available\": 1200, \"sell_orders\": [], \"sell_rules_count\": 0, \"code_info\": [\"603200\", \"\\u4e0a\\u6d77\\u6d17\\u9738\"], \"desc\": \"\"}}"; + + + + //JSON解析 rapidjson::GenericDocument<rapidjson::UTF16<>> root = JsonUtil::parseUTF16(result); @@ -794,6 +939,34 @@ return result; } +string NetworkApi::update_sell_rule(rapidjson::Document doc) +{ + rapidjson::StringBuffer buf; + rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buf); + writer.StartObject(); + writer.Key("type"); + writer.String("update_sell_rule"); + writer.Key("data"); + writer.StartObject(); + + for (rapidjson::Value::ConstMemberIterator itr = doc.MemberBegin(); itr != doc.MemberEnd(); itr++) { + string key = itr->name.GetString(); + writer.Key(key.c_str()); + if (itr->value.IsString()) { + writer.String(itr->value.GetString()); + } + + else if (itr->value.IsNumber()) { + writer.Int(itr->value.GetInt()); + } + } + writer.EndObject(); + writer.EndObject(); + const char* json_content = buf.GetString(); + string result = base_trade_request(std::string(json_content)); + return result; +} + string NetworkApi::del_sell_rule(CString id) { rapidjson::StringBuffer buf; @@ -812,6 +985,44 @@ return result; } +string NetworkApi::get_all_positions() +{ + rapidjson::StringBuffer buf; + rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buf); + writer.StartObject(); + writer.Key("type"); + writer.String("common"); + writer.Key("data"); + writer.StartObject(); + writer.Key("ctype"); + writer.String("get_positions"); + writer.EndObject(); + writer.EndObject(); + const char* json_content = buf.GetString(); + string result = base_trade_request(std::string(json_content)); + return result; +} + +string NetworkApi::get_buy1_info(string code) +{ + rapidjson::StringBuffer buf; + rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buf); + writer.StartObject(); + writer.Key("type"); + writer.String("common"); + writer.Key("data"); + writer.StartObject(); + writer.Key("ctype"); + writer.String("get_buy1_info"); + writer.Key("code"); + writer.String(code.c_str()); + writer.EndObject(); + writer.EndObject(); + const char* json_content = buf.GetString(); + string result = base_trade_request(std::string(json_content)); + return result; +} + string NetworkApi::list_delegate_records(CString updateTime,bool canCancel) { rapidjson::StringBuffer buf; -- Gitblit v1.8.0