diff --git a/database.cpp b/database.cpp index 7289608..7d2c06e 100644 --- a/database.cpp +++ b/database.cpp @@ -86,7 +86,7 @@ bool DataBase::insertUsr(QString name, QString pwd) //根据name查找用户 bool DataBase::findUsr(QString name) { - QString sql = QString("select from table_usr where name = :name;"); + QString sql = QString("select * from table_usr where name = :name;"); //打开数据库 if(!db_.open()) { @@ -175,24 +175,25 @@ bool DataBase::match(QString name, QString pwd) void DataBase::insertCode(QString name, QString code, QString number) { - QString sql = QString("update table_usr set code=:code, number=:number where name=:name"); - + //QString sql = QString("update table_usr set code = :code, number = :number where name = :name"); + QString sql = QString("update table_usr set code = '%1', number = '%2' where name = '%3'") + .arg(code).arg(number).arg(name); // 1.打开数据 if (!db_.open()) { - qDebug() << "open:" << db_.lastError().text(); + qDebug() << "insercode:" << db_.lastError().text(); } // 2.执行sql QSqlQuery query(db_); query.prepare(sql); - query.bindValue(":code",QVariant(code)); + /*query.bindValue(":code",QVariant(code)); query.bindValue(":number",QVariant(number)); - query.bindValue(":name",QVariant(name)); + query.bindValue(":name",QVariant(name));*/ if (!query.exec(sql)) { - qDebug() << "insert:" << query.lastError().text(); + qDebug() << "update:" << query.lastError().text(); } //关闭数据库 @@ -235,7 +236,7 @@ QString DataBase::matchCode(QString name, QString code) void DataBase::resetCode(QString name) { - QString sql = QString("update table_usr set code=:code, number=:number where name=:name"); + QString sql = QString("update table_usr set code = '000', number = '000' where name = '%1'").arg(name); // 1.打开数据 if (!db_.open()) @@ -246,9 +247,9 @@ void DataBase::resetCode(QString name) // 2.执行sql QSqlQuery query(db_); query.prepare(sql); - query.bindValue(":code",QVariant("000")); + /*query.bindValue(":code",QVariant("000")); query.bindValue(":number",QVariant("000")); - query.bindValue(":name",QVariant(name)); + query.bindValue(":name",QVariant(name));*/ if (!query.exec(sql)) { @@ -257,3 +258,34 @@ void DataBase::resetCode(QString name) } +QString DataBase::findCode(QString name) +{ + QString sql = QString("select * from table_usr where name = :name;"); + QString code = "000"; + //打开数据库 + if(!db_.open()) + { + qDebug() << "open fail" << db_.lastError().text(); + exit(-1); + } + + //执行插入操作 + QSqlQuery query(db_); + query.prepare(sql); + query.bindValue(":name",QVariant(name)); + query.exec(); + + //查询成功 + if(query.next()) + { + if(code == query.value(2).toString()) //获取取车码 + { + return code; + } + } + + db_.close(); + return code; + +} + diff --git a/database.h b/database.h index 0a21782..0dc1bae 100644 --- a/database.h +++ b/database.h @@ -17,6 +17,8 @@ public: //根据name查找用户 bool findUsr(QString name); + QString findCode(QString name); + //匹配name和pwd bool match(QString name, QString pwd); diff --git a/datamanager.cpp b/datamanager.cpp index a9236d5..9889546 100644 --- a/datamanager.cpp +++ b/datamanager.cpp @@ -51,6 +51,7 @@ void DataManager::recv_from_cln(QByteArray &data, QTcpSocket *sock) QString code = json_data["data"].toString(); QString number = p_this->database->matchCode(name,code); QString find_code = p_this->linedb->findCode(number); + qDebug() << "取车时的number和linecode:" << number << find_code; p_this->linedb->resetState(number); QByteArray data_build, data_encrypt; data_build = p_this->protocol->data_maker(Protocol::CODE, QString("pick"), QString("server"),find_code); @@ -63,9 +64,11 @@ void DataManager::recv_from_cln(QByteArray &data, QTcpSocket *sock) { QString name = json_data["user"].toString(); QString number = p_this->linedb->choose(); //获取一个可用的车位编号 + qDebug() << "获取到的可用车位编号是" << number; //随机生成取车码 QString code = p_this->getRandomString(8); //更新取车码 + qDebug() << name << code << number; p_this->database->insertCode(name,code,number); p_this->linedb->setState(number); @@ -76,6 +79,17 @@ void DataManager::recv_from_cln(QByteArray &data, QTcpSocket *sock) p_this->server->sendToclient(sock, data_encrypt); } + else if(json_data["action"] == "update") + { + //登陆后自动获取取车码信息 + QString name = json_data["user"].toString(); + QString code = p_this->database->findCode(name); + QByteArray data_build, data_encrypt; + data_build = p_this->protocol->data_maker(Protocol::CODE, QString("update"), QString("server"),code); + qDebug() << data_build; + data_encrypt = p_this->protocol->data_encrypt(data_build); + p_this->server->sendToclient(sock, data_encrypt); + } } else if (json_data["type"] == "request") { diff --git a/line.cpp b/line.cpp index 7107fce..780a156 100644 --- a/line.cpp +++ b/line.cpp @@ -17,17 +17,15 @@ Line::Line() { //1.加载数据库驱动 db_ = QSqlDatabase::addDatabase("QSQLITE", "linesql"); - qDebug () << db_.connectionName();//打印连接名称 //2.设置数据库名 db_.setDatabaseName("line.db"); - qDebug () << db_.databaseName(); } //3.打开数据库 if(db_.open()) { - qDebug() << "open success"; + qDebug() << "linedb open success"; } else { @@ -35,7 +33,7 @@ Line::Line() return; } - QString sql = "create table if not exists table_line(number varchar(10) primary key,state varchar(3));"; + QString sql = "create table if not exists table_line(number varchar(10) primary key,linecode varchar(20),state varchar(3))"; QSqlQuery query(db_); if (query.exec(sql)) @@ -44,16 +42,17 @@ Line::Line() } //测试用 - sql = QString("insert into table_line values('%1', '%2')") - .arg('2') - .arg("000"); + sql = QString("insert into table_line values('%1', '%2', '%3')") + .arg('3') + .arg("000") + .arg("000"); query.exec(sql); db_.close(); } QString Line::findCode(QString number) { - QString sql = QString("select from table_line where name = :name;"); + QString sql = QString("select * from table_line where number = :number"); //打开数据库 if(!db_.open()) { @@ -84,37 +83,50 @@ QString Line::findCode(QString number) QString Line::choose() { - QString sql = QString("select from table_line where state = :state limit 1;"); + if(!db_.open()) + { + qDebug() << "choose:" << db_.lastError().text(); + } + + QString sql = QString("select * from table_line where state = '%1' limit 1").arg("000"); QSqlQuery query(db_); query.prepare(sql); - query.bindValue(":state",QVariant("000")); //选择未占用的车位 + //query.bindValue(":state",QVariant("000")); //选择未占用的车位 query.exec(); if(query.next()) { QString number = query.value(0).toString(); + qDebug() << number << "序号"; + db_.close(); return number; } + + qDebug() << "choose:" << db_.lastError().text(); return "000"; } void Line::setState(QString number) { - QString sql = QString("update table_line set state=:state where number=:number"); + db_.open(); + QString sql = QString("update table_line set state = :state where number = :number"); QSqlQuery query(db_); query.prepare(sql); query.bindValue(":number",QVariant(number)); query.bindValue(":state",QVariant("111")); //已占用的话为111 query.exec(); + db_.close(); } void Line::resetState(QString number) { - QString sql = QString("update table_line set state=:state where number=:number"); + db_.open(); + QString sql = QString("update table_line set state = :state where number = :number"); QSqlQuery query(db_); query.prepare(sql); query.bindValue(":number",QVariant(number)); query.bindValue(":state",QVariant("000")); //状态初始值为000 query.exec(); + db_.close(); }