Commit df32babd by 李定达

1.修复已知bug;2多终端操作退款卡单问题需要服务端解决3.添加版本号4.更复杂的订单状态和退款状态,5.部分参数配置化

parent d2aca389
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.5.1, 2018-06-05T09:58:11. -->
<!-- Written by QtCreator 3.5.1, 2018-06-07T14:18:04. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
......
INCLUDEPATH += $$PWD
#DEFINES += QS_LOG_LINE_NUMBERS # automatically writes the file and line for each log message
DEFINES += QS_LOG_LINE_NUMBERS # automatically writes the file and line for each log message
#DEFINES += QS_LOG_DISABLE # logging code is replaced with a no-op
#DEFINES += QS_LOG_SEPARATE_THREAD # messages are queued and written from a separate thread
DEFINES += QS_LOG_SEPARATE_THREAD # messages are queued and written from a separate thread
#DEFINES += QS_LOG_WIN_PRINTF_CONSOLE # Use fprintf instead of OutputDebugString on Windows
SOURCES += $$PWD/QsLogDest.cpp \
$$PWD/QsLog.cpp \
......
......@@ -30,69 +30,77 @@ void OrderGetWork::workStart()
{
QLOG_INFO() << "OrderGetWork::workStart : " << QThread::currentThreadId();
unsigned int tmptime = _timeout;
QString error;
do
while(!_stopflag)
{
unsigned int tmptime = _timeout;
unsigned int nexttime = _timeout;
QString error;
if(!OrderGetDataProcess::isBind())
do
{
if(!bingToServer(error))
if(!OrderGetDataProcess::isBind())
{
QLOG_ERROR() << QThread::currentThreadId() << "loginToServer failed";
tmptime = TIMEOUT_TRY_LOGING;
QVariantMap map;
map.insert(EVENT_KEY_STATUS, false);
map.insert(EVENT_KEY_MSG, error);
POSTEVENTTYPE(PosEvent::s_opt_status,map,QVariantMap);
break;
if(!bingToServer(error))
{
QLOG_ERROR() << QThread::currentThreadId() << "loginToServer failed";
tmptime = TIMEOUT_TRY_LOGING;
QVariantMap map;
map.insert(EVENT_KEY_STATUS, false);
map.insert(EVENT_KEY_MSG, error);
POSTEVENTTYPE(PosEvent::s_opt_status,map,QVariantMap);
break;
}
QVariantMap bmap;
bmap.insert(EVENT_KEY_STATUS, true);
bmap.insert(EVENT_KEY_MSG, QString::fromLocal8Bit("绑定成功"));
POSTEVENTTYPE(PosEvent::s_opt_status,bmap,QVariantMap);
}
QVariantMap bmap;
bmap.insert(EVENT_KEY_STATUS, true);
bmap.insert(EVENT_KEY_MSG, QString::fromLocal8Bit("绑定成功"));
POSTEVENTTYPE(PosEvent::s_opt_status,bmap,QVariantMap);
}
if(!_islogin)
{
if(!loginToServer(error))
{
QLOG_ERROR() << QThread::currentThreadId() << "loginToServer failed";
tmptime = TIMEOUT_TRY_LOGING;
QVariantMap map;
map.insert(EVENT_KEY_STATUS, false);
map.insert(EVENT_KEY_MSG, error);
POSTEVENTTYPE(PosEvent::s_login_status,map,QVariantMap);
break;
}
unsigned int nexttime = _timeout;
QVariantMap map;
map.insert(EVENT_KEY_STATUS, true);
POSTEVENTTYPE(PosEvent::s_login_status,map,QVariantMap);
}
if(!_islogin)
{
if(!loginToServer(error))
if(!PullOrder(nexttime, error))
{
QLOG_ERROR() << QThread::currentThreadId() << "loginToServer failed";
tmptime = TIMEOUT_TRY_LOGING;
QLOG_ERROR() << QThread::currentThreadId() << "PullOrder failed";
tmptime = _timeout;
QVariantMap map;
map.insert(EVENT_KEY_STATUS, false);
map.insert(EVENT_KEY_MSG, error);
POSTEVENTTYPE(PosEvent::s_login_status,map,QVariantMap);
POSTEVENTTYPE(PosEvent::s_get_order_status,map,QVariantMap);
break;
}
QVariantMap map;
map.insert(EVENT_KEY_STATUS, true);
POSTEVENTTYPE(PosEvent::s_login_status,map,QVariantMap);
}
tmptime = nexttime;
QLOG_INFO() << QThread::currentThreadId() << "next workStart timeout : " << tmptime;
if(!PullOrder(nexttime, error))
{
QLOG_ERROR() << QThread::currentThreadId() << "PullOrder failed";
tmptime = _timeout;
QVariantMap map;
map.insert(EVENT_KEY_STATUS, false);
map.insert(EVENT_KEY_MSG, error);
}while(0);
QEventLoop loop;
POSTEVENTTYPE(PosEvent::s_get_order_status,map,QVariantMap);
break;
}
QTimer::singleShot(tmptime, this, &OrderGetWork::quit);
tmptime = nexttime;
QLOG_INFO() << QThread::currentThreadId() << "next workStart timeout : " << tmptime;
connect(this, &OrderGetWork::quit, &loop, &QEventLoop::quit);
}while(0);
loop.exec();
QTimer::singleShot(tmptime, this, &OrderGetWork::workStart);
}
}
#ifdef FM_TEST
......@@ -518,7 +526,7 @@ bool OrderGetWork::PullOrder(unsigned int timeout, QString &error)
QJsonObject json, recvjson;
QString realurl;
if(!OrderGetDataProcess::getOrderRequest(_storeinfo, json, _timestamp, _token))
if(!OrderGetDataProcess::getOrderRequest(_storeinfo, json, _timestamp, _token, _autoconfirm))
{
error = QString::fromLocal8Bit("拉单失败,获取门店信息失败");
QLOG_ERROR() << "getLogingRequest failed";
......@@ -539,7 +547,7 @@ bool OrderGetWork::PullOrder(unsigned int timeout, QString &error)
if(!BillSocket::S_Request(json, recvjson, realurl, error))
{
error = QString::fromLocal8Bit("拉单失败,网络错误:").append(error);
QLOG_ERROR() << "pullorder failed";
QLOG_ERROR() << "pullorder failed : " << error;
return false;
}
......@@ -642,9 +650,9 @@ void OrderGetWork::optOrderWithType(const QVariantMap &map)
POSTEVENTTYPE(PosEvent::s_opt_status,tmpmap,QVariantMap);
QString tmpid, tmpstatus;
QString tmpid, tmpstatus, refundstatus;
if(!OrderGetDataProcess::getOrderStatus(recvjson, tmpid, tmpstatus))
if(!OrderGetDataProcess::getOrderStatus(recvjson, tmpid, tmpstatus, refundstatus))
return ;
//PosOrderPool::TryChangeOrderStatus(tmpid, tmpstatus.toInt());
......@@ -654,9 +662,17 @@ void OrderGetWork::optOrderWithType(const QVariantMap &map)
maps.insert(EVENT_KEY_ORDERID, tmpid);
maps.insert(EVENT_KEY_MSG, tmpstatus.toInt());
if(!refundstatus.isEmpty())
maps.insert(EVENT_KEY_STATUS, refundstatus.toInt());
POSTEVENTTYPE(PosEvent::s_change_orderpool,maps,QVariantMap);
}
void OrderGetWork::setAutoconfirm(const QString &autoconfirm)
{
_autoconfirm = autoconfirm;
}
#endif
void OrderGetWork::optOrder(const QJsonArray &orders)
......
......@@ -62,6 +62,8 @@ public:
void setUrl(const QString &url);
void setAutoconfirm(const QString &autoconfirm);
signals:
void quit();
......@@ -89,6 +91,8 @@ private:
QString _timestamp;
//拉单用token
QString _token;
//是否自动接单
QString _autoconfirm;
};
class OrderGetDataProcess
......@@ -129,7 +133,7 @@ private:
return true;
}
static bool getOrderRequest(const QVariantMap &json, QJsonObject &data, QString timestamp, QString token)
static bool getOrderRequest(const QVariantMap &json, QJsonObject &data, QString timestamp, QString token, QString autoconfirm)
{
if(!json.contains(JSON_STOREID) || !json.contains(JSON_STATIONID) ||
!json.contains(JSON_KEY_USERID) || !json.contains(JSON_KEY_PWD) ||
......@@ -142,7 +146,7 @@ private:
//data.insert(JSON_KEY_PWD, json[JSON_KEY_PWD].toString());
data.insert(JSON_KEY_PARTNERID, token);
data.insert(JSON_KEY_TIMESTAMP, timestamp);
data.insert(JSON_KEY_AUTOCONFIRM, "1");
data.insert(JSON_KEY_AUTOCONFIRM, autoconfirm);
return true;
}
......@@ -193,6 +197,8 @@ private:
reqtype = FMH_REFUSEREFUND;
if(status.compare(OPERATION_REFUNDORDER, Qt::CaseInsensitive) == 0)
reqtype = FMH_REFUNDORDER;
if(status.compare(OPERATION_GETDELIVERS, Qt::CaseInsensitive) == 0)
reqtype = FMH_CONFIRM;
}
static bool getAction(int REQ, QString &action)
......@@ -342,7 +348,7 @@ private:
return false;
}
static bool getOrderStatus(const QJsonObject &json, QString &orderid, QString &status)
static bool getOrderStatus(const QJsonObject &json, QString &orderid, QString &status, QString &refundstatus)
{
if(json.contains(JSON_KEY_RESULT) && json[JSON_KEY_RESULT].isObject() &&
json[JSON_KEY_RESULT].toObject().contains(JSON_KEY_ORDERID)&&
......@@ -350,6 +356,12 @@ private:
{
orderid = json[JSON_KEY_RESULT].toObject()[JSON_KEY_ORDERID].toString();
status = json[JSON_KEY_RESULT].toObject()[JSON_KEY_ORDERSTATUS].toString();
if(json[JSON_KEY_RESULT].toObject().contains(JSON_KEY_REFUNDSTATUS))
refundstatus = json[JSON_KEY_RESULT].toObject()[JSON_KEY_REFUNDSTATUS].toString();
else
refundstatus.clear();
return true;
}
return false;
......
......@@ -7,11 +7,15 @@
#include "view/floatForm.h"
#include "control/orderlocalizework.h"
#include "control/orderpushwork.h"
#include "base/Dump/dump.h"
#include <QVariantMap>
#include <QThread>
#include <QDir>
#include <QsLog.h>
#include <QResource>
#include <QSettings>
#include <Windows.h>
using namespace QsLogging;
......@@ -37,6 +41,22 @@ void LoadTheme(const QString& theme)
int main(int argc, char *argv[])
{
SetUnhandledExceptionFilter(FMExcpHandler);
HANDLE m_hMutex = CreateMutex(NULL, FALSE, L"Global\\fmTakeaway" );
if(m_hMutex != NULL)
{
if (GetLastError() == ERROR_ALREADY_EXISTS||GetLastError() == ERROR_ACCESS_DENIED) {
CloseHandle(m_hMutex);
m_hMutex = NULL;
return -1;
}
}
else{
return -1;
}
QApplication a(argc, argv);
LoadTheme(QString("deaufult"));
......@@ -52,10 +72,11 @@ int main(int argc, char *argv[])
logger.addDestination(fileDst);
QsLogging::DestinationPtr consleDest(QsLogging::DestinationFactory::MakeDebugOutputDestination());
logger.addDestination(consleDest);
QLOG_INFO() << QThread::currentThreadId();
QLOG_INFO() << "--------------------------------takeout start------------------------------------";
QThread thread;
QThread threadt;
QLOG_INFO() << "Thread List :" << &thread << &threadt << QThread::currentThread();
OrderGetWork work;
......@@ -76,22 +97,49 @@ int main(int argc, char *argv[])
QObject::connect(&mainform, &MainForm::stopRemind, &floatform, &FloatForm::onStopRemind);
QObject::connect(&floatform, &FloatForm::showMainForm, &mainform, &MainForm::show);
map.insert(JSON_STOREID, "1036");
map.insert(JSON_STATIONID, "saas_bf_pos");
map.insert(JSON_KEY_USERID, "beiguo_saas");
map.insert(JSON_KEY_PWD, "beiguo_saas");
map.insert(JSON_KEY_PARTNERID, "1585");
QString configfile = qApp->applicationDirPath() + "/" + CONFIG_NAME;
QLOG_INFO() << "config file name : " << configfile;
QString storeid = QSettings(configfile, QSettings::IniFormat).value(INI_BASE_STOREID).toString();
QString partnerid = QSettings(configfile, QSettings::IniFormat).value(INI_BASE_PARNETID).toString();
QString userid = QSettings(configfile, QSettings::IniFormat).value(INI_BASE_USERID).toString();
QString pwd = QSettings(configfile, QSettings::IniFormat).value(INI_BASE_PWD).toString();
QString stationid = QSettings(configfile, QSettings::IniFormat).value(INI_BASE_STATIONIID).toString();
QString autoconf = QSettings(configfile, QSettings::IniFormat).value(INI_AUTOCONFIRM).toString();
QString pushurl = QSettings(configfile, QSettings::IniFormat).value(INI_PUSHSERVER).toString();
QString geturl = QSettings(configfile, QSettings::IniFormat).value(INI_GETSERVER).toString();
QLOG_INFO() << "storeid" << storeid << "partnerid" << partnerid << "userid" << userid;
QLOG_INFO() << "pwd" << pwd << "stationid" << stationid << "autoconf" << autoconf;
QLOG_INFO() << "pushurl" << pushurl << "geturl" << geturl;
// map.insert(JSON_STOREID, "1036");
// map.insert(JSON_STATIONID, "saas_bf_pos");
// map.insert(JSON_KEY_USERID, "beiguo_saas");
// map.insert(JSON_KEY_PWD, "beiguo_saas");
// map.insert(JSON_KEY_PARTNERID, "1585");
map.insert(JSON_STOREID, storeid);
map.insert(JSON_STATIONID, stationid);
map.insert(JSON_KEY_USERID, userid);
map.insert(JSON_KEY_PWD, pwd);
map.insert(JSON_KEY_PARTNERID, partnerid);
mainform.setStoreinfo(map);
work.setUrl(QString("http://118.89.167.51:9100//gateway?action=%1&access_token=%2&ver=%3&sign=%4"));
//work.setUrl(QString("http://118.89.167.51:9100//gateway?action=%1&access_token=%2&ver=%3&sign=%4"));
work.setUrl(geturl);
work.setAutoconfirm(autoconf);
work.setStoreinfo(map);
work.setTimeout(300000);
QStringList list;
list.append("118.89.167.51:9083");
//list.append("127.0.0.1:10001");
//list.append("118.89.167.51:9083");
list.append(pushurl);
pwork.setStoreinfo(map);
pwork.setServicelist(list);
......@@ -107,14 +155,6 @@ int main(int argc, char *argv[])
thread.start();
threadt.start();
qDebug() << "----------:" << &thread << &threadt << QThread::currentThread();
//QString token = "40154d0b-a1eb-4c00-81d1-5b4614ed6a39";
//POSTEVENTTYPE(PosEvent::s_token_change, token, QString);
mainform.MyShow();
return a.exec();
......
......@@ -56,6 +56,16 @@ void OrderObject::FromJson(const QJsonObject &json)
return;
}
int OrderObject::getrefund_status() const
{
return refund_status;
}
void OrderObject::setrefund_status(const int& v)
{
refund_status = v;
}
int OrderObject::getservice_fee() const
{
return service_fee;
......
......@@ -8,7 +8,7 @@ class OrderObject : public BaseObject
Q_OBJECT
public:
OrderObject(QObject *parent=0)
:BaseObject(parent){}
:BaseObject(parent){refund_status = -100;}
OrderObject(const OrderObject&p, QObject *parent=0);
OrderObject &operator =(OrderObject const&);
......@@ -40,6 +40,7 @@ public:
Q_PROPERTY (int user_fee READ getuser_fee WRITE setuser_fee)
Q_PROPERTY (int shop_fee READ getshop_fee WRITE setshop_fee)
Q_PROPERTY (int status READ getstatus WRITE setstatus)
Q_PROPERTY (int refund_status READ getrefund_status WRITE setrefund_status)
Q_PROPERTY (int create_time READ getCreate_time WRITE setCreate_time)
Q_PROPERTY (int update_time READ getUpdate_time WRITE setUpdate_time)
Q_PROPERTY (int expire_time READ getExpire_time WRITE setExpire_time)
......@@ -105,6 +106,7 @@ public:
int rest_fee; //未付
QString status_desc; //订单状态描述
int status; //订单状态
int refund_status; //退单状态
int shop_fee; //应收金额(商家和骑士看到的)
int send_fee; //运费金额
QString timestamp; //时间戳
......@@ -113,8 +115,6 @@ public:
int user_fee; //应付金额
QStringList records; //订单操作记
protected:
QString getcustomer_code() const{
return customer_code;
......@@ -122,6 +122,8 @@ protected:
void setcustomer_code(const QString & v){
customer_code = v;
}
int getrefund_status() const;
void setrefund_status(const int& v);
int getservice_fee() const ;
void setservice_fee(const int& v);
int getorder_type() const ;
......
......@@ -39,11 +39,11 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
unsigned int nowtimer = QDateTime::currentDateTime().toTime_t();
for (auto it = s_order_pool.begin(); it != s_order_pool.end(); )
{
QLOG_INFO() << QThread::currentThreadId() << it.key();
Order_Info info = it.value();
QLOG_INFO() << QThread::currentThreadId() << info.order_id << info.order_change_time
<< info.order_last_status << info.order_refund_status <<
info.order_status << info.order_write_status;
// QLOG_INFO() << QThread::currentThreadId() << it.key();
// Order_Info info = it.value();
// QLOG_INFO() << QThread::currentThreadId() << info.order_id << info.order_change_time
// << info.order_last_status << info.order_refund_status <<
// info.order_status << info.order_write_status;
if(it.value().order_change_time > nowtimer && (it.value().order_status == CompleteRefundOrder || it.value().order_status == CompleteOrder))
{
......@@ -109,6 +109,8 @@ void PosOrderPool::loadOrders()
info.order_print_status = query.value(4).toInt();
info.order_last_status = DefaultOrder;
info.order_status = DefaultOrder;
info.order_refund = DefaultOrder;
info.order_last_refund = DefaultOrder;
// info.reserved1 = query.value(5).toInt();
// info.reserved2 = query.value(6).toInt();
// info.reserved3 = query.value(7).toInt();
......@@ -120,16 +122,47 @@ void PosOrderPool::loadOrders()
}
}
void PosOrderPool::GetOrderStatusAndLastStatus(Order_Info orderinfo, int &status, int &laststatus)
{
if(orderinfo.order_last_refund != orderinfo.order_refund)
{
if(orderinfo.order_refund == ApplicationRefundOrder || orderinfo.order_refund == ApplicationPartialRefundOrder)
{
status = orderinfo.order_refund;
laststatus = orderinfo.order_status;
return ;
}
if(orderinfo.order_last_refund == ApplicationPartialRefundOrder && orderinfo.order_refund == CompleteRefundOrder)
{
status = orderinfo.order_status;
laststatus = orderinfo.order_last_refund;
return ;
}
if(orderinfo.order_last_refund == ApplicationRefundOrder && orderinfo.order_refund == CompleteRefundOrder)
{
status = orderinfo.order_refund ;
laststatus = orderinfo.order_last_refund;
return ;
}
}
status = orderinfo.order_status;
laststatus = orderinfo.order_last_status;
return ;
}
void PosOrderPool::removeOrderInfo(QString key)
{
s_order_pool.remove(key);
}
PosOrderPool& PosOrderPool::InitOrderPool()
void PosOrderPool::InitOrderPool()
{
static PosOrderPool orderpool;
return orderpool;
}
bool PosOrderPool::TryInsertOrder(OrderObject order)
......@@ -147,6 +180,9 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
INITORDERINFO(order, info);
QLOG_INFO() << "%%%%%%%%%%%%%%%%%%%%%%%%%%%" << info.order_refund << info.order_last_refund;
QLOG_INFO() << "%%%%%%%%%%%%%%%%%%%%%%%%%%%" << info.order_status << info.order_last_status;
s_order_pool.insert(order.order_id,info);
DEFAULTPOSTEVENT(PosEvent::s_change_order, order.order_id);
......@@ -154,8 +190,6 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
return true;
}
qDebug() << "++++++" << InitOrderPool().thread();
//订单存在
Order_Info oldinfo = s_order_pool[order.order_id];
......@@ -163,7 +197,7 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
UPDATEORDERINFO(oldinfo, order, info);
if(info.order_last_status != info.order_status)
if(info.order_last_status != info.order_status || info.order_last_refund != info.order_refund)
{
s_order_pool.insert(order.order_id, info);
......@@ -175,7 +209,7 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
return false;
}
bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status)
bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refundstatus)
{
if(order_status >= DefaultOrder && order_status <= CompleteOrder)
{
......@@ -186,11 +220,28 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status)
Order_Info info = s_order_pool[key];
if(info.order_last_status != info.order_status && info.order_status != order_status)
if((info.order_last_status != info.order_status && info.order_status != order_status)||
(refundstatus != DefaultOrder && info.order_last_refund != info.order_refund && info.order_refund != refundstatus))
{
info.order_last_status = info.order_status;
info.order_status = (Order_Status)order_status;
info.order_data.status = order_status;
if(info.order_status != order_status)
{
info.order_last_status = info.order_status;
info.order_status = (Order_Status)order_status;
info.order_data.status = order_status;
}
if(info.order_refund != refundstatus)
{
info.order_last_refund = info.order_refund;
info.order_refund = (Order_Status)refundstatus;
info.order_data.refund_status = refundstatus;
}
// QLOG_INFO() << "+++++++++++++++++++++++++++" << info.order_refund << info.order_last_refund;
// QLOG_INFO() << "+++++++++++++++++++++++++++" << info.order_status << info.order_last_status;
// QLOG_INFO() << "+++++++++++++++++++++++++++" << order_status << refundstatus;
info.order_change_time = QDateTime::currentDateTime().toTime_t();
s_order_pool.insert(key, info);
......@@ -253,8 +304,14 @@ bool PosOrderPool::GetOrderObject(QString key, OrderObject &order, int &last_sta
Order_Info info = s_order_pool[key];
int status = DefaultOrder;
GetOrderStatusAndLastStatus(info, status, last_status);
QLOG_WARN() << "###############order status : " << status << "; last status : " << last_status;
order = info.order_data;
last_status = info.order_last_status;
order.status = status;
return true;
}
......@@ -268,8 +325,9 @@ bool PosOrderPool::GetOrderStatus(QString key, int &status, int &last_status)
Order_Info info = s_order_pool[key];
status = info.order_status;
last_status = info.order_last_status;
GetOrderStatusAndLastStatus(info, status, last_status);
QLOG_WARN() << "###############order status : " << status << "; last status : " << last_status;
return true;
}
......@@ -338,7 +396,10 @@ bool PosOrderPool::event(QEvent *e)
if(!info.contains(EVENT_KEY_ORDERID) || !info.contains(EVENT_KEY_MSG))
return true;
PosOrderPool::TryChangeOrderStatus(info[EVENT_KEY_ORDERID].toString(), info[EVENT_KEY_MSG].toInt());
if(info.contains(EVENT_KEY_STATUS))
PosOrderPool::TryChangeOrderStatus(info[EVENT_KEY_ORDERID].toString(), info[EVENT_KEY_MSG].toInt(), info[EVENT_KEY_STATUS].toInt());
else
PosOrderPool::TryChangeOrderStatus(info[EVENT_KEY_ORDERID].toString(), info[EVENT_KEY_MSG].toInt());
return true;
}
......
#ifndef POSORDERPOOL_H
#ifndef POSORDERPOOL_H
#define POSORDERPOOL_H
#include <QObject>
......@@ -14,8 +14,26 @@
#define UPDATEORDERINFO(oldorder, neworder, info) do { \
info.order_id = neworder.order_id; \
info.order_data = neworder; \
info.order_last_status = oldorder.order_status; \
info.order_status = (Order_Status)neworder.status; \
if(oldorder.order_refund != neworder.refund_status) \
{ \
info.order_refund = (Order_Status)neworder.refund_status; \
info.order_last_refund = oldorder.order_refund; \
} \
else \
{ \
info.order_refund = (Order_Status)oldorder.order_refund; \
info.order_last_refund = oldorder.order_last_refund; \
} \
if(oldorder.order_status != neworder.status) \
{ \
info.order_last_status = oldorder.order_status; \
info.order_status = (Order_Status)neworder.status; \
} \
else \
{ \
info.order_last_status = oldorder.order_last_status; \
info.order_status = oldorder.order_status; \
} \
info.order_write_status = oldorder.order_write_status; \
info.order_refund_status = oldorder.order_refund_status; \
info.order_print_status = oldorder.order_print_status; \
......@@ -25,6 +43,8 @@
#define INITORDERINFO(neworder, info) do { \
info.order_id = neworder.order_id; \
info.order_data = neworder; \
info.order_refund = (Order_Status)neworder.refund_status; \
info.order_last_refund = DefaultOrder; \
info.order_last_status = DefaultOrder; \
info.order_status = (Order_Status)neworder.status; \
info.order_write_status = 0; \
......@@ -37,6 +57,8 @@ typedef enum
{
//订单原始状态(推了一个订单号时使用)
DefaultOrder = -100,
//锁定订单
LockOrder = -1,
//新订单
NewOrder = 1,
//确认订单
......@@ -47,8 +69,6 @@ typedef enum
DispatchingOrder = 4,
//已送达
ServiceOrder = 6,
//锁定订单
LockOrder = -1,
//申请退款
ApplicationRefundOrder = 20,
//申请部分退款
......@@ -74,9 +94,13 @@ typedef struct
Order_Status order_status;
//订单上一次状态
Order_Status order_last_status;
//写单状态
int order_write_status;
//退单状态
Order_Status order_last_refund;
//退单状态
Order_Status order_refund;
//本地写单状态
int order_write_status;
//本地退单状态
int order_refund_status;
//订单打印状态
int order_print_status;
......@@ -99,7 +123,7 @@ class PosOrderPool : public QObject
{
Q_OBJECT
public:
static PosOrderPool &InitOrderPool();
static void InitOrderPool();
static QMap<QString, Order_Info> getS_order_pool();
......@@ -114,7 +138,7 @@ public:
private:
static bool TryInsertOrder(OrderObject order);
static bool TryChangeOrderStatus(QString key, int order_status);
static bool TryChangeOrderStatus(QString key, int order_status, int refundstatus = DefaultOrder);
static bool TryChangeOrderWriteStatus(QString key, int order_write_status);
......@@ -126,6 +150,8 @@ private:
explicit PosOrderPool(QObject *parent = 0);
static void GetOrderStatusAndLastStatus(Order_Info orderinfo, int &status, int &laststatus);
void loadOrders();
private:
//互斥读写
......@@ -134,8 +160,6 @@ private:
static QMutex s_mutex;
//定时清理订单池
QTimer _timer;
};
#endif // POSORDERPOOL_H
......@@ -53,6 +53,15 @@
#define INI_AUTOCONFIRM "info/autoconfirm"
#define INI_UIVISIBLE "Ui/visible"
#define INI_PUSHSERVER "info/pushserver"
#define INI_GETSERVER "info/getserver"
#define INI_BASE_STOREID "base/storeid"
#define INI_BASE_PARNETID "base/parnetid"
#define INI_BASE_USERID "base/userid"
#define INI_BASE_PWD "base/pwd"
#define INI_BASE_STATIONIID "base/stationid"
#define JSON_REQTYPE "reqtype"
#define JSON_CURRENTUSER "current_user"
#define JSON_USERNAME "username"
......@@ -136,6 +145,7 @@
#define JSON_KEY_REASONCODE "reason_code"
#define JSON_KEY_REASON "reason"
#define JSON_KEY_ORDERSTATUS "status"
#define JSON_KEY_REFUNDSTATUS "refund_status"
#define EVENT_KEY_STATUS "status"
#define EVENT_KEY_MSG "msg"
......@@ -190,7 +200,7 @@
#define DEFAULT_APP_VER "1.0"
#define DEFAULT_SYSTEM_VER "1.0"
//登陆超时
#define JSON_LOGIN_TIMEOUT 30000
#define JSON_LOGIN_TIMEOUT 60000
// 服务器返回正确值
#define JSON_STATUSCODE_OK 100
// 默认拉取订单的间隔时间
......
......@@ -18,6 +18,7 @@ INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/lib -llibeay32 -lssleay32
LIBS += -lWs2_32
LIBS += -lDbghelp
CONFIG(release, debug|release) {
LIBS += -L../takeout/Release -lfmPrinter
......@@ -26,6 +27,7 @@ CONFIG(release, debug|release) {
}
#DEFINES += FM_TEST
RC_FILE += takeout.rc
CONFIG += c++11
......
#if defined(UNDER_CE)
#include <winbase.h>
#else
#include <winver.h>
#endif
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
#else
FILEFLAGS 0x0L
#endif
FILEOS VOS__WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404b0"
BEGIN
VALUE "CompanyName", "ShangHai Freemud Co., Ltd."
VALUE "FileDescription", "FREEMUD Manager System"
VALUE "FileVersion", "1.0.0.1"
VALUE "InternalName", "FREEMUD"
VALUE "LegalCopyright", "Copyright (C)2017-2020"
VALUE "OriginalFilename", "fmTakeout.exe"
VALUE "ProductName", "fmTakeout"
VALUE "ProductVersion", "1.0.0.1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x804, 1200
END
END
......@@ -67,7 +67,7 @@ bool FloatForm::event(QEvent *e)
return true;
}
if(orderstatus == ApplicationRefundOrder)
if(orderstatus == ApplicationRefundOrder || orderstatus == ApplicationPartialRefundOrder)
{
onStartRemind(1);
return true;
......
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