Commit 956f2471 authored by 周尚's avatar 周尚

修复卡券批处理因时间格式导致的错误

暂时关闭门店日统计的批处理检查以规避mysql连接错误问题
parent df4029a7
...@@ -18,6 +18,7 @@ http { ...@@ -18,6 +18,7 @@ http {
include mime.types; include mime.types;
default_type application/octet-stream; default_type application/octet-stream;
log_format main
#log_format main "'$remote_addr - $remote_user [$time_local] "$request" ' #log_format main "'$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" ' # '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; # '"$http_user_agent" "$http_x_forwarded_for"';
......
...@@ -39,7 +39,7 @@ local function card_sql(db_st, total_time) ...@@ -39,7 +39,7 @@ local function card_sql(db_st, total_time)
-- DELETE invalid rows -- DELETE invalid rows
-- local sql_delete = [[DELETE FROM node_card WHERE (card_status != 0 AND card_status !=1) or now() > card_exp]] -- 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) local res, err, errcode, sqlstate = db:query(sql_update)
ngx.log(ngx.NOTICE, sql_update) ngx.log(ngx.NOTICE, sql_update)
if not res then if not res then
......
...@@ -36,7 +36,7 @@ local function ticket_sql(db_st, total_time) ...@@ -36,7 +36,7 @@ local function ticket_sql(db_st, total_time)
-- DELETE invalid rows -- DELETE invalid rows
-- local sql_delete = [[DELETE FROM node_ticket WHERE (ticket_status != 0 AND ticket_status !=1) or now() > ticket_exp]] -- 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) ngx.log(ngx.NOTICE, sql_update)
local res, err, errcode, sqlstate = db:query(sql_update) local res, err, errcode, sqlstate = db:query(sql_update)
if not res then if not res then
......
local SETTLE = {}
-- Settle modules -- Settle modules
local zx_base = loadmod('zx_base') local zx_base = loadmod('zx_base')
-- local node_asb = loadmod('node_asb') -- local node_asb = loadmod('node_asb')
...@@ -26,7 +27,7 @@ local tk_sync = loadmod('tk_sync') ...@@ -26,7 +27,7 @@ local tk_sync = loadmod('tk_sync')
local delay = 5 -- delaytime local delay = 5 -- delaytime
local interval_time = '0100' -- time to run, here is 12:00 for each day local interval_time = '0030' -- time to run, here is 12:00 for each day
-- local settledate = "2018-08-16" -- local settledate = "2018-08-16"
local settledate = os.date('%Y-%m-%d', os.time()) local settledate = os.date('%Y-%m-%d', os.time())
local settletime = zx_base:date2time(settledate) local settletime = zx_base:date2time(settledate)
...@@ -58,10 +59,17 @@ handler = function(premature, interval_time, settletime) ...@@ -58,10 +59,17 @@ handler = function(premature, interval_time, settletime)
-- node_smsvip: run() -- node_smsvip: run()
-- node_vipacct: run() -- node_vipacct: run()
tk_sync: run() -- tk_sync: run()
node_card: run(settletime) -- node_card: run(settletime)
node_ticket: run(settletime) -- node_ticket: run(settletime)
tk_sdt: run(settletime) -- tk_sdt: run(settletime)
local handle = io.popen("curl localhost:8080/settle")
if handle then
handle:close()
end
-- reset interval_time -- reset interval_time
interval_time = tostring(tonumber(interval_time) - 1) interval_time = tostring(tonumber(interval_time) - 1)
...@@ -85,7 +93,6 @@ if ngx.worker.id() == 1 then ...@@ -85,7 +93,6 @@ if ngx.worker.id() == 1 then
end end
end end
local SETTLE = {}
function SETTLE.run() function SETTLE.run()
local args = ngx.req.get_uri_args() local args = ngx.req.get_uri_args()
local t local t
......
...@@ -17,489 +17,553 @@ local tasks = {} ...@@ -17,489 +17,553 @@ local tasks = {}
-- table tk_database 数据同步数据库名 -- table tk_database 数据同步数据库名
-- @return nil -- @return nil
local function sdt_sql(tk_biz, tk_control, total_time) local function sdt_sql(tk_biz, tk_control, total_time)
ngx.log(ngx.NOTICE, "-----------------------> START") ngx.log(ngx.NOTICE, "-----------------------> START")
-- 新建mysql连接 -- 新建mysql连接
local db_biz, err = mysql:new() local db_biz, err = mysql:new()
if not db_biz then if not db_biz then
ngx.log(ngx.ERR, "failed to instantiate mysql: ", err) zx_base:log("S", "failed to instantiate mysql: ", err)
return false return false
end end
-- 超时设置 -- 超时设置
db_biz:set_timeout(1000) db_biz:set_timeout(1000)
-- 连接tk_biz -- 连接tk_biz
local ok, err, errcode, sqlstate = db_biz:connect{ local ok, err, errcode, sqlstate = db_biz:connect{
host = tk_biz['host'], host = tk_biz['host'],
port = tk_biz['port'], port = tk_biz['port'],
database = tk_biz['database'], database = tk_biz['database'],
user = tk_biz['user'], user = tk_biz['user'],
password = tk_biz['password'], password = tk_biz['password'],
timeout = tk_biz['timeout'], timeout = tk_biz['timeout'],
charset = 'utf8' charset = 'utf8'
} }
if not ok then if not ok then
ngx.log(ngx.ERR, json.encode(tk_biz), ":", err, errcode, sqlstate) zx_base:log("S", json.encode(tk_biz), ":", err, errcode, sqlstate)
return return
end end
-- 新建mysql连接 -- 新建mysql连接
local db_control, err = mysql:new() local db_control, err = mysql:new()
if not db_control then if not db_control then
ngx.log(ngx.ERR, "failed to instantiate mysql: ", err) zx_base:log("S", "failed to instantiate mysql: ", err)
return false return false
end end
-- 超时设置 -- 超时设置
db_control:set_timeout(1000) db_control:set_timeout(1000)
-- 连接tk_control -- 连接tk_control
local ok, err, errcode, sqlstate = db_control:connect{ local ok, err, errcode, sqlstate = db_control:connect{
host = tk_control['host'], host = tk_control['host'],
port = tk_control['port'], port = tk_control['port'],
database = tk_control['database'], database = tk_control['database'],
user = tk_control['user'], user = tk_control['user'],
password = tk_control['password'], password = tk_control['password'],
timeout = tk_control['timeout'], timeout = tk_control['timeout'],
charset = 'utf8' charset = 'utf8'
} }
if not ok then if not ok then
ngx.log(ngx.ERR, json.encode(tk_control), ":", err, errcode, sqlstate) zx_base:log("S", json.encode(tk_control), ":", err, errcode, sqlstate)
return return
end end
-- GET shop_map_id list -- GET shop_map_id list
local shops 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) local sql_select = 'SELECT mer_map_id, shop_map_id FROM tk_shop'
ngx.log(ngx.NOTICE, sql_select) shops, err, errcode, sqlstate = db_biz:query(sql_select)
if not shops then ngx.log(ngx.NOTICE, sql_select)
ngx.log(ngx.ERR, "failed to query:", json.encode(tk_biz), ":", err, ":", errcode, ":", sqlstate, ".") if not shops then
return zx_base:log("S", "failed to query:", json.encode(tk_biz), ":", err, ":", errcode, ":", sqlstate, ".")
end return
end
for i=1, #shops do
while true do for i=1, #shops do
local shop while true do
local sql = {} local shop
local res local sql = {}
local res
shop = shops[i]
shop = shops[i]
-- GET summary
table.insert(sql, string.format( -- -- CHECK if exists
[[SELECT op_map_id, mer_map_id, shop_map_id, city_county_id, ]].. -- local sql_do = string.format(
[[IFNULL(COUNT(*), 0) t_order_cnt, ]].. -- [[SELECT * FROM tk_sdt WHERE DATE(total_date) = DATE('%s') ]]..
[[IFNULL(SUM(amt_pay), 0) t_order_amt, ]].. -- [[AND shop_map_id = %s]],
[[IFNULL(SUM(amt_profit), 0) t_order_profit, ]].. -- os.date('%Y%m%d',os.time()),
[[IFNULL(SUM(amt_point_num), 0) t_point_use_cnt, ]].. -- tostring(shop.shop_map_id))
[[IFNULL(SUM(amt_point), 0) t_point_use_amt, ]].. -- res, err, errcode, sqlstate = db_biz:query(sql_do)
[[IFNULL(SUM(amt_ticket_num), 0) t_ticket_use_cnt, ]].. -- if not res then
[[IFNULL(SUM(amt_ticket), 0) t_ticket_use_amt ]].. -- zx_base:log("S", "failed to connect:", json.encode(tk_biz), ":", err, ":", errcode, ":", sqlstate, ".")
[[FROM node_saleorder ]].. -- zx_base:log("S", sql_do)
[[WHERE date(`create_time`) = date('%s') ]].. -- return
[[AND order_status = 0 ]].. -- end
[[AND shop_map_id = %s ]].. -- if #res ~= 0 then
[[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]], -- ngx.log(ngx.NOTICE, shop['shop_map_id'], " finished already")
os.date("%Y%m%d", total_time-24*60*60), -- break
tostring(shop.shop_map_id)) -- end
)
-- GET summary
-- GET online records table.insert(sql, string.format(
table.insert(sql, string.format( [[SELECT op_map_id, city_county_id, ]]..
[[SELECT IFNULL(COUNT(*), 0) t_order_on_cnt, IFNULL(SUM(amt_pay), 0) t_order_on_amt ]].. [[IFNULL(COUNT(*), 0) t_order_cnt, ]]..
[[FROM node_saleorder ]].. [[IFNULL(SUM(amt_pay), 0) t_order_amt, ]]..
[[WHERE date(`create_time`) = date('%s') ]].. [[IFNULL(SUM(amt_profit), 0) t_order_profit, ]]..
[[AND shop_map_id = %s ]].. [[IFNULL(SUM(amt_point_num), 0) t_point_use_cnt, ]]..
[[AND order_source > 0 ]].. [[IFNULL(SUM(amt_point), 0) t_point_use_amt, ]]..
[[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]], [[IFNULL(SUM(amt_ticket_num), 0) t_ticket_use_cnt, ]]..
os.date("%Y%m%d", total_time-24*60*60), [[IFNULL(SUM(amt_ticket), 0) t_ticket_use_amt ]]..
tostring(shop.shop_map_id)) [[FROM node_saleorder ]]..
) [[WHERE date(`create_time`) = date('%s') ]]..
[[AND order_status = 0 ]]..
-- GET VIP/NOVIP records [[AND shop_map_id = %s ]]..
table.insert(sql, string.format( [[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]],
[[SELECT IFNULL(COUNT(*), 0) t_order_vip_cnt, IFNULL(SUM(amt_pay), 0) t_order_vip_amt ]].. os.date("%Y%m%d", total_time-24*60*60),
[[FROM node_saleorder ]].. tostring(shop.shop_map_id))
[[WHERE date(`create_time`) = date('%s') ]].. )
[[AND shop_map_id = %s ]].. -- ngx.log(ngx.NOTICE, sql[1])
[[AND vip_map_id != 0 ]]..
[[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]], -- GET online records
os.date("%Y%m%d", total_time-24*60*60), table.insert(sql, string.format(
tostring(shop.shop_map_id)) [[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') ]]..
-- GET MS records [[AND shop_map_id = %s ]]..
table.insert(sql, string.format( [[AND order_source > 0 ]]..
[[SELECT IFNULL(COUNT(*), 0) t_order_ms_cnt ]].. [[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]],
[[FROM node_saleorder ]].. os.date("%Y%m%d", total_time-24*60*60),
[[WHERE date(`create_time`) = date('%s') ]].. tostring(shop.shop_map_id))
[[AND shop_map_id = %s ]].. )
[[AND AMT_PROMOTE != 0 ]].. -- ngx.log(ngx.NOTICE, sql[2])
[[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]],
os.date("%Y%m%d", total_time-24*60*60), -- GET VIP/NOVIP records
tostring(shop.shop_map_id)) 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 ]]..
-- GET 0000-0900 order [[WHERE date(`create_time`) = date('%s') ]]..
table.insert(sql, string.format( [[AND shop_map_id = %s ]]..
[[SELECT IFNULL(COUNT(*), 0) time_cnt_0009, IFNULL(SUM(amt_pay), 0) time_amt_0009 ]].. [[AND vip_map_id != 0 ]]..
[[FROM node_saleorder ]].. [[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]],
[[WHERE shop_map_id = %s ]].. os.date("%Y%m%d", total_time-24*60*60),
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]], tostring(shop.shop_map_id))
tostring(shop.shop_map_id), )
os.date('%Y%m%d000000', total_time), -- ngx.log(ngx.NOTICE, sql[3])
os.date('%Y%m%d090000', total_time))
) -- GET MS records
table.insert(sql, string.format(
-- GET 0900-1100 order [[SELECT IFNULL(COUNT(*), 0) t_order_ms_cnt ]]..
table.insert(sql, string.format( [[FROM node_saleorder ]]..
[[SELECT IFNULL(COUNT(*), 0) time_cnt_0911, IFNULL(SUM(amt_pay), 0) time_amt_0911 ]].. [[WHERE date(`create_time`) = date('%s') ]]..
[[FROM node_saleorder ]].. [[AND shop_map_id = %s ]]..
[[WHERE shop_map_id = %s ]].. [[AND AMT_PROMOTE != 0 ]]..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]], [[GROUP BY op_map_id, mer_map_id, shop_map_id, city_county_id;]],
tostring(shop.shop_map_id), os.date("%Y%m%d", total_time-24*60*60),
os.date('%Y%m%d090000', total_time), tostring(shop.shop_map_id))
os.date('%Y%m%d110000', total_time)) )
) -- ngx.log(ngx.NOTICE, sql[4])
-- GET 1100-1300 order -- GET 0000-0900 order
table.insert(sql, string.format( table.insert(sql, string.format(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1113, IFNULL(SUM(amt_pay), 0) time_amt_1113 ]].. [[SELECT IFNULL(COUNT(*), 0) time_cnt_0009, IFNULL(SUM(amt_pay), 0) time_amt_0009 ]]..
[[FROM node_saleorder ]].. [[FROM node_saleorder ]]..
[[WHERE shop_map_id = %s ]].. [[WHERE shop_map_id = %s ]]..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]], [[AND order_status = 0 ]]..
tostring(shop.shop_map_id), [[AND `create_time` > '%s' AND `create_time` < '%s'; ]],
os.date('%Y%m%d110000', total_time), tostring(shop.shop_map_id),
os.date('%Y%m%d130000', total_time)) os.date('%Y%m%d000000', total_time-24*60*60),
) os.date('%Y%m%d090000', total_time-24*60*60))
)
-- GET 1300-1500 order -- ngx.log(ngx.NOTICE, sql[5])
table.insert(sql, string.format(
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1315, IFNULL(SUM(amt_pay), 0) time_amt_1315 ]].. -- GET 0900-1100 order
[[FROM node_saleorder ]].. table.insert(sql, string.format(
[[WHERE shop_map_id = %s ]].. [[SELECT IFNULL(COUNT(*), 0) time_cnt_0911, IFNULL(SUM(amt_pay), 0) time_amt_0911 ]]..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]], [[FROM node_saleorder ]]..
tostring(shop.shop_map_id), [[WHERE shop_map_id = %s ]]..
os.date('%Y%m%d130000', total_time), [[AND order_status = 0 ]]..
os.date('%Y%m%d150000', total_time)) [[AND `create_time` > '%s' AND `create_time` < '%s'; ]],
) tostring(shop.shop_map_id),
os.date('%Y%m%d090000', total_time-24*60*60),
-- GET 1500-1700 order os.date('%Y%m%d110000', total_time-24*60*60))
table.insert(sql, string.format( )
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1517, IFNULL(SUM(amt_pay), 0) time_amt_1517 ]].. -- ngx.log(ngx.NOTICE, sql[6])
[[FROM node_saleorder ]]..
[[WHERE shop_map_id = %s ]].. -- GET 1100-1300 order
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]], table.insert(sql, string.format(
tostring(shop.shop_map_id), [[SELECT IFNULL(COUNT(*), 0) time_cnt_1113, IFNULL(SUM(amt_pay), 0) time_amt_1113 ]]..
os.date('%Y%m%d150000', total_time), [[FROM node_saleorder ]]..
os.date('%Y%m%d170000', total_time)) [[WHERE shop_map_id = %s ]]..
) [[AND order_status = 0 ]]..
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]],
-- GET 1700-1900 order tostring(shop.shop_map_id),
table.insert(sql, string.format( os.date('%Y%m%d110000', total_time-24*60*60),
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1719, IFNULL(SUM(amt_pay), 0) time_amt_1719 ]].. os.date('%Y%m%d130000', total_time-24*60*60))
[[FROM node_saleorder ]].. )
[[WHERE shop_map_id = %s ]].. -- ngx.log(ngx.NOTICE, sql[7])
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]],
tostring(shop.shop_map_id), -- GET 1300-1500 order
os.date('%Y%m%d170000', total_time), table.insert(sql, string.format(
os.date('%Y%m%d190000', total_time)) [[SELECT IFNULL(COUNT(*), 0) time_cnt_1315, IFNULL(SUM(amt_pay), 0) time_amt_1315 ]]..
) [[FROM node_saleorder ]]..
[[WHERE shop_map_id = %s ]]..
-- GET 1900-2100 order [[AND order_status = 0 ]]..
table.insert(sql, string.format( [[AND `create_time` > '%s' AND `create_time` < '%s'; ]],
[[SELECT IFNULL(COUNT(*), 0) time_cnt_1921, IFNULL(SUM(amt_pay), 0) time_amt_1921 ]].. tostring(shop.shop_map_id),
[[FROM node_saleorder ]].. os.date('%Y%m%d130000', total_time-24*60*60),
[[WHERE shop_map_id = %s ]].. os.date('%Y%m%d150000', total_time-24*60*60))
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]], )
tostring(shop.shop_map_id), -- ngx.log(ngx.NOTICE, sql[8])
os.date('%Y%m%d190000', total_time),
os.date('%Y%m%d210000', 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 ]]..
-- GET 2100-2400 order [[FROM node_saleorder ]]..
table.insert(sql, string.format( [[WHERE shop_map_id = %s ]]..
[[SELECT IFNULL(COUNT(*), 0) time_cnt_2124, IFNULL(SUM(amt_pay), 0) time_amt_2124 ]].. [[AND order_status = 0 ]]..
[[FROM node_saleorder ]].. [[AND `create_time` > '%s' AND `create_time` < '%s'; ]],
[[WHERE shop_map_id = %s ]].. tostring(shop.shop_map_id),
[[AND `create_time` > '%s' AND `create_time` < '%s'; ]], os.date('%Y%m%d150000', total_time-24*60*60),
tostring(shop.shop_map_id), os.date('%Y%m%d170000', total_time-24*60*60))
os.date('%Y%m%d210000', total_time), )
os.date('%Y%m%d235959', total_time)) -- ngx.log(ngx.NOTICE, sql[9])
)
-- GET 1700-1900 order
-- get VIP cnt table.insert(sql, string.format(
table.insert(sql, string.format( [[SELECT IFNULL(COUNT(*), 0) time_cnt_1719, IFNULL(SUM(amt_pay), 0) time_amt_1719 ]]..
[[SELECT IFNULL(COUNT(vip_map_id), 0) t_vip_cnt ]].. [[FROM node_saleorder ]]..
[[FROM node_vipacct ]].. [[WHERE shop_map_id = %s ]]..
[[WHERE shop_map_id IN ]].. [[AND order_status = 0 ]]..
[[(SELECT shop_map_id FROM tk_shop ]].. [[AND `create_time` > '%s' AND `create_time` < '%s'; ]],
[[WHERE shop_grp_id IN ]].. tostring(shop.shop_map_id),
[[(SELECT shop_grp_id FROM node_shopgrp ]].. os.date('%Y%m%d170000', total_time-24*60*60),
[[WHERE mer_map_id = (SELECT mer_map_id FROM tk_shop WHERE shop_map_id = %s)));]], os.date('%Y%m%d190000', total_time-24*60*60))
tostring(shop['shop_map_id'])) )
) -- ngx.log(ngx.NOTICE, sql[10])
-- GET VIP new cnt -- GET 1900-2100 order
table.insert(sql, string.format( table.insert(sql, string.format(
[[SELECT IFNULL(COUNT(vip_map_id), 0) t_vip_newcnt ]].. [[SELECT IFNULL(COUNT(*), 0) time_cnt_1921, IFNULL(SUM(amt_pay), 0) time_amt_1921 ]]..
[[FROM node_vipacct ]].. [[FROM node_saleorder ]]..
[[WHERE DATE(create_time) = DATE('%s') ]].. [[WHERE shop_map_id = %s ]]..
[[AND shop_map_id IN ]].. [[AND order_status = 0 ]]..
[[(SELECT shop_map_id FROM tk_shop ]].. [[AND `create_time` > '%s' AND `create_time` < '%s'; ]],
[[WHERE shop_grp_id IN ]].. tostring(shop.shop_map_id),
[[(SELECT shop_grp_id FROM node_shopgrp ]].. os.date('%Y%m%d190000', total_time-24*60*60),
[[WHERE mer_map_id = (SELECT mer_map_id FROM tk_shop WHERE shop_map_id = %s)));]], os.date('%Y%m%d210000', total_time-24*60*60))
os.date("%Y%m%d", total_time-24*60*60), )
tostring(shop['shop_map_id'])) -- ngx.log(ngx.NOTICE, sql[11])
)
-- GET 2100-2400 order
-- GET charge summary table.insert(sql, string.format(
table.insert(sql, string.format( [[SELECT IFNULL(COUNT(*), 0) time_cnt_2124, IFNULL(SUM(amt_pay), 0) time_amt_2124 ]]..
[[SELECT IFNULL(COUNT(*), 0) t_charge_cnt, IFNULL(SUM(pay_amt), 0) t_charge_amt ]].. [[FROM node_saleorder ]]..
[[FROM node_rchg ]].. [[WHERE shop_map_id = %s ]]..
[[WHERE DATE(create_time) = DATE('%s') ]].. [[AND order_status = 0 ]]..
[[AND shop_map_id = %s;]], [[AND `create_time` > '%s' AND `create_time` < '%s'; ]],
os.date("%Y%m%d", total_time-24*60*60), tostring(shop.shop_map_id),
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))
)
-- GET cash summary -- ngx.log(ngx.NOTICE, sql[12])
table.insert(sql, string.format(
[[SELECT IFNULL(COUNT(*), 0) pay_cash_cnt, IFNULL(SUM(pay_amt), 0) pay_cash_amt ]].. -- get VIP cnt
[[FROM node_payment ]].. table.insert(sql, string.format(
[[WHERE DATE(create_time) = DATE('%s') ]].. [[SELECT IFNULL(COUNT(DISTINCT(vip_map_id)), 0) t_vip_cnt ]]..
[[AND pay_type_id = 1 ]].. -- paytype [[FROM node_vipacct ]]..
[[AND shop_map_id = %s;]], [[WHERE DATE(create_time) <= %s ]]..
os.date("%Y%m%d", total_time-24*60*60), [[AND mer_map_id = ]]..
tostring(shop.shop_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 WeiXin summary )
table.insert(sql, string.format( -- ngx.log(ngx.NOTICE, sql[13])
[[SELECT IFNULL(COUNT(*), 0) pay_wx_cnt, IFNULL(SUM(pay_amt), 0) pay_wx_amt ]]..
[[FROM node_payment ]].. -- GET VIP new cnt
[[WHERE DATE(create_time) = DATE('%s') ]].. table.insert(sql, string.format(
[[AND pay_type_id = 2 ]].. -- paytype [[SELECT IFNULL(COUNT(DISTINCT(vip_map_id)), 0) t_vip_newcnt ]]..
[[AND shop_map_id = %s;]], [[FROM node_vipacct ]]..
os.date("%Y%m%d", total_time-24*60*60), [[WHERE DATE(create_time) = DATE('%s') ]]..
tostring(shop.shop_map_id)) [[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),
-- GET AliPay summary tostring(shop['shop_map_id']))
table.insert(sql, string.format( )
[[SELECT IFNULL(COUNT(*), 0) pay_alipay_cnt, IFNULL(SUM(pay_amt), 0) pay_alipay_amt ]].. -- ngx.log(ngx.NOTICE, sql[14])
[[FROM node_payment ]]..
[[WHERE DATE(create_time) = DATE('%s') ]].. -- GET charge summary
[[AND pay_type_id = 3 ]].. -- paytype table.insert(sql, string.format(
[[AND shop_map_id = %s;]], [[SELECT IFNULL(COUNT(*), 0) t_charge_cnt, IFNULL(SUM(pay_amt), 0) t_charge_amt ]]..
os.date("%Y%m%d", total_time-24*60*60), [[FROM node_rchg ]]..
tostring(shop.shop_map_id)) [[WHERE DATE(create_time) = DATE('%s') ]]..
) [[AND shop_map_id = %s;]],
os.date("%Y%m%d", total_time-24*60*60),
-- GET bank summary tostring(shop.shop_map_id))
table.insert(sql, string.format( )
[[SELECT IFNULL(COUNT(*), 0) pay_bank_cnt, IFNULL(SUM(pay_amt), 0) pay_bank_amt ]].. -- ngx.log(ngx.NOTICE, sql[15])
[[FROM node_payment ]]..
[[WHERE DATE(create_time) = DATE('%s') ]].. -- GET cash summary
[[AND pay_type_id = 4 ]].. -- paytype table.insert(sql, string.format(
[[AND shop_map_id = %s;]], [[SELECT IFNULL(COUNT(*), 0) pay_cash_cnt, IFNULL(SUM(pay_amt), 0) pay_cash_amt ]]..
os.date("%Y%m%d", total_time-24*60*60), [[FROM node_payment ]]..
tostring(shop.shop_map_id)) [[WHERE DATE(create_time) = DATE('%s') ]]..
) [[AND pay_type_id = 1 ]].. -- paytype
[[AND shop_map_id = %s;]],
-- GET vipcard summary os.date("%Y%m%d", total_time-24*60*60),
table.insert(sql, string.format( tostring(shop.shop_map_id))
[[SELECT IFNULL(COUNT(*), 0) pay_vipcard_cnt, IFNULL(SUM(pay_amt), 0) pay_vipcard_amt ]].. )
[[FROM node_payment ]].. -- ngx.log(ngx.NOTICE, sql[16])
[[WHERE DATE(create_time) = DATE('%s') ]]..
[[AND (pay_type_id = 5 OR pay_type_id = 6) ]].. -- paytype -- GET WeiXin summary
[[AND shop_map_id = %s;]], table.insert(sql, string.format(
os.date("%Y%m%d", total_time-24*60*60), [[SELECT IFNULL(COUNT(*), 0) pay_wx_cnt, IFNULL(SUM(pay_amt), 0) pay_wx_amt ]]..
tostring(shop.shop_map_id)) [[FROM node_payment ]]..
) [[WHERE DATE(create_time) = DATE('%s') ]]..
[[AND pay_type_id = 2 ]].. -- paytype
-- GET othpay summary [[AND shop_map_id = %s;]],
table.insert(sql, string.format( os.date("%Y%m%d", total_time-24*60*60),
[[SELECT IFNULL(COUNT(*), 0) pay_othpay_cnt, IFNULL(SUM(pay_amt), 0) pay_othpay_amt ]].. tostring(shop.shop_map_id))
[[FROM node_payment ]].. )
[[WHERE DATE(create_time) = DATE('%s') ]].. -- ngx.log(ngx.NOTICE, sql[17])
[[AND pay_type_id = 9 ]].. -- paytype
[[AND shop_map_id = %s;]], -- GET AliPay summary
os.date("%Y%m%d", total_time-24*60*60), table.insert(sql, string.format(
tostring(shop.shop_map_id)) [[SELECT IFNULL(COUNT(*), 0) pay_alipay_cnt, IFNULL(SUM(pay_amt), 0) pay_alipay_amt ]]..
) [[FROM node_payment ]]..
[[WHERE DATE(create_time) = DATE('%s') ]]..
ngx.log(ngx.NOTICE, sql[1]) [[AND pay_type_id = 3 ]].. -- paytype
res, err, errcode, sqlstate = db_biz:query(table.concat(sql)) [[AND shop_map_id = %s;]],
if not res then os.date("%Y%m%d", total_time-24*60*60),
ngx.log(ngx.ERR, "failed to query:", json.encode(tk_biz), ":", err, ":", errcode, ":", sqlstate, ".") tostring(shop.shop_map_id))
return )
end -- ngx.log(ngx.NOTICE, sql[18])
if #res ~= 0 then -- GET bank summary
for k, v in pairs(res[1]) do table.insert(sql, string.format(
shop[k] = v [[SELECT IFNULL(COUNT(*), 0) pay_bank_cnt, IFNULL(SUM(pay_amt), 0) pay_bank_amt ]]..
end [[FROM node_payment ]]..
end [[WHERE DATE(create_time) = DATE('%s') ]]..
[[AND pay_type_id = 4 ]].. -- paytype
local j = 2 [[AND shop_map_id = %s;]],
while err == "again" do os.date("%Y%m%d", total_time-24*60*60),
ngx.log(ngx.NOTICE, sql[j]) tostring(shop.shop_map_id))
res, err, errcode, sqlstate = db_biz:read_result() )
if not res then -- ngx.log(ngx.NOTICE, sql[19])
ngx.log(ngx.ERR, "bad result #", j, ": ", err, ": ", errcode, ": ", sqlstate, ".")
return ngx.exit(500) -- GET vipcard summary
end table.insert(sql, string.format(
[[SELECT IFNULL(COUNT(*), 0) pay_vipcard_cnt, IFNULL(SUM(pay_amt), 0) pay_vipcard_amt ]]..
if #res ~= 0 then [[FROM node_payment ]]..
for k, v in pairs(res[1]) do [[WHERE DATE(create_time) = DATE('%s') ]]..
shop[k] = v [[AND (pay_type_id = 5 OR pay_type_id = 6) ]].. -- paytype
end [[AND shop_map_id = %s;]],
j = j + 1 os.date("%Y%m%d", total_time-24*60*60),
end tostring(shop.shop_map_id))
end )
-- ngx.log(ngx.NOTICE, sql[20])
-- SET total_date
shop['total_date'] = zx_base:tonumber(os.date('%Y%m%d', total_time)) -- GET othpay summary
table.insert(sql, string.format(
-- INSERT INTO tk_sdt [[SELECT IFNULL(COUNT(*), 0) pay_othpay_cnt, IFNULL(SUM(pay_amt), 0) pay_othpay_amt ]]..
local str = zx_base:sql_concate('duplicate', 'tk_sdt', shop) [[FROM node_payment ]]..
[[WHERE DATE(create_time) = DATE('%s') ]]..
-- Convert type [[AND pay_type_id = 9 ]].. -- paytype
shop['op_map_id'] = zx_base:tonumber(shop['op_map_id']) [[AND shop_map_id = %s;]],
shop['mer_map_id'] = zx_base:tonumber(shop['mer_map_id']) os.date("%Y%m%d", total_time-24*60*60),
shop['shop_map_id'] = zx_base:tonumber(shop['shop_map_id']) tostring(shop.shop_map_id))
shop['total_date'] = zx_base:tonumber(shop['total_date']) )
shop['city_county_id'] = zx_base:tonumber(shop['city_county_id']) -- ngx.log(ngx.NOTICE, sql[21])
shop['t_order_cnt'] = zx_base:tonumber(shop['t_order_cnt'])
shop['t_order_amt'] = zx_base:tonumber(shop['t_order_amt']) res, err, errcode, sqlstate = db_biz:query(table.concat(sql))
shop['t_order_on_cnt'] = zx_base:tonumber(shop['t_order_on_cnt']) if not res then
shop['t_order_on_amt'] = zx_base:tonumber(shop['t_order_on_amt']) zx_base:log("S", "failed to query:", json.encode(tk_biz), ":", err, ":", errcode, ":", sqlstate, ".")
shop['t_order_off_cnt'] = zx_base:tonumber(shop['t_order_off_cnt']) return
shop['t_order_off_amt'] = zx_base:tonumber(shop['t_order_off_amt']) end
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']) if #res ~= 0 then
shop['t_order_novip_cnt'] = zx_base:tonumber(shop['t_order_novip_cnt']) for k, v in pairs(res[1]) do
shop['t_order_novip_amt'] = zx_base:tonumber(shop['t_order_novip_amt']) shop[k] = v
shop['t_order_ms_cnt'] = zx_base:tonumber(shop['t_order_ms_cnt']) end
shop['t_order_avg_price'] = zx_base:tonumber(shop['t_order_avg_price']) -- else
shop['t_order_profit'] = zx_base:tonumber(shop['t_order_profit']) -- break
shop['t_order_profit_per'] = zx_base:tonumber(shop['t_order_profit_per']) end
shop['t_vip_cnt'] = zx_base:tonumber(shop['t_vip_cnt'])
shop['t_vip_newcnt'] = zx_base:tonumber(shop['t_vip_newcnt']) ngx.log(ngx.NOTICE,
shop['t_charge_cnt'] = zx_base:tonumber(shop['t_charge_cnt']) string.format("================ TK_SDT [%s - %s] ==========",
shop['t_charge_amt'] = zx_base:tonumber(shop['t_charge_amt']) tostring(shop['shop_map_id']),
shop['t_point_use_cnt'] = zx_base:tonumber(shop['t_point_use_cnt']) os.date("%Y%m%d", total_time)))
shop['t_point_use_amt'] = zx_base:tonumber(shop['t_point_use_amt']) for k, v in pairs(shop) do
shop['t_ticket_use_cnt'] = zx_base:tonumber(shop['t_ticket_use_cnt']) ngx.log(ngx.NOTICE, string.format("%-32s : %s", k, tostring(v)))
shop['t_ticket_use_amt'] = zx_base:tonumber(shop['t_ticket_use_amt']) end
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']) local j = 2
shop['t_ticket_send_cnt'] = zx_base:tonumber(shop['t_ticket_send_cnt']) while err == "again" do
shop['t_ticket_send_amt'] = zx_base:tonumber(shop['t_ticket_send_amt']) -- repeat
shop['pay_cash_cnt'] = zx_base:tonumber(shop['pay_cash_cnt']) res, err, errcode, sqlstate = db_biz:read_result()
shop['pay_cash_amt'] = zx_base:tonumber(shop['pay_cash_amt']) if not res then
shop['pay_bank_cnt'] = zx_base:tonumber(shop['pay_bank_cnt']) zx_base:log("S", "bad sql: ", sql[j])
shop['pay_bank_amt'] = zx_base:tonumber(shop['pay_bank_amt']) zx_base:log("S", "bad result #", j, ": ", err, ": ", errcode, ": ", sqlstate, ".")
shop['pay_vipcard_cnt'] = zx_base:tonumber(shop['pay_vipcard_cnt']) return ngx.exit(500)
shop['pay_vipcard_amt'] = zx_base:tonumber(shop['pay_vipcard_amt']) end
shop['pay_wx_cnt'] = zx_base:tonumber(shop['pay_wx_cnt'])
shop['pay_wx_amt'] = zx_base:tonumber(shop['pay_wx_amt']) ngx.log(ngx.NOTICE,
shop['pay_alipay_cnt'] = zx_base:tonumber(shop['pay_alipay_cnt']) string.format("================ TK_SDT [%s - %s] ==========",
shop['pay_alipay_amt'] = zx_base:tonumber(shop['pay_alipay_amt']) tostring(shop['shop_map_id']),
shop['pay_othpay_cnt'] = zx_base:tonumber(shop['pay_othpay_cnt']) os.date("%Y%m%d", total_time)))
shop['pay_othpay_amt'] = zx_base:tonumber(shop['pay_othpay_amt']) for k, v in pairs(shop) do
shop['time_cnt_0009'] = zx_base:tonumber(shop['time_cnt_0009']) ngx.log(ngx.NOTICE, string.format("%-32s : %s", k, tostring(v)))
shop['time_amt_0009'] = zx_base:tonumber(shop['time_amt_0009']) end
shop['time_avg_price_0009'] = zx_base:tonumber(shop['time_avg_price_0009'])
shop['time_profit_0009'] = zx_base:tonumber(shop['time_profit_0009']) if #res ~= 0 then
shop['time_profit_per_0009'] = zx_base:tonumber(shop['time_profit_per_0009']) for k, v in pairs(res[1]) do
shop['time_cnt_0911'] = zx_base:tonumber(shop['time_cnt_0911']) shop[k] = v
shop['time_amt_0911'] = zx_base:tonumber(shop['time_amt_0911']) end
shop['time_avg_price_0911'] = zx_base:tonumber(shop['time_avg_price_0911']) j = j + 1
shop['time_profit_0911'] = zx_base:tonumber(shop['time_profit_0911']) end
shop['time_profit_per_0911'] = zx_base:tonumber(shop['time_profit_per_0911']) -- until(err ~= "again")
shop['time_cnt_1113'] = zx_base:tonumber(shop['time_cnt_1113']) end
shop['time_amt_1113'] = zx_base:tonumber(shop['time_amt_1113'])
shop['time_avg_price_1113'] = zx_base:tonumber(shop['time_avg_price_1113']) -- SET total_date
shop['time_profit_1113'] = zx_base:tonumber(shop['time_profit_1113']) shop['total_date'] = zx_base:tonumber(os.date('%Y%m%d', total_time))
shop['time_profit_per_1113'] = zx_base:tonumber(shop['time_profit_per_1113'])
shop['time_cnt_1315'] = zx_base:tonumber(shop['time_cnt_1315']) -- Convert type
shop['time_amt_1315'] = zx_base:tonumber(shop['time_amt_1315']) shop['op_map_id'] = zx_base:tonumber(shop['op_map_id'])
shop['time_avg_price_1315'] = zx_base:tonumber(shop['time_avg_price_1315']) shop['mer_map_id'] = zx_base:tonumber(shop['mer_map_id'])
shop['time_profit_1315'] = zx_base:tonumber(shop['time_profit_1315']) shop['shop_map_id'] = zx_base:tonumber(shop['shop_map_id'])
shop['time_profit_per_1315'] = zx_base:tonumber(shop['time_profit_per_1315']) shop['total_date'] = zx_base:tonumber(shop['total_date'])
shop['time_cnt_1517'] = zx_base:tonumber(shop['time_cnt_1517']) shop['city_county_id'] = zx_base:tonumber(shop['city_county_id'])
shop['time_amt_1517'] = zx_base:tonumber(shop['time_amt_1517']) shop['t_order_cnt'] = zx_base:tonumber(shop['t_order_cnt'])
shop['time_avg_price_1517'] = zx_base:tonumber(shop['time_avg_price_1517']) shop['t_order_amt'] = zx_base:tonumber(shop['t_order_amt'])
shop['time_profit_1517'] = zx_base:tonumber(shop['time_profit_1517']) shop['t_order_on_cnt'] = zx_base:tonumber(shop['t_order_on_cnt'])
shop['time_profit_per_1517'] = zx_base:tonumber(shop['time_profit_per_1517']) shop['t_order_on_amt'] = zx_base:tonumber(shop['t_order_on_amt'])
shop['time_cnt_1719'] = zx_base:tonumber(shop['time_cnt_1719']) shop['t_order_off_cnt'] = zx_base:tonumber(shop['t_order_off_cnt'])
shop['time_amt_1719'] = zx_base:tonumber(shop['time_amt_1719']) shop['t_order_off_amt'] = zx_base:tonumber(shop['t_order_off_amt'])
shop['time_avg_price_1719'] = zx_base:tonumber(shop['time_avg_price_1719']) shop['t_order_vip_cnt'] = zx_base:tonumber(shop['t_order_vip_cnt'])
shop['time_profit_1719'] = zx_base:tonumber(shop['time_profit_1719']) shop['t_order_vip_amt'] = zx_base:tonumber(shop['t_order_vip_amt'])
shop['time_profit_per_1719'] = zx_base:tonumber(shop['time_profit_per_1719']) shop['t_order_novip_cnt'] = zx_base:tonumber(shop['t_order_novip_cnt'])
shop['time_cnt_1921'] = zx_base:tonumber(shop['time_cnt_1921']) shop['t_order_novip_amt'] = zx_base:tonumber(shop['t_order_novip_amt'])
shop['time_amt_1921'] = zx_base:tonumber(shop['time_amt_1921']) shop['t_order_ms_cnt'] = zx_base:tonumber(shop['t_order_ms_cnt'])
shop['time_avg_price_1921'] = zx_base:tonumber(shop['time_avg_price_1921']) shop['t_order_avg_price'] = zx_base:tonumber(shop['t_order_avg_price'])
shop['time_profit_1921'] = zx_base:tonumber(shop['time_profit_1921']) shop['t_order_profit'] = zx_base:tonumber(shop['t_order_profit'])
shop['time_profit_per_1921'] = zx_base:tonumber(shop['time_profit_per_1921']) shop['t_order_profit_per'] = zx_base:tonumber(shop['t_order_profit_per'])
shop['time_cnt_2124'] = zx_base:tonumber(shop['time_cnt_2124']) shop['t_vip_cnt'] = zx_base:tonumber(shop['t_vip_cnt'])
shop['time_amt_2124'] = zx_base:tonumber(shop['time_amt_2124']) -- shop['vip_cnt'] = zx_base:tonumber(shop['vip_cnt'])
shop['time_avg_price_2124'] = zx_base:tonumber(shop['time_avg_price_2124']) shop['t_vip_newcnt'] = zx_base:tonumber(shop['t_vip_newcnt'])
shop['time_profit_2124'] = zx_base:tonumber(shop['time_profit_2124']) shop['t_charge_cnt'] = zx_base:tonumber(shop['t_charge_cnt'])
shop['time_profit_per_2124'] = zx_base:tonumber(shop['time_profit_per_2124']) shop['t_charge_amt'] = zx_base:tonumber(shop['t_charge_amt'])
shop['t_point_use_cnt'] = zx_base:tonumber(shop['t_point_use_cnt'])
-- Calculate shop['t_point_use_amt'] = zx_base:tonumber(shop['t_point_use_amt'])
shop['t_order_off_amt'] = shop['t_order_amt'] - shop['t_order_on_amt'] shop['t_ticket_use_cnt'] = zx_base:tonumber(shop['t_ticket_use_cnt'])
shop['t_order_off_cnt'] = shop['t_order_cnt'] - shop['t_order_on_cnt'] shop['t_ticket_use_amt'] = zx_base:tonumber(shop['t_ticket_use_amt'])
shop['t_order_novip_amt'] = shop['t_order_amt'] - shop['t_order_vip_amt'] shop['t_point_send_cnt'] = zx_base:tonumber(shop['t_point_send_cnt'])
shop['t_order_novip_cnt'] = shop['t_order_cnt'] - shop['t_order_vip_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'])
if shop['t_order_amt'] == 0 or shop['t_order_cnt'] == 0 then shop['pay_cash_cnt'] = zx_base:tonumber(shop['pay_cash_cnt'])
shop['t_order_avg_price'] = 0 shop['pay_cash_amt'] = zx_base:tonumber(shop['pay_cash_amt'])
shop['t_order_profit_per'] = 0 shop['pay_bank_cnt'] = zx_base:tonumber(shop['pay_bank_cnt'])
else shop['pay_bank_amt'] = zx_base:tonumber(shop['pay_bank_amt'])
shop['t_order_avg_price'] = shop['t_order_amt'] / shop['t_order_cnt'] shop['pay_vipcard_cnt'] = zx_base:tonumber(shop['pay_vipcard_cnt'])
shop['t_order_profit_per'] = shop['t_order_profit'] / shop['t_order_amt'] * 10000 shop['pay_vipcard_amt'] = zx_base:tonumber(shop['pay_vipcard_amt'])
end shop['pay_wx_cnt'] = zx_base:tonumber(shop['pay_wx_cnt'])
shop['pay_wx_amt'] = zx_base:tonumber(shop['pay_wx_amt'])
if shop['t_order_cnt'] == 0 then shop['pay_alipay_cnt'] = zx_base:tonumber(shop['pay_alipay_cnt'])
break 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 end
end
-- INSERT INTO tk_biz database zx_base:close_db(db_biz)
res, err, errcode, sqlstate = db_biz:query(str) zx_base:close_db(db_control)
ngx.log(ngx.NOTICE, str) ngx.log(ngx.NOTICE, "-----------------------> END")
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 end
...@@ -510,46 +574,46 @@ end ...@@ -510,46 +574,46 @@ end
-- table tk_database 数据同步数据库名 -- table tk_database 数据同步数据库名
-- @return nil -- @return nil
local function async(tk_biz, tk_control, total_time) local function async(tk_biz, tk_control, total_time)
local co = coroutine.wrap( local co = coroutine.wrap(
function() function()
sdt_sql(tk_biz, tk_control, total_time) sdt_sql(tk_biz, tk_control, total_time)
end end
) )
table.insert(tasks, co) table.insert(tasks, co)
end end
-- 协程调度 -- 协程调度
-- @param nil -- @param nil
-- @return nil -- @return nil
local function dispatch() local function dispatch()
local i = 1 local i = 1
while true do while true do
if tasks[i] == nil then if tasks[i] == nil then
if tasks[1] == nil then if tasks[1] == nil then
break break
end
i = 1
end
local res = tasks[i]()
if not res then
table.remove(tasks, i)
else
i = i + 1
end end
i = 1 end
end
local res = tasks[i]()
if not res then
table.remove(tasks, i)
else
i = i + 1
end
end
end end
-- 跑批业务处理 -- 跑批业务处理
-- @param nil -- @param nil
-- @return nil -- @return nil
function TK_SDT.run(self, total_time) function TK_SDT.run(self, total_time)
-- 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 for i = 1, #dbs_st.tk_biz do
-- async(dbs_st.tk_biz[i], dbs_st.tk_control, total_time) -- 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) sdt_sql(dbs_st.tk_biz[i], dbs_st.tk_control, total_time)
end end
-- dispatch() -- dispatch()
end end
return TK_SDT return TK_SDT
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment