Commit 3193ea90 by NitefullWind

1. 支付信息存入数据库,结算时从数据库查询支付信息。

parent ee2d6b4f
......@@ -34,7 +34,7 @@ bool FMBackup::connect()
}
QString dbname = backupPath + "backupReq.db";
if(!QFile::exists(dbname)) {
isOk = createTable(dbname);
isOk = createDBFile(dbname);
} else {
_db = QSqlDatabase::addDatabase("QSQLITE", "fmvipbackupdb");
_db.setDatabaseName(dbname);
......@@ -46,17 +46,25 @@ bool FMBackup::connect()
FMP_WARN() << QString::fromLocal8Bit("连接失败:") << _db.lastError().text();
}
if(!_db.tables().contains("tbl_req")) {
createTable("tbl_req");
}
if(!_db.tables().contains("tbl_order")) {
createTable("tbl_order");
}
return isOk;
}
bool FMBackup::createTable(const QString &dbname)
bool FMBackup::createDBFile(const QString &dbname)
{
_db = QSqlDatabase::addDatabase("QSQLITE", "fmvipbackupdb");
_db.setDatabaseName(dbname);
_db.open();
QSqlQuery query(_db);
// 创建表
bool isOk = query.exec("create table tbl_req(id integer PRIMARY KEY autoincrement, url varchar(200), req text)");
bool isOk = createTable("tbl_req");
isOk &= createTable("tbl_order");
FMP_INFO() << QString::fromLocal8Bit("创建数据库:") << dbname;
if (!isOk) {
......@@ -65,6 +73,24 @@ bool FMBackup::createTable(const QString &dbname)
return isOk;
}
bool FMBackup::createTable(const QString &tbName)
{
QString sql;
if(tbName == "tbl_req") {
sql = QString("create table tbl_req(id integer PRIMARY KEY autoincrement, url varchar(200), req text)");
} else if(tbName == "tbl_order") {
sql = QString("create table tbl_order(id integer PRIMARY KEY autoincrement, fmId varchar(40), orderContent text)");
}
QSqlQuery query(_db);
// 创建表
bool isOk = query.exec(sql);
if (!isOk) {
FMP_WARN() << QString::fromLocal8Bit("创建表失败:") << query.lastError().text();
}
return isOk;
}
int FMBackup::insertNewRow()
{
if(!_db.isOpen()) {
......@@ -127,3 +153,38 @@ bool FMBackup::reset()
FMP_INFO() << QString::fromLocal8Bit("数据库重置: ") << isOk;
return isOk;
}
bool FMBackup::insertNewOrder(const QString &fmId, const QByteArray &orderContent)
{
if(!_db.isOpen()) {
connect();
}
QSqlQuery query(_db);
bool isOk = query.exec(QString("insert into tbl_order('fmId','orderContent') values('%1','%2');").arg(fmId).arg(QString(orderContent)));
if(!isOk) {
FMP_ERROR() << QString::fromLocal8Bit("插入订单数据失败:fmId: %1, orderContent: %2。失败原因:%3")
.arg(fmId).arg(QString(orderContent)).arg(query.lastError().text());
}
return isOk;
}
QByteArray FMBackup::getOrderByFmId(const QString &fmId)
{
if(!_db.isOpen()) {
connect();
}
QSqlQuery query(_db);
bool isOk = query.exec(QString("select * from tbl_order where (tbl_order.fmId='%1')").arg(fmId));
if(!isOk) {
FMP_ERROR() << QString::fromLocal8Bit("查询订单失败:fmId: %1。失败原因:%2").arg(fmId).arg(query.lastError().text());
}
QByteArray orderContent;
while(query.next())
{
orderContent = query.record().value("orderContent").toByteArray();
}
FMP_INFO() << QString::fromLocal8Bit("查询到订单信息:%1。").arg(QString(orderContent));
return orderContent;
}
......@@ -10,6 +10,9 @@ public:
bool updateReqData(const int id, const QString url, const QString &reqData);
bool removeReqData(const int &id);
int insertNewRow();
bool insertNewOrder(const QString &fmId, const QByteArray &orderContent);
QByteArray getOrderByFmId(const QString &fmId);
QSqlQuery reqDataQuery() const;
bool reset();
private:
......@@ -19,7 +22,9 @@ private:
bool connect();
bool createTable(const QString &dbname);
bool createDBFile(const QString &dbname);
bool createTable(const QString &tbName);
private:
class privateFMBackup
......
......@@ -23,8 +23,6 @@ void TaskFinal::packageServerReq()
p.push_back(PosProps.TransId);
p.push_back(PosProps.Fm_id);
p.push_back(PosProps.Fm_open_id);
p.push_back(PosProps.OrderAmount);
p.push_back(PosProps.PaidAmount);
foreach(auto prop , p) {
transData[ServerProps(prop)] = getPosJsonValue(prop);
}
......@@ -43,7 +41,28 @@ void TaskFinal::packageServerReq()
}
transData["productList"] = products;
int orderAmount = getPosJsonValue(PosProps.OrderAmount).toInt();
int paidAmount = getPosJsonValue(PosProps.PaidAmount).toInt();
QJsonArray payList;
QString fmId = getPosJsonValue(PosProps.Fm_id).toString();
QByteArray orderContent = FMBackup::instance()->getOrderByFmId(fmId);
QJsonObject orderObject = QJsonDocument::fromJson(orderContent).object();
QJsonArray payArray = searchJsonValue(orderObject, "payList").toArray();
foreach (auto pay_v, payArray) {
QJsonObject pay_ob = pay_v.toObject();
if(pay_ob["typeModeFlag"].toString() == "20003") {
payList.append(pay_ob);
isUseVipPay = true;
int pay_amount = pay_ob["amount"].toInt();
orderAmount += pay_amount;
paidAmount += pay_amount;
}
}
transData[ServerProps(PosProps.OrderAmount)] = orderAmount;
transData[ServerProps(PosProps.PaidAmount)] = paidAmount;
foreach(auto p, getPosJsonValue(PosProps.Pay_ids).toArray())
{
QJsonObject pay;
......@@ -71,6 +90,9 @@ void TaskFinal::packageServerReq()
payList.append(pay);
}
transData["payList"] = payList;
serverReqJsonObj["data"] = transData;
}
......
......@@ -4,6 +4,7 @@
#include "fmp_logger_i.h"
#include "fmp_vip_settings.h"
#include "fmnetwork.h"
#include "fmbackup.h"
#include <QJsonDocument>
#include <QJsonObject>
#include <QCryptographicHash>
......@@ -196,6 +197,13 @@ void TaskPay::packagePOSRsp()
}
posRspJsonObj[PosProps.Paid_total_amount] = totalPaid;
posRspJsonObj[PosProps.Pay_ids] = pay_ids;
if(getServerJsonValue(PosProps.StatusCode) == FM_API_SUCCESS)
{
QJsonDocument json(serverRspJsonObj);
QByteArray orderContent = json.toJson(QJsonDocument::Compact);
FMBackup::instance()->insertNewOrder(getServerJsonValue(PosProps.Fm_id).toString(), orderContent);
}
}
void TaskPay::onPay()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment