Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
openresty
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tangku7
openresty
Commits
f58ebb7a
Commit
f58ebb7a
authored
Aug 27, 2018
by
周尚
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pay_vipcard_amt 错误修复
日志记录转由ngx.log 数据库参数写入init.lua
parent
b0640587
Changes
27
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
740 additions
and
603 deletions
+740
-603
nginx/conf/nginx.conf
nginx/conf/nginx.conf
+41
-5
nginx/lua/luabiz/async.lua
nginx/lua/luabiz/async.lua
+1
-1
nginx/lua/luabiz/node_asb.lua
nginx/lua/luabiz/node_asb.lua
+3
-3
nginx/lua/luabiz/node_asbdetail.lua
nginx/lua/luabiz/node_asbdetail.lua
+3
-3
nginx/lua/luabiz/node_card.lua
nginx/lua/luabiz/node_card.lua
+33
-28
nginx/lua/luabiz/node_chgrule.lua
nginx/lua/luabiz/node_chgrule.lua
+3
-3
nginx/lua/luabiz/node_cs.lua
nginx/lua/luabiz/node_cs.lua
+11
-9
nginx/lua/luabiz/node_csdetail.lua
nginx/lua/luabiz/node_csdetail.lua
+3
-3
nginx/lua/luabiz/node_ms.lua
nginx/lua/luabiz/node_ms.lua
+3
-3
nginx/lua/luabiz/node_payment.lua
nginx/lua/luabiz/node_payment.lua
+3
-3
nginx/lua/luabiz/node_psb.lua
nginx/lua/luabiz/node_psb.lua
+3
-3
nginx/lua/luabiz/node_psbdetail.lua
nginx/lua/luabiz/node_psbdetail.lua
+3
-3
nginx/lua/luabiz/node_rchg.lua
nginx/lua/luabiz/node_rchg.lua
+3
-3
nginx/lua/luabiz/node_rchgdetail.lua
nginx/lua/luabiz/node_rchgdetail.lua
+3
-3
nginx/lua/luabiz/node_saledetail.lua
nginx/lua/luabiz/node_saledetail.lua
+3
-3
nginx/lua/luabiz/node_saleorder.lua
nginx/lua/luabiz/node_saleorder.lua
+3
-3
nginx/lua/luabiz/node_shift.lua
nginx/lua/luabiz/node_shift.lua
+3
-3
nginx/lua/luabiz/node_sku.lua
nginx/lua/luabiz/node_sku.lua
+3
-3
nginx/lua/luabiz/node_sms.lua
nginx/lua/luabiz/node_sms.lua
+3
-3
nginx/lua/luabiz/node_smsvip.lua
nginx/lua/luabiz/node_smsvip.lua
+3
-3
nginx/lua/luabiz/node_ticket.lua
nginx/lua/luabiz/node_ticket.lua
+31
-28
nginx/lua/luabiz/node_vipacct.lua
nginx/lua/luabiz/node_vipacct.lua
+2
-2
nginx/lua/luabiz/settle.lua
nginx/lua/luabiz/settle.lua
+75
-27
nginx/lua/luabiz/tk_sdt.lua
nginx/lua/luabiz/tk_sdt.lua
+420
-409
nginx/lua/luabiz/tk_sync.lua
nginx/lua/luabiz/tk_sync.lua
+27
-34
nginx/lua/luabiz/zx_base.lua
nginx/lua/luabiz/zx_base.lua
+18
-12
nginx/lua/luainit/init.lua
nginx/lua/luainit/init.lua
+33
-0
No files found.
nginx/conf/nginx.conf
View file @
f58ebb7a
...
...
@@ -35,11 +35,11 @@ http {
lua_package_path
"/Users/zhoush/openresty/nginx/lua/luabiz/?.lua
;
;
"
;
init_by_lua_file
"lua/luainit/init.lua"
;
# init_worker_by_lua_file "luabiz/settle
/settle.lua";
init_worker_by_lua_file
"lua/luabiz
/settle.lua"
;
#gzip on;
server
{
listen
7777
;
listen
8080
;
server_name
localhost
;
...
...
@@ -70,12 +70,48 @@ http {
root
html
;
index
index.html
index.htm
;
lua_code_cache
on
;
log_by_lua_block
{
local
logger
=
require("socket")
if
not
logger.initted()
then
local
ok,
err
=
logger.init
{
host
=
'127.0.0.1',
port
=
1234
,
flush_limit
=
4096
}
if
not
ok
then
ngx.log(ngx.ERR,
"failed
to
initialize
the
logger:
",
err)
return
end
end
--
construct
the
custom
access
log
message
in
--
the
Lua
variable
"msg"
local
bytes,
err
=
logger.log(msg)
if
err
then
ngx.log(ngx.ERR,
"failed
to
log
message:
",
err)
return
end
}
}
location
/regex
{
content_by_lua_block
{
local
str
=
'2018-08-15'
local
regex
=
[[(
\
d+)-(
\
d+)-(
\
d+)]]
local
r
=
ngx.re.match(str,
regex,
'jo')
if
r
then
ngx.say(r[1],
r[2],
r[3])
else
ngx.say('no
matched')
end
}
}
location
/
test
{
location
/
settle
{
content_by_lua_block
{
local
tk_sdt
=
loadmod("tk_sdt
")
tk_sdt
:run()
local
settle
=
loadmod("settle
")
settle
:run()
}
}
...
...
nginx/lua/luabiz/async.lua
View file @
f58ebb7a
...
...
@@ -52,7 +52,7 @@ local function async_db(ins_sql)
}
if
not
ok
then
zx_base
:
log
(
"ASYNC_DB"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"ASYNC_DB"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
nginx/lua/luabiz/node_asb.lua
View file @
f58ebb7a
...
...
@@ -18,7 +18,7 @@ local function asb_sql(db_st, interval)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -31,7 +31,7 @@ local function asb_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_ASB]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_ASB]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -93,7 +93,7 @@ local function dispatch()
end
function
_ASB
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
-- the month interval
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
interval
)
...
...
nginx/lua/luabiz/node_asbdetail.lua
View file @
f58ebb7a
...
...
@@ -19,7 +19,7 @@ local function asbdetail_sql(db_st, interval)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -32,7 +32,7 @@ local function asbdetail_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_ASBDETAIL]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_ASBDETAIL]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -94,7 +94,7 @@ local function dispatch()
end
function
_ASBDETAIL
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
-- the month interval
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
interval
)
...
...
nginx/lua/luabiz/node_card.lua
View file @
f58ebb7a
local
_NC
=
{}
local
NODE_CARD
=
{}
local
mysql
=
loadmod
(
"resty.mysql"
)
local
zx_base
=
loadmod
(
"zx_base"
)
local
json
=
loadmod
(
'cjson'
)
local
db_conf
=
"tk7_dbs.json"
local
zx_base
=
loadmod
(
"zx_base"
)
local
M
=
string.format
(
"%-16s"
,
"<NODE_CARD>"
)
-- local json = loadmod('cjson')
-- local db_conf = "tk7_dbs.json"
local
tasks
=
{}
local
function
card_sql
(
db_st
)
local
log
=
ngx
.
log
local
ERR
=
ngx
.
ERR
local
function
card_sql
(
db_st
,
total_time
)
ngx
.
log
(
ngx
.
NOTICE
,
"-----------------------> START"
)
local
db
,
err
=
mysql
:
new
()
if
not
db
then
zx_base
:
log
(
"S"
,
"[CARD]:"
,
"failed to instantiate mysql: "
,
err
)
ngx
.
log
(
ngx
.
ERR
,
"failed to instantiate mysql: "
,
err
)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -34,7 +33,7 @@ local function card_sql(db_st)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_CARD]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
ngx
.
log
(
ngx
.
ERR
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -42,47 +41,52 @@ local function card_sql(db_st)
-- local sql_delete = [[DELETE FROM node_card WHERE (card_status != 0 AND card_status !=1) or now() > card_exp]]
local
sql_update
=
[[UPDATE node_card SET card_status = 8 WHERE now() > card_exp]]
local
res
,
err
,
errcode
,
sqlstate
=
db
:
query
(
sql_update
)
ngx
.
log
(
ngx
.
NOTICE
,
sql_update
)
if
not
res
then
zx_base
:
log
(
"S"
,
"[NODE_CARD]:"
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
zx_base
:
log
(
"NODE_CARD"
,
sql_update
)
ngx
.
log
(
ngx
.
ERR
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
return
end
-- SET yesterday's balance
local
sql_update
=
[[UPDATE node_card SET card_lbal_amt = card_cbal_amt, card_lbal_count = card_cbal_count]]
local
res
,
err
,
errcode
,
sqlstate
=
db
:
query
(
sql_update
)
ngx
.
log
(
ngx
.
NOTICE
,
sql_update
)
if
not
res
then
zx_base
:
log
(
"S"
,
"[NODE_CARD]:"
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
zx_base
:
log
(
"NODE_CARD"
,
sql_update
)
ngx
.
log
(
ngx
.
ERR
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
return
end
-- INSERT INTO history table
local
sql_insert
=
string.format
(
[[INSERT INTO node_card_his SELECT * FROM node_card WHERE DATE(`create_time`) < DATE('%s')]]
,
os.date
(
"%Y%m%d%H%M%S"
))
local
sql_insert
=
string.format
(
[[INSERT INTO node_card_his SELECT * FROM node_card ]]
..
[[WHERE DATE(`create_time`) < DATE('%s')]]
,
os.date
(
"%Y%m%d%H%M%S"
,
total_time
-
24
*
60
*
60
))
ngx
.
log
(
ngx
.
NOTICE
,
sql_insert
)
local
res
,
err
,
errcode
,
sqlstate
=
db
:
query
(
sql_insert
)
if
not
res
then
zx_base
:
log
(
"S"
,
"[NODE_CARD]:"
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
zx_base
:
log
(
"NODE_CARD"
,
sql_insert
)
ngx
.
log
(
ngx
.
ERR
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
return
end
-- DELETE current tables record
local
sql_delete
=
string.format
(
[[DELETE FROM node_card WHERE DATE(`create_time`) < DATE('%s')]]
,
os.date
(
"%Y%m%d%H%M%S"
))
local
sql_delete
=
string.format
(
[[DELETE FROM node_card WHERE DATE(`create_time`) < DATE('%s')]]
,
os.date
(
"%Y%m%d%H%M%S"
,
total_time
-
24
*
60
*
60
))
ngx
.
log
(
ngx
.
NOTICE
,
sql_delete
)
local
res
,
err
,
errcode
,
sqlstate
=
db
:
query
(
sql_delete
)
if
not
res
then
zx_base
:
log
(
"S"
,
"[NODE_CARD]:"
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
zx_base
:
log
(
"NODE_CARD"
,
sql_delete
)
ngx
.
log
(
ngx
.
ERR
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
return
end
ngx
.
log
(
ngx
.
NOTICE
,
"-----------------------> END"
)
zx_base
:
close_db
(
db
)
end
local
function
async
(
i
)
local
function
async
(
i
,
total_time
)
local
co
=
coroutine.wrap
(
function
()
card_sql
(
i
)
card_sql
(
i
,
total_time
)
end
)
table.insert
(
tasks
,
co
)
...
...
@@ -108,12 +112,13 @@ local function dispatch()
end
end
function
_NC
.
run
(
)
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
function
NODE_CARD
.
run
(
self
,
total_time
)
-- --
local dbs_st = zx_base:db_read(db_conf)
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
])
-- async(dbs_st.tk_biz[i])
card_sql
(
dbs_st
.
tk_biz
[
i
],
total_time
)
end
dispatch
()
end
return
_NC
return
NODE_CARD
nginx/lua/luabiz/node_chgrule.lua
View file @
f58ebb7a
...
...
@@ -21,7 +21,7 @@ local function chgrule_sql(db_st)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -34,7 +34,7 @@ local function chgrule_sql(db_st)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_CHGRULE]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_CHGRULE]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -81,7 +81,7 @@ local function dispatch()
end
function
_CR
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
])
end
...
...
nginx/lua/luabiz/node_cs.lua
View file @
f58ebb7a
...
...
@@ -6,6 +6,7 @@ local NODE_CS = {}
local
mysql
=
loadmod
(
"resty.mysql"
)
local
zx_base
=
loadmod
(
'zx_base'
)
local
db_conf
=
"tk7_dbs.json"
local
MODULE
=
"S"
local
tasks
=
{}
...
...
@@ -15,11 +16,11 @@ local function cs_sql(db_st, interval)
local
db
,
err
=
mysql
:
new
()
if
not
db
then
zx_base
:
log
(
"S"
,
"[CS]:"
,
"failed to instantiate mysql: "
,
err
)
zx_base
:
log
(
MODULE
,
"[CS]:"
,
"failed to instantiate mysql: "
,
err
)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -32,7 +33,7 @@ local function cs_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_CS]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
MODULE
,
"[NODE_CS]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -43,8 +44,8 @@ local function cs_sql(db_st, interval)
local
res
,
err
,
errcode
,
sqlstate
=
db
:
query
(
sql_update
)
if
not
res
then
zx_base
:
log
(
"S"
,
"[NODE_CS]:"
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
zx_base
:
log
(
"NODE_CS
"
,
sql_update
)
zx_base
:
log
(
MODULE
,
"[NODE_CS]:"
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
zx_base
:
log
(
MODULE
,
"[NODE_CS]
"
,
sql_update
)
return
end
...
...
@@ -57,8 +58,8 @@ local function cs_sql(db_st, interval)
local
res
,
err
,
errcode
,
sqlstate
=
db
:
query
(
sql_delete
)
if
not
res
then
zx_base
:
log
(
"S"
,
"[NODE_CS]:"
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
zx_base
:
log
(
"NODE_CS
"
,
sql_delete
)
zx_base
:
log
(
MODULE
,
"[NODE_CS]:"
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
zx_base
:
log
(
MODULE
,
"[NODE_CS]
"
,
sql_delete
)
return
end
...
...
@@ -99,10 +100,11 @@ local function dispatch()
end
function
NODE_CS
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
-- the month interval
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
interval
)
cs_sql
(
dbs_st
.
tk_biz
[
i
],
interval
)
-- async(dbs_st.tk_biz[i], interval)
end
dispatch
()
end
...
...
nginx/lua/luabiz/node_csdetail.lua
View file @
f58ebb7a
...
...
@@ -21,7 +21,7 @@ local function csdetail_sql(db_st, interval)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -34,7 +34,7 @@ local function csdetail_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_CSDETAIL]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_CSDETAIL]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -96,7 +96,7 @@ local function dispatch()
end
function
_CSDETAIL
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
-- the month interval
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
interval
)
...
...
nginx/lua/luabiz/node_ms.lua
View file @
f58ebb7a
...
...
@@ -19,7 +19,7 @@ local function ms_sql(db_st)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -32,7 +32,7 @@ local function ms_sql(db_st)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_MS]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_MS]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -79,7 +79,7 @@ local function dispatch()
end
function
_MS
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
])
end
...
...
nginx/lua/luabiz/node_payment.lua
View file @
f58ebb7a
...
...
@@ -21,7 +21,7 @@ local function payment_sql(db_st, interval)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -34,7 +34,7 @@ local function payment_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_PAYMENT]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_PAYMENT]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -96,7 +96,7 @@ local function dispatch()
end
function
_PAYMENT
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
-- the month interval
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
interval
)
...
...
nginx/lua/luabiz/node_psb.lua
View file @
f58ebb7a
...
...
@@ -20,7 +20,7 @@ local function psb_sql(db_st, interval)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -33,7 +33,7 @@ local function psb_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_PSB]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_PSB]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -97,7 +97,7 @@ end
function
_PSB
.
run
()
local
zx_base
=
loadmod
(
'zx_base'
)
local
json
=
loadmod
(
'cjson'
)
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
-- the month interval
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
interval
)
...
...
nginx/lua/luabiz/node_psbdetail.lua
View file @
f58ebb7a
...
...
@@ -20,7 +20,7 @@ local function psbdetail_sql(db_st, interval)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -33,7 +33,7 @@ local function psbdetail_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_PSBDETAIL]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_PSBDETAIL]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -97,7 +97,7 @@ end
function
_PSBDETAIL
.
run
()
local
zx_base
=
loadmod
(
'zx_base'
)
local
json
=
loadmod
(
'cjson'
)
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
-- the month interval
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
interval
)
...
...
nginx/lua/luabiz/node_rchg.lua
View file @
f58ebb7a
...
...
@@ -20,7 +20,7 @@ local function rchg_sql(db_st, interval)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -33,7 +33,7 @@ local function rchg_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_RCHG]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_RCHG]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -92,7 +92,7 @@ local function dispatch()
end
function
_RCHG
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
for
i
=
1
,
#
dbs_st
.
tk_biz
do
...
...
nginx/lua/luabiz/node_rchgdetail.lua
View file @
f58ebb7a
...
...
@@ -20,7 +20,7 @@ local function rchgdetail_sql(db_st, interval)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -33,7 +33,7 @@ local function rchgdetail_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_RCHGDETAIL]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_RCHGDETAIL]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -95,7 +95,7 @@ local function dispatch()
end
function
_RCHGDETAIL
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
-- the month interval
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
interval
)
...
...
nginx/lua/luabiz/node_saledetail.lua
View file @
f58ebb7a
...
...
@@ -21,7 +21,7 @@ local function saledetail_sql(db_st, interval)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -34,7 +34,7 @@ local function saledetail_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_SALEDETAIL]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_SALEDETAIL]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -96,7 +96,7 @@ local function dispatch()
end
function
_SALEDETAIL
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
-- the month interval
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
interval
)
...
...
nginx/lua/luabiz/node_saleorder.lua
View file @
f58ebb7a
...
...
@@ -19,7 +19,7 @@ local function saleorder_sql(db_st, interval)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -32,7 +32,7 @@ local function saleorder_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
MODULE
,
"[NODE_SALEORDER]"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
MODULE
,
"[NODE_SALEORDER]"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -96,7 +96,7 @@ local function dispatch()
end
function
_SALEORDER
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
-- the month interval
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
interval
)
...
...
nginx/lua/luabiz/node_shift.lua
View file @
f58ebb7a
...
...
@@ -21,7 +21,7 @@ local function shift_sql(db_st, interval)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -34,7 +34,7 @@ local function shift_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_SHIFT]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_SHIFT]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -96,7 +96,7 @@ local function dispatch()
end
function
_SHIFT
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
-- the month interval
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
interval
)
...
...
nginx/lua/luabiz/node_sku.lua
View file @
f58ebb7a
...
...
@@ -21,7 +21,7 @@ local function sku_sql(db_st)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -34,7 +34,7 @@ local function sku_sql(db_st)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_SKU]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_SKU]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -82,7 +82,7 @@ local function dispatch()
end
function
_SKU
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
])
end
...
...
nginx/lua/luabiz/node_sms.lua
View file @
f58ebb7a
...
...
@@ -21,7 +21,7 @@ local function sms_sql(db_st, interval)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -34,7 +34,7 @@ local function sms_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_SMS]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_SMS]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -96,7 +96,7 @@ local function dispatch()
end
function
_SMS
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
-- the month interval
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
interval
)
...
...
nginx/lua/luabiz/node_smsvip.lua
View file @
f58ebb7a
...
...
@@ -21,7 +21,7 @@ local function smsvip_sql(db_st, interval)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -34,7 +34,7 @@ local function smsvip_sql(db_st, interval)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_SMSVIP]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_SMSVIP]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -96,7 +96,7 @@ local function dispatch()
end
function
_SMSVIP
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
interval
=
3
-- the month interval
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
interval
)
...
...
nginx/lua/luabiz/node_ticket.lua
View file @
f58ebb7a
local
_N
T
=
{}
local
NODE_TICKE
T
=
{}
local
mysql
=
loadmod
(
"resty.mysql"
)
local
mysql
=
loadmod
(
"resty.mysql"
)
local
zx_base
=
loadmod
(
'zx_base'
)
local
db_conf
=
"tk7_dbs.json"
local
M
=
string.format
(
"%-16s"
,
"<NODE_TICKET>"
)
local
tasks
=
{}
local
db_conf
=
"tk7_dbs.json"
local
function
ticket_sql
(
db_st
)
local
log
=
ngx
.
log
local
ERR
=
ngx
.
ERR
local
function
ticket_sql
(
db_st
,
total_time
)
ngx
.
log
(
ngx
.
NOTICE
,
"-----------------------> START"
)
local
db
,
err
=
mysql
:
new
()
if
not
db
then
zx_base
:
log
(
"S"
,
"[TICKET]:"
,
"failed to instantiate mysql: "
,
err
)
ngx
.
log
(
ngx
.
ERR
,
"failed to instantiate mysql: "
,
err
)
return
false
end
db
:
SET
_timeout
(
1000
)
-- 1 sec
db
:
set
_timeout
(
1000
)
-- 1 sec
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
db_st
[
'host'
],
...
...
@@ -33,46 +30,52 @@ local function ticket_sql(db_st)
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_TICKET]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
ngx
.
log
(
ngx
.
ERR
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
-- DELETE invalid rows
-- local sql_delete = [[DELETE FROM node_ticket WHERE (ticket_status != 0 AND ticket_status !=1) or now() > ticket_exp]]
local
sql_update
=
[[UPDATE node_ticket SET ticket_status = 8 WHERE now() > ticket_exp]]
ngx
.
log
(
ngx
.
NOTICE
,
sql_update
)
local
res
,
err
,
errcode
,
sqlstate
=
db
:
query
(
sql_update
)
if
not
res
then
zx_base
:
log
(
"S"
,
"[NODE_TICKET]:"
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
zx_base
:
log
(
"NODE_TICKET"
,
sql_update
)
ngx
.
log
(
ngx
.
ERR
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
return
end
-- INSERT INTO history table
local
sql_insert
=
string.format
(
[[INSERT INTO node_ticket_his SELECT * FROM node_ticket WHERE DATE(`create_time`) < DATE('%s')]]
,
os.date
(
"%Y%m%d%H%M%S"
))
local
sql_insert
=
string.format
(
[[INSERT INTO node_ticket_his SELECT * FROM node_ticket WHERE ]]
..
[[DATE(`create_time`) < DATE('%s')]]
,
os.date
(
"%Y%m%d%H%M%S"
,
total_time
-
24
*
60
*
60
))
ngx
.
log
(
ngx
.
NOTICE
,
sql_insert
)
local
res
,
err
,
errcode
,
sqlstate
=
db
:
query
(
sql_insert
)
if
not
res
then
zx_base
:
log
(
"S"
,
"[NODE_TICKET]:"
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
zx_base
:
log
(
"NODE_TICKET"
,
sql_insert
)
ngx
.
log
(
ngx
.
ERR
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
return
end
-- DELETE current tables record
local
sql_delete
=
string.format
(
[[DELETE FROM node_ticket WHERE DATE(`create_time`) < DATE('%s')]]
,
os.date
(
"%Y%m%d%H%M%S"
))
local
sql_delete
=
string.format
(
[[DELETE FROM node_ticket WHERE DATE(`create_time`) < DATE('%s')]]
,
os.date
(
"%Y%m%d%H%M%S"
,
total_time
-
24
*
60
*
60
))
ngx
.
log
(
ngx
.
NOTICE
,
sql_delete
)
local
res
,
err
,
errcode
,
sqlstate
=
db
:
query
(
sql_delete
)
if
not
res
then
zx_base
:
log
(
"S"
,
"[NODE_TICKET]:"
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
zx_base
:
log
(
"NODE_TICKET"
,
sql_delete
)
ngx
.
log
(
ngx
.
ERR
,
"bad result: "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
return
end
ngx
.
log
(
ngx
.
NOTICE
,
"-----------------------> END"
)
zx_base
:
close_db
(
db
)
end
local
function
async
(
i
)
local
function
async
(
i
,
total_time
)
local
co
=
coroutine.wrap
(
function
()
ticket_sql
(
i
)
ticket_sql
(
i
,
total_time
)
end
)
table.insert
(
tasks
,
co
)
...
...
@@ -98,14 +101,14 @@ local function dispatch()
end
end
function
_NT
.
run
()
local
zx_base
=
loadmod
(
'zx_base'
)
local
json
=
loadmod
(
'cjson'
)
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
function
NODE_TICKET
.
run
(
self
,
total_time
)
-- local json = loadmod('cjson')
-- -- local dbs_st = zx_base:db_read(db_conf)
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
])
-- async(dbs_st.tk_biz[i])
ticket_sql
(
dbs_st
.
tk_biz
[
i
],
total_time
)
end
dispatch
()
end
return
_N
T
return
NODE_TICKE
T
nginx/lua/luabiz/node_vipacct.lua
View file @
f58ebb7a
...
...
@@ -46,7 +46,7 @@ local function vipacct_sql(db_st)
charset
=
'utf8'
}
if
not
ok
then
zx_base
:
log
(
"S"
,
"[NODE_VIPACCT]:"
,
"failed to connect: "
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
zx_base
:
log
(
"S"
,
"[NODE_VIPACCT]:"
,
err
,
": "
,
errcode
,
" "
,
sqlstate
)
return
end
...
...
@@ -136,7 +136,7 @@ end
function
_VIPACCT
.
run
()
local
zx_base
=
loadmod
(
'zx_base'
)
local
json
=
loadmod
(
'cjson'
)
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
])
end
...
...
nginx/lua/luabiz/settle.lua
View file @
f58ebb7a
-- Settle modules
local
zx_base
=
loadmod
(
'zx_base'
)
-- local node_asb = loadmod('node_asb')
-- local node_asbdetail = loadmod('node_asbdetail')
--
local node_card = loadmod('node_card')
local
node_card
=
loadmod
(
'node_card'
)
-- local node_chgrule = loadmod('node_chgrule')
-- local node_cs = loadmod('node_cs')
-- local node_csdetail = loadmod('node_csdetail')
...
...
@@ -17,47 +18,58 @@
-- local node_sku = loadmod('node_sku')
-- local node_sms = loadmod('node_sms')
-- local node_smsvip = loadmod('node_smsvip')
--
local node_ticket = loadmod('node_ticket')
local
node_ticket
=
loadmod
(
'node_ticket'
)
-- local node_vipacct = loadmod('node_vipacct')
local
tk_sdt
=
loadmod
(
'tk_sdt'
)
local
tk_sync
=
loadmod
(
'tk_sync'
)
local
delay
=
5
-- delaytime
local
interval_time
=
'1500'
-- time to run, here is 12:00 for each day
local
interval_time
=
'0100'
-- time to run, here is 12:00 for each day
-- local settledate = "2018-08-16"
local
settledate
=
os.date
(
'%Y-%m-%d'
,
os.time
())
local
settletime
=
zx_base
:
date2time
(
settledate
)
local
handler
handler
=
function
(
premature
,
interval_time
)
handler
=
function
(
premature
,
interval_time
,
settletime
)
if
not
premature
then
local
nowtime
=
os.date
(
"%H%M"
)
if
nowtime
==
interval_time
then
-- settle features start
-- node_asb: run()
-- node_asbdetail: run()
-- node_card: run()
-- node_chgrule: run()
-- node_cs: run()
-- node_csdetail: run()
-- node_ms: run()
-- node_payment: run()
-- node_psb: run()
-- node_psbdetail: run()
-- node_rchg: run()
-- node_rchgdetail: run()
-- node_saledetail: run()
-- node_saleorder: run()
-- node_shift: run()
-- node_sku: run()
-- node_sms: run()
-- node_smsvip: run()
-- node_ticket: run()
-- node_vipacct: run()
tk_sdt
:
run
()
-- node_asb: run()
-- node_asbdetail: run()
-- node_chgrule: run()
-- node_cs: run()
-- node_csdetail: run()
-- node_ms: run()
-- node_payment: run()
-- node_psb: run()
-- node_psbdetail: run()
-- node_rchg: run()
-- node_rchgdetail: run()
-- node_saledetail: run()
-- node_saleorder: run()
-- node_shift: run()
-- node_sku: run()
-- node_sms: run()
-- node_smsvip: run()
-- node_vipacct: run()
tk_sync
:
run
()
node_card
:
run
(
settletime
)
node_ticket
:
run
(
settletime
)
tk_sdt
:
run
(
settletime
)
-- reset interval_time
interval_time
=
tostring
(
tonumber
(
interval_time
)
-
1
)
-- reset settle time
settledate
=
os.date
(
'%Y-%m-%d'
,
os.time
())
settletime
=
zx_base
:
date2time
(
settledate
)
end
local
ok
,
err
=
ngx
.
timer
.
at
(
delay
,
handler
,
interval_time
)
local
ok
,
err
=
ngx
.
timer
.
at
(
delay
,
handler
,
interval_time
,
settletime
)
if
not
ok
then
ngx
.
log
(
ngx
.
ERR
,
"failed to create the timer:"
,
err
)
return
...
...
@@ -66,9 +78,45 @@ handler = function(premature, interval_time)
end
if
ngx
.
worker
.
id
()
==
1
then
local
ok
,
err
=
ngx
.
timer
.
at
(
delay
,
handler
,
interval_time
)
local
ok
,
err
=
ngx
.
timer
.
at
(
delay
,
handler
,
interval_time
,
settletime
)
if
not
ok
then
ngx
.
log
(
ngx
.
ERR
,
"failed to create the timer:"
,
err
)
return
end
end
local
SETTLE
=
{}
function
SETTLE
.
run
()
local
args
=
ngx
.
req
.
get_uri_args
()
for
k
,
v
in
pairs
(
args
)
do
if
k
==
"total_date"
then
local
t
=
zx_base
:
date2time
(
v
)
-- settle features start
-- node_asb: run()
-- node_asbdetail: run()
-- node_chgrule: run()
-- node_cs: run()
-- node_csdetail: run()
-- node_ms: run()
-- node_payment: run()
-- node_psb: run()
-- node_psbdetail: run()
-- node_rchg: run()
-- node_rchgdetail: run()
-- node_saledetail: run()
-- node_saleorder: run()
-- node_shift: run()
-- node_sku: run()
-- node_sms: run()
-- node_smsvip: run()
-- node_vipacct: run()
tk_sync
:
run
()
node_card
:
run
(
t
)
node_ticket
:
run
(
t
)
tk_sdt
:
run
(
t
)
end
end
end
return
SETTLE
nginx/lua/luabiz/tk_sdt.lua
View file @
f58ebb7a
local
TK_SDT
=
{}
local
MODULE
=
"S"
-- Settle
-- 加载模块
local
mysql
=
loadmod
(
"resty.mysql"
)
local
zx_base
=
loadmod
(
"zx_base"
)
local
json
=
loadmod
(
'cjson'
)
local
db_conf
=
"tk7_dbs.json"
-- 协程组
...
...
@@ -18,18 +16,18 @@ local tasks = {}
-- table tk_control 总控机数据库对象
-- table tk_database 数据同步数据库名
-- @return nil
local
function
sdt_sql
(
tk_biz
,
tk_control
)
zx_base
:
log
(
MODULE
,
"-----------------------> START[TK_SDT]
"
)
local
function
sdt_sql
(
tk_biz
,
tk_control
,
total_time
)
ngx
.
log
(
ngx
.
NOTICE
,
"-----------------------> START
"
)
-- 新建mysql连接
local
db_biz
,
err
=
mysql
:
new
()
if
not
db_biz
then
zx_base
:
log
(
MODULE
,
"[TK_SDT]"
,
"failed to instantiate mysql: "
,
err
)
ngx
.
log
(
ngx
.
ERR
,
"failed to instantiate mysql: "
,
err
)
return
false
end
-- 超时设置
db_biz
:
set_timeout
(
1000
)
-- 1 sec
db_biz
:
set_timeout
(
1000
)
-- 连接tk_biz
local
ok
,
err
,
errcode
,
sqlstate
=
db_biz
:
connect
{
...
...
@@ -42,19 +40,19 @@ local function sdt_sql(tk_biz, tk_control)
charset
=
'utf8'
}
if
not
ok
then
zx_base
:
log
(
MODULE
,
"[TK_SDT]"
,
"failed to connect:"
,
json
.
encode
(
tk_biz
),
":"
,
errcode
,
sqlstate
)
ngx
.
log
(
ngx
.
ERR
,
json
.
encode
(
tk_biz
),
":"
,
err
,
errcode
,
sqlstate
)
return
end
-- 新建mysql连接
local
db_control
,
err
=
mysql
:
new
()
if
not
db_control
then
zx_base
:
log
(
MODULE
,
"[TK_SDT]"
,
"failed to instantiate mysql: "
,
err
)
ngx
.
log
(
ngx
.
ERR
,
"failed to instantiate mysql: "
,
err
)
return
false
end
-- 超时设置
db_control
:
set_timeout
(
1000
)
-- 1 sec
db_control
:
set_timeout
(
1000
)
-- 连接tk_control
local
ok
,
err
,
errcode
,
sqlstate
=
db_control
:
connect
{
...
...
@@ -67,427 +65,441 @@ local function sdt_sql(tk_biz, tk_control)
charset
=
'utf8'
}
if
not
ok
then
zx_base
:
log
(
MODULE
,
"[TK_SDT]"
,
"failed to connect:"
,
json
.
encode
(
tk_control
),
":"
,
errcode
,
sqlstate
)
ngx
.
log
(
ngx
.
ERR
,
json
.
encode
(
tk_control
),
":"
,
err
,
errcode
,
sqlstate
)
return
end
-- GET shop_map_id list
local
shops
local
sql_select
=
'SELECT DISTINCT shop_map_id FROM node_saleorder UNION SELECT DISTINCT shop_map_id FROM node_rchg'
local
sql_select
=
'SELECT DISTINCT shop_map_id FROM node_saleorder UNION SELECT DISTINCT shop_map_id FROM node_rchg
;
'
shops
,
err
,
errcode
,
sqlstate
=
db_biz
:
query
(
sql_select
)
ngx
.
log
(
ngx
.
NOTICE
,
sql_select
)
if
not
shops
then
zx_base
:
log
(
"S"
,
"[TK_SDT]"
,
"failed to query:"
,
json
.
encode
(
tk_biz
),
":"
,
err
,
":"
,
errcode
,
":"
,
sqlstate
,
"."
)
zx_base
:
log
(
"S"
,
"[TK_SDT]"
,
sql_select
)
ngx
.
log
(
ngx
.
ERR
,
"failed to query:"
,
json
.
encode
(
tk_biz
),
":"
,
err
,
":"
,
errcode
,
":"
,
sqlstate
,
"."
)
return
end
for
i
=
1
,
#
shops
do
local
shop
=
shops
[
i
]
local
res
-- CHECK if exists
local
sql
=
string.format
(
[[SELECT * FROM tk_sdt WHERE DATE(total_date) = DATE('%s') ]]
..
[[AND shop_map_id = %s]]
,
os.date
(
'%Y%m%d'
,
os.time
()),
tostring
(
shop
.
shop_map_id
))
res
,
err
,
errcode
,
sqlstate
=
db_biz
:
query
(
sql
)
if
not
res
then
zx_base
:
log
(
"S"
,
"[TK_SDT]"
,
"failed to connect:"
,
json
.
encode
(
tk_biz
),
":"
,
err
,
":"
,
errcode
,
":"
,
sqlstate
,
"."
)
zx_base
:
log
(
"S"
,
"[TK_SDT]"
,
sql
)
return
end
if
#
res
~=
0
then
zx_base
:
log
(
"S"
,
"[TK_SDT]"
,
"finished already"
)
return
end
-- GET summary
sql
=
string.format
(
[[SELECT op_map_id, mer_map_id, shop_map_id, city_county_id, ]]
..
[[IFNULL(COUNT(*), 0) t_order_cnt, ]]
..
[[IFNULL(SUM(amt_pay), 0) t_order_amt, ]]
..
[[IFNULL(SUM(amt_profit), 0) t_order_profit, ]]
..
[[IFNULL(SUM(amt_point_num), 0) t_point_use_cnt, ]]
..
[[IFNULL(SUM(amt_point), 0) t_point_use_amt, ]]
..
[[IFNULL(SUM(amt_ticket_num), 0) t_ticket_use_cnt, ]]
..
[[IFNULL(SUM(amt_ticket), 0) t_ticket_use_amt ]]
..
[[FROM node_saleorder ]]
..
[[WHERE date(`create_time`) = date('%s') ]]
..
[[AND shop_map_id = %s ]]
..
[[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]]
,
os.date
(
"%Y%m%d"
,
os.time
()
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
-- GET online records
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) t_order_on_cnt, IFNULL(SUM(amt_pay), 0) t_order_on_amt ]]
..
[[FROM node_saleorder ]]
..
[[WHERE date(`create_time`) = date('%s') ]]
..
[[AND shop_map_id = %s ]]
..
[[AND order_source > 0 ]]
..
[[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]]
,
os.date
(
"%Y%m%d"
,
os.time
()
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
-- GET VIP/NOVIP records
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) t_order_vip_cnt, IFNULL(SUM(amt_pay), 0) t_order_vip_amt ]]
..
[[FROM node_saleorder ]]
..
[[WHERE date(`create_time`) = date('%s') ]]
..
[[AND shop_map_id = %s ]]
..
[[AND vip_map_id != 0 ]]
..
[[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]]
,
os.date
(
"%Y%m%d"
,
os.time
()
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
-- GET MS records
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) t_order_ms_cnt ]]
..
[[FROM node_saleorder ]]
..
[[WHERE date(`create_time`) = date('%s') ]]
..
[[AND shop_map_id = %s ]]
..
[[AND AMT_PROMOTE != 0 ]]
..
[[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]]
,
os.date
(
"%Y%m%d"
,
os.time
()
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
-- GET 0000-0900 order
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_0009, IFNULL(SUM(amt_pay), 0) time_amt_0009 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d000000'
,
os.time
()),
os.date
(
'%Y%m%d090000'
,
os.time
()))
-- GET 0900-1100 order
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_0911, IFNULL(SUM(amt_pay), 0) time_amt_0911 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d090000'
,
os.time
()),
os.date
(
'%Y%m%d110000'
,
os.time
()))
-- GET 1100-1300 order
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1113, IFNULL(SUM(amt_pay), 0) time_amt_1113 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d110000'
,
os.time
()),
os.date
(
'%Y%m%d130000'
,
os.time
()))
-- GET 1300-1500 order
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1315, IFNULL(SUM(amt_pay), 0) time_amt_1315 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d130000'
,
os.time
()),
os.date
(
'%Y%m%d150000'
,
os.time
()))
-- GET 1500-1700 order
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1517, IFNULL(SUM(amt_pay), 0) time_amt_1517 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d150000'
,
os.time
()),
os.date
(
'%Y%m%d170000'
,
os.time
()))
-- GET 1700-1900 order
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1719, IFNULL(SUM(amt_pay), 0) time_amt_1719 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d170000'
,
os.time
()),
os.date
(
'%Y%m%d190000'
,
os.time
()))
-- GET 1900-2100 order
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1921, IFNULL(SUM(amt_pay), 0) time_amt_1921 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d190000'
,
os.time
()),
os.date
(
'%Y%m%d210000'
,
os.time
()))
-- GET 2100-2400 order
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_2124, IFNULL(SUM(amt_pay), 0) time_amt_2124 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d210000'
,
os.time
()),
os.date
(
'%Y%m%d235959'
,
os.time
()))
-- GET VIP cnt
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(vip_map_id), 0) t_vip_cnt ]]
..
[[FROM node_vipacct ]]
..
[[WHERE shop_map_id IN ]]
..
[[(SELECT shop_map_id FROM tk_shop ]]
..
[[WHERE shop_grp_id IN ]]
..
[[(SELECT shop_grp_id FROM node_shopgrp ]]
..
[[WHERE mer_map_id = (SELECT mer_map_id FROM tk_shop WHERE shop_map_id = %s)));]]
,
tostring
(
shop
[
'shop_map_id'
]))
-- GET VIP new cnt
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(vip_map_id), 0) t_vip_newcnt ]]
..
[[FROM node_vipacct ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND shop_map_id IN ]]
..
[[(SELECT shop_map_id FROM tk_shop ]]
..
[[WHERE shop_grp_id IN ]]
..
[[(SELECT shop_grp_id FROM node_shopgrp ]]
..
[[WHERE mer_map_id = (SELECT mer_map_id FROM tk_shop WHERE shop_map_id = %s)));]]
,
os.date
(
"%Y%m%d"
,
os.time
()
-
24
*
60
*
60
),
tostring
(
shop
[
'shop_map_id'
]))
-- GET charge summary
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) t_charge_cnt, IFNULL(SUM(pay_amt), 0) t_charge_amt ]]
..
[[FROM node_rchg ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND shop_map_id = %s]]
,
os.date
(
"%Y%m%d"
,
os.time
()
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
-- GET cash summary
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) pay_cash_cnt, IFNULL(SUM(pay_amt), 0) pay_cash_amt ]]
..
[[FROM node_payment ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND pay_type_id = 1 ]]
..
-- paytype
[[AND shop_map_id = %s;]]
,
os.date
(
"%Y%m%d"
,
os.time
()
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
-- GET WeiXin summary
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) pay_wx_cnt, IFNULL(SUM(pay_amt), 0) pay_wx_amt ]]
..
[[FROM node_payment ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND pay_type_id = 2 ]]
..
-- paytype
[[AND shop_map_id = %s;]]
,
os.date
(
"%Y%m%d"
,
os.time
()
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
-- GET AliPay summary
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) pay_alipay_cnt, IFNULL(SUM(pay_amt), 0) pay_alipay_amt ]]
..
[[FROM node_payment ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND pay_type_id = 3 ]]
..
-- paytype
[[AND shop_map_id = %s;]]
,
os.date
(
"%Y%m%d"
,
os.time
()
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
-- GET bank summary
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) pay_bank_cnt, IFNULL(SUM(pay_amt), 0) pay_bank_amt ]]
..
[[FROM node_payment ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND pay_type_id = 4 ]]
..
-- paytype
[[AND shop_map_id = %s;]]
,
os.date
(
"%Y%m%d"
,
os.time
()
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
-- GET vipcard summary
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) pay_vipcard_cnt, IFNULL(SUM(pay_amt), 0) pay_vipcard_amt ]]
..
[[FROM node_payment ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND (pay_type_id = 5 OR pay_type_id = 6) ]]
..
-- paytype
[[AND shop_map_id = %s;]]
,
os.date
(
"%Y%m%d"
,
os.time
()
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
-- GET othpay summary
sql
=
sql
..
string.format
(
[[SELECT IFNULL(COUNT(*), 0) pay_othpay_cnt, IFNULL(SUM(pay_amt), 0) pay_vipcard_amt ]]
..
[[FROM node_payment ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND pay_type_id = 9 ]]
..
-- paytype
[[AND shop_map_id = %s;]]
,
os.date
(
"%Y%m%d"
,
os.time
()
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
res
,
err
,
errcode
,
sqlstate
=
db_biz
:
query
(
sql
)
if
not
res
then
zx_base
:
log
(
"S"
,
"[TK_SDT]"
,
"failed to query:"
,
json
.
encode
(
tk_biz
),
":"
,
err
,
":"
,
errcode
,
":"
,
sqlstate
,
"."
)
zx_base
:
log
(
"S"
,
"[TK_SDT]"
,
sql
)
return
end
if
#
res
~=
0
then
for
k
,
v
in
pairs
(
res
[
1
])
do
shop
[
k
]
=
v
end
end
while
err
==
"again"
do
res
,
err
,
errcode
,
sqlstate
=
db_biz
:
read_result
()
for
i
=
1
,
#
shops
do
while
true
do
local
shop
local
sql
=
{}
local
res
shop
=
shops
[
i
]
-- GET summary
table.insert
(
sql
,
string.format
(
[[SELECT op_map_id, mer_map_id, shop_map_id, city_county_id, ]]
..
[[IFNULL(COUNT(*), 0) t_order_cnt, ]]
..
[[IFNULL(SUM(amt_pay), 0) t_order_amt, ]]
..
[[IFNULL(SUM(amt_profit), 0) t_order_profit, ]]
..
[[IFNULL(SUM(amt_point_num), 0) t_point_use_cnt, ]]
..
[[IFNULL(SUM(amt_point), 0) t_point_use_amt, ]]
..
[[IFNULL(SUM(amt_ticket_num), 0) t_ticket_use_cnt, ]]
..
[[IFNULL(SUM(amt_ticket), 0) t_ticket_use_amt ]]
..
[[FROM node_saleorder ]]
..
[[WHERE date(`create_time`) = date('%s') ]]
..
[[AND order_status = 0 ]]
..
[[AND shop_map_id = %s ]]
..
[[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]]
,
os.date
(
"%Y%m%d"
,
total_time
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
)
-- GET online records
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) t_order_on_cnt, IFNULL(SUM(amt_pay), 0) t_order_on_amt ]]
..
[[FROM node_saleorder ]]
..
[[WHERE date(`create_time`) = date('%s') ]]
..
[[AND shop_map_id = %s ]]
..
[[AND order_source > 0 ]]
..
[[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]]
,
os.date
(
"%Y%m%d"
,
total_time
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
)
-- GET VIP/NOVIP records
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) t_order_vip_cnt, IFNULL(SUM(amt_pay), 0) t_order_vip_amt ]]
..
[[FROM node_saleorder ]]
..
[[WHERE date(`create_time`) = date('%s') ]]
..
[[AND shop_map_id = %s ]]
..
[[AND vip_map_id != 0 ]]
..
[[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]]
,
os.date
(
"%Y%m%d"
,
total_time
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
)
-- GET MS records
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) t_order_ms_cnt ]]
..
[[FROM node_saleorder ]]
..
[[WHERE date(`create_time`) = date('%s') ]]
..
[[AND shop_map_id = %s ]]
..
[[AND AMT_PROMOTE != 0 ]]
..
[[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]]
,
os.date
(
"%Y%m%d"
,
total_time
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
)
-- GET 0000-0900 order
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_0009, IFNULL(SUM(amt_pay), 0) time_amt_0009 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d000000'
,
total_time
),
os.date
(
'%Y%m%d090000'
,
total_time
))
)
-- GET 0900-1100 order
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_0911, IFNULL(SUM(amt_pay), 0) time_amt_0911 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d090000'
,
total_time
),
os.date
(
'%Y%m%d110000'
,
total_time
))
)
-- GET 1100-1300 order
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1113, IFNULL(SUM(amt_pay), 0) time_amt_1113 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d110000'
,
total_time
),
os.date
(
'%Y%m%d130000'
,
total_time
))
)
-- GET 1300-1500 order
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1315, IFNULL(SUM(amt_pay), 0) time_amt_1315 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d130000'
,
total_time
),
os.date
(
'%Y%m%d150000'
,
total_time
))
)
-- GET 1500-1700 order
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1517, IFNULL(SUM(amt_pay), 0) time_amt_1517 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d150000'
,
total_time
),
os.date
(
'%Y%m%d170000'
,
total_time
))
)
-- GET 1700-1900 order
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1719, IFNULL(SUM(amt_pay), 0) time_amt_1719 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d170000'
,
total_time
),
os.date
(
'%Y%m%d190000'
,
total_time
))
)
-- GET 1900-2100 order
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1921, IFNULL(SUM(amt_pay), 0) time_amt_1921 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d190000'
,
total_time
),
os.date
(
'%Y%m%d210000'
,
total_time
))
)
-- GET 2100-2400 order
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_2124, IFNULL(SUM(amt_pay), 0) time_amt_2124 ]]
..
[[FROM node_saleorder ]]
..
[[WHERE shop_map_id = %s ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d210000'
,
total_time
),
os.date
(
'%Y%m%d235959'
,
total_time
))
)
-- get VIP cnt
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(vip_map_id), 0) t_vip_cnt ]]
..
[[FROM node_vipacct ]]
..
[[WHERE shop_map_id IN ]]
..
[[(SELECT shop_map_id FROM tk_shop ]]
..
[[WHERE shop_grp_id IN ]]
..
[[(SELECT shop_grp_id FROM node_shopgrp ]]
..
[[WHERE mer_map_id = (SELECT mer_map_id FROM tk_shop WHERE shop_map_id = %s)));]]
,
tostring
(
shop
[
'shop_map_id'
]))
)
-- GET VIP new cnt
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(vip_map_id), 0) t_vip_newcnt ]]
..
[[FROM node_vipacct ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND shop_map_id IN ]]
..
[[(SELECT shop_map_id FROM tk_shop ]]
..
[[WHERE shop_grp_id IN ]]
..
[[(SELECT shop_grp_id FROM node_shopgrp ]]
..
[[WHERE mer_map_id = (SELECT mer_map_id FROM tk_shop WHERE shop_map_id = %s)));]]
,
os.date
(
"%Y%m%d"
,
total_time
-
24
*
60
*
60
),
tostring
(
shop
[
'shop_map_id'
]))
)
-- GET charge summary
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) t_charge_cnt, IFNULL(SUM(pay_amt), 0) t_charge_amt ]]
..
[[FROM node_rchg ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND shop_map_id = %s;]]
,
os.date
(
"%Y%m%d"
,
total_time
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
)
-- GET cash summary
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) pay_cash_cnt, IFNULL(SUM(pay_amt), 0) pay_cash_amt ]]
..
[[FROM node_payment ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND pay_type_id = 1 ]]
..
-- paytype
[[AND shop_map_id = %s;]]
,
os.date
(
"%Y%m%d"
,
total_time
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
)
-- GET WeiXin summary
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) pay_wx_cnt, IFNULL(SUM(pay_amt), 0) pay_wx_amt ]]
..
[[FROM node_payment ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND pay_type_id = 2 ]]
..
-- paytype
[[AND shop_map_id = %s;]]
,
os.date
(
"%Y%m%d"
,
total_time
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
)
-- GET AliPay summary
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) pay_alipay_cnt, IFNULL(SUM(pay_amt), 0) pay_alipay_amt ]]
..
[[FROM node_payment ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND pay_type_id = 3 ]]
..
-- paytype
[[AND shop_map_id = %s;]]
,
os.date
(
"%Y%m%d"
,
total_time
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
)
-- GET bank summary
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) pay_bank_cnt, IFNULL(SUM(pay_amt), 0) pay_bank_amt ]]
..
[[FROM node_payment ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND pay_type_id = 4 ]]
..
-- paytype
[[AND shop_map_id = %s;]]
,
os.date
(
"%Y%m%d"
,
total_time
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
)
-- GET vipcard summary
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) pay_vipcard_cnt, IFNULL(SUM(pay_amt), 0) pay_vipcard_amt ]]
..
[[FROM node_payment ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND (pay_type_id = 5 OR pay_type_id = 6) ]]
..
-- paytype
[[AND shop_map_id = %s;]]
,
os.date
(
"%Y%m%d"
,
total_time
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
)
-- GET othpay summary
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(*), 0) pay_othpay_cnt, IFNULL(SUM(pay_amt), 0) pay_othpay_amt ]]
..
[[FROM node_payment ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND pay_type_id = 9 ]]
..
-- paytype
[[AND shop_map_id = %s;]]
,
os.date
(
"%Y%m%d"
,
total_time
-
24
*
60
*
60
),
tostring
(
shop
.
shop_map_id
))
)
ngx
.
log
(
ngx
.
NOTICE
,
sql
[
1
])
res
,
err
,
errcode
,
sqlstate
=
db_biz
:
query
(
table.concat
(
sql
))
if
not
res
then
zx_base
:
log
(
MODULE
,
"[TK_SDT]"
,
"bad result #"
,
i
,
": "
,
err
,
": "
,
errcode
,
":
"
,
sqlstate
,
"."
)
return
ngx
.
exit
(
500
)
ngx
.
log
(
ngx
.
ERR
,
"failed to query:"
,
json
.
encode
(
tk_biz
),
":"
,
err
,
":"
,
errcode
,
":
"
,
sqlstate
,
"."
)
return
end
if
#
res
~=
0
then
for
k
,
v
in
pairs
(
res
[
1
])
do
shop
[
k
]
=
v
end
end
local
j
=
2
while
err
==
"again"
do
ngx
.
log
(
ngx
.
NOTICE
,
sql
[
j
])
res
,
err
,
errcode
,
sqlstate
=
db_biz
:
read_result
()
if
not
res
then
ngx
.
log
(
ngx
.
ERR
,
"bad result #"
,
j
,
": "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
return
ngx
.
exit
(
500
)
end
i
=
i
+
1
if
#
res
~=
0
then
for
k
,
v
in
pairs
(
res
[
1
])
do
shop
[
k
]
=
v
end
j
=
j
+
1
end
end
end
-- SET total_date
shop
[
'total_date'
]
=
zx_base
:
tonumber
(
os.date
(
'%Y%m%d'
,
total_time
))
-- INSERT INTO tk_sdt
local
str
=
zx_base
:
sql_concate
(
'duplicate'
,
'tk_sdt'
,
shop
)
-- Convert type
shop
[
'op_map_id'
]
=
zx_base
:
tonumber
(
shop
[
'op_map_id'
])
shop
[
'mer_map_id'
]
=
zx_base
:
tonumber
(
shop
[
'mer_map_id'
])
shop
[
'shop_map_id'
]
=
zx_base
:
tonumber
(
shop
[
'shop_map_id'
])
shop
[
'total_date'
]
=
zx_base
:
tonumber
(
shop
[
'total_date'
])
shop
[
'city_county_id'
]
=
zx_base
:
tonumber
(
shop
[
'city_county_id'
])
shop
[
't_order_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_cnt'
])
shop
[
't_order_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_amt'
])
shop
[
't_order_on_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_on_cnt'
])
shop
[
't_order_on_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_on_amt'
])
shop
[
't_order_off_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_off_cnt'
])
shop
[
't_order_off_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_off_amt'
])
shop
[
't_order_vip_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_vip_cnt'
])
shop
[
't_order_vip_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_vip_amt'
])
shop
[
't_order_novip_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_novip_cnt'
])
shop
[
't_order_novip_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_novip_amt'
])
shop
[
't_order_ms_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_ms_cnt'
])
shop
[
't_order_avg_price'
]
=
zx_base
:
tonumber
(
shop
[
't_order_avg_price'
])
shop
[
't_order_profit'
]
=
zx_base
:
tonumber
(
shop
[
't_order_profit'
])
shop
[
't_order_profit_per'
]
=
zx_base
:
tonumber
(
shop
[
't_order_profit_per'
])
shop
[
't_vip_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_vip_cnt'
])
shop
[
't_vip_newcnt'
]
=
zx_base
:
tonumber
(
shop
[
't_vip_newcnt'
])
shop
[
't_charge_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_charge_cnt'
])
shop
[
't_charge_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_charge_amt'
])
shop
[
't_point_use_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_point_use_cnt'
])
shop
[
't_point_use_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_point_use_amt'
])
shop
[
't_ticket_use_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_ticket_use_cnt'
])
shop
[
't_ticket_use_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_ticket_use_amt'
])
shop
[
't_point_send_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_point_send_cnt'
])
shop
[
't_point_send_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_point_send_amt'
])
shop
[
't_ticket_send_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_ticket_send_cnt'
])
shop
[
't_ticket_send_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_ticket_send_amt'
])
shop
[
'pay_cash_cnt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_cash_cnt'
])
shop
[
'pay_cash_amt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_cash_amt'
])
shop
[
'pay_bank_cnt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_bank_cnt'
])
shop
[
'pay_bank_amt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_bank_amt'
])
shop
[
'pay_vipcard_cnt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_vipcard_cnt'
])
shop
[
'pay_vipcard_amt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_vipcard_amt'
])
shop
[
'pay_wx_cnt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_wx_cnt'
])
shop
[
'pay_wx_amt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_wx_amt'
])
shop
[
'pay_alipay_cnt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_alipay_cnt'
])
shop
[
'pay_alipay_amt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_alipay_amt'
])
shop
[
'pay_othpay_cnt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_othpay_cnt'
])
shop
[
'pay_othpay_amt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_othpay_amt'
])
shop
[
'time_cnt_0009'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_0009'
])
shop
[
'time_amt_0009'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_0009'
])
shop
[
'time_avg_price_0009'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_0009'
])
shop
[
'time_profit_0009'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_0009'
])
shop
[
'time_profit_per_0009'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_0009'
])
shop
[
'time_cnt_0911'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_0911'
])
shop
[
'time_amt_0911'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_0911'
])
shop
[
'time_avg_price_0911'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_0911'
])
shop
[
'time_profit_0911'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_0911'
])
shop
[
'time_profit_per_0911'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_0911'
])
shop
[
'time_cnt_1113'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_1113'
])
shop
[
'time_amt_1113'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_1113'
])
shop
[
'time_avg_price_1113'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_1113'
])
shop
[
'time_profit_1113'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_1113'
])
shop
[
'time_profit_per_1113'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_1113'
])
shop
[
'time_cnt_1315'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_1315'
])
shop
[
'time_amt_1315'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_1315'
])
shop
[
'time_avg_price_1315'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_1315'
])
shop
[
'time_profit_1315'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_1315'
])
shop
[
'time_profit_per_1315'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_1315'
])
shop
[
'time_cnt_1517'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_1517'
])
shop
[
'time_amt_1517'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_1517'
])
shop
[
'time_avg_price_1517'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_1517'
])
shop
[
'time_profit_1517'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_1517'
])
shop
[
'time_profit_per_1517'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_1517'
])
shop
[
'time_cnt_1719'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_1719'
])
shop
[
'time_amt_1719'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_1719'
])
shop
[
'time_avg_price_1719'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_1719'
])
shop
[
'time_profit_1719'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_1719'
])
shop
[
'time_profit_per_1719'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_1719'
])
shop
[
'time_cnt_1921'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_1921'
])
shop
[
'time_amt_1921'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_1921'
])
shop
[
'time_avg_price_1921'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_1921'
])
shop
[
'time_profit_1921'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_1921'
])
shop
[
'time_profit_per_1921'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_1921'
])
shop
[
'time_cnt_2124'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_2124'
])
shop
[
'time_amt_2124'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_2124'
])
shop
[
'time_avg_price_2124'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_2124'
])
shop
[
'time_profit_2124'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_2124'
])
shop
[
'time_profit_per_2124'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_2124'
])
-- Calculate
shop
[
't_order_off_amt'
]
=
shop
[
't_order_amt'
]
-
shop
[
't_order_on_amt'
]
shop
[
't_order_off_cnt'
]
=
shop
[
't_order_cnt'
]
-
shop
[
't_order_on_cnt'
]
shop
[
't_order_novip_amt'
]
=
shop
[
't_order_amt'
]
-
shop
[
't_order_vip_amt'
]
shop
[
't_order_novip_cnt'
]
=
shop
[
't_order_cnt'
]
-
shop
[
't_order_vip_cnt'
]
if
shop
[
't_order_amt'
]
==
0
or
shop
[
't_order_cnt'
]
==
0
then
shop
[
't_order_avg_price'
]
=
0
shop
[
't_order_profit_per'
]
=
0
else
shop
[
't_order_avg_price'
]
=
shop
[
't_order_amt'
]
/
shop
[
't_order_cnt'
]
shop
[
't_order_profit_per'
]
=
shop
[
't_order_profit'
]
/
shop
[
't_order_amt'
]
*
10000
end
-- SET total_date
shop
[
'total_date'
]
=
zx_base
:
tonumber
(
os.date
(
'%Y%m%d'
,
os.time
()))
-- Convert type
shop
[
'op_map_id'
]
=
zx_base
:
tonumber
(
shop
[
'op_map_id'
])
shop
[
'mer_map_id'
]
=
zx_base
:
tonumber
(
shop
[
'mer_map_id'
])
shop
[
'shop_map_id'
]
=
zx_base
:
tonumber
(
shop
[
'shop_map_id'
])
shop
[
'total_date'
]
=
zx_base
:
tonumber
(
shop
[
'total_date'
])
shop
[
'city_county_id'
]
=
zx_base
:
tonumber
(
shop
[
'city_county_id'
])
shop
[
't_order_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_cnt'
])
shop
[
't_order_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_amt'
])
shop
[
't_order_on_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_on_cnt'
])
shop
[
't_order_on_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_on_amt'
])
shop
[
't_order_off_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_off_cnt'
])
shop
[
't_order_off_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_off_amt'
])
shop
[
't_order_vip_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_vip_cnt'
])
shop
[
't_order_vip_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_vip_amt'
])
shop
[
't_order_novip_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_novip_cnt'
])
shop
[
't_order_novip_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_novip_amt'
])
shop
[
't_order_ms_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_order_ms_cnt'
])
shop
[
't_order_avg_price'
]
=
zx_base
:
tonumber
(
shop
[
't_order_avg_price'
])
shop
[
't_order_profit'
]
=
zx_base
:
tonumber
(
shop
[
't_order_profit'
])
shop
[
't_order_profit_per'
]
=
zx_base
:
tonumber
(
shop
[
't_order_profit_per'
])
shop
[
't_vip_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_vip_cnt'
])
shop
[
't_vip_newcnt'
]
=
zx_base
:
tonumber
(
shop
[
't_vip_newcnt'
])
shop
[
't_charge_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_charge_cnt'
])
shop
[
't_charge_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_charge_amt'
])
shop
[
't_point_use_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_point_use_cnt'
])
shop
[
't_point_use_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_point_use_amt'
])
shop
[
't_ticket_use_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_ticket_use_cnt'
])
shop
[
't_ticket_use_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_ticket_use_amt'
])
shop
[
't_point_send_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_point_send_cnt'
])
shop
[
't_point_send_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_point_send_amt'
])
shop
[
't_ticket_send_cnt'
]
=
zx_base
:
tonumber
(
shop
[
't_ticket_send_cnt'
])
shop
[
't_ticket_send_amt'
]
=
zx_base
:
tonumber
(
shop
[
't_ticket_send_amt'
])
shop
[
'pay_cash_cnt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_cash_cnt'
])
shop
[
'pay_cash_amt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_cash_amt'
])
shop
[
'pay_bank_cnt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_bank_cnt'
])
shop
[
'pay_bank_amt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_bank_amt'
])
shop
[
'pay_vipcard_cnt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_vipcard_cnt'
])
shop
[
'pay_vipcard_amt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_vipcard_amt'
])
shop
[
'pay_wx_cnt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_wx_cnt'
])
shop
[
'pay_wx_amt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_wx_amt'
])
shop
[
'pay_alipay_cnt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_alipay_cnt'
])
shop
[
'pay_alipay_amt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_alipay_amt'
])
shop
[
'pay_othpay_cnt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_othpay_cnt'
])
shop
[
'pay_othpay_amt'
]
=
zx_base
:
tonumber
(
shop
[
'pay_othpay_amt'
])
shop
[
'time_cnt_0009'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_0009'
])
shop
[
'time_amt_0009'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_0009'
])
shop
[
'time_avg_price_0009'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_0009'
])
shop
[
'time_profit_0009'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_0009'
])
shop
[
'time_profit_per_0009'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_0009'
])
shop
[
'time_cnt_0911'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_0911'
])
shop
[
'time_amt_0911'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_0911'
])
shop
[
'time_avg_price_0911'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_0911'
])
shop
[
'time_profit_0911'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_0911'
])
shop
[
'time_profit_per_0911'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_0911'
])
shop
[
'time_cnt_1113'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_1113'
])
shop
[
'time_amt_1113'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_1113'
])
shop
[
'time_avg_price_1113'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_1113'
])
shop
[
'time_profit_1113'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_1113'
])
shop
[
'time_profit_per_1113'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_1113'
])
shop
[
'time_cnt_1315'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_1315'
])
shop
[
'time_amt_1315'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_1315'
])
shop
[
'time_avg_price_1315'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_1315'
])
shop
[
'time_profit_1315'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_1315'
])
shop
[
'time_profit_per_1315'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_1315'
])
shop
[
'time_cnt_1517'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_1517'
])
shop
[
'time_amt_1517'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_1517'
])
shop
[
'time_avg_price_1517'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_1517'
])
shop
[
'time_profit_1517'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_1517'
])
shop
[
'time_profit_per_1517'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_1517'
])
shop
[
'time_cnt_1719'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_1719'
])
shop
[
'time_amt_1719'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_1719'
])
shop
[
'time_avg_price_1719'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_1719'
])
shop
[
'time_profit_1719'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_1719'
])
shop
[
'time_profit_per_1719'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_1719'
])
shop
[
'time_cnt_1921'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_1921'
])
shop
[
'time_amt_1921'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_1921'
])
shop
[
'time_avg_price_1921'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_1921'
])
shop
[
'time_profit_1921'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_1921'
])
shop
[
'time_profit_per_1921'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_1921'
])
shop
[
'time_cnt_2124'
]
=
zx_base
:
tonumber
(
shop
[
'time_cnt_2124'
])
shop
[
'time_amt_2124'
]
=
zx_base
:
tonumber
(
shop
[
'time_amt_2124'
])
shop
[
'time_avg_price_2124'
]
=
zx_base
:
tonumber
(
shop
[
'time_avg_price_2124'
])
shop
[
'time_profit_2124'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_2124'
])
shop
[
'time_profit_per_2124'
]
=
zx_base
:
tonumber
(
shop
[
'time_profit_per_2124'
])
-- Calculate
shop
[
't_order_off_amt'
]
=
shop
[
't_order_amt'
]
-
shop
[
't_order_on_amt'
]
shop
[
't_order_off_cnt'
]
=
shop
[
't_order_cnt'
]
-
shop
[
't_order_on_cnt'
]
shop
[
't_order_novip_amt'
]
=
shop
[
't_order_amt'
]
-
shop
[
't_order_vip_amt'
]
shop
[
't_order_novip_cnt'
]
=
shop
[
't_order_cnt'
]
-
shop
[
't_order_vip_cnt'
]
if
shop
[
't_order_amt'
]
==
0
or
shop
[
't_order_cnt'
]
==
0
then
shop
[
't_order_avg_price'
]
=
0
shop
[
't_order_profit_per'
]
=
0
else
shop
[
't_order_avg_price'
]
=
shop
[
't_order_amt'
]
/
shop
[
't_order_cnt'
]
shop
[
't_order_profit_per'
]
=
shop
[
't_order_profit'
]
/
shop
[
't_order_amt'
]
*
10000
end
if
shop
[
't_order_cnt'
]
==
0
then
break
end
-- INSERT INTO tk_biz database
res
,
err
,
errcode
,
sqlstate
=
db_biz
:
query
(
str
)
ngx
.
log
(
ngx
.
NOTICE
,
str
)
if
not
res
then
ngx
.
log
(
ngx
.
ERR
,
"failed to query:"
,
json
.
encode
(
tk_biz
),
":"
,
err
,
":"
,
errcode
,
":"
,
sqlstate
,
"."
)
return
end
-- INSERT INTO tk_sdt
local
str
=
zx_base
:
sql_concate
(
'insert into'
,
'tk_sdt'
,
shop
)
-- INSERT INTO tk_control database
res
,
err
,
errcode
,
sqlstate
=
db_control
:
query
(
str
)
ngx
.
log
(
ngx
.
NOTICE
,
str
)
if
not
res
then
ngx
.
log
(
ngx
.
ERR
,
"failed to query:"
,
json
.
encode
(
tk_control
),
":"
,
err
,
":"
,
errcode
,
":"
,
sqlstate
,
"."
)
return
end
-- INSERT INTO tk_biz database
res
,
err
,
errcode
,
sqlstate
=
db_biz
:
query
(
str
)
if
not
res
then
zx_base
:
log
(
"S"
,
"[TK_SDT]"
,
"failed to query:"
,
json
.
encode
(
tk_biz
),
":"
,
err
,
":"
,
errcode
,
":"
,
sqlstate
,
"."
)
zx_base
:
log
(
"S"
,
"[TK_SDT]"
,
str
)
return
end
-- INSERT INTO tk_control database
res
,
err
,
errcode
,
sqlstate
=
db_control
:
query
(
str
)
if
not
res
then
zx_base
:
log
(
"S"
,
"[TK_SDT]"
,
"failed to query:"
,
json
.
encode
(
tk_control
),
":"
,
err
,
":"
,
errcode
,
":"
,
sqlstate
,
"."
)
zx_base
:
log
(
"S"
,
"[TK_SDT]"
,
str
)
return
-- table.insert(shops, shop)
break
end
table.insert
(
shops
,
shop
)
end
ngx
.
say
(
json
.
encode
({
shops
=
shops
}))
zx_base
:
log
(
MODULE
,
"-----------------------> END[TK_SDT]"
)
zx_base
:
close_db
(
db_biz
)
zx_base
:
close_db
(
db_control
)
ngx
.
log
(
ngx
.
NOTICE
,
"-----------------------> END"
)
end
...
...
@@ -497,16 +509,15 @@ end
-- table tk_control 总控机数据库对象
-- table tk_database 数据同步数据库名
-- @return nil
local
function
async
(
tk_biz
,
tk_control
,
t
k_databas
e
)
local
function
async
(
tk_biz
,
tk_control
,
t
otal_tim
e
)
local
co
=
coroutine.wrap
(
function
()
sdt_sql
(
tk_biz
,
tk_control
,
t
k_databas
e
)
sdt_sql
(
tk_biz
,
tk_control
,
t
otal_tim
e
)
end
)
table.insert
(
tasks
,
co
)
end
-- 协程调度
-- @param nil
-- @return nil
...
...
@@ -529,16 +540,16 @@ local function dispatch()
end
end
-- 跑批业务处理
-- @param nil
-- @return nil
function
TK_SDT
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
function
TK_SDT
.
run
(
self
,
total_time
)
--
local dbs_st = zx_base:db_read(db_conf)
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
dbs_st
.
tk_control
)
-- async(dbs_st.tk_biz[i], dbs_st.tk_control, total_time)
sdt_sql
(
dbs_st
.
tk_biz
[
i
],
dbs_st
.
tk_control
,
total_time
)
end
dispatch
()
--
dispatch()
end
return
TK_SDT
nginx/lua/luabiz/tk_sync.lua
View file @
f58ebb7a
...
...
@@ -14,73 +14,66 @@ local tasks = {}
local
function
EOF
()
zx_base
:
log
(
MODULE
,
"-----------------------> END[TK_SYNC]"
)
ngx
.
eof
()
end
-- 表信息
-- @param table tk_biz 节点机数据库对象
-- table tk_control 总控机数据库对象
-- table tk_database 数据同步数据库名
-- table tk_table 数据同步表名
-- @return nil
local
function
sync_sql
(
tk_biz
,
tk_control
,
tk_database
,
tk_table
)
zx_base
:
log
(
MODULE
,
"-----------------------> START[TK_SYNC]"
)
local
function
sync_sql
(
tk_biz
,
tk_control
,
tk_table
)
ngx
.
log
(
ngx
.
NOTICE
,
"-----------------------> START"
)
-- 新建mysql连接
local
db
,
err
=
mysql
:
new
()
if
not
db
then
zx_base
:
log
(
MODULE
,
"[TK_SYNC]"
,
"failed to instantiate mysql: "
,
err
)
ngx
.
log
(
ngx
.
ERR
,
"failed to instantiate mysql: "
,
err
)
return
false
end
db
:
set_timeout
(
1000
)
-- 1 sec
-- 连接节点机MySQL
local
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
tk_biz
[
'host'
],
port
=
tk_biz
[
'port'
],
database
=
tk_
database
,
database
=
tk_
biz
[
'database'
]
,
user
=
tk_biz
[
'user'
],
password
=
tk_biz
[
'password'
],
timeout
=
tk_biz
[
'timeout'
],
charset
=
'utf8'
}
if
not
ok
then
zx_base
:
log
(
MODULE
,
"[TK_SYNC]"
,
"failed to connect:"
,
json
.
encode
(
tk_biz
),
":"
,
err
,
":"
,
errcode
,
sqlstate
)
ngx
.
log
(
ngx
.
ERR
,
json
.
encode
(
tk_biz
),
":"
,
err
,
errcode
,
sqlstate
)
return
end
-- 查询节点机
local
sql
=
string.format
(
[[SELECT * FROM %s where update_time > %s]]
,
-- os.date("%Y%m%d000000", os.time()-24*60*60)
tk_table
,
"20180716000000"
os.date
(
"%Y%m%d000000"
,
os.time
()
-
24
*
60
*
60
)
)
ngx
.
log
(
ngx
.
NOTICE
,
sql
)
local
syncs
syncs
,
err
,
errcode
,
sqlstate
=
db
:
query
(
sql
)
if
not
syncs
then
zx_base
:
log
(
MODULE
,
"[TK_SYNC]"
,
sql
)
zx_base
:
log
(
MODULE
,
"[TK_SYNC]"
,
"failed to query:"
,
json
.
encode
(
tk_biz
),
":"
,
ngx
.
log
(
ngx
.
ERR
,
"failed to query:"
,
json
.
encode
(
tk_biz
),
":"
,
err
,
":"
,
errcode
,
":"
,
sqlstate
,
"."
)
return
end
if
#
syncs
==
0
then
ngx
.
say
(
"no syncs found"
)
ngx
.
eof
()
return
return
"00"
,
"SUCCESS"
end
-- 重置MySQL连接
zx_base
:
close_db
(
db
)
db
,
err
=
mysql
:
new
()
if
not
db
then
zx_base
:
log
(
MODULE
,
"[TK_SYNC]"
,
"failed to instantiate mysql: "
,
err
)
return
false
ngx
.
log
(
ngx
.
ERR
,
"failed to instantiate mysql: "
,
err
)
return
end
db
:
set_timeout
(
1000
)
-- 连接总控机MySQL
ok
,
err
,
errcode
,
sqlstate
=
db
:
connect
{
host
=
tk_control
[
'host'
],
...
...
@@ -92,7 +85,7 @@ local function sync_sql(tk_biz, tk_control, tk_database, tk_table)
charset
=
'utf8'
}
if
not
ok
then
zx_base
:
log
(
MODULE
,
"[TK_SYNC]"
,
"failed to connect:"
,
json
.
encode
(
tk_biz
),
":"
,
errcode
,
sqlstate
)
ngx
.
log
(
ngx
.
ERR
,
json
.
encode
(
tk_control
),
":"
,
err
,
errcode
,
sqlstate
)
return
end
...
...
@@ -101,17 +94,15 @@ local function sync_sql(tk_biz, tk_control, tk_database, tk_table)
for
i
=
1
,
#
syncs
do
local
sync
=
syncs
[
i
]
local
sql_result
=
zx_base
:
sql_concate
(
"duplicate"
,
tk_table
,
sync
)
ngx
.
log
(
ngx
.
NOTICE
,
sql_result
)
ok
,
err
,
errcode
,
sqlstate
=
db
:
query
(
sql_result
)
if
not
ok
then
zx_base
:
log
(
MODULE
,
"[TK_SYNC]"
,
sql_result
)
zx_base
:
log
(
MODULE
,
"[TK_SYNC]"
,
"failed to query:"
,
json
.
encode
(
tk_control
),
":"
,
ngx
.
log
(
ngx
.
ERR
,
"failed to query:"
,
json
.
encode
(
tk_control
),
":"
,
err
,
":"
,
errcode
,
":"
,
sqlstate
,
"."
)
end
end
ngx
.
say
(
"SUCCESS"
)
EOF
()
ngx
.
log
(
ngx
.
NOTICE
,
"-----------------------> END"
)
end
...
...
@@ -119,13 +110,12 @@ end
-- 异步运行
-- @param table tk_biz 节点机数据库对象
-- table tk_control 总控机数据库对象
-- table tk_database 数据同步数据库名
-- table tk_table 数据同步表名
-- @return nil
local
function
async
(
tk_biz
,
tk_control
,
tk_
database
,
tk_
table
)
local
function
async
(
tk_biz
,
tk_control
,
tk_table
)
local
co
=
coroutine.wrap
(
function
()
sync_sql
(
tk_biz
,
tk_control
,
tk_
database
,
tk_
table
)
sync_sql
(
tk_biz
,
tk_control
,
tk_table
)
end
)
table.insert
(
tasks
,
co
)
...
...
@@ -159,10 +149,10 @@ end
-- @param nil
-- @return nil
function
TK_SYNC
.
run
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
for
i
=
1
,
#
dbs_st
.
tk_biz
do
async
(
dbs_st
.
tk_biz
[
i
],
dbs_st
.
tk_control
,
dbs_st
.
tk_biz
[
i
].
database
,
"tk_shop"
)
async
(
dbs_st
.
tk_biz
[
i
],
dbs_st
.
tk_control
,
dbs_st
.
tk_biz
[
i
].
database
,
"tk_casher"
)
async
(
dbs_st
.
tk_biz
[
i
],
dbs_st
.
tk_control
,
"tk_shop"
)
async
(
dbs_st
.
tk_biz
[
i
],
dbs_st
.
tk_control
,
"tk_casher"
)
end
dispatch
()
end
...
...
@@ -172,7 +162,7 @@ end
-- @param nil
-- @return ngx.say
local
function
tk_sync
()
local
dbs_st
=
zx_base
:
db_read
(
db_conf
)
--
local dbs_st = zx_base:db_read(db_conf)
local
code
local
mesg
...
...
@@ -200,7 +190,8 @@ local function tk_sync()
return
code
,
mesg
else
async
(
dbs_st
.
tk_biz
[
i
],
dbs_st
.
tk_control
,
dbs_st
.
tk_biz
[
i
].
database
,
data
.
dbTable
)
-- async(dbs_st.tk_biz[i], dbs_st.tk_control, data.dbTable)
sync_sql
(
dbs_st
.
tk_biz
[
i
],
dbs_st
.
tk_control
,
data
.
dbTable
)
code
=
"00"
mesg
=
"SUCCESS"
...
...
@@ -223,7 +214,9 @@ function TK_SYNC.sync()
ngx
.
say
(
json
.
encode
({
mesgRetCode
=
code
,
mesgRetDesc
=
mesg
}))
ngx
.
eof
()
ngx
.
log
(
ngx
.
ERR
,
ngx
.
var
.
request_body
)
end
return
TK_SYNC
nginx/lua/luabiz/zx_base.lua
View file @
f58ebb7a
local
_BASE
=
{
}
local
ZX_BASE
=
{
__index
=
_G
}
local
json
=
loadmod
(
'cjson'
)
function
_BASE
.
__FILE__
()
return
debug.getinfo
(
2
,
'S'
).
source
end
function
_BASE
.
__LINE__
()
return
debug.getinfo
(
2
,
'l'
).
currentline
end
function
ZX
_BASE
.
__FILE__
()
return
debug.getinfo
(
2
,
'S'
).
source
end
function
ZX
_BASE
.
__LINE__
()
return
debug.getinfo
(
2
,
'l'
).
currentline
end
function
_BASE
.
log
(
self
,
fname
,
...
)
function
ZX
_BASE
.
log
(
self
,
fname
,
...
)
local
fpath
=
string.format
(
"%s/%s_%s.log"
,
ngx
.
var
.
logs_path
,
tostring
(
fname
),
os.date
(
"%Y%m%d"
))
local
f
=
io.open
(
fpath
,
"a+"
)
local
str
=
""
...
...
@@ -15,13 +15,12 @@ function _BASE.log(self, fname, ...)
str
=
string.format
(
"%s %s"
,
str
,
tmp
)
end
f
:
write
(
os.date
(
"<%Y-%m-%d %H:%M:%S> "
))
-- f:write(...)
f
:
write
(
str
)
f
:
write
(
"
\n
"
)
f
:
close
()
end
function
_BASE
.
db_read
(
self
,
dbpath
)
function
ZX
_BASE
.
db_read
(
self
,
dbpath
)
local
f
=
io.open
(
ngx
.
var
.
conf_path
..
"/"
..
dbpath
,
"r"
)
local
tmp
=
f
:
read
(
"a*"
)
local
db_st
=
json
.
decode
(
tmp
)
...
...
@@ -29,19 +28,18 @@ function _BASE.db_read(self, dbpath)
return
db_st
end
function
_BASE
.
close_db
(
self
,
db
)
function
ZX
_BASE
.
close_db
(
self
,
db
)
if
not
db
then
return
end
local
ok
,
err
=
db
:
close
()
if
not
ok
then
_BASE
.
log
(
"failed to close:"
,
err
)
ZX
_BASE
.
log
(
"failed to close:"
,
err
)
end
return
end
function
_BASE
.
sql_concate
(
self
,
operate
,
tb_name
,
tb_data
)
function
ZX_BASE
.
sql_concate
(
self
,
operate
,
tb_name
,
tb_data
)
local
sub
=
""
for
k
,
v
in
pairs
(
tb_data
)
do
if
v
~=
nil
and
v
~=
""
then
...
...
@@ -67,7 +65,7 @@ function _BASE.sql_concate(self, operate, tb_name, tb_data)
end
function
_BASE
.
tonumber
(
self
,
str
)
function
ZX
_BASE
.
tonumber
(
self
,
str
)
if
str
==
nil
or
str
==
""
then
return
0
else
...
...
@@ -75,4 +73,12 @@ function _BASE.tonumber(self, str)
end
end
return
_BASE
function
ZX_BASE
.
date2time
(
self
,
settletime
)
local
regex
=
[[(%d+)-(%d+)-(%d+)]]
local
y
,
m
,
d
=
settletime
:
match
(
regex
)
local
time
=
os.time
({
year
=
y
,
month
=
m
,
day
=
d
})
return
time
end
return
ZX_BASE
nginx/lua/luainit/init.lua
View file @
f58ebb7a
...
...
@@ -44,3 +44,36 @@ function _G.loadmod(namespace)
-- 模块加载失败
error
(
module
,
2
)
end
-- _G.fpath = string.format("/var/log/www/S_%s.log", os.date("%Y%m%d"))
-- _G.f = io.open(_G.fpath, "a+")
-- 唐库 7 数据库文件
_G
.
dbs_st
=
{
tk_sku
=
{
host
=
"192.168.254.100"
,
port
=
3306
,
database
=
"tk_sku"
,
user
=
"root"
,
password
=
""
,
timeout
=
30
},
tk_control
=
{
host
=
"rm-bp1u9rp1p216nb15f.mysql.rds.aliyuncs.com"
,
port
=
3306
,
database
=
"tk_control"
,
user
=
"tk_control_user"
,
password
=
"KJjsdn%zx3@jr#y57dhh20drYT!z"
,
timeout
=
30
},
tk_biz
=
{
{
host
=
"rm-bp1rob0a7ry7zmc0n.mysql.rds.aliyuncs.com"
,
port
=
3306
,
database
=
"tk_biz"
,
user
=
"tk_node_user"
,
password
=
"KJjsnc%gs5@jr#y789sajkshdrYT!z"
,
timeout
=
30
}
}
}
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