--小程序书籍 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.add_applet_product(msg_body) local isok ,key = tools.checkData({"product_name","product_id","book_platform","dy_small_program_start","dy_small_program_start_data","dy_small_applet_app_id","check_url","main_id","status"},msg_body) if not isok then return false,string.format("缺少字段: %s.", key) end local sql = string.format("INSERT INTO `video_applet_product` (product_name,product_id,book_platform,dy_small_program_start,dy_small_program_start_data,dy_small_applet_app_id,check_url,main_id,status,wait_status) VALUES ('%s','%s',%d,'%s','%s','%s','%s',%d,%d,%d)", msg_body.product_name,msg_body.product_id,msg_body.book_platform,msg_body.dy_small_program_start,msg_body.dy_small_program_start_data,msg_body.dy_small_applet_app_id,msg_body.check_url,msg_body.main_id,msg_body.status,2) mysqldtaskbx.Singleton().query(sql) return true, {} end --开启小程序书籍任务 function M.open_app_book_task(msg_body) local isok ,key = tools.checkData({"id_list"},msg_body) if not isok then return false,string.format("缺少字段: %s.", key) end for i = 1, #msg_body.id_list, 1 do local res,sql,id; id = msg_body.id_list[i] sql = string.format("UPDATE video_applet_product SET status = 0 , wait_status = 0 ,is_close_execution = 1 WHERE id = %d ",id) res = mysqldtaskbx.Singleton().query(sql) end return true,{} end --搜索小程序书 --tg_platform_id 平台id --product_id 书id --product_name 书名 --main_id 主体ID --dy_small_applet_app_id 小程序ID function M.search_app_book_data(msg_body) local isok ,key = tools.checkData({ "status", "product_name", "product_id", "tg_platform_id", "main_id", "app_id", "page_size", "page_number"},msg_body) if not isok then return false,string.format("缺少字段: %s.", key) end local page_size = msg_body.page_size local page_number = msg_body.page_number local offset = (page_number - 1) * page_size local product_param = "" if msg_body.product_id~="" then product_param =string.format(" AND product_id = '%s' ",msg_body.product_id) end local product_name_param = "" if msg_body.product_name~="" then product_name_param = string.format("AND product_name = '%s' ",msg_body.product_name) end local tg_platform_param = "" if msg_body.tg_platform_id~="" then tg_platform_param = "AND book_platform = "..msg_body.tg_platform_id.." " end local main_param = "" if msg_body.main_id~="" then main_param = "AND main_id = "..msg_body.main_id.." " end local app_param = "" if msg_body.app_id~="" then app_param = string.format("AND dy_small_applet_app_id = '%s' ",msg_body.app_id) end local status_param = "" if msg_body.status~="" then status_param = " AND status = "..msg_body.status.." " end local param = product_param..product_name_param..tg_platform_param..main_param..app_param..status_param; local sql = "SELECT * FROM video_applet_product WHERE 1=1 "..param.." ORDER BY id DESC "..string.format(" LIMIT %d OFFSET %d ",page_size, offset) local list = mysqldtaskbx.Singleton().query(sql) sql = "SELECT COUNT(*) AS total FROM video_applet_product WHERE 1=1 "..param.." ORDER BY id DESC " local total = mysqldtaskbx.Singleton().query(sql) return true,list,total[1].total 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 return M