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
956f2471
Commit
956f2471
authored
Sep 02, 2018
by
周尚
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复卡券批处理因时间格式导致的错误
暂时关闭门店日统计的批处理检查以规避mysql连接错误问题
parent
df4029a7
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
589 additions
and
517 deletions
+589
-517
nginx/conf/nginx.conf
nginx/conf/nginx.conf
+1
-0
nginx/lua/luabiz/node_card.lua
nginx/lua/luabiz/node_card.lua
+1
-1
nginx/lua/luabiz/node_ticket.lua
nginx/lua/luabiz/node_ticket.lua
+1
-1
nginx/lua/luabiz/settle.lua
nginx/lua/luabiz/settle.lua
+13
-6
nginx/lua/luabiz/tk_sdt.lua
nginx/lua/luabiz/tk_sdt.lua
+573
-509
No files found.
nginx/conf/nginx.conf
View file @
956f2471
...
...
@@ -18,6 +18,7 @@ http {
include
mime.types
;
default_type
application/octet-stream
;
log_format
main
#log_format main "'$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
...
...
nginx/lua/luabiz/node_card.lua
View file @
956f2471
...
...
@@ -39,7 +39,7 @@ local function card_sql(db_st, total_time)
-- DELETE invalid rows
-- 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
sql_update
=
string.format
(
[[UPDATE node_card SET card_status = 8 WHERE %d > card_exp]]
,
os.date
(
"%Y%m%d"
))
local
res
,
err
,
errcode
,
sqlstate
=
db
:
query
(
sql_update
)
ngx
.
log
(
ngx
.
NOTICE
,
sql_update
)
if
not
res
then
...
...
nginx/lua/luabiz/node_ticket.lua
View file @
956f2471
...
...
@@ -36,7 +36,7 @@ local function ticket_sql(db_st, total_time)
-- 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]]
local
sql_update
=
string.format
(
[[UPDATE node_ticket SET ticket_status = 8 WHERE %d > ticket_exp]]
,
os.date
(
"%Y%m%d"
))
ngx
.
log
(
ngx
.
NOTICE
,
sql_update
)
local
res
,
err
,
errcode
,
sqlstate
=
db
:
query
(
sql_update
)
if
not
res
then
...
...
nginx/lua/luabiz/settle.lua
View file @
956f2471
local
SETTLE
=
{}
-- Settle modules
local
zx_base
=
loadmod
(
'zx_base'
)
-- local node_asb = loadmod('node_asb')
...
...
@@ -26,7 +27,7 @@ local tk_sync = loadmod('tk_sync')
local
delay
=
5
-- delaytime
local
interval_time
=
'0
10
0'
-- time to run, here is 12:00 for each day
local
interval_time
=
'0
03
0'
-- 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
)
...
...
@@ -58,10 +59,17 @@ handler = function(premature, interval_time, settletime)
-- node_smsvip: run()
-- node_vipacct: run()
tk_sync
:
run
()
node_card
:
run
(
settletime
)
node_ticket
:
run
(
settletime
)
tk_sdt
:
run
(
settletime
)
-- tk_sync: run()
-- node_card: run(settletime)
-- node_ticket: run(settletime)
-- tk_sdt: run(settletime)
local
handle
=
io.popen
(
"curl localhost:8080/settle"
)
if
handle
then
handle
:
close
()
end
-- reset interval_time
interval_time
=
tostring
(
tonumber
(
interval_time
)
-
1
)
...
...
@@ -85,7 +93,6 @@ if ngx.worker.id() == 1 then
end
end
local
SETTLE
=
{}
function
SETTLE
.
run
()
local
args
=
ngx
.
req
.
get_uri_args
()
local
t
...
...
nginx/lua/luabiz/tk_sdt.lua
View file @
956f2471
...
...
@@ -17,489 +17,553 @@ local tasks = {}
-- table tk_database 数据同步数据库名
-- @return nil
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
ngx
.
log
(
ngx
.
ERR
,
"failed to instantiate mysql: "
,
err
)
return
false
end
-- 超时设置
db_biz
:
set_timeout
(
1000
)
-- 连接tk_biz
local
ok
,
err
,
errcode
,
sqlstate
=
db_biz
:
connect
{
host
=
tk_biz
[
'host'
],
port
=
tk_biz
[
'port'
],
database
=
tk_biz
[
'database'
],
user
=
tk_biz
[
'user'
],
password
=
tk_biz
[
'password'
],
timeout
=
tk_biz
[
'timeout'
],
charset
=
'utf8'
}
if
not
ok
then
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
ngx
.
log
(
ngx
.
ERR
,
"failed to instantiate mysql: "
,
err
)
return
false
end
-- 超时设置
db_control
:
set_timeout
(
1000
)
-- 连接tk_control
local
ok
,
err
,
errcode
,
sqlstate
=
db_control
:
connect
{
host
=
tk_control
[
'host'
],
port
=
tk_control
[
'port'
],
database
=
tk_control
[
'database'
],
user
=
tk_control
[
'user'
],
password
=
tk_control
[
'password'
],
timeout
=
tk_control
[
'timeout'
],
charset
=
'utf8'
}
if
not
ok
then
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;'
shops
,
err
,
errcode
,
sqlstate
=
db_biz
:
query
(
sql_select
)
ngx
.
log
(
ngx
.
NOTICE
,
sql_select
)
if
not
shops
then
ngx
.
log
(
ngx
.
ERR
,
"failed to query:"
,
json
.
encode
(
tk_biz
),
":"
,
err
,
":"
,
errcode
,
":"
,
sqlstate
,
"."
)
return
end
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
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
if
#
res
~=
0
then
for
k
,
v
in
pairs
(
res
[
1
])
do
shop
[
k
]
=
v
end
j
=
j
+
1
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
if
shop
[
't_order_cnt'
]
==
0
then
break
ngx
.
log
(
ngx
.
NOTICE
,
"-----------------------> START"
)
-- 新建mysql连接
local
db_biz
,
err
=
mysql
:
new
()
if
not
db_biz
then
zx_base
:
log
(
"S"
,
"failed to instantiate mysql: "
,
err
)
return
false
end
-- 超时设置
db_biz
:
set_timeout
(
1000
)
-- 连接tk_biz
local
ok
,
err
,
errcode
,
sqlstate
=
db_biz
:
connect
{
host
=
tk_biz
[
'host'
],
port
=
tk_biz
[
'port'
],
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
(
"S"
,
json
.
encode
(
tk_biz
),
":"
,
err
,
errcode
,
sqlstate
)
return
end
-- 新建mysql连接
local
db_control
,
err
=
mysql
:
new
()
if
not
db_control
then
zx_base
:
log
(
"S"
,
"failed to instantiate mysql: "
,
err
)
return
false
end
-- 超时设置
db_control
:
set_timeout
(
1000
)
-- 连接tk_control
local
ok
,
err
,
errcode
,
sqlstate
=
db_control
:
connect
{
host
=
tk_control
[
'host'
],
port
=
tk_control
[
'port'
],
database
=
tk_control
[
'database'
],
user
=
tk_control
[
'user'
],
password
=
tk_control
[
'password'
],
timeout
=
tk_control
[
'timeout'
],
charset
=
'utf8'
}
if
not
ok
then
zx_base
:
log
(
"S"
,
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 mer_map_id, shop_map_id FROM tk_shop'
shops
,
err
,
errcode
,
sqlstate
=
db_biz
:
query
(
sql_select
)
ngx
.
log
(
ngx
.
NOTICE
,
sql_select
)
if
not
shops
then
zx_base
:
log
(
"S"
,
"failed to query:"
,
json
.
encode
(
tk_biz
),
":"
,
err
,
":"
,
errcode
,
":"
,
sqlstate
,
"."
)
return
end
for
i
=
1
,
#
shops
do
while
true
do
local
shop
local
sql
=
{}
local
res
shop
=
shops
[
i
]
-- -- CHECK if exists
-- local sql_do = 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_do)
-- if not res then
-- zx_base:log("S", "failed to connect:", json.encode(tk_biz), ":", err, ":", errcode, ":", sqlstate, ".")
-- zx_base:log("S", sql_do)
-- return
-- end
-- if #res ~= 0 then
-- ngx.log(ngx.NOTICE, shop['shop_map_id'], " finished already")
-- break
-- end
-- GET summary
table.insert
(
sql
,
string.format
(
[[SELECT op_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
))
)
-- ngx.log(ngx.NOTICE, sql[1])
-- 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
))
)
-- ngx.log(ngx.NOTICE, sql[2])
-- 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
))
)
-- ngx.log(ngx.NOTICE, sql[3])
-- 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
))
)
-- ngx.log(ngx.NOTICE, sql[4])
-- 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 order_status = 0 ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d000000'
,
total_time
-
24
*
60
*
60
),
os.date
(
'%Y%m%d090000'
,
total_time
-
24
*
60
*
60
))
)
-- ngx.log(ngx.NOTICE, sql[5])
-- 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 order_status = 0 ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d090000'
,
total_time
-
24
*
60
*
60
),
os.date
(
'%Y%m%d110000'
,
total_time
-
24
*
60
*
60
))
)
-- ngx.log(ngx.NOTICE, sql[6])
-- 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 order_status = 0 ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d110000'
,
total_time
-
24
*
60
*
60
),
os.date
(
'%Y%m%d130000'
,
total_time
-
24
*
60
*
60
))
)
-- ngx.log(ngx.NOTICE, sql[7])
-- 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 order_status = 0 ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d130000'
,
total_time
-
24
*
60
*
60
),
os.date
(
'%Y%m%d150000'
,
total_time
-
24
*
60
*
60
))
)
-- ngx.log(ngx.NOTICE, sql[8])
-- 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 order_status = 0 ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d150000'
,
total_time
-
24
*
60
*
60
),
os.date
(
'%Y%m%d170000'
,
total_time
-
24
*
60
*
60
))
)
-- ngx.log(ngx.NOTICE, sql[9])
-- 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 order_status = 0 ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d170000'
,
total_time
-
24
*
60
*
60
),
os.date
(
'%Y%m%d190000'
,
total_time
-
24
*
60
*
60
))
)
-- ngx.log(ngx.NOTICE, sql[10])
-- 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 order_status = 0 ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d190000'
,
total_time
-
24
*
60
*
60
),
os.date
(
'%Y%m%d210000'
,
total_time
-
24
*
60
*
60
))
)
-- ngx.log(ngx.NOTICE, sql[11])
-- 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 order_status = 0 ]]
..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]]
,
tostring
(
shop
.
shop_map_id
),
os.date
(
'%Y%m%d210000'
,
total_time
-
24
*
60
*
60
),
os.date
(
'%Y%m%d235959'
,
total_time
-
24
*
60
*
60
))
)
-- ngx.log(ngx.NOTICE, sql[12])
-- get VIP cnt
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(DISTINCT(vip_map_id)), 0) t_vip_cnt ]]
..
[[FROM node_vipacct ]]
..
[[WHERE DATE(create_time) <= %s ]]
..
[[AND 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'
]))
)
-- ngx.log(ngx.NOTICE, sql[13])
-- GET VIP new cnt
table.insert
(
sql
,
string.format
(
[[SELECT IFNULL(COUNT(DISTINCT(vip_map_id)), 0) t_vip_newcnt ]]
..
[[FROM node_vipacct ]]
..
[[WHERE DATE(create_time) = DATE('%s') ]]
..
[[AND 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'
]))
)
-- ngx.log(ngx.NOTICE, sql[14])
-- 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
))
)
-- ngx.log(ngx.NOTICE, sql[15])
-- 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
))
)
-- ngx.log(ngx.NOTICE, sql[16])
-- 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
))
)
-- ngx.log(ngx.NOTICE, sql[17])
-- 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
))
)
-- ngx.log(ngx.NOTICE, sql[18])
-- 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
))
)
-- ngx.log(ngx.NOTICE, sql[19])
-- 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
))
)
-- ngx.log(ngx.NOTICE, sql[20])
-- 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[21])
res
,
err
,
errcode
,
sqlstate
=
db_biz
:
query
(
table.concat
(
sql
))
if
not
res
then
zx_base
:
log
(
"S"
,
"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
-- else
-- break
end
ngx
.
log
(
ngx
.
NOTICE
,
string.format
(
"================ TK_SDT [%s - %s] =========="
,
tostring
(
shop
[
'shop_map_id'
]),
os.date
(
"%Y%m%d"
,
total_time
)))
for
k
,
v
in
pairs
(
shop
)
do
ngx
.
log
(
ngx
.
NOTICE
,
string.format
(
"%-32s : %s"
,
k
,
tostring
(
v
)))
end
local
j
=
2
while
err
==
"again"
do
-- repeat
res
,
err
,
errcode
,
sqlstate
=
db_biz
:
read_result
()
if
not
res
then
zx_base
:
log
(
"S"
,
"bad sql: "
,
sql
[
j
])
zx_base
:
log
(
"S"
,
"bad result #"
,
j
,
": "
,
err
,
": "
,
errcode
,
": "
,
sqlstate
,
"."
)
return
ngx
.
exit
(
500
)
end
ngx
.
log
(
ngx
.
NOTICE
,
string.format
(
"================ TK_SDT [%s - %s] =========="
,
tostring
(
shop
[
'shop_map_id'
]),
os.date
(
"%Y%m%d"
,
total_time
)))
for
k
,
v
in
pairs
(
shop
)
do
ngx
.
log
(
ngx
.
NOTICE
,
string.format
(
"%-32s : %s"
,
k
,
tostring
(
v
)))
end
if
#
res
~=
0
then
for
k
,
v
in
pairs
(
res
[
1
])
do
shop
[
k
]
=
v
end
j
=
j
+
1
end
-- until(err ~= "again")
end
-- SET total_date
shop
[
'total_date'
]
=
zx_base
:
tonumber
(
os.date
(
'%Y%m%d'
,
total_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['vip_cnt'] = zx_base:tonumber(shop['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['vip_cnt'] + shop['t_order_novip_cnt'] - 1)
shop
[
't_order_avg_price'
]
=
math.floor
(
shop
[
't_order_amt'
]
/
shop
[
't_order_cnt'
])
shop
[
't_order_profit_per'
]
=
math.floor
(
shop
[
't_order_profit'
]
/
shop
[
't_order_amt'
]
*
10000
)
end
-- if shop['t_order_cnt'] == 0 and shop['t_vip_newcnt'] == 0 and shop['t_vip_cnt'] == 0 then
-- break
-- end
-- INSERT INTO tk_sdt
local
str
=
zx_base
:
sql_concate
(
'duplicate'
,
'tk_sdt'
,
shop
)
-- INSERT INTO tk_biz database
res
,
err
,
errcode
,
sqlstate
=
db_biz
:
query
(
str
)
ngx
.
log
(
ngx
.
NOTICE
,
str
)
if
not
res
then
zx_base
:
log
(
"S"
,
"failed to query:"
,
json
.
encode
(
tk_biz
),
":"
,
err
,
":"
,
errcode
,
":"
,
sqlstate
,
"."
)
return
end
-- -- INSERT INTO tk_control database
-- res, err, errcode, sqlstate = db_control:query(str)
-- ngx.log(ngx.NOTICE, str)
-- if not res then
-- zx_base:log("S", "failed to query:", json.encode(tk_control),
-- ":", err, ":", errcode, ":", sqlstate, ".")
-- -- return
-- end
-- table.insert(shops, shop)
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_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
-- table.insert(shops, shop)
break
end
end
zx_base
:
close_db
(
db_biz
)
zx_base
:
close_db
(
db_control
)
ngx
.
log
(
ngx
.
NOTICE
,
"-----------------------> END"
)
end
zx_base
:
close_db
(
db_biz
)
zx_base
:
close_db
(
db_control
)
ngx
.
log
(
ngx
.
NOTICE
,
"-----------------------> END"
)
end
...
...
@@ -510,46 +574,46 @@ end
-- table tk_database 数据同步数据库名
-- @return nil
local
function
async
(
tk_biz
,
tk_control
,
total_time
)
local
co
=
coroutine.wrap
(
function
()
sdt_sql
(
tk_biz
,
tk_control
,
total_time
)
end
)
table.insert
(
tasks
,
co
)
local
co
=
coroutine.wrap
(
function
()
sdt_sql
(
tk_biz
,
tk_control
,
total_time
)
end
)
table.insert
(
tasks
,
co
)
end
-- 协程调度
-- @param nil
-- @return nil
local
function
dispatch
()
local
i
=
1
while
true
do
if
tasks
[
i
]
==
nil
then
if
tasks
[
1
]
==
nil
then
break
local
i
=
1
while
true
do
if
tasks
[
i
]
==
nil
then
if
tasks
[
1
]
==
nil
then
break
end
i
=
1
end
local
res
=
tasks
[
i
]()
if
not
res
then
table.remove
(
tasks
,
i
)
else
i
=
i
+
1
end
i
=
1
end
local
res
=
tasks
[
i
]()
if
not
res
then
table.remove
(
tasks
,
i
)
else
i
=
i
+
1
end
end
end
end
-- 跑批业务处理
-- @param nil
-- @return nil
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, total_time)
sdt_sql
(
dbs_st
.
tk_biz
[
i
],
dbs_st
.
tk_control
,
total_time
)
end
-- dispatch()
-- 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, total_time)
sdt_sql
(
dbs_st
.
tk_biz
[
i
],
dbs_st
.
tk_control
,
total_time
)
end
-- dispatch()
end
return
TK_SDT
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