Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
FMDbMonitor_linux
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
guanghui.cui
FMDbMonitor_linux
Commits
fc7bfe9f
Commit
fc7bfe9f
authored
Oct 12, 2017
by
guanghui.cui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
套餐菜单缓存
parent
c345f981
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
75 additions
and
4 deletions
+75
-4
base/CommonStruct.h
+9
-0
base/IOperation.h
+4
-0
pos_bft/OrderInfo.cpp
+27
-1
pos_bft/OrderInfo.h
+4
-0
src/PayProcess.cpp
+2
-1
src/json.cpp
+27
-1
src/json.h
+2
-1
No files found.
base/CommonStruct.h
View file @
fc7bfe9f
...
@@ -70,6 +70,7 @@ struct TakeawayOrder
...
@@ -70,6 +70,7 @@ struct TakeawayOrder
struct
PrinterMenu
struct
PrinterMenu
{
{
std
::
string
strMenuId
;
//菜品ID
std
::
string
strMenuId
;
//菜品ID
std
::
string
strMenuName
;
//菜品名称
int
iPrinterId
;
//打印机ID(厨房)
int
iPrinterId
;
//打印机ID(厨房)
std
::
string
strDevice
;
//打印机端口(厨房)
std
::
string
strDevice
;
//打印机端口(厨房)
int
iBaud
;
//波特率(厨房)
int
iBaud
;
//波特率(厨房)
...
@@ -89,4 +90,11 @@ struct PrintDevice
...
@@ -89,4 +90,11 @@ struct PrintDevice
std
::
string
strTitle
;
//打印标题
std
::
string
strTitle
;
//打印标题
};
};
//套餐中 单项菜品属性
struct
SetMenuItem
{
std
::
string
strMenuId
;
//菜品id
int
num
;
//数量
};
#endif
#endif
\ No newline at end of file
base/IOperation.h
View file @
fc7bfe9f
#ifndef IOPERATION_H
#ifndef IOPERATION_H
#define IOPERATION_H
#define IOPERATION_H
#include <iostream>
#include <iostream>
#include <map>
#include "BaseDefine.h"
#include "BaseDefine.h"
#include "CommonStruct.h"
#include "CommonStruct.h"
...
@@ -49,6 +50,9 @@ public:
...
@@ -49,6 +50,9 @@ public:
//获取POS菜单
//获取POS菜单
virtual
std
::
vector
<
PrinterMenu
>&
GetPOSMenu
()
=
0
;
virtual
std
::
vector
<
PrinterMenu
>&
GetPOSMenu
()
=
0
;
//获取套餐信息(套餐包含项目)
virtual
std
::
map
<
std
::
string
,
std
::
vector
<
SetMenuItem
>>&
GetSetMenu
()
=
0
;
};
};
#ifdef WIN32
#ifdef WIN32
...
...
pos_bft/OrderInfo.cpp
View file @
fc7bfe9f
...
@@ -516,6 +516,7 @@ bool COrderInfo::GetMenuPrinter()
...
@@ -516,6 +516,7 @@ bool COrderInfo::GetMenuPrinter()
{
{
LOG
(
INFO
)
<<
"---------------------get printer service--------------------"
;
LOG
(
INFO
)
<<
"---------------------get printer service--------------------"
;
vecPrinterMenus
.
clear
();
vecPrinterMenus
.
clear
();
vecSetMenu
.
clear
();
std
::
vector
<
PrintDevice
>
vecDevices
;
std
::
vector
<
PrintDevice
>
vecDevices
;
int
nErrCode
=
0
;
int
nErrCode
=
0
;
...
@@ -570,11 +571,12 @@ bool COrderInfo::GetMenuPrinter()
...
@@ -570,11 +571,12 @@ bool COrderInfo::GetMenuPrinter()
//查询菜单数据
//查询菜单数据
//PrintQ1:厨房打印机 PrintQ5:上菜单打印机
//PrintQ1:厨房打印机 PrintQ5:上菜单打印机
sprintf
(
mysql
->
sqlStr
,
"%s"
,
"SELECT Item,PrintQ1,PrintQ5 FROM tbl_Menu;"
);
sprintf
(
mysql
->
sqlStr
,
"%s"
,
"SELECT Item,PrintQ1,PrintQ5
,Name3,IsSetMenu
FROM tbl_Menu;"
);
nErrCode
=
mysql
->
query
();
nErrCode
=
mysql
->
query
();
while
((
mysql
->
_row
=
mysql_fetch_row
(
mysql
->
_result
))
!=
NULL
){
while
((
mysql
->
_row
=
mysql_fetch_row
(
mysql
->
_result
))
!=
NULL
){
PrinterMenu
menu
;
PrinterMenu
menu
;
menu
.
strMenuId
=
mysql
->
_row
[
0
];
menu
.
strMenuId
=
mysql
->
_row
[
0
];
menu
.
strMenuName
=
mysql
->
_row
[
3
];
menu
.
iPrinterId
=
atoi
(
mysql
->
_row
[
1
]);
menu
.
iPrinterId
=
atoi
(
mysql
->
_row
[
1
]);
for
(
auto
dev
:
vecDevices
){
for
(
auto
dev
:
vecDevices
){
if
(
menu
.
iPrinterId
==
dev
.
iPrintQ
){
if
(
menu
.
iPrinterId
==
dev
.
iPrintQ
){
...
@@ -595,6 +597,11 @@ bool COrderInfo::GetMenuPrinter()
...
@@ -595,6 +597,11 @@ bool COrderInfo::GetMenuPrinter()
}
}
}
}
vecPrinterMenus
.
push_back
(
menu
);
vecPrinterMenus
.
push_back
(
menu
);
//如果是套餐,id存入vecSetMenu
int
setMenu
=
atoi
(
mysql
->
_row
[
4
]);
if
(
1
==
setMenu
)
vecSetMenu
.
push_back
(
menu
.
strMenuId
);
}
}
mysql_free_result
(
mysql
->
_result
);
mysql_free_result
(
mysql
->
_result
);
if
(
nErrCode
==-
1
)
if
(
nErrCode
==-
1
)
...
@@ -612,6 +619,25 @@ std::vector<PrinterMenu>& COrderInfo::GetPOSMenu()
...
@@ -612,6 +619,25 @@ std::vector<PrinterMenu>& COrderInfo::GetPOSMenu()
return
vecPrinterMenus
;
return
vecPrinterMenus
;
}
}
std
::
map
<
std
::
string
,
std
::
vector
<
SetMenuItem
>>&
COrderInfo
::
GetSetMenu
()
{
mapSetMenu
.
clear
();
for
(
auto
id
:
vecSetMenu
){
std
::
vector
<
SetMenuItem
>
vecItem
;
snprintf
(
mysql
->
sqlStr
,
SQL_BUFFER_SIZE
,
"SELECT ChildItem,UnitQty FROM tbl_SetMenu WHERE ParentItem='%s';"
,
id
.
data
());
mysql
->
query
();
while
((
mysql
->
_row
=
mysql_fetch_row
(
mysql
->
_result
))
!=
NULL
){
SetMenuItem
item
;
item
.
strMenuId
=
mysql
->
_row
[
0
];
item
.
num
=
atoi
(
mysql
->
_row
[
1
]);
vecItem
.
push_back
(
item
);
}
mysql_free_result
(
mysql
->
_result
);
mapSetMenu
.
insert
(
make_pair
(
id
,
vecItem
));
}
return
mapSetMenu
;
}
void
COrderInfo
::
CleanOldData
()
void
COrderInfo
::
CleanOldData
()
{
{
sprintf
(
mysql
->
sqlStr
,
"%s"
,
"DELETE FROM fmTakeaway WHERE insert_time < DATE_SUB(CURDATE(),INTERVAL 6 MONTH);"
);
sprintf
(
mysql
->
sqlStr
,
"%s"
,
"DELETE FROM fmTakeaway WHERE insert_time < DATE_SUB(CURDATE(),INTERVAL 6 MONTH);"
);
...
...
pos_bft/OrderInfo.h
View file @
fc7bfe9f
...
@@ -68,6 +68,8 @@ public:
...
@@ -68,6 +68,8 @@ public:
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
std
::
vector
<
PrinterMenu
>&
GetPOSMenu
();
std
::
vector
<
PrinterMenu
>&
GetPOSMenu
();
//获取套餐信息
std
::
map
<
std
::
string
,
std
::
vector
<
SetMenuItem
>>&
GetSetMenu
();
std
::
string
m_FMPay
;
std
::
string
m_FMPay
;
...
@@ -81,6 +83,8 @@ private:
...
@@ -81,6 +83,8 @@ private:
std
::
vector
<
fmPOSType
>
vecPayTypes
;
//非码-商户 支付类型对应表
std
::
vector
<
fmPOSType
>
vecPayTypes
;
//非码-商户 支付类型对应表
std
::
vector
<
fmPOSType
>
vecTakewayTypes
;
//非码-商户 外卖类型对应表
std
::
vector
<
fmPOSType
>
vecTakewayTypes
;
//非码-商户 外卖类型对应表
std
::
vector
<
PrinterMenu
>
vecPrinterMenus
;
//菜单-打印机 类型对应表
std
::
vector
<
PrinterMenu
>
vecPrinterMenus
;
//菜单-打印机 类型对应表
std
::
vector
<
std
::
string
>
vecSetMenu
;
//菜单中是套餐的项目
std
::
map
<
std
::
string
,
std
::
vector
<
SetMenuItem
>>
mapSetMenu
;
//套餐(key:套餐id、value:套餐条目)
char
*
UTF8ToLatin1
(
const
char
*
str
);
char
*
UTF8ToLatin1
(
const
char
*
str
);
void
CleanOldData
();
//清理超过六个月数据
void
CleanOldData
();
//清理超过六个月数据
...
...
src/PayProcess.cpp
View file @
fc7bfe9f
...
@@ -330,10 +330,11 @@ void *FunTakeaway(void* lpParamter)
...
@@ -330,10 +330,11 @@ void *FunTakeaway(void* lpParamter)
else
if
(
order
.
fm_cmd
==
"get_menu"
){
else
if
(
order
.
fm_cmd
==
"get_menu"
){
LOG
(
INFO
)
<<
"------get pos menu------"
;
LOG
(
INFO
)
<<
"------get pos menu------"
;
std
::
vector
<
PrinterMenu
>
&
vecMenu
=
dbOperation
->
GetPOSMenu
();
std
::
vector
<
PrinterMenu
>
&
vecMenu
=
dbOperation
->
GetPOSMenu
();
std
::
map
<
std
::
string
,
std
::
vector
<
SetMenuItem
>>
&
mapSetMenu
=
dbOperation
->
GetSetMenu
();
// for(auto menu:vecMenu){
// for(auto menu:vecMenu){
// LOG(INFO)<<"idMenu"<<menu.idMenu<<" idPrinter:"<<menu.idPrinter<<" device:"<<menu.device;
// LOG(INFO)<<"idMenu"<<menu.idMenu<<" idPrinter:"<<menu.idPrinter<<" device:"<<menu.device;
// }
// }
std
::
string
resJson
=
GetPOSMenuJson
(
vecMenu
);
std
::
string
resJson
=
GetPOSMenuJson
(
vecMenu
,
mapSetMenu
);
//LOG(INFO)<<"res JOSN"<<resJson.data();
//LOG(INFO)<<"res JOSN"<<resJson.data();
// statusCode=1001;
// statusCode=1001;
// msg="hello world";
// msg="hello world";
...
...
src/json.cpp
View file @
fc7bfe9f
...
@@ -202,7 +202,7 @@ std::string GetTakeawayResultJson(const int statuscode,const char* msg)
...
@@ -202,7 +202,7 @@ std::string GetTakeawayResultJson(const int statuscode,const char* msg)
return
buffer
.
GetString
();
return
buffer
.
GetString
();
}
}
std
::
string
GetPOSMenuJson
(
std
::
vector
<
PrinterMenu
>
&
vecMenu
)
std
::
string
GetPOSMenuJson
(
std
::
vector
<
PrinterMenu
>
&
vecMenu
,
std
::
map
<
std
::
string
,
std
::
vector
<
SetMenuItem
>>
&
mapSetMenu
)
{
{
rapidjson
::
Document
document
;
rapidjson
::
Document
document
;
document
.
SetObject
();
document
.
SetObject
();
...
@@ -214,6 +214,7 @@ std::string GetPOSMenuJson(std::vector<PrinterMenu> &vecMenu)
...
@@ -214,6 +214,7 @@ std::string GetPOSMenuJson(std::vector<PrinterMenu> &vecMenu)
rapidjson
::
Value
obj
(
rapidjson
::
kObjectType
);
rapidjson
::
Value
obj
(
rapidjson
::
kObjectType
);
obj
.
AddMember
(
"iPrinterId"
,
vecMenu
[
i
].
iPrinterId
,
allocator
);
obj
.
AddMember
(
"iPrinterId"
,
vecMenu
[
i
].
iPrinterId
,
allocator
);
obj
.
AddMember
(
"strMenuId"
,
rapidjson
::
Value
(
vecMenu
[
i
].
strMenuId
.
c_str
(),
document
.
GetAllocator
()),
allocator
);
obj
.
AddMember
(
"strMenuId"
,
rapidjson
::
Value
(
vecMenu
[
i
].
strMenuId
.
c_str
(),
document
.
GetAllocator
()),
allocator
);
obj
.
AddMember
(
"strMenuName"
,
rapidjson
::
Value
(
vecMenu
[
i
].
strMenuName
.
c_str
(),
document
.
GetAllocator
()),
allocator
);
obj
.
AddMember
(
"strDevice"
,
rapidjson
::
Value
(
vecMenu
[
i
].
strDevice
.
c_str
(),
document
.
GetAllocator
()),
allocator
);
obj
.
AddMember
(
"strDevice"
,
rapidjson
::
Value
(
vecMenu
[
i
].
strDevice
.
c_str
(),
document
.
GetAllocator
()),
allocator
);
obj
.
AddMember
(
"iBaud"
,
vecMenu
[
i
].
iBaud
,
allocator
);
obj
.
AddMember
(
"iBaud"
,
vecMenu
[
i
].
iBaud
,
allocator
);
obj
.
AddMember
(
"strTitle"
,
rapidjson
::
Value
(
vecMenu
[
i
].
strTitle
.
c_str
(),
document
.
GetAllocator
()),
allocator
);
obj
.
AddMember
(
"strTitle"
,
rapidjson
::
Value
(
vecMenu
[
i
].
strTitle
.
c_str
(),
document
.
GetAllocator
()),
allocator
);
...
@@ -226,6 +227,31 @@ std::string GetPOSMenuJson(std::vector<PrinterMenu> &vecMenu)
...
@@ -226,6 +227,31 @@ std::string GetPOSMenuJson(std::vector<PrinterMenu> &vecMenu)
document
.
AddMember
(
"MenuList"
,
arrayJson
,
allocator
);
document
.
AddMember
(
"MenuList"
,
arrayJson
,
allocator
);
//套餐转换为JSON
//{"SetMenuMap":[{"strSetMenuId":"123456","arrayItems":[{"strMenuId":"2356","iNum":1},{}},{}]}
rapidjson
::
Value
arraySetMenu
(
rapidjson
::
kArrayType
);
std
::
map
<
std
::
string
,
std
::
vector
<
SetMenuItem
>>::
iterator
iter
;
LOG
(
INFO
)
<<
"set menu start"
;
for
(
iter
=
mapSetMenu
.
begin
();
iter
!=
mapSetMenu
.
end
();
iter
++
){
rapidjson
::
Value
obj
(
rapidjson
::
kObjectType
);
obj
.
AddMember
(
"strSetMenuId"
,
rapidjson
::
Value
(
iter
->
first
.
c_str
(),
document
.
GetAllocator
()),
allocator
);
rapidjson
::
Value
arrayMenu
(
rapidjson
::
kArrayType
);
for
(
auto
menu
:
iter
->
second
){
rapidjson
::
Value
objMenu
(
rapidjson
::
kObjectType
);
objMenu
.
AddMember
(
"strMenuId"
,
rapidjson
::
Value
(
menu
.
strMenuId
.
c_str
(),
document
.
GetAllocator
()),
allocator
);
objMenu
.
AddMember
(
"iNum"
,
menu
.
num
,
allocator
);
arrayMenu
.
PushBack
(
objMenu
,
allocator
);
}
obj
.
AddMember
(
"arrayItems"
,
arrayMenu
,
allocator
);
arraySetMenu
.
PushBack
(
obj
,
allocator
);
//cout<<"| "<<iter->first<<" | "<<iter->second<<" |"<<endl;
}
document
.
AddMember
(
"SetMenuMap"
,
arraySetMenu
,
allocator
);
rapidjson
::
StringBuffer
buffer
;
rapidjson
::
StringBuffer
buffer
;
rapidjson
::
Writer
<
rapidjson
::
StringBuffer
>
writer
(
buffer
);
rapidjson
::
Writer
<
rapidjson
::
StringBuffer
>
writer
(
buffer
);
document
.
Accept
(
writer
);
document
.
Accept
(
writer
);
...
...
src/json.h
View file @
fc7bfe9f
#ifndef JSON_H
#ifndef JSON_H
#define JSON_H
#define JSON_H
#include <map>
#include "rapidjsonheader.h"
#include "rapidjsonheader.h"
#include "../base/CommonStruct.h"
#include "../base/CommonStruct.h"
...
@@ -14,6 +15,6 @@ bool GetTakeawayOrder(const char* json, TakeawayOrder &order);
...
@@ -14,6 +15,6 @@ bool GetTakeawayOrder(const char* json, TakeawayOrder &order);
//获取外卖订单返回结果的json字串
//获取外卖订单返回结果的json字串
std
::
string
GetTakeawayResultJson
(
const
int
statuscode
,
const
char
*
msg
);
std
::
string
GetTakeawayResultJson
(
const
int
statuscode
,
const
char
*
msg
);
std
::
string
GetPOSMenuJson
(
std
::
vector
<
PrinterMenu
>
&
vecMenu
);
std
::
string
GetPOSMenuJson
(
std
::
vector
<
PrinterMenu
>
&
vecMenu
,
std
::
map
<
std
::
string
,
std
::
vector
<
SetMenuItem
>>
&
mapSetMenu
);
#endif
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment