Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
familyMart_takeaway
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
familyMart_takeaway
Commits
7273005e
Commit
7273005e
authored
Feb 06, 2018
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add 1:配置文件增加字段
Add 2:新增json请求返回的数据包装函数
parent
32f68acc
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
353 additions
and
99 deletions
+353
-99
bin/config.ini
+11
-1
src/JsonModule.cpp
+176
-0
src/JsonModule.h
+39
-0
src/main.cpp
+127
-98
No files found.
bin/config.ini
View file @
7273005e
[SYS]
[SYS]
ip
=
127.0.0.1
port
=
24446
[ODS]
ip
=
"115.234.23.176"
pushPort
=
8996
recvPort
=
8997
[POS]
ip
=
"127.0.0.1"
port
=
24445
src/JsonModule.cpp
View file @
7273005e
...
@@ -176,6 +176,182 @@ void JsonModule::getPushOrders(IN const char* json,OUT std::vector<orderObj> &ve
...
@@ -176,6 +176,182 @@ void JsonModule::getPushOrders(IN const char* json,OUT std::vector<orderObj> &ve
}
}
}
}
bool
JsonModule
::
isInitData
(
const
std
::
string
&
data
)
{
rapidjson
::
Document
document
;
// 定义一个Document对象
document
.
Parse
(
json
);
// 解析,Parse()无返回值,也不会抛异常
if
(
document
.
HasParseError
())
// 通过HasParseError()来判断解析是否成功
{
LOG
(
ERROR
)
<<
"JSON parse error:"
<<
document
.
GetParseError
()
<<
":"
<<
document
.
GetErrorOffset
();
return
false
;
}
return
document
[
"fm_cmd"
].
GetInt
()
==
1000
;
}
bool
JsonModule
::
checkInitData
(
const
std
::
string
&
data
,
int
&
posListenPort
)
{
rapidjson
::
Document
document
;
// 定义一个Document对象
document
.
Parse
(
data
);
// 解析,Parse()无返回值,也不会抛异常
if
(
document
.
HasParseError
())
// 通过HasParseError()来判断解析是否成功
{
LOG
(
ERROR
)
<<
"JSON parse error:"
<<
document
.
GetParseError
()
<<
":"
<<
document
.
GetErrorOffset
();
return
false
;
}
if
(
document
[
"store_id"
].
GetString
().
empty
()
||
document
[
"store_id"
].
GetString
().
empty
()
||
document
[
"pos_id"
].
GetString
().
empty
()
||
document
[
"operator_id"
].
GetString
().
empty
()
||
!
document
.
HasMember
(
"is_master"
)
||
document
[
"listen_port"
].
GetInt
()
<
0
)
{
return
false
;
}
posListenPort
=
document
[
"listen_port"
].
GetInt
();
return
true
;
}
bool
JsonModule
::
getPosResponseData
(
int
status
,
const
std
::
string
&
msg
,
std
::
string
&
result
)
{
rapidjson
::
StringBuffer
buffer
;
rapidjson
::
Writer
<
rapidjson
::
StringBuffer
>
writer
(
buffer
);
writer
.
StartObject
();
writer
.
Key
(
"status_code"
);
writer
.
Int
(
status
);
writer
.
Key
(
"msg"
);
writer
.
String
(
msg
.
c_str
());
writer
.
EndObject
();
result
=
buffer
.
GetString
();
return
true
;
}
bool
JsonModule
::
getPosResponseData
(
const
std
::
string
&
odsResponse
,
std
::
string
&
result
)
{
result
=
"{
\"
status_code
\"
:100,
\"
msg
\"
:
\"\"
}"
;
return
true
;
}
bool
JsonModule
::
getOdsResponseData
(
int
status_code
,
const
std
::
string
&
msg
,
std
::
string
&
result
)
{
/*
{
"type" : 2,
"order_id" : "xxxxx",
"status" : 1,
"status_code" : 100,
"msg" : "接收订单成功"
}
*/
rapidjson
::
StringBuffer
buffer
;
rapidjson
::
Writer
<
rapidjson
::
StringBuffer
>
writer
(
buffer
);
writer
.
StartObject
();
writer
.
Key
(
"type"
);
writer
.
Int
(
2
);
writer
.
Key
(
"order_id"
);
writer
.
String
(
""
);
writer
.
Key
(
"status"
);
writer
.
Int
(
0
);
writer
.
Key
(
"status_code"
);
writer
.
Int
(
status_code
);
writer
.
Key
(
"msg"
);
writer
.
String
(
msg
.
c_str
());
writer
.
EndObject
();
result
=
buffer
.
GetString
();
return
true
;
}
bool
JsonModule
::
getOdsResponseData
(
const
std
::
string
&
posResponse
,
const
std
::
string
&
orderData
,
std
::
string
&
result
)
{
int
status_code
;
std
::
string
msg
;
std
::
string
order_id
;
int
status
;
if
(
posResponse
.
empty
()
||
orderData
.
empty
()
)
return
false
;
rapidjson
::
Document
document
,
document1
;
document
.
Parse
(
posResponse
);
document1
.
Parse
(
orderData
);
if
(
document
.
HasParseError
()
||
document1
.
HasParseError
())
{
return
false
;
}
if
(
!
document
.
HasMember
(
"status_code"
)
||
!
document1
.
HasMember
(
"order_id"
)
||
!
document1
.
HasMember
(
"status"
)
)
{
return
false
;
}
status_code
=
document
[
"status_code"
].
GetInt
();
msg
=
document
[
"msg"
].
GetString
();
order_id
=
document1
[
"order_id"
].
GetString
();
status
=
document1
[
"status"
].
GetInt
();
rapidjson
::
StringBuffer
buffer
;
rapidjson
::
Writer
<
rapidjson
::
StringBuffer
>
writer
(
buffer
);
writer
.
StartObject
();
writer
.
Key
(
"type"
);
writer
.
Int
(
2
);
writer
.
Key
(
"order_id"
);
writer
.
String
(
order_id
.
c_str
());
writer
.
Key
(
"status"
);
writer
.
Int
(
status
);
writer
.
Key
(
"status_code"
);
writer
.
Int
(
status_code
);
writer
.
Key
(
"msg"
);
writer
.
String
(
msg
.
c_str
());
writer
.
EndObject
();
result
=
buffer
.
GetString
();
return
true
;
}
bool
JsonModule
::
convertDataPos2Ods
(
const
std
::
string
&
data
,
std
::
string
&
result
)
{
}
bool
JsonModule
::
convertDataOds2Pos
(
const
std
::
string
&
data
,
std
::
string
&
result
)
{
rapidjson
::
Document
data
;
document
.
Parse
(
posResponse
);
document1
.
Parse
(
orderData
);
if
(
document
.
HasParseError
()
||
document1
.
HasParseError
())
{
return
false
;
}
if
(
!
document
.
HasMember
(
"status_code"
)
||
!
document1
.
HasMember
(
"order_id"
)
||
!
document1
.
HasMember
(
"status"
)
)
{
return
false
;
}
}
std
::
string
JsonModule
::
convertToNewOrderJson
(
orderObj
&
obj
)
std
::
string
JsonModule
::
convertToNewOrderJson
(
orderObj
&
obj
)
{
{
rapidjson
::
StringBuffer
buffer
;
rapidjson
::
StringBuffer
buffer
;
...
...
src/JsonModule.h
View file @
7273005e
...
@@ -14,6 +14,45 @@ public:
...
@@ -14,6 +14,45 @@ public:
void
getPushOrders
(
IN
const
char
*
json
,
OUT
std
::
vector
<
orderObj
>
&
vecOrders
);
void
getPushOrders
(
IN
const
char
*
json
,
OUT
std
::
vector
<
orderObj
>
&
vecOrders
);
/* 功能:判断是否是初始化数据
* 参数:[1]待判断数据
* 返回:...
* */
bool
isInitData
(
IN
const
std
::
string
&
data
);
/* 功能:检查初始化数据是否可用
* 参数:[1]待检查数据[2]POS监听端口
* 返回:是否正确格式
* */
bool
checkInitData
(
IN
const
std
::
string
&
data
,
OUT
int
&
posListenPort
);
/* 功能:获取POS请求的返回数据
* 参数:[1]状态码[2]消息[3]转换后数据
* 重载:[1]ODS返回数据[2]转换后数据
* 返回:是否转换成功
* */
bool
getPosResponseData
(
IN
int
status
,
IN
const
std
::
string
&
msg
,
OUT
std
::
string
&
result
);
bool
getPosResponseData
(
IN
const
std
::
string
&
odsResponse
,
OUT
std
::
string
&
result
);
/* 功能:获取ODS推送的返回数据
* 参数:[1]状态码[2]消息[3]转换后数据
* 重载:[1]POS返回数据[2]订单数据[3]转换后数据
* 返回:是否转换成功
* */
bool
getOdsResponseData
(
IN
int
status_code
,
IN
const
std
::
string
&
msg
,
OUT
std
::
string
&
result
);
bool
getOdsResponseData
(
IN
const
std
::
string
&
posResponse
,
IN
const
std
::
string
&
orderData
,
OUT
std
::
string
&
result
);
/* 功能:转换POS数据格式到中台数据格式
* 参数:[1]POS数据格式[2]转换后数据
* 返回:是否转换成功
* */
bool
convertDataPos2Ods
(
IN
const
std
::
string
&
data
,
OUT
std
::
string
&
result
);
/* 功能:转换中台数据格式到POS数据格式
* 参数:[1]中台数据格式[2]转换后数据
* 返回:是否转换成功
* */
bool
convertDataOds2Pos
(
IN
const
std
::
string
&
data
,
OUT
std
::
string
&
result
);
std
::
string
convertToNewOrderJson
(
orderObj
&
obj
);
std
::
string
convertToNewOrderJson
(
orderObj
&
obj
);
std
::
string
convertToOrderStatusJson
(
orderStatusObj
&
obj
);
std
::
string
convertToOrderStatusJson
(
orderStatusObj
&
obj
);
std
::
string
convertToRefundJson
(
refundObj
&
obj
);
std
::
string
convertToRefundJson
(
refundObj
&
obj
);
...
...
src/main.cpp
View file @
7273005e
This diff is collapsed.
Click to expand it.
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