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

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

暂时关闭门店日统计的批处理检查以规避mysql连接错误问题
parent df4029a7
......@@ -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"';
......
......@@ -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
......
......@@ -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
......
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 = '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 = 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
......
......@@ -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
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