From c4a100745dd81f698220b4178dca14cff23d7d4d Mon Sep 17 00:00:00 2001 From: dongl <2725096176@qq.com> Date: Wed, 17 May 2023 09:21:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=93=8D=E5=BA=94=E8=BF=94=E5=9B=9E=E7=9A=84?= =?UTF-8?q?=E5=8C=85=20=E7=BC=BA=E5=80=BC=E5=B7=B2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MP/EnumMapping.h | 11 +++++++--- MP/Response.cpp | 10 +++++++++ MP/Response.h | 5 +++++ MP/Sri.h | 21 +++++++++++++++++-- MP/protohuf/mp.mp.proto | 2 +- MS/mmm/agreement.cpp | 10 ++++++++- MS/mmm/handler.cpp | 12 +++++++++-- MS/works/controller/UserProveController.cpp | 1 + MS/works/service/Service.h | 8 +++++-- MS/works/service/UserFriendsService.cpp | 23 +++++++++++++-------- MS/works/service/UserFriendsService.h | 2 +- 11 files changed, 84 insertions(+), 21 deletions(-) diff --git a/MP/EnumMapping.h b/MP/EnumMapping.h index 893c882..f2ecade 100644 --- a/MP/EnumMapping.h +++ b/MP/EnumMapping.h @@ -10,14 +10,19 @@ + + + + + // 定义一个宏来包含需要用到的枚举值 #define MY_ENUM_VALUES \ X(MP_REQUEST_LOGIN) \ X(MP_REQUEST_LOGOUT) \ X(MP_REQUEST_REGISTER) \ - X(MP_RESPONSE_LOGIN) \ - X(MP_RESPONSE_LOGOUT) \ - X(MP_RESPONSE_REGISTER) + X(MP_REQUEST_CODE) \ + X(MP_REQUEST_FRIENDS) \ + X(MP_REQUEST_GROUPS) #if 0 // method 1 diff --git a/MP/Response.cpp b/MP/Response.cpp index 349c8a3..21ec991 100644 --- a/MP/Response.cpp +++ b/MP/Response.cpp @@ -9,6 +9,16 @@ Response::Response(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string Sri(subType, username, msg, token) { } +Response::Response(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, + uint64_t account, const std::string &username, + const std::string &email, uint64_t phone, + const std::string &msg, const std::string &token, + const std::string & data) : + Mph(type), + Sri(subType, account, username, email, phone, msg, token, data) { + +} + Response::~Response() { delete response; } diff --git a/MP/Response.h b/MP/Response.h index d189619..1204760 100644 --- a/MP/Response.h +++ b/MP/Response.h @@ -15,6 +15,11 @@ class Response : public Mph, Sri{ public: Response(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string &username, const std::string &msg, const std::string &token); + Response(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, + uint64_t account, const std::string &username, + const std::string &email, uint64_t phone, + const std::string &msg, const std::string &token, + const std::string & data); ~Response() override; diff --git a/MP/Sri.h b/MP/Sri.h index 542992c..9fc4672 100644 --- a/MP/Sri.h +++ b/MP/Sri.h @@ -10,14 +10,31 @@ class Sri { public: - Sri(mp::MP_SUB_TYPE code, const std::string& username, const std::string& msg, const std::string& token) { + Sri(mp::MP_SUB_TYPE subType, const std::string& username, const std::string& msg, const std::string& token) { sri = new mp::sri(); - sri->set_subcommand(code); + sri->set_subcommand(subType); sri->set_msg(msg); sri->set_token(token); sri->set_username(username); } + Sri(mp::MP_SUB_TYPE subType, + uint64_t account, const std::string &username, + const std::string &email, uint64_t phone, + const std::string &msg, const std::string &token, + const std::string & data) { + + sri = new mp::sri(); + sri->set_subcommand(subType); + sri->set_account(account); + sri->set_username(username); + sri->set_email(email); + sri->set_phone(phone); + sri->set_msg(msg); + sri->set_token(token); + sri->set_data(data); + } + Sri() {} virtual ~Sri() { diff --git a/MP/protohuf/mp.mp.proto b/MP/protohuf/mp.mp.proto index c6c8cf6..5c221c0 100644 --- a/MP/protohuf/mp.mp.proto +++ b/MP/protohuf/mp.mp.proto @@ -8,7 +8,7 @@ enum MP_TYPE { MP_REQUEST_REGISTER = 2; // 注册 MP_REQUEST_CODE = 3; // 请求验证码 MP_REQUEST_FRIENDS = 4; // 好友相关操作 - MP_REQUEST_GROUPS = 5; // 群相关操作 + MP_REQUEST_GROUPS = 5; // 群相关操作 // 20 - 39 diff --git a/MS/mmm/agreement.cpp b/MS/mmm/agreement.cpp index 342889c..43184b6 100644 --- a/MS/mmm/agreement.cpp +++ b/MS/mmm/agreement.cpp @@ -22,11 +22,19 @@ agreement_response::~agreement_response() {} void agreement_response::set(mp::sri* sri, bufferevent* bev) { auto resp = std::make_shared(mp::response()); + std::cout << "set" << sri->account() << std::endl; + m_sri = resp->sri(); + m_sri.set_subcommand(sri->subcommand()); + m_sri.set_account(sri->account()); m_sri.set_username(sri->username()); m_sri.set_msg(sri->msg()); - m_sri.set_subcommand(sri->subcommand()); m_sri.set_token(sri->token()); + m_sri.set_data(sri->data()); + m_sri.set_email(sri->email()); + m_sri.set_phone(sri->phone()); + + std::cout << "set" << m_sri.account() << std::endl; m_bev = bev; } diff --git a/MS/mmm/handler.cpp b/MS/mmm/handler.cpp index a780520..705e48e 100644 --- a/MS/mmm/handler.cpp +++ b/MS/mmm/handler.cpp @@ -16,9 +16,17 @@ void handler::resp(const std::shared_ptr& request, // 例如 login包类型为 request login==0 那么响应这个登陆信息就是 response login==0+20 // 200 以上 为im msg 通讯的包类型序号 if (request->m_mph->mp_type() < 200) { +// auto resp = new Response((mp::MP_TYPE) (request->m_mph->mp_type() + 20), +// response->m_sri.subcommand(), response->m_sri.username(), +// response->m_sri.msg(), response->m_sri.token()); + auto resp = new Response((mp::MP_TYPE) (request->m_mph->mp_type() + 20), - response->m_sri.subcommand(), response->m_sri.username(), - response->m_sri.msg(), response->m_sri.token()); + response->m_sri.subcommand(), + response->m_sri.account(), response->m_sri.username(), + response->m_sri.email(), response->m_sri.phone(), + response->m_sri.msg(), response->m_sri.token(), + response->m_sri.data()); + auto ret = resp->packet(); bufferevent_write(request->m_bev, ret.c_str(), ret.size()); diff --git a/MS/works/controller/UserProveController.cpp b/MS/works/controller/UserProveController.cpp index 107761c..85c2057 100644 --- a/MS/works/controller/UserProveController.cpp +++ b/MS/works/controller/UserProveController.cpp @@ -9,6 +9,7 @@ void UserProveController::run(std::shared_ptr request, std::s if (request->m_mph->mp_type() == mp::MP_REQUEST_LOGIN) { auto sri = service.login(request->m_body.subcommand(), request->m_body.account(), request->m_body.password()); + response->set(sri, request->m_bev); // 登陆的用户 直接在全局 注册 在map中 直接存入服务器内存 diff --git a/MS/works/service/Service.h b/MS/works/service/Service.h index 8059a7b..513e0b3 100644 --- a/MS/works/service/Service.h +++ b/MS/works/service/Service.h @@ -26,9 +26,13 @@ protected: protected: virtual void sri_clear(){ sri->clear_subcommand(); - sri->clear_msg(); - sri->clear_token(); + sri->clear_account(); sri->clear_username(); + sri->clear_email(); + sri->clear_phone(); + sri->clear_token(); + sri->clear_msg(); + sri->clear_data(); } }; diff --git a/MS/works/service/UserFriendsService.cpp b/MS/works/service/UserFriendsService.cpp index 8eb34f1..da7bb83 100644 --- a/MS/works/service/UserFriendsService.cpp +++ b/MS/works/service/UserFriendsService.cpp @@ -9,11 +9,12 @@ UserFriendsService::~UserFriendsService() {} // 好友群组 添加删除 任务组 决策接口 mp::sri *UserFriendsService::friendImProve(mp::body* body) { sri_clear(); - if (body->target() == 0 || body->source() == 0) { - printf("请求数据有缺\n"); - sri->set_msg("请求数据有缺"); - return sri; - } +// if (body->target() == 0 || body->source() == 0) { +// printf("请求数据有缺\n"); +// sri->set_subcommand(mp::MP_SUB_TYPE::MP_GET_FAIL); +// sri->set_msg("请求数据有缺"); +// return sri; +// } auto subcommand = body->subcommand(); @@ -29,6 +30,11 @@ mp::sri *UserFriendsService::friendImProve(mp::body* body) { else if (subcommand == mp::MP_SUB_TYPE::MP_REMOVE_FRIEND) { } + // 获取好友列表 + else if (subcommand == mp::MP_SUB_TYPE::MP_GET_FRIENDS) { + // 此时包传来的 是 客户端 取到用户的帐号 + FetchUserFriends(strtol(body->account().c_str(), nullptr, 0), body->data()); + } return sri; } @@ -72,18 +78,17 @@ mp::sri* UserFriendsService::add_contact_person(mp::body *body) { return sri; } -mp::sri *UserFriendsService::FetchUserFriend(uint64_t account, const std::string &data) { +void UserFriendsService::FetchUserFriends(uint64_t account, const std::string &data) { sri_clear(); uint8_t page_begin = data.c_str()[0]; uint8_t page_end = data.c_str()[1]; auto friends = userFriendsDb.select_friends_all(account); - if (friends.has_value()) + if (friends.has_value()) { sri->set_data(friends.value()); sri->set_msg("好友获取成功"); sri->set_subcommand(mp::MP_SUB_TYPE::MP_ADD_SUCCESS); - - return sri; + } } diff --git a/MS/works/service/UserFriendsService.h b/MS/works/service/UserFriendsService.h index eb7d5bd..4849e21 100644 --- a/MS/works/service/UserFriendsService.h +++ b/MS/works/service/UserFriendsService.h @@ -16,7 +16,7 @@ public: public: // 唯一对开接口 mp::sri* friendImProve(mp::body* body); - mp::sri* FetchUserFriend(uint64_t account, const std::string& data); + void FetchUserFriends(uint64_t account, const std::string& data); private: mp::sri* add_contact_person(mp::body* body);