From 9df51a80cb29dd0c477151847ea6060e729d1b82 Mon Sep 17 00:00:00 2001 From: uye <99072975+ABA2396@users.noreply.github.com> Date: Wed, 8 Nov 2023 16:13:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=80=E5=9B=BE=E6=B5=81=E6=B1=87?= =?UTF-8?q?=E6=8A=A5=E5=8C=BA=E5=88=86=E5=85=AC=E6=8B=9B=E5=92=8C=E6=8E=89?= =?UTF-8?q?=E8=90=BD=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/config.json | 4 ++- src/MaaCore/Config/GeneralConfig.cpp | 3 ++- src/MaaCore/Config/GeneralConfig.h | 2 ++ .../Task/Fight/StageDropsTaskPlugin.cpp | 2 +- .../Task/Miscellaneous/AutoRecruitTask.cpp | 2 +- src/MaaCore/Task/ReportDataTask.cpp | 25 +++++++++++++------ src/MaaCore/Task/ReportDataTask.h | 5 ++-- 7 files changed, 30 insertions(+), 13 deletions(-) diff --git a/resource/config.json b/resource/config.json index db35a64c86..73b54109ca 100644 --- a/resource/config.json +++ b/resource/config.json @@ -32,6 +32,7 @@ "penguinReport": { "Doc": "企鹅物流汇报: https://penguin-stats.cn/", "url": "https://penguin-stats.io/PenguinStats/api/v2/report", + "url_Doc": "企鹅的汇报用的同一个url,就不区分recruit和drop了", "timeout": 10000, "headers": { "Content-Type": "application/json" @@ -39,7 +40,8 @@ }, "yituliuReport": { "Doc": "一图流汇报:https://yituliu.site/maarecruitdata", - "url": "https://backend.yituliu.site/maa/upload/recruit", + "recruitUrl": "https://backend.yituliu.site/maa/upload/recruit", + "dropUrl": "https://backend.yituliu.site/maa/upload/drop", "timeout": 5000, "headers": { "Content-Type": "application/json" diff --git a/src/MaaCore/Config/GeneralConfig.cpp b/src/MaaCore/Config/GeneralConfig.cpp index 4a1018db8b..01b9478166 100644 --- a/src/MaaCore/Config/GeneralConfig.cpp +++ b/src/MaaCore/Config/GeneralConfig.cpp @@ -42,7 +42,8 @@ bool asst::GeneralConfig::parse(const json::value& json) } } if (auto yituliu_opt = options_json.find("yituliuReport")) { - m_options.yituliu_report.url = yituliu_opt->get("url", std::string()); + m_options.yituliu_report.drop_url = yituliu_opt->get("dropUrl", std::string()); + m_options.yituliu_report.recruit_url = yituliu_opt->get("recruitUrl", std::string()); m_options.yituliu_report.timeout = yituliu_opt->get("timeout", 5000); if (auto headers_opt = yituliu_opt->find("headers")) { m_options.yituliu_report.headers.clear(); diff --git a/src/MaaCore/Config/GeneralConfig.h b/src/MaaCore/Config/GeneralConfig.h index dbfab61e03..3a30239546 100644 --- a/src/MaaCore/Config/GeneralConfig.h +++ b/src/MaaCore/Config/GeneralConfig.h @@ -14,6 +14,8 @@ namespace asst struct RequestInfo { std::string url; // 上传地址 + std::string drop_url; + std::string recruit_url; std::unordered_map headers; // 请求头 int timeout = 0; // 超时时间 }; diff --git a/src/MaaCore/Task/Fight/StageDropsTaskPlugin.cpp b/src/MaaCore/Task/Fight/StageDropsTaskPlugin.cpp index 8ceb9e705e..b38f761bd6 100644 --- a/src/MaaCore/Task/Fight/StageDropsTaskPlugin.cpp +++ b/src/MaaCore/Task/Fight/StageDropsTaskPlugin.cpp @@ -420,7 +420,7 @@ void asst::StageDropsTaskPlugin::upload_to_yituliu() m_report_yituliu_task_ptr = std::make_shared(report_penguin_callback, this); } - m_report_yituliu_task_ptr->set_report_type(ReportType::YituliuBigData) + m_report_yituliu_task_ptr->set_report_type(ReportType::YituliuBigDataStageDrops) .set_body(body.to_string()) .set_extra_headers(extra_headers) .set_retry_times(5) diff --git a/src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp b/src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp index 7562fab4ed..b108753711 100644 --- a/src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp +++ b/src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp @@ -787,7 +787,7 @@ void asst::AutoRecruitTask::upload_to_yituliu(const json::value& details) m_report_yituliu_task_ptr = std::make_shared(report_yituliu_callback, this); } - m_report_yituliu_task_ptr->set_report_type(ReportType::YituliuBigData) + m_report_yituliu_task_ptr->set_report_type(ReportType::YituliuBigDataAutoRecruit) .set_body(body.to_string()) .set_retry_times(0) .run(); diff --git a/src/MaaCore/Task/ReportDataTask.cpp b/src/MaaCore/Task/ReportDataTask.cpp index d1527d4766..8632ee5ac4 100644 --- a/src/MaaCore/Task/ReportDataTask.cpp +++ b/src/MaaCore/Task/ReportDataTask.cpp @@ -45,8 +45,9 @@ bool asst::ReportDataTask::_run() case ReportType::PenguinStats: report_func = std::bind(&ReportDataTask::report_to_penguin, this); break; - case ReportType::YituliuBigData: - report_func = std::bind(&ReportDataTask::report_to_yituliu, this); + case ReportType::YituliuBigDataAutoRecruit: + case ReportType::YituliuBigDataStageDrops: + report_func = std::bind(&ReportDataTask::report_to_yituliu, this, m_report_type); break; default: return false; @@ -149,13 +150,23 @@ void asst::ReportDataTask::report_to_penguin() } } -void asst::ReportDataTask::report_to_yituliu() +void asst::ReportDataTask::report_to_yituliu(ReportType reportType) { LogTraceFunction; - constexpr std::string_view YituliuSubtaskName = "ReportToYituliu"; - const std::string& url = Config.get_options().yituliu_report.url; - int timeout = Config.get_options().yituliu_report.timeout; + constexpr std::string_view yituliu_subtask_name = "ReportToYituliu"; + const std::string* url_ptr = nullptr; + switch (reportType) { + case ReportType::YituliuBigDataAutoRecruit: + url_ptr = &Config.get_options().yituliu_report.recruit_url; + break; + case ReportType::YituliuBigDataStageDrops: + url_ptr = &Config.get_options().yituliu_report.drop_url; + break; + default: + return; + } + const int timeout = Config.get_options().yituliu_report.timeout; cpr::Header headers = {}; for (const auto& [header_key, value] : Config.get_options().yituliu_report.headers) { @@ -166,7 +177,7 @@ void asst::ReportDataTask::report_to_yituliu() headers.emplace(field); } - report(YituliuSubtaskName, url, headers, timeout); + report(yituliu_subtask_name, *url_ptr, headers, timeout); } cpr::Response asst::ReportDataTask::report(std::string_view subtask, const std::string& url, const cpr::Header& headers, diff --git a/src/MaaCore/Task/ReportDataTask.h b/src/MaaCore/Task/ReportDataTask.h index 6d49e55887..4d564bcade 100644 --- a/src/MaaCore/Task/ReportDataTask.h +++ b/src/MaaCore/Task/ReportDataTask.h @@ -14,7 +14,8 @@ namespace asst { Invalid, PenguinStats, - YituliuBigData, + YituliuBigDataAutoRecruit, + YituliuBigDataStageDrops, }; using TaskCallback = std::function; @@ -40,7 +41,7 @@ namespace asst virtual void callback(AsstMsg msg, const json::value& detail) override; void report_to_penguin(); - void report_to_yituliu(); + void report_to_yituliu(ReportType reportType); cpr::Response report( std::string_view subtask, const std::string& url, const cpr::Header& headers, const int timeout, HttpResponsePred success_cond = [](const cpr::Response& response) -> bool {