Skip to content

Commit 9dd731d

Browse files
Merge branch 'main' into main
2 parents db1b1ed + 765c6ce commit 9dd731d

File tree

6 files changed

+81
-23
lines changed

6 files changed

+81
-23
lines changed

.DS_Store

2 KB
Binary file not shown.

main.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ int main() {
2424
request_processing(req, std::move(callback));
2525
});
2626
drogon::app().registerHandler("/api/newfriends", [](const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback) {
27-
friend_request(req, std::move(callback));
27+
friend_operation(req, std::move(callback));
2828
});
2929
drogon::app().registerHandler("/api/info", [](const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback) {
3030
info(req, std::move(callback));

msg_controller.cc

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ void check(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &
8383
callback(res);
8484
}
8585

86-
void friend_request(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback)
86+
void friend_operation(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback)
8787
{
8888
std::string authHeader = req->getHeader("Authorization");
8989
if (authHeader.substr(0, 7) == "Bearer ")
@@ -94,7 +94,10 @@ void friend_request(const HttpRequestPtr &req, std::function<void(const HttpResp
9494
{
9595
std::string sender = jwtDecrypt(bearerToken);
9696
std::string receiver = req->getParameter("username");
97+
std::string operation = req->getParameter("operation");
98+
if(operation=="add")
9799
sql_addrequest(sender, receiver);
100+
else sql_delete_operation(sender,receiver);
98101
}
99102
catch (const std::exception &e)
100103
{
@@ -116,9 +119,9 @@ void request_processing(const HttpRequestPtr &req, std::function<void(const Http
116119
try
117120
{
118121
std::string receiver = jwtDecrypt(bearerToken);
119-
std::string sender =req->getParameter("username");
122+
std::string sender = req->getParameter("username");
120123
std::string attitude = req->getParameter("info");
121-
sql_process_request(sender,receiver, attitude);
124+
sql_process_request(sender, receiver, attitude);
122125
}
123126
catch (const std::exception &e)
124127
{
@@ -128,41 +131,53 @@ void request_processing(const HttpRequestPtr &req, std::function<void(const Http
128131
}
129132
auto res = HttpResponse::newHttpResponse();
130133
res->setBody("Success");
134+
callback(res);
131135
}
132-
void info(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback) {
136+
void info(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback)
137+
{
133138
auto body = req->getBody();
134139
Json::Value req_json, res_json;
135140
Json::Reader reader;
136141
std::string bodyStr(body);
137-
if (!reader.parse(bodyStr, req_json)) {
142+
if (!reader.parse(bodyStr, req_json))
143+
{
138144
callback(HttpResponse::newHttpResponse());
139145
return;
140146
}
141147
std::string me, who_send_me;
142148
Json::FastWriter writer;
143149
std::string authHeader = req->getHeader("Authorization");
144-
if (authHeader.substr(0, 7) == "Bearer ") {
150+
if (authHeader.substr(0, 7) == "Bearer ")
151+
{
145152
std::string bearerToken = authHeader.substr(7);
146153
// 在此处使用Bearer Token进行身份验证
147-
try {
154+
try
155+
{
148156
me = jwtDecrypt(bearerToken);
149-
} catch (const std::exception &e) {
157+
}
158+
catch (const std::exception &e)
159+
{
150160
std::cerr << e.what() << '\n';
151161
std::cout << "Wrong token" << std::endl;
152162
}
153-
} else {
163+
}
164+
else
165+
{
154166
// 连接没有Authorization头部Bearer Token
155167
std::cout << "No Authorization" << std::endl;
156168
}
157169

158170
auto res = HttpResponse::newHttpResponse();
159171
res->addHeader("Access-Control-Allow-Origin", "*");
160-
if(req_json["person"].asString()==""){
161-
res->setBody(writer.write(get_chat_info(me,"")));
172+
if (req_json["person"].asString() == "")
173+
{
174+
res->setBody(writer.write(get_chat_info(me, "")));
162175
callback(res);
163-
}else{
176+
}
177+
else
178+
{
164179
who_send_me = req_json["person"].asString();
165-
res->setBody(writer.write(get_chat_info(me,who_send_me)));
180+
res->setBody(writer.write(get_chat_info(me, who_send_me)));
166181
callback(res);
167182
}
168183
}

msg_controller.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ void chat(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)
66
void info(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback);
77
void check(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback);
88
void request_processing(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback);
9-
void friend_request(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback);
9+
void friend_operation(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback);
1010
#endif

mysql.cc

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,50 @@
77
#include "jdbc/mysql_driver.h"
88
#include "json/json.h"
99

10+
void sql_delete_operation(std::string sender, std::string receiver)
11+
{
12+
std::vector<std::string> usernamelist;
13+
sql::mysql::MySQL_Driver *driver;
14+
driver = sql::mysql::get_mysql_driver_instance();
15+
sql::Connection *con;
16+
con = driver->connect("tcp://8.130.48.157:3306", "root", "abc.123");
17+
con->setSchema("flypen");
18+
std::string readdata = "SELECT friends FROM users WHERE username = ?";
19+
std::string Sfriendlist, Rfriendlist;
20+
std::string changedata = "UPDATE users SET friends=? WHERE username =?";
21+
sql::PreparedStatement *readdatament = con->prepareStatement(readdata);
22+
readdatament->setString(1, sender);
23+
sql::ResultSet *SresultSet = readdatament->executeQuery();
24+
if (SresultSet->next())
25+
{
26+
Sfriendlist = SresultSet->getString("friends");
27+
}
28+
int pos = Sfriendlist.find(receiver);
29+
if (pos != std::string::npos && pos != 0)
30+
Sfriendlist.erase(pos - 1, receiver.length() + 1);
31+
else if (pos == 0)
32+
Sfriendlist.erase(pos, receiver.length() + 1);
33+
std::cout << Sfriendlist << "\n";
34+
sql::PreparedStatement *updateStatement = con->prepareStatement(changedata);
35+
updateStatement->setString(1, Sfriendlist);
36+
updateStatement->setString(2, sender);
37+
updateStatement->execute();
38+
readdatament->setString(1, receiver);
39+
sql::ResultSet *RresultSet = readdatament->executeQuery();
40+
if (RresultSet->next())
41+
{
42+
Rfriendlist = RresultSet->getString("friends");
43+
}
44+
pos = Rfriendlist.find(sender);
45+
if (pos != std::string::npos && pos != 0)
46+
Rfriendlist.erase(pos - 1, sender.length() + 1);
47+
else if (pos == 0)
48+
Rfriendlist.erase(pos, sender.length() + 1);
49+
std::cout << Rfriendlist << "\n";
50+
updateStatement->setString(1, Rfriendlist);
51+
updateStatement->setString(2, receiver);
52+
updateStatement->execute();
53+
}
1054
void sql_process_request(std::string sender, std::string receiver, std::string attitude)
1155
{
1256
std::vector<std::string> usernamelist;
@@ -17,9 +61,9 @@ void sql_process_request(std::string sender, std::string receiver, std::string a
1761

1862
std::string readData = "SELECT req FROM users WHERE username = ?";
1963
sql::PreparedStatement *readDatament = con->prepareStatement(readData);
20-
readDatament->setString(1, sender);
64+
readdatament->setString(1, receiver);
65+
sql::ResultSet *resultSet = readdatament->executeQuery();
2166

22-
sql::ResultSet *resultSet = readDatament->executeQuery();
2367
std::string req;
2468
if (resultSet->next())
2569
req = resultSet->getString("req");
@@ -80,12 +124,10 @@ void sql_process_request(std::string sender, std::string receiver, std::string a
80124
}
81125
delete RS;
82126
}
83-
84127
delete updateStatement;
85128
delete resultSet;
86129
delete readDatament;
87130
delete con;
88-
89131
return;
90132
}
91133

mysql.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ bool sql_check(std::string , std::string passwd="@DEFAULT@");
99
void sql_addhistory(std::string,std::string,std::string,std::string);
1010
void sql_addconnect(std::string connectptr);
1111

12-
//TODO:
13-
void sql_addrequest(std::string send,std::string receiver); //
14-
void sql_process_request(std::string ,std::string,std::string); //
15-
Json::Value sql_find_my_msg(std::string); //
12+
void sql_addrequest(std::string send,std::string receiver);
13+
void sql_process_request(std::string ,std::string,std::string);
14+
Json::Value sql_find_my_msg(std::string);
1615

1716
Json::Value get_chat_info(std::string,std::string="");
1817

18+
void sql_delete_operation(std::string,std::string);
19+
1920
#endif

0 commit comments

Comments
 (0)