diff --git a/src/ChangShaTour/ChangShaTour.pro b/src/ChangShaTour/ChangShaTour.pro index a35860c..6fcd0e1 100644 --- a/src/ChangShaTour/ChangShaTour.pro +++ b/src/ChangShaTour/ChangShaTour.pro @@ -41,6 +41,7 @@ SOURCES += \ searchresultwidget.cpp \ showplaceinfowidget.cpp \ showrouteinfowidget.cpp \ + smtp.cpp \ sortwidget.cpp \ userinfowidget.cpp \ userwidget.cpp \ @@ -71,6 +72,7 @@ HEADERS += \ searchresultwidget.h \ showplaceinfowidget.h \ showrouteinfowidget.h \ + smtp.h \ sortwidget.h \ userinfowidget.h \ userwidget.h \ diff --git a/src/ChangShaTour/ChangShaTour.pro.user b/src/ChangShaTour/ChangShaTour.pro.user index a23a8f9..41345dd 100644 --- a/src/ChangShaTour/ChangShaTour.pro.user +++ b/src/ChangShaTour/ChangShaTour.pro.user @@ -1,10 +1,10 @@ - + EnvironmentId - {d82e82d4-1ed7-46a6-9098-5e0a8f0d7fa3} + {61ba832e-6c30-4ab6-b0b8-ace44f46ca0c} ProjectExplorer.Project.ActiveTarget @@ -44,8 +44,8 @@ true 0 8 - true - 1 + false + 0 true true true @@ -63,6 +63,249 @@ ProjectExplorer.Project.Target.0 + + Desktop Qt 5.14.2 MSVC2017 64bit + Desktop Qt 5.14.2 MSVC2017 64bit + qt.qt5.5142.win64_msvc2017_64_kit + 0 + 0 + 0 + + D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug + + + true + QtProjectManager.QMakeBuildStep + true + + false + false + false + + + true + Qt4ProjectManager.MakeStep + + false + + + false + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + + true + clean + + false + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + + + D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MSVC2017_64bit-Release + + + true + QtProjectManager.QMakeBuildStep + false + + false + false + true + + + true + Qt4ProjectManager.MakeStep + + false + + + false + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + + true + clean + + false + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + + + D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MSVC2017_64bit-Profile + + + true + QtProjectManager.QMakeBuildStep + true + + false + true + true + + + true + Qt4ProjectManager.MakeStep + + false + + + false + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + + true + clean + + false + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Profile + Qt4ProjectManager.Qt4BuildConfiguration + 0 + + 3 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + dwarf + + cpu-cycles + + + 250 + + -e + cpu-cycles + --call-graph + dwarf,4096 + -F + 250 + + -F + true + 4096 + false + false + 1000 + + true + + false + false + false + false + true + 0.01 + 10 + true + kcachegrind + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + 2 + + Qt4ProjectManager.Qt4RunConfiguration:D:/gitRepositories/TourInChangSha/src/ChangShaTour/ChangShaTour.pro + D:/gitRepositories/TourInChangSha/src/ChangShaTour/ChangShaTour.pro + + false + + false + true + true + false + false + true + + D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug + + 1 + + + + ProjectExplorer.Project.Target.1 Desktop Qt 5.14.2 MinGW 32-bit Desktop Qt 5.14.2 MinGW 32-bit @@ -71,7 +314,7 @@ 0 0 - D:/大三下/软件体系结构/Trip-in-Chang-sha/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_32_bit-Debug + D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_32_bit-Debug true @@ -119,7 +362,7 @@ 2 - D:/大三下/软件体系结构/Trip-in-Chang-sha/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_32_bit-Release + D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_32_bit-Release true @@ -167,7 +410,7 @@ 0 - D:/大三下/软件体系结构/Trip-in-Chang-sha/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_32_bit-Profile + D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_32_bit-Profile true @@ -305,7 +548,7 @@ - ProjectExplorer.Project.Target.1 + ProjectExplorer.Project.Target.2 Desktop Qt 5.14.2 MinGW 64-bit Desktop Qt 5.14.2 MinGW 64-bit @@ -314,7 +557,7 @@ 0 0 - D:/大三下/软件体系结构/Trip-in-Chang-sha/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_64_bit-Debug + D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_64_bit-Debug true @@ -362,7 +605,7 @@ 2 - D:/大三下/软件体系结构/Trip-in-Chang-sha/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_64_bit-Release + D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_64_bit-Release true @@ -410,7 +653,7 @@ 0 - D:/大三下/软件体系结构/Trip-in-Chang-sha/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_64_bit-Profile + D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_64_bit-Profile true @@ -549,7 +792,7 @@ ProjectExplorer.Project.TargetCount - 2 + 3 ProjectExplorer.Project.Updater.FileVersion diff --git a/src/ChangShaTour/cglobal.cpp b/src/ChangShaTour/cglobal.cpp index 9b51c56..329302f 100644 --- a/src/ChangShaTour/cglobal.cpp +++ b/src/ChangShaTour/cglobal.cpp @@ -5,6 +5,7 @@ QSqlDatabase meituanDb; QSqlDatabase userDb; QSqlDatabase listDb; QMap labelToDb; +QStringList recommendlabel; cglobal::cglobal() @@ -71,7 +72,7 @@ void cglobal::labelmap() labelToDb[QStringLiteral("公寓")]="hotel"; labelToDb[QStringLiteral("豪华酒店")]="hotel"; labelToDb[QStringLiteral("客栈")]="hotel"; - labelToDb[QStringLiteral("青年旅舍")]="hotel"; + labelToDb[QStringLiteral("青年旅社")]="hotel"; labelToDb[QStringLiteral("度假酒店")]="hotel"; labelToDb[QStringLiteral("别墅")]="hotel"; labelToDb[QStringLiteral("民宿")]="hotel"; @@ -93,8 +94,8 @@ void cglobal::labelmap() labelToDb[QStringLiteral("乒乓球")]="sport"; labelToDb[QStringLiteral("体育球馆")]="sport"; - //recommendlabel<<"代金券"<<"蛋糕甜点"<<"自助餐"<<"小吃快餐"<<"火锅"<<"西餐"<<"烧烤烤肉"<"川湘菜"<<"东北菜"<<"江浙菜"<<"香锅烤鱼"<<"粤菜"<<"西北菜"<<"咖啡酒吧"<<"京菜鲁菜"<<"东南亚菜"<<"海鲜"<<"素食"<<"台湾/客家菜"<<"创意菜"<<"蒙餐"<<"新疆菜"<<"其他美食"<<"聚餐宴请"; - //recommendlabel<<"经济型酒店"<<"主题酒店"<<"商务酒店"<<"公寓"<<"豪华酒店"<<"客栈"<<"青年旅社"<<"度假酒店"<<"别墅"<<"民宿"; - //recommendlabel<<"新奇体验"<<"团建扩展"<<"足疗/按摩"<<"洗浴/汗蒸"<<"KTV"<<"酒吧"<<"电玩/游戏厅"<<"运动健身"<<"私人影院"<<"DIY手工坊"<<"密室逃脱"<<"网吧网咖"<<"茶馆"<<"棋牌室"<<"轰趴馆"<<"桌游"<<"真人CS"<<"采摘/农家乐 VR",\ - //recommendlabel<<"休闲运动 游泳 健身中心 羽毛球 台球 武术 保龄球 高尔夫 篮球 滑冰 射击射箭 网球 骑马 乒乓球 体育场馆"; + recommendlabel<setupUi(this); limit = 10; - cateList.append("food"); - cateList.append("entertainment"); - cateList.append("hotel"); - cateList.append("attractions"); - cateList.append("sport"); mainLayout = new QVBoxLayout(); @@ -26,9 +21,10 @@ HistoryWidget::HistoryWidget(QWidget *parent) : for (int i = 0; i < limit; i++) { btnList[i] = new QPushButton(); + btnList[i]->setVisible(false); } - //获取用户历史信息存入historyList + //获取用户历史信息存入historyList和cateIdList getHistory(); //根据历史信息获取店铺信息填入nameList中 getShops(); @@ -64,12 +60,12 @@ void HistoryWidget::getHistory() { QSqlQuery historyQuery(userDb); - historyQuery.prepare("select url,cateId from history where id=:id order by createdtime DESC"); + historyQuery.prepare("select * from history where userId=:id order by createdtime DESC"); historyQuery.bindValue(":id", Id); historyQuery.exec(); while (historyQuery.next() == true) { -// qDebug() << historyQuery.value("url").value(); + qDebug() << "HistoryUrl:" << historyQuery.value("url").value(); historyList.append(historyQuery.value("url").value()); cateIdList.append(historyQuery.value("cateId").value()); } @@ -82,15 +78,11 @@ void HistoryWidget::getShops() for (int i = 0; i < historyList.length(); i++) { - for (int j = 0; j < cateList.length(); j++) - { - shopQuery.prepare("select title from " + cateList[j] + " where detail=:url"); - shopQuery.bindValue(":url", historyList[i]); - shopQuery.exec(); - shopQuery.next(); - if (shopQuery.isValid()) - break; - } + QString cate = labelToDb[cateIdList[i]]; + shopQuery.prepare("select title from " + cate + " where detail=:url"); + shopQuery.bindValue(":url", historyList[i]); + shopQuery.exec(); + shopQuery.next(); // qDebug() << shopQuery.value("title").value(); nameList.append(shopQuery.value("title").value()); } @@ -101,8 +93,9 @@ void HistoryWidget::setBtns() for (int i = 0; i < historyList.length(); i++) { btnList[i]->setText(nameList[i]); + btnList[i]->setVisible(true); // btnList[i]->setFixedSize(QSize(200,200)); - connect(btnList[i], &QPushButton::clicked, this, [=](){web->loadPage(historyList[i],cateIdList[i]); web->setVisible(true); subWidget->setVisible(false);}); + connect(btnList[i], &QPushButton::clicked, this, [=](){web->loadPage(historyList[i], cateIdList[i]); web->setVisible(true); subWidget->setVisible(false);}); } } diff --git a/src/ChangShaTour/historywidget.h b/src/ChangShaTour/historywidget.h index e094c49..ab4c7c4 100644 --- a/src/ChangShaTour/historywidget.h +++ b/src/ChangShaTour/historywidget.h @@ -9,7 +9,6 @@ #include "webwidget.h" #include "cglobal.h" - #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") #endif @@ -38,7 +37,6 @@ private: Ui::HistoryWidget *ui; int limit; - QStringList cateList; QVBoxLayout *mainLayout; diff --git a/src/ChangShaTour/listwidget.cpp b/src/ChangShaTour/listwidget.cpp index 3d9294d..7fbb7d6 100644 --- a/src/ChangShaTour/listwidget.cpp +++ b/src/ChangShaTour/listwidget.cpp @@ -9,8 +9,11 @@ ListWidget::ListWidget(QWidget *parent) : ui(new Ui::ListWidget) { ui->setupUi(this); + qDebug("Creating ListWidget..."); +// QSqlQuery queryList(listDb); +// QSqlQuery queryMeituan(meituanDb); - listLen = 8; + listLen = 10; mainLayout = new QVBoxLayout(); subWidget = new QWidget(); @@ -45,53 +48,20 @@ ListWidget::ListWidget(QWidget *parent) : title_3->setAlignment(Qt::AlignCenter); title_3->setFont(QFont( "Timers", 15, QFont::Bold) ); - for (int i = 0; i < (listLen + 1); i++) - { - QHBoxLayout *line_1 = new QHBoxLayout(); - QHBoxLayout *line_2 = new QHBoxLayout(); - QHBoxLayout *line_3 = new QHBoxLayout(); - if (i > 0) - { - QLabel *rank_1 = new QLabel(QString::number(i)); - rank_1->setAlignment(Qt::AlignCenter); - QLabel *rank_2 = new QLabel(QString::number(i)); - rank_2->setAlignment(Qt::AlignCenter); - QLabel *rank_3 = new QLabel(QString::number(i)); - rank_3->setAlignment(Qt::AlignCenter); - QToolButton *btn_1 = new QToolButton(); - QToolButton *btn_2 = new QToolButton(); - QToolButton *btn_3 = new QToolButton(); - btn_1 = setBtn(btn_1, "D:/Study/SE/project/images/transparent.png", "1btn" + QString::number(i)); - btn_2 = setBtn(btn_2, "D:/Study/SE/project/images/transparent.png", "2btn" + QString::number(i)); - btn_3 = setBtn(btn_3, "D:/Study/SE/project/images/transparent.png", "3btn" + QString::number(i)); - - //设置布局 - line_1->addWidget(rank_1, 1); - line_1->addWidget(btn_1, 10); - line_2->addWidget(rank_2, 1); - line_2->addWidget(btn_2, 10); - line_3->addWidget(rank_3, 1); - line_3->addWidget(btn_3, 10); - //添加入列表 - rankList_1[i - 1] = rank_1; - rankList_2[i - 1] = rank_2; - rankList_3[i - 1] = rank_3; - btnList_1[i - 1] = btn_1; - btnList_2[i - 1] = btn_2; - btnList_3[i - 1] = btn_3; - //为每个按钮连接跳转界面信号,并添加历史记录 - } - else - { - line_1->addWidget(title_1); - line_2->addWidget(title_2); - line_3->addWidget(title_3); - } - - lineList_1[i] = line_1; - lineList_2[i] = line_2; - lineList_3[i] = line_3; - } + QHBoxLayout *line_1 = new QHBoxLayout(); + QHBoxLayout *line_2 = new QHBoxLayout(); + QHBoxLayout *line_3 = new QHBoxLayout(); + + line_1->addWidget(title_1); + line_2->addWidget(title_2); + line_3->addWidget(title_3); + + lineList_1[0] = line_1; + lineList_2[0] = line_2; + lineList_3[0] = line_3; + setHotList(); + setMinorityList(); + setFavorableList(); //设置总体布局 this->setLayout(mainLayout); @@ -105,14 +75,16 @@ ListWidget::ListWidget(QWidget *parent) : listLayout->addLayout(layout_2, 1); listLayout->addLayout(layout_3, 1); -// layout_1->setSizeConstraint(QLayout::SetMinimumSize); - for (int i = 0; i < (listLen + 1); i++) { layout_1->addLayout(lineList_1[i]); layout_2->addLayout(lineList_2[i]); layout_3->addLayout(lineList_3[i]); } + + connect(web->getReturnBtn(), &QPushButton::clicked, this, &ListWidget::returnWeb); + + qDebug("LisWidget Completed"); } ListWidget::~ListWidget() @@ -130,3 +102,163 @@ QToolButton *ListWidget::setBtn(QToolButton *btn, const QString iconPath, const return btn; } + +QStringList ListWidget::queryMeituanDatabase(QSqlQuery query) +{ + QStringList result; + query.exec(); + query.next(); + QVariant id = query.value("id"); + +// QVariant detail = query.value("detail"); + + QVariant frontimg = query.value("frontimg"); + + QVariant title = query.value("title"); +// QVariant avgscore = query.value("avgscore"); +// QVariant comments = query.value("comments"); +// QVariant address = query.value("address"); +// QVariant cateId = query.value("cateId"); +// QVariant avgprice = query.value("avgprice"); + + QString img = frontimg.value(); + QString name = title.value(); + QString Id = QString::number(id.value()); +// QString url = detail.value(); +// QString score = QString::number(avgscore.value()); +// QString commentNum = QString::number(comments.value()); +// QString addr = address.value(); +// QString price = QString::number(avgprice.value()); +// QString text = name + "\n" + score + "分 " + commentNum + "条评论\n" + addr + "\n";// + "人均" + price + "元"; +// QString cateid = cateId.value(); + result.append(img); + result.append(name); + result.append(Id); + + return result; + +} + +void ListWidget::returnWeb() +{ + subWidget->setVisible(true); + web->setVisible(false); +} + +void ListWidget::setHotList() +{ + QSqlQuery queryList(listDb); + QSqlQuery queryMeituan(meituanDb); + int index = 1; + + queryList.prepare("select * from hotlist limit :limit"); + queryList.bindValue(":limit", listLen); + queryList.exec(); + while (queryList.next() == true && index < (listLen + 1)) + { + QHBoxLayout *line = new QHBoxLayout(); + QLabel *rank = new QLabel(QString::number(index)); + rank->setAlignment(Qt::AlignCenter); + QToolButton *btn = new QToolButton(); + + QString url = queryList.value("url").value(); + QString cate = queryList.value("cateId").value(); + + queryMeituan.prepare("select * from " + labelToDb[cate] + " where detail = :url"); +// qDebug() << "类名:" << cate; +// qDebug() << "所属表名:" << labelToDb[cate]; + queryMeituan.bindValue(":url", url); + QStringList list = queryMeituanDatabase(queryMeituan);//获得图片链接和店铺名和id + imgDownloader *imgDownload = new imgDownloader(); + QString imgPath = "D:/Study/SE/project/images/" + labelToDb[cate] + list[2] + ".png"; + imgDownload->downloadFileFromUrl(list[0], imgPath); + btn = setBtn(btn, imgPath, list[1]); + connect(btn, &QToolButton::clicked, this, [=](){web->loadPage(url, cate); subWidget->setVisible(false); web->setVisible(true);}); + + line->addWidget(rank, 1); + line->addWidget(btn, 10); + lineList_1[index] = line; + + index++; + } + +} +void ListWidget::setMinorityList() +{ + + QSqlQuery queryList(listDb); + QSqlQuery queryMeituan(meituanDb); + int index = 1; + + queryList.prepare("select * from minoritylist limit :limit"); + queryList.bindValue(":limit", listLen); + queryList.exec(); + while (queryList.next() == true && index < (listLen + 1)) + { + QHBoxLayout *line = new QHBoxLayout(); + QLabel *rank = new QLabel(QString::number(index)); + rank->setAlignment(Qt::AlignCenter); + QToolButton *btn = new QToolButton(); + + QString url = queryList.value("url").value(); + QString cate = queryList.value("cateId").value(); + + queryMeituan.prepare("select * from " + labelToDb[cate] + " where detail = :url"); +// qDebug() << "类名:" << cate; +// qDebug() << "所属表名:" << labelToDb[cate]; + queryMeituan.bindValue(":url", url); + QStringList list = queryMeituanDatabase(queryMeituan);//获得图片链接和店铺名和id + imgDownloader *imgDownload = new imgDownloader(); + QString imgPath = "D:/Study/SE/project/images/" + labelToDb[cate] + list[2] + ".png"; + imgDownload->downloadFileFromUrl(list[0], imgPath); + btn = setBtn(btn, imgPath, list[1]); + connect(btn, &QToolButton::clicked, this, [=](){web->loadPage(url, cate); subWidget->setVisible(false); web->setVisible(true);}); + + line->addWidget(rank, 1); + line->addWidget(btn, 10); + lineList_2[index] = line; + + index++; + } + +} +void ListWidget::setFavorableList() +{ + + QSqlQuery queryList(listDb); + QSqlQuery queryMeituan(meituanDb); + int index = 1; + + queryList.prepare("select * from favorablelist limit :limit"); + queryList.bindValue(":limit", listLen); + queryList.exec(); + while (queryList.next() == true && index < (listLen + 1)) + { + QHBoxLayout *line = new QHBoxLayout(); + QLabel *rank = new QLabel(QString::number(index)); + rank->setAlignment(Qt::AlignCenter); + QToolButton *btn = new QToolButton(); + + QString url = queryList.value("url").value(); + QString cate = queryList.value("cateId").value(); + + queryMeituan.prepare("select * from " + labelToDb[cate] + " where detail = :url"); +// qDebug() << "类名:" << cate; +// qDebug() << "所属表名:" << labelToDb[cate]; + queryMeituan.bindValue(":url", url); + QStringList list = queryMeituanDatabase(queryMeituan);//获得图片链接和店铺名和id + imgDownloader *imgDownload = new imgDownloader(); + QString imgPath = "D:/Study/SE/project/images/" + labelToDb[cate] + list[2] + ".png"; + imgDownload->downloadFileFromUrl(list[0], imgPath); + btn = setBtn(btn, imgPath, list[1]); + connect(btn, &QToolButton::clicked, this, [=](){web->loadPage(url, cate); subWidget->setVisible(false); web->setVisible(true);}); + + line->addWidget(rank, 1); + line->addWidget(btn, 10); + lineList_3[index] = line; + + index++; + } + +} + diff --git a/src/ChangShaTour/listwidget.h b/src/ChangShaTour/listwidget.h index 49145ab..f7ed920 100644 --- a/src/ChangShaTour/listwidget.h +++ b/src/ChangShaTour/listwidget.h @@ -10,6 +10,7 @@ #include #include #include "webwidget.h" +#include "imgdownloader.h" #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") @@ -28,6 +29,11 @@ public: ~ListWidget(); QToolButton *setBtn(QToolButton *btn, const QString iconPath, const QString text); + QStringList queryMeituanDatabase(QSqlQuery query); + void returnWeb(); + void setHotList(); + void setMinorityList(); + void setFavorableList(); private: diff --git a/src/ChangShaTour/mainwindow.cpp b/src/ChangShaTour/mainwindow.cpp index 8f601f9..783091a 100644 --- a/src/ChangShaTour/mainwindow.cpp +++ b/src/ChangShaTour/mainwindow.cpp @@ -34,8 +34,8 @@ void MainWindow::switchToMain() else if(loginmanage->loginVerify(accountLogin,passwordLogin)) { - resize(1330, 720); - setMaximumSize(QSize(1330,720)); + resize(1330, 1000); + setMaximumSize(QSize(1330,1000)); // showMaximized(); loginWidget->deleteLater(); mainWidget = new MainWidget(); diff --git a/src/ChangShaTour/recommendwidget.cpp b/src/ChangShaTour/recommendwidget.cpp index 1c2e6a2..0446fbf 100644 --- a/src/ChangShaTour/recommendwidget.cpp +++ b/src/ChangShaTour/recommendwidget.cpp @@ -96,7 +96,11 @@ void RecommendWidget::queryDatabase(int page) { QString sqlToExec="select * from "; sqlToExec.append(labelToDb[iter.key()]); + sqlToExec.append(" where cateId=\""); + sqlToExec.append(iter.key()); + sqlToExec.append("\""); sqlToExec.append(" limit ?, ?"); + //qDebug()<()); cateIdList.append(cateId.value()); textList.append(text); + i++; } iter++; @@ -150,7 +154,7 @@ void RecommendWidget::setBtns() // QString imgPath = ":/images" + idList[index] + ".jpg"; QString imgPath = "D:/kunlin/OneDrive/QT project/images/"+labelToDb[cateIdList[index]] + QString::number(idList[index]) + ".png"; // qDebug() << QDir::currentPath(); -// QString imgPath = "D:/Study/SE/project/images/food" + QString::number(idList[index]) + ".png"; +// QString imgPath = "D:/Study/SE/project/images/" + labelToDb[cateIdList[index]] + QString::number(idList[index]) + ".png"; imgDownloader *download = new imgDownloader(); download->downloadFileFromUrl(imgList[index], imgPath); qDebug()<::iterator iter=labelToDb.begin(); - //int totalsize=recommendlabel.size(); - //int i; - QSqlQuery query(userDb); - while(iter!=labelToDb.end()) - { - query.prepare("insert into recommend(userId,cateId)values(?,?)"); - query.addBindValue(Id); - query.addBindValue(iter.key()); - query.exec(); - iter++; - } -} void RecommendWidget::webReturn() { diff --git a/src/ChangShaTour/recommendwidget.h b/src/ChangShaTour/recommendwidget.h index f736a6f..ecb03d9 100644 --- a/src/ChangShaTour/recommendwidget.h +++ b/src/ChangShaTour/recommendwidget.h @@ -44,7 +44,6 @@ public: void webReturn(); void rollTop(); void algorithm(); - void addNewUser(); private: Ui::RecommendWidget *ui; diff --git a/src/ChangShaTour/registermanager.cpp b/src/ChangShaTour/registermanager.cpp index 906cb3b..cbb369a 100644 --- a/src/ChangShaTour/registermanager.cpp +++ b/src/ChangShaTour/registermanager.cpp @@ -128,13 +128,37 @@ bool RegisterManager::registerVerify() query.bindValue(":email", emailAddress); query.bindValue(":password", password); query.exec(); - + query.prepare("select id from account where email=?"); + query.addBindValue(emailAddress); + query.exec(); + query.next(); + int id=query.value(0).toInt(); + addNewUser(id); return true; } return false; } +void RegisterManager::addNewUser(int id) +{ + //用户为新用户时,在这里初始化所有标签的点击量 + qDebug()<::iterator iter=labelToDb.begin(); + int totalsize=recommendlabel.size(); + int i=0; + QSqlQuery query(userDb); + while(iemailAddress = emailAddress; diff --git a/src/ChangShaTour/registermanager.h b/src/ChangShaTour/registermanager.h index 396de81..e8124ed 100644 --- a/src/ChangShaTour/registermanager.h +++ b/src/ChangShaTour/registermanager.h @@ -35,6 +35,8 @@ public: bool getSendEmailSuccess(); + void addNewUser(int id); + private: QString emailAddress; QString password; diff --git a/src/ChangShaTour/searchresultwidget.cpp b/src/ChangShaTour/searchresultwidget.cpp index d3ec54c..cecfdab 100644 --- a/src/ChangShaTour/searchresultwidget.cpp +++ b/src/ChangShaTour/searchresultwidget.cpp @@ -50,19 +50,11 @@ SearchResultWidget::SearchResultWidget(QWidget *parent) : QWidget(parent) subLayout->addWidget(rtn); subLayout->addWidget(scroll); + subLayout->addLayout(switchLine); - //设置滚动界面布局 - scrollWidget->setLayout(scrollLayout); - for (int i = 0; i < showLimit; i++) - { - scrollLayout->addWidget(btnList[i]); - } - scrollLayout->addLayout(switchLine); switchLine->addWidget(up); switchLine->addWidget(down); - scroll->setWidget(scrollWidget); - connect(web->getReturnBtn(), &QPushButton::clicked, this, &SearchResultWidget::returnWeb); connect(up, &QPushButton::clicked, this, &SearchResultWidget::pageUp); connect(down, &QPushButton::clicked, this, &SearchResultWidget::pageDown); @@ -98,6 +90,8 @@ void SearchResultWidget::getTotalNum() } pageNum = (totalNum + showLimit - 1)/showLimit; + page2cate = (int *)malloc(sizeof(int) * pageNum); + page2offset = (int *)malloc(sizeof(int) * pageNum); } @@ -126,11 +120,13 @@ void SearchResultWidget::queryDatabase(QSqlQuery query) QString addr = address.value(); // QString price = QString::number(avgprice.value()); QString text = name + "\n" + score + "分 " + commentNum + "条评论\n" + addr + "\n";// + "人均" + price + "元"; + QString cateid = cateId.value(); + idList[i] = id.value(); urlList.append(detail.value()); imgList.append(frontimg.value()); - cateIdList.append(cateId.value()); textList.append(text); + cateIdList.append(cateid); i++; } currentQueryLength = i - currentHead; @@ -164,7 +160,7 @@ void SearchResultWidget::setBtns() qDebug() << "info:" << cateList[currentCate] << idList[index] << urlList[index] << imgList[index]; // btnList[index]->setVisible(true); disconnect(btnList[index], 0, 0, 0); - connect(btnList[index], &QToolButton::clicked, this, [=](){web->loadPage(urlList[index],cateIdList[index]); subWidget->setVisible(false); web->setVisible(true); nullWidget->setVisible(false);}); + connect(btnList[index], &QToolButton::clicked, this, [=](){web->loadPage(urlList[index], cateIdList[index]); subWidget->setVisible(false); web->setVisible(true); nullWidget->setVisible(false);}); } for (i; i < showLimit; i++) { @@ -173,8 +169,8 @@ void SearchResultWidget::setBtns() // btnList[index]->setVisible(false); disconnect(btnList[index], 0, 0, 0); } - offset += currentQueryLength; - currentHead += currentQueryLength; +// offset += currentQueryLength; +// currentHead += currentQueryLength; } void SearchResultWidget::querySet() @@ -185,8 +181,18 @@ void SearchResultWidget::querySet() urlList.clear(); imgList.clear(); textList.clear(); + cateIdList.clear(); currentHead = 0; currentQueryLength = 0; + currentCate = page2cate[currentPage - 1]; + currentOffset = page2offset[currentPage - 1]; +// subLayout->removeWidget(scroll); + scroll->takeWidget(); + scrollWidget->deleteLater(); + scrollWidget = new QWidget(); + scrollLayout->deleteLater(); + scrollLayout = new QVBoxLayout(); + scrollWidget->setLayout(scrollLayout); qDebug() << "currentPage:" << currentPage; @@ -195,17 +201,17 @@ void SearchResultWidget::querySet() while (currentHead < showLimit) { //判断是否换表 - if (offset >= lengthList[currentCate]) + if (currentOffset >= lengthList[currentCate]) { currentCate += 1; - offset = 0; - if (currentCate >= 3) + currentOffset = 0; + if (currentCate >= cateList.length()) break; } //查询数据 query.prepare("select * from " + cateList[currentCate] + " where title like :segment limit :offset , :showLimit"); query.bindValue(":segment", "%" + segment + "%"); - query.bindValue(":offset", offset); + query.bindValue(":offset", currentOffset); qDebug() << "currentCate:" << currentCate; // qDebug() << "offset:" << offset; query.bindValue(":showLimit", showLimit); @@ -214,7 +220,21 @@ void SearchResultWidget::querySet() //设置按钮 setBtns(); // qDebug() << "set buttons success"; + + + //设置滚动界面布局 + for (int i = currentHead; i < currentHead + currentQueryLength; i++) + { + scrollLayout->addWidget(btnList[i]); + } + + currentOffset += currentQueryLength; + currentHead += currentQueryLength; } + page2cate[currentPage] = currentCate; + page2offset[currentPage] = currentOffset; + + scroll->setWidget(scrollWidget); } @@ -227,7 +247,9 @@ void SearchResultWidget::showResult() qDebug() << "pageNum:" << pageNum; currentPage = 1; currentCate = 0; - offset = 0; + currentOffset = 0; + page2cate[0] = currentCate; + page2offset[0] = currentOffset; if (totalNum) { querySet(); diff --git a/src/ChangShaTour/searchresultwidget.h b/src/ChangShaTour/searchresultwidget.h index 9988d9c..32a8273 100644 --- a/src/ChangShaTour/searchresultwidget.h +++ b/src/ChangShaTour/searchresultwidget.h @@ -46,12 +46,11 @@ private: QStringList urlList; QStringList imgList; QStringList textList; - QStringList cateIdList; int *idList; + QStringList cateIdList; QStringList cateList; int totalNum; - int offset; int *lengthList; int pageNum; int showLimit; @@ -59,6 +58,10 @@ private: int currentHead; int currentQueryLength; int currentCate; + int currentOffset; + int *page2cate; + int *page2offset; + QVBoxLayout *mainLayout; diff --git a/src/ChangShaTour/sortwidget.cpp b/src/ChangShaTour/sortwidget.cpp index 4688c02..e2291a5 100644 --- a/src/ChangShaTour/sortwidget.cpp +++ b/src/ChangShaTour/sortwidget.cpp @@ -149,7 +149,7 @@ void SortWidget::setScreenBtns() connect(pBtn, SIGNAL(clicked()), signalMapper, SLOT(map())); signalMapper->setMapping(pBtn, pBtn->text()); - funcLine->addWidget(pBtn, nColCnt++, 0); + funcLine->addWidget(pBtn); } funcWidget->setLayout(funcLine); connect(signalMapper, SIGNAL(mapped(QString)), this, SLOT(setSubScreenBtns(QString))); diff --git a/src/ChangShaTour/webwidget.cpp b/src/ChangShaTour/webwidget.cpp index d50f344..08459f1 100644 --- a/src/ChangShaTour/webwidget.cpp +++ b/src/ChangShaTour/webwidget.cpp @@ -40,25 +40,27 @@ QPushButton *WebWidget::getAddBtn() void WebWidget::addToHis(QString url,QString cateId) { QSqlQuery query(userDb); - query.prepare("select historyId from history where url=?"); + query.prepare("select historyId from history where url=? and userId=?"); query.addBindValue(url); + query.addBindValue(Id); query.exec(); query.next(); if(query.isValid()) { - query.prepare("update history set createdtime = now() where url=?"); + query.prepare("update history set createdtime = now() where url=? and userId=?"); query.addBindValue(url); + query.addBindValue(Id); query.exec(); return ; } - query.prepare("select count(*) from history where id = ?"); + query.prepare("select count(*) from history where userId = ?"); query.addBindValue(Id); query.exec(); query.next(); int count=query.value(0).toInt(); if(count>=hisLimit) { - query.prepare("select historyId from history where id = ? order by createdtime"); + query.prepare("select historyId from history where userId = ? order by createdtime"); query.addBindValue(Id); query.exec(); query.next(); @@ -71,7 +73,7 @@ void WebWidget::addToHis(QString url,QString cateId) else { - query.prepare("insert into history (id,url,cateId)values(?,?,?)"); + query.prepare("insert into history (userId,url,cateId)values(?,?,?)"); query.addBindValue(Id); query.addBindValue(url); query.addBindValue(cateId);