From 8ea6d363df77de2dca288397da8d4f9c3d3a5c4d Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 18 十月 2024 18:41:57 +0800 Subject: [PATCH] '项目完善' --- common/NetworkApi.cpp | 207 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 183 insertions(+), 24 deletions(-) diff --git a/common/NetworkApi.cpp b/common/NetworkApi.cpp index dd9f9f0..c657d1b 100644 --- a/common/NetworkApi.cpp +++ b/common/NetworkApi.cpp @@ -13,6 +13,7 @@ #include <sstream> #include <iostream> #include <iomanip> +#include <codecvt> string NetworkApi::_TRADE_SERVER_ADDR = string(MAIN_HOST); @@ -237,7 +238,7 @@ wstring desc = root[_T("data")][_T("desc")].GetString(); wstring fresult; fresult.append(c).append(L" ").append(name).append(L" ").append(desc); - return fresult; + return desc; } } } @@ -383,7 +384,7 @@ } } -int NetworkApi::get_market_situation() +int NetworkApi::get_buy_unique_block_mode() { rapidjson::StringBuffer buf; @@ -394,9 +395,7 @@ writer.Key("data"); writer.StartObject(); writer.Key("ctype"); - writer.String("market_situation"); - writer.Key("operate"); - writer.Int(3); + writer.String("get_buy_block_mode"); writer.EndObject(); writer.EndObject(); const char* json_content = buf.GetString(); @@ -411,10 +410,10 @@ if (root[_T("code")].GetInt() != 0) { throw wstring(root[_T("msg")].GetString()); } - return root[L"data"][L"situation"].GetInt(); + return root[L"data"][L"unique_block"].GetInt(); } -void NetworkApi::set_market_situation(int situation) +void NetworkApi::set_buy_unique_block_mode(bool enable) { rapidjson::StringBuffer buf; rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buf); @@ -424,11 +423,9 @@ 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.String("set_buy_unique_block_mode"); + writer.Key("mode"); + writer.Int(enable?1:0); writer.EndObject(); writer.EndObject(); const char* json_content = buf.GetString(); @@ -467,6 +464,11 @@ __request(code, 421); } +void NetworkApi::add_green_buy(std::string code) +{ + __request(code, 441); +} + // 移除白名单 void NetworkApi::remove_white(string code) { __request(code, 204); @@ -487,6 +489,11 @@ void NetworkApi::remove_must_buy(std::string code) { __request(code, 422); +} + +void NetworkApi::remove_green_buy(std::string code) +{ + __request(code, 442); } @@ -512,6 +519,11 @@ return __request_list(423); } +std::list<std::wstring> NetworkApi::list_green_buy() +{ + return __request_list(443); +} + // 查询是否可以撤单 bool NetworkApi::get_can_cancel_buy(string code) { @@ -526,7 +538,7 @@ // 买入 -void NetworkApi::buy(std::string code, int volume, string price) +void NetworkApi::buy(std::string code, int money, int priceType) { rapidjson::StringBuffer buf; rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buf); @@ -537,10 +549,12 @@ writer.StartObject(); writer.Key("code"); writer.String(code.c_str()); - writer.Key("volume"); - writer.Int(volume); - writer.Key("price"); - writer.String(price.c_str()); + writer.Key("money"); + writer.Int(money); + + writer.Key("price_type"); + writer.Int(priceType); + writer.EndObject(); writer.EndObject(); const char* json_content = buf.GetString(); @@ -592,6 +606,70 @@ return result; } +string NetworkApi::buy_cb(std::string code, int volume) +{ + 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("buy_cb_for_commission"); + writer.Key("code"); + writer.String(code.c_str()); + writer.Key("volume"); + writer.Int(volume); + 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 result; +} + +string NetworkApi::sell_cb(std::string code, int volume) +{ + 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("sell_cb_for_commission"); + writer.Key("code"); + writer.String(code.c_str()); + writer.Key("volume"); + writer.Int(volume); + 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 result; +} + + + + + string NetworkApi::get_code_position_info(std::string code) { rapidjson::StringBuffer buf; @@ -610,7 +688,7 @@ 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\": \"\"}}"; + //string result = "{\"code\": 0, \"data\": {\"code\": \"000011\", \"total\": 1200, \"available\": 1200, \"sell_orders\": [], \"sell_rules_count\": 0, \"code_info\": [\"000011\", \"\\u4e0a\\u6d77\\u6d17\\u9738\"], \"desc\": \"\",\"cost_price\":12.00}}"; @@ -711,7 +789,11 @@ auto arr = doc[L"data"][L"list"].GetArray()[i].GetArray(); CString code = arr[0].GetString(); CString codeName= arr[1].IsNull()?L"未知":arr[1].GetString() ; - CodeInfo ci = CodeInfo({ code ,codeName }); + float rate = 0.0f; + if (arr.Size() > 2) { + rate = arr[2].GetFloat(); + } + CodeInfo ci = CodeInfo({ code ,codeName, rate }); fresults.push_back(ci); } updateTime = doc[L"data"][L"update_time"].GetString(); @@ -1030,6 +1112,7 @@ writer.EndObject(); const char* json_content = buf.GetString(); string result = base_trade_request(std::string(json_content)); + //string result = StringUtil::cstring2String(L"{\"code\":0,\"data\":[{\"code\":\"002729\",\"code_name\":\"好利科技\"}, {\"code\":\"300564\",\"code_name\":\"筑博设计\"}]}"); return result; } @@ -1051,7 +1134,7 @@ return result; } -void NetworkApi::set_per_code_buy_money(int money) +void NetworkApi::set_buy_money_and_count(int normalCount, string normalMoneyJson, int radicalCount, string radicalMoneyJson) { rapidjson::StringBuffer buf; rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buf); @@ -1061,14 +1144,22 @@ writer.Key("data"); writer.StartObject(); writer.Key("ctype"); - writer.String("set_per_code_buy_money"); - writer.Key("money"); - writer.Int(money); + writer.String("set_buy_money_count_setting"); + writer.Key("normal"); + writer.StartArray(); + writer.Int(normalCount); + writer.String(normalMoneyJson.c_str()); + writer.EndArray(); + writer.Key("radical"); + writer.StartArray(); + writer.Int(radicalCount); + writer.String(radicalMoneyJson.c_str()); + writer.EndArray(); writer.EndObject(); writer.EndObject(); const char* json_content = buf.GetString(); string result = base_request(std::string(json_content)); - auto root = JsonUtil::parseUTF16(result); + auto root = JsonUtil::parseUTF16(result); if (root.IsObject()) { if (root[L"code"] != 0) { throw wstring(root[L"msg"].GetString()); @@ -1077,6 +1168,74 @@ else { throw wstring(L"网络请求错误"); } + + +} + +string NetworkApi::get_buy_money_and_count() +{ + 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_buy_money_count_setting"); + writer.EndObject(); + writer.EndObject(); + const char* json_content = buf.GetString(); + string result = base_request(std::string(json_content)); + return result; +} + +void NetworkApi::set_radical_buy_block_count(string data) +{ + 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("set_radical_buy_block_count_setting"); + writer.Key("data"); + writer.String(data.c_str()); + writer.EndObject(); + writer.EndObject(); + const char* json_content = buf.GetString(); + string result = base_request(json_content); + auto root = JsonUtil::parseUTF16(result); + if (root.IsObject()) { + if (root[L"code"] != 0) { + throw wstring(root[L"msg"].GetString()); + } + } + else { + throw wstring(L"网络请求错误"); + } + + +} + +string NetworkApi::get_radical_buy_block_count() +{ + 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_radical_buy_block_count_setting"); + writer.EndObject(); + writer.EndObject(); + const char* json_content = buf.GetString(); + string result = base_request(std::string(json_content)); + return result; } int NetworkApi::get_per_code_buy_money() -- Gitblit v1.8.0