响应返回的包 缺值已修改

This commit is contained in:
dongl 2023-05-17 09:21:29 +08:00
parent 431416c072
commit c4a100745d
11 changed files with 84 additions and 21 deletions

View File

@ -10,14 +10,19 @@
// 定义一个宏来包含需要用到的枚举值 // 定义一个宏来包含需要用到的枚举值
#define MY_ENUM_VALUES \ #define MY_ENUM_VALUES \
X(MP_REQUEST_LOGIN) \ X(MP_REQUEST_LOGIN) \
X(MP_REQUEST_LOGOUT) \ X(MP_REQUEST_LOGOUT) \
X(MP_REQUEST_REGISTER) \ X(MP_REQUEST_REGISTER) \
X(MP_RESPONSE_LOGIN) \ X(MP_REQUEST_CODE) \
X(MP_RESPONSE_LOGOUT) \ X(MP_REQUEST_FRIENDS) \
X(MP_RESPONSE_REGISTER) X(MP_REQUEST_GROUPS)
#if 0 #if 0
// method 1 // method 1

View File

@ -9,6 +9,16 @@ Response::Response(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string
Sri(subType, username, msg, token) { 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() { Response::~Response() {
delete response; delete response;
} }

View File

@ -15,6 +15,11 @@
class Response : public Mph, Sri{ class Response : public Mph, Sri{
public: 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, 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; ~Response() override;

View File

@ -10,14 +10,31 @@
class Sri { class Sri {
public: 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 = new mp::sri();
sri->set_subcommand(code); sri->set_subcommand(subType);
sri->set_msg(msg); sri->set_msg(msg);
sri->set_token(token); sri->set_token(token);
sri->set_username(username); 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() {} Sri() {}
virtual ~Sri() { virtual ~Sri() {

View File

@ -8,7 +8,7 @@ enum MP_TYPE {
MP_REQUEST_REGISTER = 2; // MP_REQUEST_REGISTER = 2; //
MP_REQUEST_CODE = 3; // MP_REQUEST_CODE = 3; //
MP_REQUEST_FRIENDS = 4; // MP_REQUEST_FRIENDS = 4; //
MP_REQUEST_GROUPS = 5; // MP_REQUEST_GROUPS = 5; //
// 20 - 39 // 20 - 39

View File

@ -22,11 +22,19 @@ agreement_response::~agreement_response() {}
void agreement_response::set(mp::sri* sri, bufferevent* bev) { void agreement_response::set(mp::sri* sri, bufferevent* bev) {
auto resp = std::make_shared<mp::response>(mp::response()); auto resp = std::make_shared<mp::response>(mp::response());
std::cout << "set" << sri->account() << std::endl;
m_sri = resp->sri(); 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_username(sri->username());
m_sri.set_msg(sri->msg()); m_sri.set_msg(sri->msg());
m_sri.set_subcommand(sri->subcommand());
m_sri.set_token(sri->token()); 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; m_bev = bev;
} }

View File

@ -16,9 +16,17 @@ void handler::resp(const std::shared_ptr<agreement_request>& request,
// 例如 login包类型为 request login==0 那么响应这个登陆信息就是 response login==0+20 // 例如 login包类型为 request login==0 那么响应这个登陆信息就是 response login==0+20
// 200 以上 为im msg 通讯的包类型序号 // 200 以上 为im msg 通讯的包类型序号
if (request->m_mph->mp_type() < 200) { 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), auto resp = new Response((mp::MP_TYPE) (request->m_mph->mp_type() + 20),
response->m_sri.subcommand(), response->m_sri.username(), response->m_sri.subcommand(),
response->m_sri.msg(), response->m_sri.token()); 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(); auto ret = resp->packet();
bufferevent_write(request->m_bev, ret.c_str(), ret.size()); bufferevent_write(request->m_bev, ret.c_str(), ret.size());

View File

@ -9,6 +9,7 @@ void UserProveController::run(std::shared_ptr<agreement_request> request, std::s
if (request->m_mph->mp_type() == mp::MP_REQUEST_LOGIN) { if (request->m_mph->mp_type() == mp::MP_REQUEST_LOGIN) {
auto sri = service.login(request->m_body.subcommand(), auto sri = service.login(request->m_body.subcommand(),
request->m_body.account(), request->m_body.password()); request->m_body.account(), request->m_body.password());
response->set(sri, request->m_bev); response->set(sri, request->m_bev);
// 登陆的用户 直接在全局 注册 在map中 直接存入服务器内存 // 登陆的用户 直接在全局 注册 在map中 直接存入服务器内存

View File

@ -26,9 +26,13 @@ protected:
protected: protected:
virtual void sri_clear(){ virtual void sri_clear(){
sri->clear_subcommand(); sri->clear_subcommand();
sri->clear_msg(); sri->clear_account();
sri->clear_token();
sri->clear_username(); sri->clear_username();
sri->clear_email();
sri->clear_phone();
sri->clear_token();
sri->clear_msg();
sri->clear_data();
} }
}; };

View File

@ -9,11 +9,12 @@ UserFriendsService::~UserFriendsService() {}
// 好友群组 添加删除 任务组 决策接口 // 好友群组 添加删除 任务组 决策接口
mp::sri *UserFriendsService::friendImProve(mp::body* body) { mp::sri *UserFriendsService::friendImProve(mp::body* body) {
sri_clear(); sri_clear();
if (body->target() == 0 || body->source() == 0) { // if (body->target() == 0 || body->source() == 0) {
printf("请求数据有缺\n"); // printf("请求数据有缺\n");
sri->set_msg("请求数据有缺"); // sri->set_subcommand(mp::MP_SUB_TYPE::MP_GET_FAIL);
return sri; // sri->set_msg("请求数据有缺");
} // return sri;
// }
auto subcommand = body->subcommand(); 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_REMOVE_FRIEND) {
} }
// 获取好友列表
else if (subcommand == mp::MP_SUB_TYPE::MP_GET_FRIENDS) {
// 此时包传来的 是 客户端 取到用户的帐号
FetchUserFriends(strtol(body->account().c_str(), nullptr, 0), body->data());
}
return sri; return sri;
} }
@ -72,18 +78,17 @@ mp::sri* UserFriendsService::add_contact_person(mp::body *body) {
return sri; 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(); sri_clear();
uint8_t page_begin = data.c_str()[0]; uint8_t page_begin = data.c_str()[0];
uint8_t page_end = data.c_str()[1]; uint8_t page_end = data.c_str()[1];
auto friends = userFriendsDb.select_friends_all(account); auto friends = userFriendsDb.select_friends_all(account);
if (friends.has_value()) if (friends.has_value()) {
sri->set_data(friends.value()); sri->set_data(friends.value());
sri->set_msg("好友获取成功"); sri->set_msg("好友获取成功");
sri->set_subcommand(mp::MP_SUB_TYPE::MP_ADD_SUCCESS); sri->set_subcommand(mp::MP_SUB_TYPE::MP_ADD_SUCCESS);
}
return sri;
} }

View File

@ -16,7 +16,7 @@ public:
public: public:
// 唯一对开接口 // 唯一对开接口
mp::sri* friendImProve(mp::body* body); 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: private:
mp::sri* add_contact_person(mp::body* body); mp::sri* add_contact_person(mp::body* body);