904118851 3 nedēļas atpakaļ
vecāks
revīzija
3afcfd4acd

+ 21 - 5
common/dbproxy/tg_main.lua

@@ -64,7 +64,7 @@ end
 
 function M.search(msg_body)
 
-    local isok ,key =  tools.checkData({"tf_support_status","internal_advertiser_classify","tg_app_index_list","aigc_status","title_pay_type","is_boost","is_reservation","title_type_id","is_group_record","tf_time_interval","mini_program_platform_id","is_comment","material_rule_id","parent_main_id","tg_day","id","ads_operation_status","statistics_platform_id","converted_time_duration","cbo_status","project_type","oce_product_id",
+    local isok ,key =  tools.checkData({"tf_landing_type","tf_micro_promotion_type","tf_support_status","internal_advertiser_classify","tg_app_index_list","aigc_status","title_pay_type","is_boost","is_reservation","title_type_id","is_group_record","tf_time_interval","mini_program_platform_id","is_comment","material_rule_id","parent_main_id","tg_day","id","ads_operation_status","statistics_platform_id","converted_time_duration","cbo_status","project_type","oce_product_id",
     "oce_product_platform_id",
     "delivery_mode","material_platform_id","wx_miniapp_create_status","template_bid","cpa_bid","page_size","page_number","main_name","running_status","custom_budget","pay_type","tg_platform_id","butler_id","tg_app_index","is_open_create_link","is_delete"},msg_body)
    
@@ -78,6 +78,16 @@ function M.search(msg_body)
 
     local offset = (page_number - 1) * page_size
 
+    local tf_landing_type_param = ""
+    if msg_body.tf_landing_type~="" then
+        tf_landing_type_param =  string.format(" AND tf_landing_type = '%s' ",msg_body.tf_landing_type)
+    end
+
+    local tf_micro_promotion_type_param = ""
+    if msg_body.tf_micro_promotion_type~="" then
+        tf_micro_promotion_type_param =  string.format(" AND tf_micro_promotion_type = '%s' ",msg_body.tf_micro_promotion_type)
+    end
+
     local tf_support_status_param = ""
     if msg_body.tf_support_status~="" then
         tf_support_status_param =  " AND tf_support_status = "..msg_body.tf_support_status
@@ -280,7 +290,7 @@ function M.search(msg_body)
     --     genre_param =  string.format(" AND genre = %d ",msg_body.genre) 
     -- end
 
-    local param = internal_advertiser_classify_param..tf_support_status_param..tg_app_index_list_param..aigc_status_param..title_pay_type_param..is_boost_param..is_reservation_param..title_type_id_param..is_group_record_param..tf_time_interval_param..mini_program_platform_id_param..is_comment_param..material_rule_id_param..parent_main_id_param..tg_day_param..id_param..ads_operation_status_param..statistics_platform_id_param..converted_time_duration_param..infra_status_param..cbo_script_status_param..cbo_status_param..project_type_param..oce_product_platform_id_param..oce_product_id_param..delivery_mode_param..main_name_param..tg_platform_param..running_status_param..pay_type_param..butler_id_param..tg_app_index_param..is_open_create_link_param..is_delete_param..custom_budget_param..cpa_bid_param..template_bid_param..wx_miniapp_create_status_param..material_platform_id_param;
+    local param = tf_landing_type_param..tf_micro_promotion_type_param..internal_advertiser_classify_param..tf_support_status_param..tg_app_index_list_param..aigc_status_param..title_pay_type_param..is_boost_param..is_reservation_param..title_type_id_param..is_group_record_param..tf_time_interval_param..mini_program_platform_id_param..is_comment_param..material_rule_id_param..parent_main_id_param..tg_day_param..id_param..ads_operation_status_param..statistics_platform_id_param..converted_time_duration_param..infra_status_param..cbo_script_status_param..cbo_status_param..project_type_param..oce_product_platform_id_param..oce_product_id_param..delivery_mode_param..main_name_param..tg_platform_param..running_status_param..pay_type_param..butler_id_param..tg_app_index_param..is_open_create_link_param..is_delete_param..custom_budget_param..cpa_bid_param..template_bid_param..wx_miniapp_create_status_param..material_platform_id_param;
     local sql = "SELECT * FROM tg_main where 1=1 "..param..string.format(" LIMIT %d OFFSET %d ",page_size, offset)
     local res = mysqldbx.query(sql)
     skynet.error("sql:",sql)
@@ -303,13 +313,15 @@ end
 -- `daily_new_limit` int DEFAULT '0' COMMENT '今天新上数量上限',
 
 function M.addMain(msg_body)
-    local isok ,key =  tools.checkData({"tf_support_status","internal_advertiser_classify","aigc_status","zy_conifg","title_pay_type","is_boost","is_reservation","title_type_id","is_group_record","tf_time_interval","mat_roi","reduce_roi","boost_high_price_end_time","boost_high_price_number","reduce_consume_amount","reduce_bid_amount","is_comment","convert_cnt","material_rule_id","material_rule_number","parent_main_id","valid_timer_like_num","tg_day","ads_operation_status","statistics_platform_id","hide_if_converted","converted_time_duration","cbo_script_time","cbo_script_status","cbo_status","project_type","tf_status","tf_start_time","stat_cost","oce_product_id","oce_product_platform_id","material_platform_id","strategy_config","delivery_mode","price","pack_strategy_status","start_chapter","advertiser_id","wx_miniapp_create_status","ad_act","template_bid","zh_id","roi_goal","ql_bid","infra_status","pay_type","qm_id","ldy_template_site_id","yw_id","parent_platform_id","platform_shared_id","distributor_id","is_delete","ad_convert_type","aweme_id","tg_app_index","butler_id","mini_program_platform_id","landing_page","valid_timer_time","valid_timer_number","channelId","no_bid_budget","max_ad_quantity","tg_link_config","tg_platform_id","app_id","main_name","running_status","ad_quantity","cpa_bid","bid_type","bid_ratio","custom_budget","daily_new_limit","valid_time","group_id"},msg_body)
+    local isok ,key =  tools.checkData({"tf_landing_type","tf_micro_promotion_type","tf_support_status","internal_advertiser_classify","aigc_status","zy_conifg","title_pay_type","is_boost","is_reservation","title_type_id","is_group_record","tf_time_interval","mat_roi","reduce_roi","boost_high_price_end_time","boost_high_price_number","reduce_consume_amount","reduce_bid_amount","is_comment","convert_cnt","material_rule_id","material_rule_number","parent_main_id","valid_timer_like_num","tg_day","ads_operation_status","statistics_platform_id","hide_if_converted","converted_time_duration","cbo_script_time","cbo_script_status","cbo_status","project_type","tf_status","tf_start_time","stat_cost","oce_product_id","oce_product_platform_id","material_platform_id","strategy_config","delivery_mode","price","pack_strategy_status","start_chapter","advertiser_id","wx_miniapp_create_status","ad_act","template_bid","zh_id","roi_goal","ql_bid","infra_status","pay_type","qm_id","ldy_template_site_id","yw_id","parent_platform_id","platform_shared_id","distributor_id","is_delete","ad_convert_type","aweme_id","tg_app_index","butler_id","mini_program_platform_id","landing_page","valid_timer_time","valid_timer_number","channelId","no_bid_budget","max_ad_quantity","tg_link_config","tg_platform_id","app_id","main_name","running_status","ad_quantity","cpa_bid","bid_type","bid_ratio","custom_budget","daily_new_limit","valid_time","group_id"},msg_body)
     if not isok then
         return false,string.format("缺少字段: %s.", key)
     end
     local current_time = os.date("%Y-%m-%d %H:%M:%S")
     msg_body.create_time = current_time
-    local sql = string.format("INSERT INTO `tg_main` (tf_support_status,internal_advertiser_classify,aigc_status,zy_conifg,title_pay_type,is_boost,is_reservation,title_type_id,is_group_record,tf_time_interval,mat_roi,reduce_roi,boost_high_price_end_time,boost_high_price_number,reduce_consume_amount,reduce_bid_amount,is_comment,convert_cnt,material_rule_id,material_rule_number,parent_main_id,valid_timer_like_num,tg_day,ads_operation_status,statistics_platform_id,hide_if_converted,converted_time_duration,cbo_script_time,cbo_script_status,cbo_status,project_type,tf_status,tf_start_time,stat_cost,oce_product_id,oce_product_platform_id,material_platform_id,strategy_config,delivery_mode,price,pack_strategy_status,start_chapter,advertiser_id,wx_miniapp_create_status,genre,ad_act,template_bid,zh_id,roi_goal,ql_bid,infra_status,pay_type,qm_id,ldy_template_site_id,yw_id,parent_platform_id,platform_shared_id,distributor_id,is_delete,ad_convert_type,aweme_id,tg_app_index,butler_id,mini_program_platform_id,landing_page,valid_timer_time,valid_timer_number,channelId,no_bid_budget,max_ad_quantity,tg_link_config,tg_platform_id,app_id,main_name,running_status,ad_quantity,cpa_bid,bid_type,bid_ratio,custom_budget,daily_new_limit,valid_time,group_id)  VALUES ( %d,'%s',%d,'%s',%d,%d, %d,%d, %d,%d,%f,%f,%d,%d,%f,%f,%d,%d,%d,%d,  %d,%d,%d,'%s',%d, '%s','%s','%s',%d,%d,%d,%d,'%s',%d,'%s','%s',%d,'%s','%s',%d,%d,%d,%s,%d,%d,%d,%d,'%s',%d,%d,%d,%d,'%s','%s','%s',%d,%d,'%s',%d,'%s','%s', %d, %d, %d,'%s', %d, '%s', '%s',%d, %d, '%s', %d, '%s', '%s', %d, %d, %d,%d, '%s', %d, %d, '%s', '%s')",
+    local sql = string.format("INSERT INTO `tg_main` (tf_landing_type,tf_micro_promotion_type,tf_support_status,internal_advertiser_classify,aigc_status,zy_conifg,title_pay_type,is_boost,is_reservation,title_type_id,is_group_record,tf_time_interval,mat_roi,reduce_roi,boost_high_price_end_time,boost_high_price_number,reduce_consume_amount,reduce_bid_amount,is_comment,convert_cnt,material_rule_id,material_rule_number,parent_main_id,valid_timer_like_num,tg_day,ads_operation_status,statistics_platform_id,hide_if_converted,converted_time_duration,cbo_script_time,cbo_script_status,cbo_status,project_type,tf_status,tf_start_time,stat_cost,oce_product_id,oce_product_platform_id,material_platform_id,strategy_config,delivery_mode,price,pack_strategy_status,start_chapter,advertiser_id,wx_miniapp_create_status,genre,ad_act,template_bid,zh_id,roi_goal,ql_bid,infra_status,pay_type,qm_id,ldy_template_site_id,yw_id,parent_platform_id,platform_shared_id,distributor_id,is_delete,ad_convert_type,aweme_id,tg_app_index,butler_id,mini_program_platform_id,landing_page,valid_timer_time,valid_timer_number,channelId,no_bid_budget,max_ad_quantity,tg_link_config,tg_platform_id,app_id,main_name,running_status,ad_quantity,cpa_bid,bid_type,bid_ratio,custom_budget,daily_new_limit,valid_time,group_id)  VALUES ( '%s','%s',   %d,'%s',%d,'%s',%d,%d, %d,%d, %d,%d,%f,%f,%d,%d,%f,%f,%d,%d,%d,%d,  %d,%d,%d,'%s',%d, '%s','%s','%s',%d,%d,%d,%d,'%s',%d,'%s','%s',%d,'%s','%s',%d,%d,%d,%s,%d,%d,%d,%d,'%s',%d,%d,%d,%d,'%s','%s','%s',%d,%d,'%s',%d,'%s','%s', %d, %d, %d,'%s', %d, '%s', '%s',%d, %d, '%s', %d, '%s', '%s', %d, %d, %d,%d, '%s', %d, %d, '%s', '%s')",
+    msg_body.tf_landing_type,
+    msg_body.tf_micro_promotion_type,
     msg_body.tf_support_status,
     msg_body.internal_advertiser_classify,
     msg_body.aigc_status,
@@ -529,7 +541,7 @@ local function combine_query_and_params(query, params)
     return combined_query
 end
 function M.modifyMain(msg_body)
-    local isok ,key =  tools.checkData({"tf_support_status","internal_advertiser_classify","aigc_status","zy_conifg","title_pay_type","is_boost","is_reservation","title_type_id","is_group_record","tf_time_interval","mat_roi","reduce_roi","boost_high_price_end_time","boost_high_price_number","reduce_consume_amount","reduce_bid_amount","is_comment","convert_cnt","material_rule_id","material_rule_number","valid_timer_like_num","tg_day","ads_operation_status" ,"statistics_platform_id","hide_if_converted","converted_time_duration","cbo_script_time","cbo_script_status","cbo_status","project_type","tf_status","tf_start_time","stat_cost","oce_product_id","oce_product_platform_id","material_platform_id","strategy_config","delivery_mode","price","pack_strategy_status","start_chapter","advertiser_id","wx_miniapp_create_status","ad_act","template_bid","zh_id","roi_goal","ql_bid","infra_status","pay_type","pay_type","qm_id","ldy_template_site_id","yw_id","parent_platform_id","platform_shared_id","distributor_id","is_delete","ad_convert_type","aweme_id","tg_app_index","butler_id","mini_program_platform_id","landing_page","valid_timer_time","valid_timer_number","channelId","no_bid_budget","max_ad_quantity","tg_link_config","id","tg_platform_id","app_id","main_name","running_status","ad_quantity","cpa_bid","bid_type","bid_ratio","custom_budget","daily_new_limit","valid_time","group_id"},msg_body)
+    local isok ,key =  tools.checkData({"tf_landing_type","tf_micro_promotion_type","tf_support_status","internal_advertiser_classify","aigc_status","zy_conifg","title_pay_type","is_boost","is_reservation","title_type_id","is_group_record","tf_time_interval","mat_roi","reduce_roi","boost_high_price_end_time","boost_high_price_number","reduce_consume_amount","reduce_bid_amount","is_comment","convert_cnt","material_rule_id","material_rule_number","valid_timer_like_num","tg_day","ads_operation_status" ,"statistics_platform_id","hide_if_converted","converted_time_duration","cbo_script_time","cbo_script_status","cbo_status","project_type","tf_status","tf_start_time","stat_cost","oce_product_id","oce_product_platform_id","material_platform_id","strategy_config","delivery_mode","price","pack_strategy_status","start_chapter","advertiser_id","wx_miniapp_create_status","ad_act","template_bid","zh_id","roi_goal","ql_bid","infra_status","pay_type","pay_type","qm_id","ldy_template_site_id","yw_id","parent_platform_id","platform_shared_id","distributor_id","is_delete","ad_convert_type","aweme_id","tg_app_index","butler_id","mini_program_platform_id","landing_page","valid_timer_time","valid_timer_number","channelId","no_bid_budget","max_ad_quantity","tg_link_config","id","tg_platform_id","app_id","main_name","running_status","ad_quantity","cpa_bid","bid_type","bid_ratio","custom_budget","daily_new_limit","valid_time","group_id"},msg_body)
     if not isok then
         return false,string.format("缺少字段: %s.", key)
     end
@@ -539,6 +551,8 @@ function M.modifyMain(msg_body)
 
     local query = [[
     UPDATE `tg_main` SET
+        tf_landing_type =?,
+        tf_micro_promotion_type =?,
         tf_support_status =?,
         internal_advertiser_classify =?,
         aigc_status =?,
@@ -626,6 +640,8 @@ function M.modifyMain(msg_body)
 ]]
 
 local params = {
+    msg_body.tf_landing_type,
+    msg_body.tf_micro_promotion_type,
     msg_body.tf_support_status,
     msg_body.internal_advertiser_classify,
     msg_body.aigc_status,

+ 2 - 0
service/backmgr/init.lua

@@ -54,6 +54,7 @@ local statistics_platform = require "statistics_platform"
 local data_manager = require "data_manager"
 local review_user = require "review_user"
 local log = require "log"
+local product_task = require "product_task"
 local status_200 = 200
 local CMD = {
     
@@ -106,6 +107,7 @@ CMD["data_manager"] = data_manager;
 CMD["review_user"] = review_user;
 CMD["whitelist_books"] = whitelist_books;
 CMD["log"] = log;
+CMD["product_task"] = product_task;
 function run(target,fun,msg_body,fd)
     if target~=nil and fun~=nil and target[fun]~=nil then
         local isok,data,total = target[fun](msg_body)

+ 91 - 0
service/backmgr/product_task.lua

@@ -0,0 +1,91 @@
+--书籍任务
+local M = {}
+local mysqldbx = require "mysqldbx"
+local tools = require "tools"
+local skynet = require "skynet"
+local cjson = require "cjson"
+local config = require "run_config"
+local mysql = require "skynet.db.mysql"
+local db
+local mysqldtaskbx = {}
+function M.task()
+
+    skynet.error("执行一次task")
+
+    local sql = string.format("SELECT * FROM video_product where status = 10 AND list_time is not null ")
+
+    local res = mysqldtaskbx.Singleton().query(sql)
+
+    -- 获取当前服务器时间戳
+    local current_timestamp = os.time()
+
+    if #res >0 then
+        -- tools.dump(res)
+        for i = 1, #res, 1 do
+            local mysql_time_str = res[i].list_time
+            local id = res[i].id
+            -- 将MySQL时间字符串转换为时间戳
+            local pattern = "(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)"
+            local year, month, day, hour, min, sec = mysql_time_str:match(pattern)
+            local mysql_timestamp = os.time({
+                year = year,
+                month = month,
+                day = day,
+                hour = hour,
+                min = min,
+                sec = sec
+            })
+   
+            if mysql_timestamp < current_timestamp then
+                -- skynet.error("mysql_timestamp:",mysql_timestamp)
+                -- skynet.error("current_timestamp:",current_timestamp)
+                sql = string.format("UPDATE  video_product SET status = 1  WHERE id = %d ",id)
+                -- skynet.error("sql:",sql) 
+                -- tools.dump(res[i])
+                mysqldtaskbx.Singleton().query(sql)
+            else
+                --还没到时间
+            end
+        end
+    end
+
+
+    skynet.timeout(500, M.task)
+end
+
+
+function mysqldtaskbx.start()
+    local function on_connect(db)
+        db:query("set charset utf8mb4");
+    end
+    local conf = config.db_cnf.book_server.mysqldb_task_cnf
+    db = mysql.connect{
+        host=conf.ip,
+        port=conf.port,
+        database=conf.db,
+        user=conf.user,
+        password=conf.password,
+        charset="utf8mb4",
+        max_packet_size = 1024 * 1024,
+        on_connect = on_connect
+    }
+    if not db then
+       skynet.error("mysql connect fail")
+    end
+end
+
+function mysqldtaskbx.Singleton()
+    if db == nil then
+        mysqldtaskbx.start()
+    end
+    return mysqldtaskbx
+end
+function mysqldtaskbx.query(sql)
+    return db:query(sql)
+end
+
+skynet.start(function ()  --skynet.start启动一个timeout来执行function,创建了一个协程
+    skynet.timeout(500, M.task) --由于function函数还没用完协程,所有这个timeout又创建了一个协程
+end)
+
+return M

+ 16 - 2
service/backmgr/video_product.lua

@@ -326,6 +326,19 @@ function M.set_album_link(msg_body)
     return true, {}
 end
 
+
+--设置上架时间
+function M.set_list_time(msg_body)
+    local isok ,key =  tools.checkData({"list_time","id_list"},msg_body)
+    if not isok then
+        return false,string.format("缺少字段: %s.", key)
+    end
+    local idString = table.concat(msg_body.id_list, ",")
+    local sql = string.format("UPDATE  video_product SET list_time = '%s' WHERE id IN (%s) ",msg_body.list_time,idString)
+    mysqldtaskbx.Singleton().query(sql)
+    return true, {}
+end
+
 --设置书优先级
 function M.set_top(msg_body)
     local isok ,key =  tools.checkData({"expired_time","id_list"},msg_body)
@@ -382,7 +395,7 @@ end
 
 --添加书籍数据
 function M.add_book_data(msg_body)
-    local isok ,key =  tools.checkData({"free_time","album_link","fee_mode","episode_price","seq_num","status","tg_platform_id","product_id","product_name"
+    local isok ,key =  tools.checkData({"list_time","free_time","album_link","fee_mode","episode_price","seq_num","status","tg_platform_id","product_id","product_name"
     ,"genre","is_store","start_chapter","publish_time"},msg_body)
     if not isok then
         return false,string.format("缺少字段: %s.", key)
@@ -396,7 +409,8 @@ function M.add_book_data(msg_body)
         return false,"书籍已存在!"
     end
 
-    sql = string.format("INSERT INTO `video_product` (free_time,album_link,fee_mode,episode_price,seq_num,status,book_platform,product_id, product_name, genre,is_store,is_auto,start_chapter,publish_time)  VALUES ('%s','%s',%d,%d,%d,%d,%d,'%s','%s',%d,%d,0,%d,'%s')",
+    sql = string.format("INSERT INTO `video_product` (list_time,free_time,album_link,fee_mode,episode_price,seq_num,status,book_platform,product_id, product_name, genre,is_store,is_auto,start_chapter,publish_time)  VALUES ('%s','%s','%s',%d,%d,%d,%d,%d,'%s','%s',%d,%d,0,%d,'%s')",
+    msg_body.list_time,
     msg_body.free_time,
     msg_body.album_link,
     msg_body.fee_mode,