From 61ff6fe46b7b4750e70fc390b73be24ea02d7abc Mon Sep 17 00:00:00 2001 From: dongl <2725096176@qq.com> Date: Fri, 16 Jun 2023 20:37:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=A5=BD=E5=8F=8B=E7=9A=84=E4=BB=A3=E7=A0=81=20?= =?UTF-8?q?=E5=8F=91=E7=8E=B0=E4=BA=86=E8=8E=B7=E5=8F=96=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E7=A0=81=E7=9A=84bug=20delete=20sri=E5=90=8E=20=E6=97=A0?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E4=B8=8D=E5=8F=91=E6=95=B0=E6=8D=AE=E5=8C=85?= =?UTF-8?q?=20=E8=BF=98=E6=9C=89=E5=A1=AB=E5=86=99=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E7=A0=81=20=E9=94=99=E8=AF=AF=20session=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 2 - MDB/imm_mysqldb/CMakeLists.txt | 2 +- MDB/imm_mysqldb/template_table/im_user.cpp | 7 --- MDB/imm_mysqldb/template_table/im_user.h | 34 +++++----- .../template_table/im_user_friends.h | 2 +- MP/Response.cpp | 7 ++- MP/Response.h | 2 + MP/protohuf/mp.mp.proto | 2 +- MS/MS.cpp | 12 +++- MS/MS.h | 2 + MS/mmm/agreement.cpp | 19 +++--- MS/mmm/handler.cpp | 1 + MS/mmm/session.cpp | 15 ++++- MS/works/controller/CodeController.cpp | 10 ++- MS/works/controller/UserController.cpp | 1 - MS/works/db/UserDB.cpp | 38 ++++++------ MS/works/db/UserDB.h | 2 +- MS/works/db/UserFriendsDB.cpp | 26 +++++++- MS/works/db/UserFriendsDB.h | 8 ++- MS/works/service/UserFriendsService.cpp | 62 ++++++++++++------- MS/works/service/UserFriendsService.h | 10 ++- TEST/main.cpp | 23 +++---- 22 files changed, 178 insertions(+), 109 deletions(-) delete mode 100644 MDB/imm_mysqldb/template_table/im_user.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 2c41ca5..b5fe5a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,5 +13,3 @@ add_subdirectory(MDB/imm_mysqldb) add_subdirectory(MDB/imm_mongodb) add_subdirectory(TEST) - - diff --git a/MDB/imm_mysqldb/CMakeLists.txt b/MDB/imm_mysqldb/CMakeLists.txt index 7ccb836..590d1de 100644 --- a/MDB/imm_mysqldb/CMakeLists.txt +++ b/MDB/imm_mysqldb/CMakeLists.txt @@ -12,7 +12,7 @@ aux_source_directory(template_table DIR_TEMPLATE_TABLE) add_library(imm_mysqldb ConnectionPool.cpp ${DIR_TEMPLATE_TABLE} - template_table/im_user.cpp template_table/template_struct.h) + template_table/template_struct.h) target_link_libraries(imm_mysqldb mysqlpp mysqlclient diff --git a/MDB/imm_mysqldb/template_table/im_user.cpp b/MDB/imm_mysqldb/template_table/im_user.cpp deleted file mode 100644 index 95955c4..0000000 --- a/MDB/imm_mysqldb/template_table/im_user.cpp +++ /dev/null @@ -1,7 +0,0 @@ -// -// Created by dongl on 23-6-7. -// -#define IM_IM_USER_H -#include "im_user.h" - - diff --git a/MDB/imm_mysqldb/template_table/im_user.h b/MDB/imm_mysqldb/template_table/im_user.h index 0ef24da..297dbbc 100644 --- a/MDB/imm_mysqldb/template_table/im_user.h +++ b/MDB/imm_mysqldb/template_table/im_user.h @@ -2,24 +2,20 @@ // Created by dongl on 23-4-16. // -//#ifndef IM_IM_USER_H -//#define IM_IM_USER_H +#ifndef IM_IM_USER_H +#define IM_IM_USER_H +#include +#include -#if !defined(IM_IM_USER_H) - #define IM_IM_USER_H - #include - #include +sql_create_7(im_user, + 1, 7, // 1 当主键 第三个参数是 SETCOUNT。如果这为非零值,则添加一个初始化构造函数和一个成员函数,该函数采用给定数量的参数,用于设置结构的前 N 个字段。 + mysqlpp::sql_bigint , account, + mysqlpp::sql_bigint , phone, + mysqlpp::sql_varchar, email, + mysqlpp::sql_varchar,username, + mysqlpp::sql_varchar,password, + mysqlpp::sql_varchar,password_salt, + mysqlpp::sql_tinyblob, client_info +) - sql_create_7(im_user, - 1, 7, // 1 当主键 第三个参数是 SETCOUNT。如果这为非零值,则添加一个初始化构造函数和一个成员函数,该函数采用给定数量的参数,用于设置结构的前 N 个字段。 - mysqlpp::sql_bigint , account, - mysqlpp::sql_bigint , phone, - mysqlpp::sql_varchar, email, - mysqlpp::sql_varchar,username, - mysqlpp::sql_varchar,password, - mysqlpp::sql_varchar,password_salt, - mysqlpp::sql_tinyblob, client_info - ) -#endif - -//#endif // IM_IM_USER_H +#endif // IM_IM_USER_H diff --git a/MDB/imm_mysqldb/template_table/im_user_friends.h b/MDB/imm_mysqldb/template_table/im_user_friends.h index c669535..183a59e 100644 --- a/MDB/imm_mysqldb/template_table/im_user_friends.h +++ b/MDB/imm_mysqldb/template_table/im_user_friends.h @@ -16,7 +16,7 @@ mysqlpp::sql_blob, groups, mysqlpp::sql_blob, friends, mysqlpp::sql_blob, to_be_added, - mysqlpp::sql_int, restrictions + mysqlpp::sql_varchar, restrictions ); #endif //IM2_IM_USER_FRIENDS_CPP diff --git a/MP/Response.cpp b/MP/Response.cpp index 21ec991..9d80aba 100644 --- a/MP/Response.cpp +++ b/MP/Response.cpp @@ -9,6 +9,10 @@ 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) : Mph(type), Sri(subType, "", "", "") { + +} + 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, @@ -16,7 +20,6 @@ Response::Response(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string & data) : Mph(type), Sri(subType, account, username, email, phone, msg, token, data) { - } Response::~Response() { @@ -40,3 +43,5 @@ std::string Response::packet () { return temp; } + + diff --git a/MP/Response.h b/MP/Response.h index 1204760..eb122d6 100644 --- a/MP/Response.h +++ b/MP/Response.h @@ -21,6 +21,8 @@ public: const std::string &msg, const std::string &token, const std::string & data); + Response(mp::MP_TYPE type, mp::MP_SUB_TYPE subType); + ~Response() override; std::string packet (); diff --git a/MP/protohuf/mp.mp.proto b/MP/protohuf/mp.mp.proto index 128291e..b226799 100644 --- a/MP/protohuf/mp.mp.proto +++ b/MP/protohuf/mp.mp.proto @@ -15,7 +15,7 @@ enum MP_TYPE { MP_RESPONSE_LOGIN = 20; // 登陆 MP_RESPONSE_LOGOUT = 21; // 注销 MP_RESPONSE_REGISTER = 22; // 注册 - MP_RESPONSE_CODE = 23; // 请求验证码 + MP_RESPONSE_CODE = 23; // 响应验证码 MP_RESPONSE_FRIENDS = 24; // 好友相关操作 MP_RESPONSE_GROUPS = 25; // 群相关操作 diff --git a/MS/MS.cpp b/MS/MS.cpp index 266e82e..576818f 100644 --- a/MS/MS.cpp +++ b/MS/MS.cpp @@ -14,7 +14,10 @@ ev_pool* MS::pool = nullptr; management* MS::mage = nullptr; MS::MS() { - pool = new ev_pool(4); + localEvPool(); + if (!pool) { + pool = new ev_pool(4); + } pool->add_event_base(listener); pool->add_event_bases(4); pool->run(); @@ -97,5 +100,12 @@ void MS::event_cb(struct bufferevent *bev, short what, void *ctx) { fflush(stdout); } +ev_pool *MS::localEvPool() { + if (!pool) { + pool = new ev_pool(5); + } + return pool; +} + diff --git a/MS/MS.h b/MS/MS.h index 06f8e9d..29a7f3e 100644 --- a/MS/MS.h +++ b/MS/MS.h @@ -19,6 +19,8 @@ public: static void read_cb(struct bufferevent *bev, void *ctx); static void write_cb(struct bufferevent *bev, void *ctx); static void event_cb(struct bufferevent *bev, short what, void *ctx); + static ev_pool* localEvPool(); + private: static ev_pool* pool; static class management* mage; diff --git a/MS/mmm/agreement.cpp b/MS/mmm/agreement.cpp index 6b25993..9fd03d5 100644 --- a/MS/mmm/agreement.cpp +++ b/MS/mmm/agreement.cpp @@ -31,15 +31,16 @@ agreement_response::~agreement_response() {} void agreement_response::set(mp::sri* sri, bufferevent* bev) { // auto resp = std::make_shared(mp::response()); // -// 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_token(sri->token()); -// m_sri.set_data(sri->data()); -// m_sri.set_email(sri->email()); -// m_sri.set_phone(sri->phone()); +// m_sri = ss.get(); +// 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_token(sri->token()); +// m_sri->set_data(sri->data()); +// m_sri->set_email(sri->email()); +// m_sri->set_phone(sri->phone()); + m_sri = sri; m_bev = bev; } diff --git a/MS/mmm/handler.cpp b/MS/mmm/handler.cpp index 256a28d..90845b2 100644 --- a/MS/mmm/handler.cpp +++ b/MS/mmm/handler.cpp @@ -20,6 +20,7 @@ void handler::resp(const std::shared_ptr& request, // 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->account(), response->m_sri->username(), diff --git a/MS/mmm/session.cpp b/MS/mmm/session.cpp index 0665f45..08d35a0 100644 --- a/MS/mmm/session.cpp +++ b/MS/mmm/session.cpp @@ -4,6 +4,7 @@ #include #include +#include "../MS.h" #include "session.h" //std::map session::user_fd; @@ -154,17 +155,27 @@ void session::remove_session(userinfo *user) { // 时间轮思路的 定时器 void session::timing() { - time_wheel.run([&]() { + auto pool = MS::localEvPool(); + pool->add_event_base([&]() { while (true) { while (!session_time_wheel.empty()) { auto wheel = session_time_wheel.begin(); + +// printf("session "); +// for (const auto &item: wheel->second) { +// remove_session(item->bev, item->key); +// printf("bev:%p, key:%s, value:%s", item->bev, item->key.c_str(), get_session(item->bev, item->key).value().c_str()); +// } +// printf("\n"); + if (wheel->first > time(nullptr) + 300000) { // 5分钟 // 超时5分钟就删除 for (const auto &item: wheel->second) { remove_session(item->bev, item->key); } } - printf("session time %ld\n", wheel->first); + + printf("timing %ld\n", wheel->first); std::this_thread::sleep_for(std::chrono::seconds(1)); break; } diff --git a/MS/works/controller/CodeController.cpp b/MS/works/controller/CodeController.cpp index 1240606..3fa7c85 100644 --- a/MS/works/controller/CodeController.cpp +++ b/MS/works/controller/CodeController.cpp @@ -5,7 +5,7 @@ #include "CodeController.h" void CodeController::run(std::shared_ptr request, std::shared_ptr response) { - auto sri = new mp::sri(); + auto* sri = new mp::sri(); // 请求验证码 if (request->m_body.subcommand() == mp::MP_SUB_TYPE::MP_CODE_EMAIL) { // 生成验证码 @@ -13,19 +13,17 @@ void CodeController::run(std::shared_ptr request, std::shared // 发送验证码至邮 bool state = peVerifCodeService.send_email(request->m_body.account(), code); - // 设置session 字段 - session->set_session(request->m_bev, "code", code); - if (state) { + // 设置session 字段 + session->set_session(request->m_bev, "code", code); sri->set_subcommand(mp::MP_SUB_TYPE::MP_CODE_SUCCESS); sri->set_msg("验证码已发送"); } else { sri->set_subcommand(mp::MP_SUB_TYPE::MP_CODE_FAIL); sri->set_msg("未知问题,验证码获取失败"); - session->remove_session(request->m_bev, "code"); } } response->set(sri, request->m_bev); - delete sri; +// delete sri; } diff --git a/MS/works/controller/UserController.cpp b/MS/works/controller/UserController.cpp index 3f4fb57..ea135c9 100644 --- a/MS/works/controller/UserController.cpp +++ b/MS/works/controller/UserController.cpp @@ -17,7 +17,6 @@ void UserController::run(std::shared_ptr request, std::shared } // 注册 else if (request->m_mph->mp_type() == mp::MP_REQUEST_REGISTER) { - auto session_code = session->get_session(request->m_bev, "code"); auto sri = service.register_(request->m_body.subcommand(),request->m_body.account(), diff --git a/MS/works/db/UserDB.cpp b/MS/works/db/UserDB.cpp index abb604a..f12941a 100644 --- a/MS/works/db/UserDB.cpp +++ b/MS/works/db/UserDB.cpp @@ -66,7 +66,7 @@ bool UserDB::insert_user_friends(uint64_t account, uint64_t friends) { conn = LinkDB::safe_grab(); auto q = conn->query("insert into im_user_friends (account, friends, restrictions) " "values (%1:account, JSON_OBJECT(%2:key, " - "JSON_OBJECT('belong_grouping', 0, 'add_time', %3:time, 'add_source', 0)), 0)"); + "JSON_OBJECT('belong_grouping', 0, 'add_time', %3:time, 'add_source', 0)), '0')"); q.template_defaults[1] = account; q.template_defaults[2] = friends == 0 ? account : friends; @@ -95,24 +95,24 @@ bool UserDB::remove_user(uint64_t account) { } -bool UserDB::test(uint64_t account) { - // 生成附属表字段 并添加自己为好友 以后官方通知通过此接口发送 - conn = LinkDB::safe_grab(); - auto q = conn->query("insert into im_user_friends (account, friends, restrictions) " - "values (%1:account, JSON_OBJECT(%2:key, " - "JSON_OBJECT('belong_grouping', 0, 'add_time', %3:time, 'add_source', 0)), 0)"); - - q.template_defaults[1] = account; - q.template_defaults[2] = account; - q.template_defaults[3] = time(nullptr); - q.parse(); - - auto ret = q.exec(); - - // 放回链接 - LinkDB::release(conn); - return ret; -} +//bool UserDB::test(uint64_t account) { +// // 生成附属表字段 并添加自己为好友 以后官方通知通过此接口发送 +// conn = LinkDB::safe_grab(); +// auto q = conn->query("insert into im_user_friends (account, friends, restrictions) " +// "values (%1:account, JSON_OBJECT(%2:key, " +// "JSON_OBJECT('belong_grouping', 0, 'add_time', %3:time, 'add_source', 0)), 0)"); +// +// q.template_defaults[1] = account; +// q.template_defaults[2] = account; +// q.template_defaults[3] = time(nullptr); +// q.parse(); +// +// auto ret = q.exec(); +// +// // 放回链接 +// LinkDB::release(conn); +// return ret; +//} // 号码池 取号 diff --git a/MS/works/db/UserDB.h b/MS/works/db/UserDB.h index 95d919b..4db823a 100644 --- a/MS/works/db/UserDB.h +++ b/MS/works/db/UserDB.h @@ -35,7 +35,7 @@ public: // 绑定手机 bool bind_phone(uint64_t account, const std::string& phone); - bool test(uint64_t account); + }; diff --git a/MS/works/db/UserFriendsDB.cpp b/MS/works/db/UserFriendsDB.cpp index a857a4a..268aaf5 100644 --- a/MS/works/db/UserFriendsDB.cpp +++ b/MS/works/db/UserFriendsDB.cpp @@ -20,7 +20,7 @@ char UserFriendsDB::select_add_type(uint64_t account) { } // 搜索好友 搜索用户 -std::optional UserFriendsDB::select_friends(uint64_t account) { +std::optional UserFriendsDB::select_user(uint64_t account) { conn = LinkDB::safe_grab(); auto query = conn->query("select * from im_user where account=%1:account"); query.template_defaults[1] = account; @@ -47,6 +47,29 @@ std::optional UserFriendsDB::select_friends(uint64_t account) { return user; } +/** + * 查询 friend_key 是否 在 account内 + * @param account + * @param friend_key + * @return + */ +bool UserFriendsDB::select_friend(uint64_t account, uint64_t friend_key) { + conn = LinkDB::safe_grab(); + auto query = conn->query("select json_extract(friends, '$.\"%2:friend_key\"') from im_user_friends where account=%1:account"); + query.template_defaults[1] = account; + query.template_defaults[2] = friend_key; + query.parse(); + + auto ret = query.store(); + // 放回链接 + LinkDB::release(conn); + if (ret[0][0] == "NULL") { + return false; + } + return true; +} + + // 修改好友列表数据 添加好友 /// friends :{ /// uid :info { } @@ -169,3 +192,4 @@ UserFriendsDB::select_friends_info(uint64_t account, uint64_t friends) { + diff --git a/MS/works/db/UserFriendsDB.h b/MS/works/db/UserFriendsDB.h index be1f083..afffac9 100644 --- a/MS/works/db/UserFriendsDB.h +++ b/MS/works/db/UserFriendsDB.h @@ -16,9 +16,8 @@ public: // 查询添加类型 char select_add_type(uint64_t account); // 查询用户 搜索好友 - std::optional select_friends(uint64_t account); - // 添加好友 - std::tuple add_friends(uint64_t source, uint64_t target); + std::optional select_user(uint64_t account); + bool select_friend(uint64_t account, uint64_t friend_key); // 查询全部好友 好友列表 std::optional select_friends_all(uint64_t account); std::optional select_friends_all_json(uint64_t account); @@ -26,6 +25,9 @@ public: std::optional select_friends_info(uint64_t account, uint64_t friends); // 添加待审核好友列表 void insert_friends_to_be_added(uint64_t account, uint64_t friends); + + // 添加好友 + std::tuple add_friends(uint64_t source, uint64_t target); }; diff --git a/MS/works/service/UserFriendsService.cpp b/MS/works/service/UserFriendsService.cpp index a9903a5..77b3dcf 100644 --- a/MS/works/service/UserFriendsService.cpp +++ b/MS/works/service/UserFriendsService.cpp @@ -14,7 +14,7 @@ mp::sri *UserFriendsService::friendImProve(mp::body* body) { // 搜索 if (subcommand == mp::MP_SUB_TYPE::MP_SEARCH_FRIENDS_ACCOUNT) { - FetchUser(strtol(body->account().c_str(), nullptr, 0)); + fetchUser(strtol(body->account().c_str(), nullptr, 0), strtol(body->data().c_str(), nullptr, 0)); } // 添加 else if (subcommand == mp::MP_SUB_TYPE::MP_ADD_FRIENDS_ACCOUNT) { @@ -31,25 +31,12 @@ mp::sri *UserFriendsService::friendImProve(mp::body* body) { // 获取好友列表 else if (subcommand == mp::MP_SUB_TYPE::MP_GET_FRIENDS) { // 此时包传来的 是 客户端 取到用户的帐号 - FetchUserFriends(strtol(body->account().c_str(), nullptr, 0), body->data()); + fetchUserFriends(strtol(body->account().c_str(), nullptr, 0), body->data()); } return sri; } - -void UserFriendsService::add_friends(mp::body *body) { - auto [state1, msg1] = userFriendsDb.add_friends(body->source(), body->target()); - auto [state2, msg2] = userFriendsDb.add_friends(body->target(), body->source()); - if (state1 && state2) { - sri->set_subcommand(mp::MP_SUB_TYPE::MP_ADD_SUCCESS); - sri->set_msg("添加成功"); - } else { - sri->set_subcommand(mp::MP_SUB_TYPE::MP_ADD_FAIL); - sri->set_msg("添加失败,请重试"); - } -} - // 添加好友函数 mp::sri* UserFriendsService::add_contact_person(mp::body *body) { // 查看添加目标的权限类型 @@ -76,8 +63,21 @@ mp::sri* UserFriendsService::add_contact_person(mp::body *body) { return sri; } -// 查账户好友名单 -void UserFriendsService::FetchUserFriends(uint64_t account, const std::string &data) { +// 直接添加好友 +void UserFriendsService::add_friends(mp::body *body) { + auto [state1, msg1] = userFriendsDb.add_friends(body->source(), body->target()); + auto [state2, msg2] = userFriendsDb.add_friends(body->target(), body->source()); + if (state1 && state2) { + sri->set_subcommand(mp::MP_SUB_TYPE::MP_ADD_SUCCESS); + sri->set_msg("添加成功"); + } else { + sri->set_subcommand(mp::MP_SUB_TYPE::MP_ADD_FAIL); + sri->set_msg("添加失败,请重试"); + } +} + +// 查账户好友名单 列表 +void UserFriendsService::fetchUserFriends(uint64_t account, const std::string &data) { sri_clear(); // page uint8_t page_begin = data.c_str()[0]; @@ -91,11 +91,23 @@ void UserFriendsService::FetchUserFriends(uint64_t account, const std::string &d } } -/// MP_REQUEST_FRIENDS MP_SEARCH_FRIENDS_ACCOUNT -// 搜索指定账户信息 搜索可添加好友 -void UserFriendsService::FetchUser(uint64_t account) { - auto userinfo = userFriendsDb.select_friends(account); +/** + * MP_REQUEST_FRIENDS MP_SEARCH_FRIENDS_ACCOUNT + * 搜索指定账户信息 搜索可添加好友 + * @param user 带查用户 + * @param account user是否为account的好友 + */ +void UserFriendsService::fetchUser(uint64_t user, uint64_t account) { + // 查询用户存在与否 + auto userinfo = isExistUser(user); + auto is_friend = isExistFriend(user, account); + if (userinfo.has_value()) { + if (is_friend) { + sri->set_msg("此账户已是的好友"); + sri->set_subcommand(mp::MP_SUB_TYPE::MP_SEARCH_FAIL); + return; + } sri->set_username(userinfo.value().username); sri->set_account(userinfo.value().account); sri->set_email(userinfo.value().email); @@ -107,6 +119,14 @@ void UserFriendsService::FetchUser(uint64_t account) { } } +bool UserFriendsService::isExistFriend(uint64_t user, uint64_t account) { + return userFriendsDb.select_friend(account, user); +} + +std::optional UserFriendsService::isExistUser(uint64_t user) { + return userFriendsDb.select_user(user); +} + diff --git a/MS/works/service/UserFriendsService.h b/MS/works/service/UserFriendsService.h index e83fd20..c0510e7 100644 --- a/MS/works/service/UserFriendsService.h +++ b/MS/works/service/UserFriendsService.h @@ -16,8 +16,14 @@ public: public: // 唯一对开接口 mp::sri* friendImProve(mp::body* body); - void FetchUserFriends(uint64_t account, const std::string& data); - void FetchUser(uint64_t account); + // 获取用户的好友列表 + void fetchUserFriends(uint64_t account, const std::string& data); + // 查询用户是否存在 并 判断是否为 已为好友 + void fetchUser(uint64_t user, uint64_t account); + // 查看一个账户是否为此账户好友 + bool isExistFriend(uint64_t user, uint64_t account); + // 查看一个账户是存在 + std::optional isExistUser(uint64_t user); private: mp::sri* add_contact_person(mp::body* body); diff --git a/TEST/main.cpp b/TEST/main.cpp index b397e36..f9f7c73 100644 --- a/TEST/main.cpp +++ b/TEST/main.cpp @@ -34,10 +34,6 @@ TEST(add_friends, add_friends__Test) { } -TEST(UserDB, UserDB_Ues_Test) { - auto i = UserDB(); - i.test(2222222); -} TEST(select_friends, select_friends_Test) { auto i = UserFriendsDB(); @@ -78,12 +74,7 @@ TEST(bind_account_phone, bind_account__Test) { } -TEST(UserDB_select_user, UserDB_Ues_Test) { - auto i = UserDB(); - auto [state, po] = i.select_user(2725096176, "account"); - if (state) - printf("%lu", po.account); -} + @@ -114,7 +105,7 @@ TEST(fecth_frinds, fecth_frinds_Test) { TEST(select_friends_fdb, fecth_frinds_Test) { auto i = UserFriendsDB(); - auto user = i.select_friends(2725096176); + auto user = i.select_user(2725096176); printf("user.value().client_info; %s\n", user.value().client_info.c_str()); printf("user.value().client_info; %lu\n", user.value().account); } @@ -124,3 +115,13 @@ TEST(MSG_PULL, MSG_PULL__Test) { MSG::Storage* storage = new MSG::Storage(); storage->pull(); } + +TEST(selsct_is_friend, fecth_frinds_Test) { + auto i = UserFriendsDB(); + auto user = i.select_friend(2725096176, 783556037); + auto kk = i.select_add_type(1111111); + + printf("1111111, %c\n", kk); + + printf("2725096176, %b\n", user); +} \ No newline at end of file