Commit cd71b166 by yunpeng.song

更改图标样式,增加多用户互斥,修改posSalesId写入db错误的问题,给一些资源增加互斥锁,登录改为同步的。

parent 716544c1
...@@ -54,7 +54,7 @@ FlowControl::FlowControl():semaphore(0) ...@@ -54,7 +54,7 @@ FlowControl::FlowControl():semaphore(0)
connect(this,&FlowControl::doConfirmOrder,this,&FlowControl::_ConfirmOrder,Qt::BlockingQueuedConnection); connect(this,&FlowControl::doConfirmOrder,this,&FlowControl::_ConfirmOrder,Qt::BlockingQueuedConnection);
connect(this,&FlowControl::doRefundOrder,this,&FlowControl::_RefundOrder,Qt::BlockingQueuedConnection); connect(this,&FlowControl::doRefundOrder,this,&FlowControl::_RefundOrder,Qt::BlockingQueuedConnection);
connect(this, &FlowControl::doLogin, this, &FlowControl::onGetNewStoreInfo); connect(this, &FlowControl::doLogin, this, &FlowControl::onGetNewStoreInfo,Qt::BlockingQueuedConnection);
m_tcpServerManage = new JQHttpServer::TcpServerManage(10); m_tcpServerManage = new JQHttpServer::TcpServerManage(10);
m_tcpServerManage->setHttpAcceptedCallback( [this]( const QPointer< JQHttpServer::Session > &session ) m_tcpServerManage->setHttpAcceptedCallback( [this]( const QPointer< JQHttpServer::Session > &session )
...@@ -86,7 +86,7 @@ FlowControl::FlowControl():semaphore(0) ...@@ -86,7 +86,7 @@ FlowControl::FlowControl():semaphore(0)
{ {
status = 0; status = 0;
} }
if(!m_ordersMapXbk.isEmpty()) if(!m_ordersEntryMap.isEmpty())
{ {
iscontinue=1; iscontinue=1;
} }
...@@ -109,6 +109,7 @@ FlowControl::FlowControl():semaphore(0) ...@@ -109,6 +109,7 @@ FlowControl::FlowControl():semaphore(0)
{ {
QLOG_INFO() << QString("bind failed!"); QLOG_INFO() << QString("bind failed!");
} }
Orderstatus::getInstance();
_ClickOMSAssignArea(); _ClickOMSAssignArea();
m_loginTimer->start(20*1000); m_loginTimer->start(20*1000);
semaphore.release(1); semaphore.release(1);
...@@ -140,9 +141,7 @@ void FlowControl::_AddOrderPull(const QString &orderId, const QString &channel, ...@@ -140,9 +141,7 @@ void FlowControl::_AddOrderPull(const QString &orderId, const QString &channel,
orderPull.channel=channel; orderPull.channel=channel;
orderPull.pageNumber=pageNumber; orderPull.pageNumber=pageNumber;
orderPull.pageSize=pageSize; orderPull.pageSize=pageSize;
m_mutex.lock();
m_orderPullList.append(orderPull); m_orderPullList.append(orderPull);
m_mutex.unlock();
} }
void FlowControl::_GetOrder(const QString &orderId, const QString &channel) void FlowControl::_GetOrder(const QString &orderId, const QString &channel)
...@@ -162,7 +161,7 @@ void FlowControl::_ClickOMSAssignArea() ...@@ -162,7 +161,7 @@ void FlowControl::_ClickOMSAssignArea()
void FlowControl::_ClickToLogin() void FlowControl::_ClickToLogin()
{ {
if(!m_bLoginResult||!m_ordersMapXbk.isEmpty()) if(!m_bLoginResult||!m_ordersEntryMap.isEmpty())
{ {
QLOG_INFO()<<"retry click after 20s"; QLOG_INFO()<<"retry click after 20s";
_ClickOMSAssignArea(); _ClickOMSAssignArea();
...@@ -243,17 +242,14 @@ bool FlowControl::_Login() ...@@ -243,17 +242,14 @@ bool FlowControl::_Login()
m_clearTimer->start(1000*60*60*24*2); m_clearTimer->start(1000*60*60*24*2);
m_heartTimer->start(1000*60*5); m_heartTimer->start(1000*60*5);
m_pullTimer->start(1000*10); m_pullTimer->start(1000*10);
onGetBusinessStatus();
emit doPullOrder(QString(),QString()); emit doPullOrder(QString(),QString());
} }
} }
if(!result) if(!result)
{ {
QLOG_INFO() << QString("%1 msec after login...").arg(VALUE_RELOGINTIME); QLOG_INFO() << QString("%1 msec after login...").arg(VALUE_RELOGINTIME);
QTimer::singleShot(VALUE_RELOGINTIME, this, &FlowControl::_Login); QTimer::singleShot(VALUE_RELOGINTIME, this, &FlowControl::_Login);
} }
return result; return result;
} }
...@@ -350,6 +346,7 @@ bool FlowControl::_PullOrder() ...@@ -350,6 +346,7 @@ bool FlowControl::_PullOrder()
} }
} }
} }
orderObject->update_time=QDateTime::currentDateTime().toTime_t();
if(OrderObject::RequestRefund==orderObject->status) if(OrderObject::RequestRefund==orderObject->status)
{ {
emit startRemind(1); emit startRemind(1);
...@@ -365,28 +362,42 @@ bool FlowControl::_PullOrder() ...@@ -365,28 +362,42 @@ bool FlowControl::_PullOrder()
} }
OrderProperpy op; OrderProperpy op;
QString posSaledId=m_orderIdToPosSalesIdMap.value(orderObject->order_id);
switch (orderObject->status){ switch (orderObject->status){
case OrderObject::NewOrder: case OrderObject::NewOrder:
case OrderObject::Confirmed: case OrderObject::Confirmed:
case OrderObject::Sendout: case OrderObject::Sendout:
case OrderObject::ToSend: case OrderObject::ToSend:
case OrderObject::Finished: case OrderObject::Finished:
case OrderObject::RequestRefund:
if(!breaded) if(!breaded)
{ {
op.bCancled = bcancled; op.bCancled = bcancled;
op.bReaded = breaded; op.bReaded = breaded;
op.entryType = 1; op.entryType = 1;
op.pullNum=0; op.pullNum=0;
m_ordersMapXbk.insert(orderObject->order_id, op); m_OrderEntryMutex.lock();
m_ordersEntryMap.insert(orderObject->order_id, op);
m_OrderEntryMutex.unlock();
_ClickOMSAssignArea(); _ClickOMSAssignArea();
} }
break; break;
case OrderObject::AgreeRefund: case OrderObject::AgreeRefund:
case OrderObject::Refunded: case OrderObject::Refunded:
case OrderObject::Cancled: case OrderObject::Cancled:
if(!breaded&&m_ordersMapXbk.contains(orderObject->order_id)) if(!breaded&&m_ordersEntryMap.contains(orderObject->order_id))
m_ordersMapXbk.erase(m_ordersMapXbk.find(orderObject->order_id)); {
if(posSaledId.isEmpty())
{
m_OrderEntryMutex.lock();
m_ordersEntryMap.erase(m_ordersEntryMap.find(orderObject->order_id));
m_OrderEntryMutex.unlock();
}
else{
orderObject->possale_id=posSaledId;
}
}
break; break;
default: default:
break; break;
...@@ -595,7 +606,6 @@ bool FlowControl::_CompleteOrder(const QString& orderId) ...@@ -595,7 +606,6 @@ bool FlowControl::_CompleteOrder(const QString& orderId)
OrderObject *orderObject = m_ordersMap.value(orderId); OrderObject *orderObject = m_ordersMap.value(orderId);
int oldStatus = orderObject->status; int oldStatus = orderObject->status;
orderObject->status = recvJson[JSON_STATUS].toInt(); orderObject->status = recvJson[JSON_STATUS].toInt();
//orderObject->status_desc = recvJson[JSON_STATUSDESC].toString();
emit changeOrderStatus(orderObject, oldStatus); emit changeOrderStatus(orderObject, oldStatus);
} }
} }
...@@ -925,19 +935,23 @@ void FlowControl::_ClearOrder() ...@@ -925,19 +935,23 @@ void FlowControl::_ClearOrder()
{ {
QDateTime currentDateTime= QDateTime::currentDateTime(); QDateTime currentDateTime= QDateTime::currentDateTime();
OrderObject *order=NULL; OrderObject *order=NULL;
m_OrderEntryMutex.lock();
foreach (order, m_ordersMap.values()) { foreach (order, m_ordersMap.values()) {
QDateTime createDateTime=QDateTime::fromTime_t(order->create_time); QDateTime createDateTime=QDateTime::fromTime_t(order->update_time);
qint64 days=createDateTime.daysTo(currentDateTime); qint64 days=createDateTime.daysTo(currentDateTime);
if(days>=2) if(days>=2)
{ {
QLOG_INFO()<<QString("clear order %1").arg(order->order_id); QLOG_INFO()<<QString("clear order %1").arg(order->order_id);
emit clearorder(order->order_id,order->status); emit clearorder(order->order_id,order->status);
m_ordersMap.value(order->order_id)->deleteLater(); m_ordersMap.value(order->order_id)->deleteLater();
m_ordersEntryMap.erase(m_ordersEntryMap.find(order->order_id));
delete m_ordersMap.take(order->order_id); delete m_ordersMap.take(order->order_id);
} }
} }
Orderstatus::getInstance().deleteRecord(QDate::currentDate().addMonths(-1).toString("yyyy-MM-dd")); m_OrderEntryMutex.unlock();
Orderstatus::getInstance().deleteRecord(QDate::currentDate().addMonths(-1).toString("yyyyMMdd"));
} }
bool FlowControl::_GetReplyJson(const QJsonObject &content,QJsonObject &data, QString& error) bool FlowControl::_GetReplyJson(const QJsonObject &content,QJsonObject &data, QString& error)
...@@ -958,7 +972,6 @@ bool FlowControl::_GetReplyJson(const QJsonObject &content,QJsonObject &data, QS ...@@ -958,7 +972,6 @@ bool FlowControl::_GetReplyJson(const QJsonObject &content,QJsonObject &data, QS
else{ else{
actionId=content["actionId"].toInt(); actionId=content["actionId"].toInt();
} }
qDebug()<<actionId;
switch (actionId) { switch (actionId) {
case 1://simphony拉取订单 case 1://simphony拉取订单
result=_Get01ReplyJson(content,data,error); result=_Get01ReplyJson(content,data,error);
...@@ -969,6 +982,9 @@ bool FlowControl::_GetReplyJson(const QJsonObject &content,QJsonObject &data, QS ...@@ -969,6 +982,9 @@ bool FlowControl::_GetReplyJson(const QJsonObject &content,QJsonObject &data, QS
case 3://simphony取消接单 case 3://simphony取消接单
result=_Get03ReplyJson(content,data,error); result=_Get03ReplyJson(content,data,error);
break; break;
case 4://simphony消息回复
result=_Get04ReplyJson(content,data,error);
break;
case 11://推送订单 case 11://推送订单
result=_Get11ReplyJson(content,data,error); result=_Get11ReplyJson(content,data,error);
break; break;
...@@ -1006,15 +1022,15 @@ bool FlowControl::_Get02ReplyJson(const QJsonObject &content, QJsonObject &data, ...@@ -1006,15 +1022,15 @@ bool FlowControl::_Get02ReplyJson(const QJsonObject &content, QJsonObject &data,
QString orderId=content["orderId"].toString(); QString orderId=content["orderId"].toString();
if(m_ordersMap.contains(orderId)) if(m_ordersMap.contains(orderId))
{ {
if(m_orderOperatePair.contains(orderId)) // if(m_orderOperatePair.contains(orderId))
{ // {
if(orderOperation.orderId==orderId) // if(orderOperation.orderId==orderId)
{ // {
emit showAlert(AlertForm::MSGERROR,"订单已经在收银机上操作,请等待结果"); // emit showAlert(AlertForm::MSGERROR,"订单已经在收银机上操作,请等待结果");
error=QString("订单已经在收银机上操作,请等待结果"); // error=QString("订单已经在收银机上操作,请等待结果");
} // }
return false; // return false;
} // }
emit doStartOperateTimer(); emit doStartOperateTimer();
emit doConfirmOrder(orderId); emit doConfirmOrder(orderId);
orderOperation.orderId=orderId; orderOperation.orderId=orderId;
...@@ -1028,6 +1044,7 @@ bool FlowControl::_Get02ReplyJson(const QJsonObject &content, QJsonObject &data, ...@@ -1028,6 +1044,7 @@ bool FlowControl::_Get02ReplyJson(const QJsonObject &content, QJsonObject &data,
error=QString("响应超时"); error=QString("响应超时");
} }
result=m_bOperateResult; result=m_bOperateResult;
//memset(&orderOperation,0, sizeof(orderOperation));
semaphore.release(1); semaphore.release(1);
} }
else{ else{
...@@ -1043,20 +1060,21 @@ bool FlowControl::_Get02ReplyJson(const QJsonObject &content, QJsonObject &data, ...@@ -1043,20 +1060,21 @@ bool FlowControl::_Get02ReplyJson(const QJsonObject &content, QJsonObject &data,
} }
bool FlowControl::_Get03ReplyJson(const QJsonObject &content, QJsonObject &data, QString &error) bool FlowControl::_Get03ReplyJson(const QJsonObject &content, QJsonObject &data, QString &error)
{ {
QLOG_INFO()<<__FUNCTION__;
int result; int result;
if(m_bLoginResult&&content.contains("orderId")){ if(m_bLoginResult&&content.contains("orderId")){
QString orderId=content["orderId"].toString(); QString orderId=content["orderId"].toString();
if(m_ordersMap.contains(orderId)) if(m_ordersMap.contains(orderId))
{ {
if(m_orderOperatePair.contains(orderId)) // if(m_orderOperatePair.contains(orderId))
{ // {
if(orderOperation.orderId==orderId) // if(orderOperation.orderId==orderId)
{ // {
emit showAlert(AlertForm::SUCCESS,"订单已经在收银机上操作,请等待结果"); // emit showAlert(AlertForm::SUCCESS,"订单已经在收银机上操作,请等待结果");
error=QString("订单已经在收银机上操作,请等待结果"); // error=QString("订单已经在收银机上操作,请等待结果");
} // }
return false; // return false;
} // }
emit doStartOperateTimer(); emit doStartOperateTimer();
emit doRefundOrder(orderId,-1,QString("同意退款")); emit doRefundOrder(orderId,-1,QString("同意退款"));
orderOperation.orderId=orderId; orderOperation.orderId=orderId;
...@@ -1070,6 +1088,7 @@ bool FlowControl::_Get03ReplyJson(const QJsonObject &content, QJsonObject &data, ...@@ -1070,6 +1088,7 @@ bool FlowControl::_Get03ReplyJson(const QJsonObject &content, QJsonObject &data,
error=QString("响应超时"); error=QString("响应超时");
} }
result=m_bOperateResult; result=m_bOperateResult;
memset(&orderOperation,0, sizeof(orderOperation));
semaphore.release(1); semaphore.release(1);
} }
...@@ -1084,10 +1103,59 @@ bool FlowControl::_Get03ReplyJson(const QJsonObject &content, QJsonObject &data, ...@@ -1084,10 +1103,59 @@ bool FlowControl::_Get03ReplyJson(const QJsonObject &content, QJsonObject &data,
} }
return result; return result;
} }
bool FlowControl::_Get04ReplyJson(const QJsonObject &content, QJsonObject &data, QString &error)
{
QLOG_INFO()<<__FUNCTION__;
bool result=true;
if(m_bLoginResult&&content.contains("orderId")){
QString orderId=content["orderId"].toString();
QString posSaleId=content["PosSaleId"].toString();
if(!orderId.isEmpty()&&posSaleId.isEmpty())
{
QLOG_INFO()<<QString("%1订单已经成功推送给simphony").arg(orderId);
m_orderIdToPosSalesIdMap.insert(orderId,posSaleId);
if(m_ordersEntryMap.contains(orderId))
{
if(m_ordersEntryMap.value(orderId).entryType==1)
{
Orderstatus::getInstance().putupdate(orderId,1);
Orderstatus::getInstance().PosSalesIdupdate(orderId,posSaleId);
}
else
{
orderId=m_orderIdToPosSalesIdMap.key(posSaleId);
Orderstatus::getInstance().refundupdate(orderId,1);
}
m_OrderEntryMutex.lock();
m_ordersEntryMap.erase(m_ordersEntryMap.find(orderId));
m_OrderEntryMutex.unlock();
}
else{
OrderProperpy op;
op.bCancled = true;
op.bReaded = false;
op.entryType = 0;
op.pullNum=0;
m_OrderEntryMutex.lock();
m_ordersEntryMap.insert(orderId,op);
m_OrderEntryMutex.unlock();
}
}
else{
result=false;
error=QString("订单号不能为空");
}
}
else{
result=false;
error=QString("请求参数错误");
}
return result;
}
bool FlowControl::_Get11ReplyJson(const QJsonObject &content, QJsonObject &data, QString &error) bool FlowControl::_Get11ReplyJson(const QJsonObject &content, QJsonObject &data, QString &error)
{ {
QLOG_INFO()<<__FUNCTION__; QLOG_INFO()<<__FUNCTION__;
int result; bool result=true;
if(!m_bLoginResult){ if(!m_bLoginResult){
error = QString("FMOMS未登录"); error = QString("FMOMS未登录");
return false; return false;
...@@ -1136,44 +1204,25 @@ bool FlowControl::_GetLoginReplyJson(const QJsonObject &content,QString &error) ...@@ -1136,44 +1204,25 @@ bool FlowControl::_GetLoginReplyJson(const QJsonObject &content,QString &error)
bool FlowControl::_GetQueryReplyJson(QJsonObject &data, QString &error, const QString &orderId) bool FlowControl::_GetQueryReplyJson(QJsonObject &data, QString &error, const QString &orderId)
{ {
QLOG_INFO()<<__FUNCTION__<<error<<orderId; QLOG_INFO()<<__FUNCTION__<<error<<orderId;
bool result; bool result=true;
if(!m_bLoginResult) if(!m_bLoginResult)
{ {
error = QString("FMOMS 未登录"); error = QString("FMOMS 未登录");
return false; return false;
} }
if(!orderId.isEmpty()) if(m_ordersEntryMap.isEmpty())
{
if(!m_ordersMapXbk.contains(orderId))
{
error = QString("%1订单不能抓取").arg(orderId);
QLOG_INFO()<<QString("%1订单不能抓取").arg(orderId);
}else
{
QLOG_INFO()<<QString("%1订单已经成功推送给simphony").arg(orderId);
if(m_ordersMapXbk.value(orderId).entryType==1)
{
Orderstatus::getInstance().putupdate(orderId,1);
}
else
{
Orderstatus::getInstance().refundupdate(orderId,1);
}
m_ordersMapXbk.erase(m_ordersMapXbk.find(orderId));
}
}
if(m_ordersMapXbk.isEmpty())
{ {
error = QString("没有新订单待拉取"); error = QString("没有新订单待拉取");
result = false; result = true;
} }
else else
{ {
QString orderId=m_ordersMapXbk.firstKey(); error.clear();
QString orderId=m_ordersEntryMap.firstKey();
int pullNum=4; int pullNum=4;
QMap<QString, OrderProperpy>::iterator iter ; QMap<QString, OrderProperpy>::iterator iter ;
//auto iter=m_ordersMapXbk.Iterator(); //auto iter=m_ordersEntryMap.Iterator();
for(iter=m_ordersMapXbk.begin();iter!=m_ordersMapXbk.end();iter++) for(iter=m_ordersEntryMap.begin();iter!=m_ordersEntryMap.end();iter++)
{ {
OrderProperpy op=iter.value(); OrderProperpy op=iter.value();
int num=op.pullNum; int num=op.pullNum;
...@@ -1184,14 +1233,16 @@ bool FlowControl::_GetQueryReplyJson(QJsonObject &data, QString &error, const QS ...@@ -1184,14 +1233,16 @@ bool FlowControl::_GetQueryReplyJson(QJsonObject &data, QString &error, const QS
} }
} }
OrderObject* orderObject = m_ordersMap.value(orderId); OrderObject* orderObject = m_ordersMap.value(orderId);
if(4==m_ordersMapXbk.value(orderId).pullNum) if(4==m_ordersEntryMap.value(orderId).pullNum)
{ {
OrderProperpy op=m_ordersMapXbk.value(orderId); OrderProperpy op=m_ordersEntryMap.value(orderId);
op.pullNum=0; op.pullNum=0;
m_ordersMapXbk.insert(orderId,op); m_OrderEntryMutex.lock();
m_ordersEntryMap.insert(orderId,op);
m_OrderEntryMutex.unlock();
} }
QJsonObject rObj, cObj; QJsonObject rObj, cObj;
if(m_ordersMapXbk.first().entryType==1) if(m_ordersEntryMap.first().entryType==1)
{ {
rObj.insert("fm_cmd", "put_order"); rObj.insert("fm_cmd", "put_order");
} }
...@@ -1201,6 +1252,7 @@ bool FlowControl::_GetQueryReplyJson(QJsonObject &data, QString &error, const QS ...@@ -1201,6 +1252,7 @@ bool FlowControl::_GetQueryReplyJson(QJsonObject &data, QString &error, const QS
rObj.insert("fm_ver", "1.0"); rObj.insert("fm_ver", "1.0");
cObj.insert("pay_id", "002"); cObj.insert("pay_id", "002");
cObj.insert("pay_str", "非码外卖"); cObj.insert("pay_str", "非码外卖");
cObj.insert("posSales_id", orderObject->possale_id);
cObj.insert("order_status",orderObject->status);//订单的状态 cObj.insert("order_status",orderObject->status);//订单的状态
cObj.insert("pay_ebcode", orderObject->channel); cObj.insert("pay_ebcode", orderObject->channel);
cObj.insert("order_index", orderObject->order_index); cObj.insert("order_index", orderObject->order_index);
...@@ -1306,7 +1358,11 @@ void FlowControl::_OperateTimeOut() ...@@ -1306,7 +1358,11 @@ void FlowControl::_OperateTimeOut()
QLOG_INFO()<<__FUNCTION__; QLOG_INFO()<<__FUNCTION__;
m_bOperateResult=false; m_bOperateResult=false;
semaphore.release(1); semaphore.release(1);
m_orderOperatePair.erase(m_orderOperatePair.find(orderOperation.orderId)); auto iter=m_orderOperatePair.find(orderOperation.orderId);
if(iter!=m_orderOperatePair.end())
{
m_orderOperatePair.erase(iter);
}
} }
......
...@@ -87,17 +87,19 @@ private: ...@@ -87,17 +87,19 @@ private:
QMap<QString, QMultiMap<QString, dishesObject> >m_dishesMap; QMap<QString, QMultiMap<QString, dishesObject> >m_dishesMap;
// 已接单的订单 // 已接单的订单
QMap<QString, OrderProperpy> m_ordersMapXbk; QMap<QString, OrderProperpy> m_ordersEntryMap;
//订单号与pos短号映射
QMap<QString,QString> m_orderIdToPosSalesIdMap;
//记录当前订单操作 //记录当前订单操作
QMap<QString, int> m_orderOperatePair; QMap<QString, int> m_orderOperatePair;
QMutex m_mutex;
//订单拉取记录 //订单拉取记录
QList<PullOrderInfo> m_orderPullList; QList<PullOrderInfo> m_orderPullList;
//订单操作互斥信号 //订单操作互斥信号
QSemaphore semaphore; QSemaphore semaphore;
//订单操作状态 //订单操作状态
OrderOperation orderOperation; OrderOperation orderOperation;
QMutex m_OrderEntryMutex;
signals: signals:
// 发送信号给自己 做登陆 // 发送信号给自己 做登陆
void doLogin(); void doLogin();
...@@ -252,6 +254,7 @@ private slots: ...@@ -252,6 +254,7 @@ private slots:
bool _Get01ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error); bool _Get01ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error);
bool _Get02ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error); bool _Get02ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error);
bool _Get03ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error); bool _Get03ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error);
bool _Get04ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error);
bool _Get11ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error); bool _Get11ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error);
bool _Get12ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error); bool _Get12ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error);
bool _GetLoginReplyJson(const QJsonObject &content, QString &error); bool _GetLoginReplyJson(const QJsonObject &content, QString &error);
......
#include "orderstatus.h" #include "orderstatus.h"
#include "QsLog.h" #include "QsLog.h"
#include <QCoreApplication> #include <QCoreApplication>
...@@ -25,8 +25,7 @@ Orderstatus::Orderstatus() ...@@ -25,8 +25,7 @@ Orderstatus::Orderstatus()
} }
if(!isTableExist){ if(!isTableExist){
QLOG_INFO() << "table status does not exist"; QLOG_INFO() << "table status does not exist";
query.prepare(QString("create table status (orderId varchar(20) primary key, " query.prepare(QString("create table status (orderId varchar(20) primary key,isput int(1),isrefund int(1),isreport int(1),isbackreport int(1),posSalesId varchar(20),creatTime varchar(20))"));
"isput int(1),isrefund int(1),isreport int(1),isbackreport int(1),creatTime varchar(20))"));
if(!query.exec()) if(!query.exec())
{ {
QLOG_ERROR()<<query.lastError().text()<<QString::number(query.lastError().type())<<"create table"; QLOG_ERROR()<<query.lastError().text()<<QString::number(query.lastError().type())<<"create table";
...@@ -55,7 +54,7 @@ bool Orderstatus::statusinsert(const QString &orderId,const QString& creatTime) ...@@ -55,7 +54,7 @@ bool Orderstatus::statusinsert(const QString &orderId,const QString& creatTime)
} }
bool result; bool result;
QSqlQuery query(db); QSqlQuery query(db);
query.prepare(QString("insert into status values('%1',0,0,0,0,'%6')").arg(orderId).arg(creatTime)); query.prepare(QString("insert into status values('%1',0,0,0,0,NUll,'%6')").arg(orderId).arg(creatTime));
qDebug()<<creatTime; qDebug()<<creatTime;
if(!query.exec()) if(!query.exec())
{ {
...@@ -302,6 +301,56 @@ bool Orderstatus::isorderexit(const QString &orderId) ...@@ -302,6 +301,56 @@ bool Orderstatus::isorderexit(const QString &orderId)
return result; return result;
} }
bool Orderstatus::PosSalesIdupdate(const QString &orderId, const QString &posSalesId)
{
m_mutex.lock();
if(!db.open())
{
QLOG_ERROR()<<"sqlite open failed"<<db.lastError().text();
return false;
}
bool result;
QSqlQuery query(db);
query.prepare(QString("update status set posSalesId='%1' where orderId='%2'")
.arg(posSalesId).arg(orderId));
if(!query.exec())
{
QLOG_ERROR()<<query.lastError().text()<<__FUNCTION__;
result= false;
}
else{
QLOG_INFO()<<QString("update orderId %1 posSalesId success").arg(orderId);
result = true;
}
db.close();
m_mutex.unlock();
return result;
}
QString Orderstatus::getPosSalesId(const QString &orderId)
{
m_mutex.lock();
QString result;
if(!db.open())
{
QLOG_ERROR()<<"sqlite open failed"<<db.lastError().text();
return result;
}
QSqlQuery query(db);
query.prepare(QString("select posSalesId from status where orderId='%1'").arg(orderId));
if(!query.exec())
{
QLOG_ERROR()<<query.lastError().text()<<orderId<<__FUNCTION__;
}
while(query.next())
{
result= query.value(0).toString();
}
db.close();
m_mutex.unlock();
return result;
}
bool Orderstatus::deleteRecord(QString creatTime) bool Orderstatus::deleteRecord(QString creatTime)
{ {
m_mutex.lock(); m_mutex.lock();
......
/****************** /******************
*进行sqlite操作 *进行sqlite操作
******************/ ******************/
#ifndef ORDERSTATUS_H #ifndef ORDERSTATUS_H
...@@ -76,6 +76,9 @@ public: ...@@ -76,6 +76,9 @@ public:
*返回:true是,false否 *返回:true是,false否
**/ **/
bool isorderexit(const QString& orderId); bool isorderexit(const QString& orderId);
bool PosSalesIdupdate(const QString& orderId, const QString &posSalesId);
QString getPosSalesId(const QString& orderId);
bool deleteRecord(QString creatTime); bool deleteRecord(QString creatTime);
private: private:
QMutex m_mutex; QMutex m_mutex;
......
#include "SysTray.h" #include "SysTray.h"
#include <QApplication> #include <QApplication>
#include <QThread> #include <QThread>
extern QThread tcpThread; extern QThread tcpThread;
...@@ -9,7 +9,7 @@ SysTray::SysTray(QObject *parent) : ...@@ -9,7 +9,7 @@ SysTray::SysTray(QObject *parent) :
{ {
_CreatMenu(); _CreatMenu();
setIcon(QIcon(":fm.ico")); setIcon(QIcon(":fm.png"));
} }
void SysTray::_CreatMenu() void SysTray::_CreatMenu()
......
#ifndef ORDEROBJECT_H #ifndef ORDEROBJECT_H
#define ORDEROBJECT_H #define ORDEROBJECT_H
#include "Model/baseObject.h" #include "Model/baseObject.h"
...@@ -148,6 +148,7 @@ public: ...@@ -148,6 +148,7 @@ public:
Q_PROPERTY (int delivery_time READ getdelivery_time WRITE setdelivery_time) Q_PROPERTY (int delivery_time READ getdelivery_time WRITE setdelivery_time)
Q_PROPERTY (int delivery_status READ getdelivery_status WRITE setdelivery_status) Q_PROPERTY (int delivery_status READ getdelivery_status WRITE setdelivery_status)
Q_PROPERTY (QString fm_id READ getfm_id WRITE setfm_id) Q_PROPERTY (QString fm_id READ getfm_id WRITE setfm_id)
Q_PROPERTY (QString possale_id READ getpossale_id WRITE setpossale_id)
Q_PROPERTY (QStringList records READ getrecords WRITE setrecords) Q_PROPERTY (QStringList records READ getrecords WRITE setrecords)
Q_PROPERTY (int service_fee READ getservice_fee WRITE setservice_fee) Q_PROPERTY (int service_fee READ getservice_fee WRITE setservice_fee)
Q_PROPERTY (int dis_platform_fee READ getdis_platform_fee WRITE setdis_platform_fee) Q_PROPERTY (int dis_platform_fee READ getdis_platform_fee WRITE setdis_platform_fee)
...@@ -155,11 +156,13 @@ public: ...@@ -155,11 +156,13 @@ public:
Q_PROPERTY (int package_fee READ getpackage_fee WRITE setpackage_fee) Q_PROPERTY (int package_fee READ getpackage_fee WRITE setpackage_fee)
Q_PROPERTY (int product_fee READ getproduct_fee WRITE setproduct_fee) Q_PROPERTY (int product_fee READ getproduct_fee WRITE setproduct_fee)
Q_PROPERTY (int order_type READ getorder_type WRITE setorder_type) Q_PROPERTY (int order_type READ getorder_type WRITE setorder_type)
Q_PROPERTY (int update_time READ getupdate_time WRITE setupdate_time)
int service_fee; //平台佣金 int service_fee; //平台佣金
int dis_platform_fee; //平台承担的优惠金额 int dis_platform_fee; //平台承担的优惠金额
int dis_shop_fee; //商户承担的优惠金额 int dis_shop_fee; //商户承担的优惠金额
int package_fee; //打包费 int package_fee; //打包费
QString possale_id; //pos短号
QString address; //地址 QString address; //地址
QString channel; //渠道 QString channel; //渠道
...@@ -201,8 +204,14 @@ public: ...@@ -201,8 +204,14 @@ public:
int product_fee; // 商户商品金额=商品金额+打包费 int product_fee; // 商户商品金额=商品金额+打包费
int order_type; //订单类型 int order_type; //订单类型
int update_time; //期望送达时间
protected: protected:
inline int getupdate_time() const{return update_time;}
inline void setupdate_time(const int &v){update_time = v;}
inline int getproduct_fee() const{return product_fee;} inline int getproduct_fee() const{return product_fee;}
inline void setproduct_fee(const int &v){product_fee = v;} inline void setproduct_fee(const int &v){product_fee = v;}
...@@ -239,6 +248,10 @@ protected: ...@@ -239,6 +248,10 @@ protected:
inline void setchannelName(const QString &v){channel_name = v;} inline void setchannelName(const QString &v){channel_name = v;}
inline void setpossale_id(const QString &v){possale_id = v;}
inline QString getpossale_id() const{return possale_id;}
inline QString getphone() const{return phone;} inline QString getphone() const{return phone;}
inline void setphone(const QString& v){phone = v;} inline void setphone(const QString& v){phone = v;}
......
#include "floatForm.h" #include "floatForm.h"
#include "ui_floatForm.h" #include "ui_floatForm.h"
#include <QPixmap> #include <QPixmap>
#include "DTools/configManger.h" #include "DTools/configManger.h"
...@@ -18,9 +18,9 @@ FloatForm::FloatForm(QWidget *parent) : ...@@ -18,9 +18,9 @@ FloatForm::FloatForm(QWidget *parent) :
m_bReminding = false; m_bReminding = false;
QPixmap imgNormal(":float_normal.jpg"); QPixmap imgNormal(":float_normal.png");
m_imgNormalSize = imgNormal.size(); m_imgNormalSize = imgNormal.size();
QPixmap imgRemind(":float_remind.jpg"); QPixmap imgRemind(":float_remind.png");
m_imgRemindSize = imgRemind.size(); m_imgRemindSize = imgRemind.size();
m_animation.setTargetObject(this); m_animation.setTargetObject(this);
...@@ -93,7 +93,7 @@ void FloatForm::_Init() ...@@ -93,7 +93,7 @@ void FloatForm::_Init()
setAttribute(Qt::WA_TranslucentBackground); setAttribute(Qt::WA_TranslucentBackground);
setFixedSize(m_imgNormalSize); setFixedSize(m_imgNormalSize);
setStyleSheet("#floatWdg{ border-image: url(:float_normal.jpg); }"); setStyleSheet("#floatWdg{ border-image: url(:float_normal.png); }");
//setStyleSheet("#floatWdg{ border-image: url(:logo.svg); }"); //setStyleSheet("#floatWdg{ border-image: url(:logo.svg); }");
//setStyleSheet("#floatWdg{ border-image: url(:float_normal.png); }"); //setStyleSheet("#floatWdg{ border-image: url(:float_normal.png); }");
...@@ -109,7 +109,7 @@ void FloatForm::_Blink() ...@@ -109,7 +109,7 @@ void FloatForm::_Blink()
m_animation.start(); m_animation.start();
loop.exec(); loop.exec();
this->setFixedSize(m_imgRemindSize); this->setFixedSize(m_imgRemindSize);
ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_remind.jpg);}"); ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_remind.png);}");
//ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_remind.png);}"); //ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_remind.png);}");
m_animation.setStartValue(0); m_animation.setStartValue(0);
m_animation.setEndValue(1); m_animation.setEndValue(1);
...@@ -121,7 +121,7 @@ void FloatForm::_Blink() ...@@ -121,7 +121,7 @@ void FloatForm::_Blink()
loop.exec(); loop.exec();
this->setFixedSize(m_imgNormalSize); this->setFixedSize(m_imgNormalSize);
//ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_normal.png)}"); //ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_normal.png)}");
ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_normal.jpg);}"); ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_normal.png);}");
m_animation.setStartValue(0); m_animation.setStartValue(0);
m_animation.setEndValue(1); m_animation.setEndValue(1);
m_animation.start(); m_animation.start();
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<string>Dialog</string> <string>Dialog</string>
</property> </property>
<property name="windowOpacity"> <property name="windowOpacity">
<double>0.500000000000000</double> <double>0.800000000000000</double>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<property name="leftMargin"> <property name="leftMargin">
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
# #
#------------------------------------------------- #-------------------------------------------------
QT += core gui network printsupport multimedia concurrent sql QT += core gui network multimedia concurrent sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
......
IDI_ICON1 ICON DISCARDABLE"fm.ico" IDI_ICON1 ICON DISCARDABLE "logo.ico"
\ No newline at end of file \ No newline at end of file
#include "mainForm.h" #include "mainForm.h"
#include <QApplication> #include <QApplication>
#include <QDir> #include <QDir>
#include <QResource> #include <QResource>
...@@ -53,12 +53,17 @@ void LoadTheme(const QString& theme) ...@@ -53,12 +53,17 @@ void LoadTheme(const QString& theme)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
HANDLE m_hMutex = CreateMutex(NULL, FALSE, L"fmTakeaway" ); HANDLE m_hMutex = CreateMutex(NULL, FALSE, L"Global\\fmTakeaway" );
if (GetLastError() == ERROR_ALREADY_EXISTS) { if(NULL!=m_hMutex){
CloseHandle(m_hMutex); if (GetLastError() == ERROR_ALREADY_EXISTS) {
m_hMutex = NULL; CloseHandle(m_hMutex);
return -1; m_hMutex = NULL;
return -1;
}
}
else{
return -1;
} }
QApplication a(argc, argv); QApplication a(argc, argv);
......
#include "settingForm.h" #include "settingForm.h"
#include "ui_settingForm.h" #include "ui_settingForm.h"
#include "preDefine.h" #include "preDefine.h"
#include "DTools/configManger.h" #include "DTools/configManger.h"
#include <QPrinterInfo>
#include <QSound> #include <QSound>
SettingForm::SettingForm(QWidget *parent) : SettingForm::SettingForm(QWidget *parent) :
...@@ -12,17 +11,17 @@ SettingForm::SettingForm(QWidget *parent) : ...@@ -12,17 +11,17 @@ SettingForm::SettingForm(QWidget *parent) :
ui->setupUi(this); ui->setupUi(this);
// 初始化打印机选项 // 初始化打印机选项
QString printer = ConfigManger::GetInstance().GetPrinterName(); // QString printer = ConfigManger::GetInstance().GetPrinterName();
QStringList printerList = QPrinterInfo::availablePrinterNames(); // QStringList printerList = QPrinterInfo::availablePrinterNames();
for(int i=0; i<printerList.count(); i++) // for(int i=0; i<printerList.count(); i++)
{ // {
QString name = printerList[i]; // QString name = printerList[i];
ui->settingCbxPrinter->addItem(name); // ui->settingCbxPrinter->addItem(name);
if(!name.compare(printer)) // if(!name.compare(printer))
{ // {
ui->settingCbxPrinter->setCurrentIndex(i); // ui->settingCbxPrinter->setCurrentIndex(i);
} // }
} // }
_Init(); _Init();
} }
......
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