get_qm_mf_for_iap.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. const config = require("../etc/config.json");
  2. const helper = require("../src/helper");
  3. const HttpClient = require("../src/HttpClient");
  4. const redis_help = require('../src/use_redis');
  5. const mysql = require('mysql2/promise');
  6. const tools = require("../tools");
  7. const video_product_controllers = require('../src/data_manager/Controllers/video_product_controllers');
  8. const dbConfig = config.isDebug?config.debug_mysql:config.release_mysql
  9. const taskdbConfig = config.isDebug?config.debug_task_mysql:config.release_task_mysql
  10. const CMD = {}
  11. let page_index = 1;
  12. async function processTask(){
  13. let right_status = true
  14. let connection = null
  15. try{
  16. connection = await mysql.createConnection({
  17. ...dbConfig,
  18. multipleStatements: true
  19. });
  20. let postData = {
  21. "cmd":"video_product",
  22. "fun":"search_book_data",
  23. "data":{
  24. "product_id":"",
  25. "product_name":"",
  26. "tg_platform_id":config.platform_qimao,
  27. "is_auto":"",
  28. "page_size":500,
  29. "page_number":page_index,
  30. "oce_material_id":"",
  31. "genre":"",
  32. "is_store":"",
  33. "alias_name":"",
  34. "stat_cost":"",
  35. "min_book_word":"",
  36. "max_book_word":"",
  37. "min_totalChapterNum":"",
  38. "max_totalChapterNum":""
  39. }
  40. };
  41. console.log("发送请求数据:", postData);
  42. let client = tools.getOneNewClinet()
  43. let response = await client.post('http://127.0.0.1:9100/tg/back/api', postData, {
  44. headers: {
  45. 'Content-Type': 'application/json',
  46. 'X-Request-Type': 'API', // 标记 API 请求
  47. }
  48. });
  49. response = response.data
  50. // 检查响应数据结构
  51. if (!response || !response.data || !Array.isArray(response.data)) {
  52. console.log("响应数据无效或格式错误");
  53. throw 0;
  54. }
  55. // 检查是否有数据
  56. if (response.data.length <= 0) {
  57. console.log("没有更多数据");
  58. throw 0;
  59. }
  60. console.log("response:",response)
  61. let total = response.total;
  62. let product_list = response.data;
  63. for (let index = 0; index < product_list.length; index++) {
  64. const element = product_list[index];
  65. const [rows] = await connection.execute(
  66. `SELECT * FROM qm_iap_lib WHERE book_id = ${element.product_id} AND is_have_iaa = 1 LIMIT 1`
  67. );
  68. if(rows.length<=0){
  69. }else{
  70. let qm_iap_book_info = rows[0]
  71. let iaa_book_info = await CMD.getQMMFVideoProduct(qm_iap_book_info.iaa_book_id)
  72. if(iaa_book_info==null){
  73. await CMD.addQMMFVideoProduct(qm_iap_book_info.iaa_book_id,element.product_id)
  74. }
  75. }
  76. }
  77. }catch(e){
  78. if(e==0){
  79. right_status = false
  80. }
  81. console.error("processTask error:",e)
  82. } finally{
  83. if(right_status){
  84. page_index++;
  85. global.setTimeout(processTask, 1000);
  86. }
  87. if(connection!=null){
  88. connection.end()
  89. }
  90. }
  91. }
  92. //插入
  93. CMD.addQMMFVideoProduct = async function(product_id,product_parent_id){
  94. let connection = await mysql.createConnection({
  95. ...taskdbConfig,
  96. multipleStatements: true
  97. });
  98. let qm_book_data = await require('../src/api/qm_mf/qm_mf_search_book').search_id_new(product_id)
  99. console.log("qm_book_data:",qm_book_data,product_id,product_parent_id)
  100. if(qm_book_data!=null){
  101. await connection.execute(
  102. `INSERT INTO video_product (product_name,product_id,book_platform,genre,words,product_parent_id) VALUES ("${qm_book_data.book_name}",${product_id},${config.platform_qmmf},${qm_book_data.genre},"${qm_book_data.words}",${product_parent_id})`
  103. );
  104. }
  105. await connection.end();
  106. }
  107. CMD.getQMMFVideoProduct = async function(product_id){
  108. let connection = await mysql.createConnection({
  109. ...taskdbConfig,
  110. multipleStatements: true
  111. });
  112. const [rows] = await connection.execute(
  113. `SELECT * FROM video_product WHERE product_id = ${product_id} AND book_platform = ${config.platform_qmmf} LIMIT 1`
  114. );
  115. await connection.end();
  116. if(rows.length<=0){
  117. return null
  118. }
  119. return rows[0]
  120. }
  121. CMD.init = async function(){
  122. redis_help.connect((results)=>{
  123. if(results){
  124. processTask();
  125. }
  126. })
  127. }
  128. CMD.init()