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