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