get_qm_mf_for_iap.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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. }
  38. };
  39. console.log("发送请求数据:", postData);
  40. let client = tools.getOneNewClinet()
  41. let response = await client.post('http://127.0.0.1:9100/tg/back/api', postData, {
  42. headers: {
  43. 'Content-Type': 'application/json',
  44. 'X-Request-Type': 'API', // 标记 API 请求
  45. }
  46. });
  47. response = response.data
  48. // 检查响应数据结构
  49. if (!response || !response.data || !Array.isArray(response.data)) {
  50. console.log("响应数据无效或格式错误");
  51. throw 0;
  52. }
  53. // 检查是否有数据
  54. if (response.data.length <= 0) {
  55. console.log("没有更多数据");
  56. throw 0;
  57. }
  58. console.log("response:",response)
  59. let total = response.total;
  60. let product_list = response.data;
  61. for (let index = 0; index < product_list.length; index++) {
  62. const element = product_list[index];
  63. const [rows] = await connection.execute(
  64. `SELECT * FROM qm_iap_lib WHERE book_id = ${element.product_id} AND is_have_iaa = 1 LIMIT 1`
  65. );
  66. if(rows.length<=0){
  67. }else{
  68. let qm_iap_book_info = rows[0]
  69. let iaa_book_info = await CMD.getQMMFVideoProduct(qm_iap_book_info.iaa_book_id)
  70. if(iaa_book_info==null){
  71. await CMD.addQMMFVideoProduct(qm_iap_book_info.iaa_book_id,element.product_id)
  72. }
  73. }
  74. }
  75. }catch(e){
  76. if(e==0){
  77. right_status = false
  78. }
  79. console.error("processTask error:",e)
  80. } finally{
  81. if(right_status){
  82. page_index++;
  83. global.setTimeout(processTask, 1000);
  84. }
  85. }
  86. }
  87. //插入
  88. CMD.addQMMFVideoProduct = async function(product_id,product_parent_id){
  89. let connection = await mysql.createConnection({
  90. ...taskdbConfig,
  91. multipleStatements: true
  92. });
  93. let qm_book_data = await require('../src/api/qm_mf/qm_mf_search_book').search_id(product_id)
  94. console.log("qm_book_data:",qm_book_data,product_id,product_parent_id)
  95. if(qm_book_data!=null){
  96. await connection.execute(
  97. `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})`
  98. );
  99. }
  100. await connection.end();
  101. }
  102. CMD.getQMMFVideoProduct = async function(product_id){
  103. let connection = await mysql.createConnection({
  104. ...taskdbConfig,
  105. multipleStatements: true
  106. });
  107. const [rows] = await connection.execute(
  108. `SELECT * FROM video_product WHERE product_id = ${product_id} AND book_platform = ${config.platform_qmmf} LIMIT 1`
  109. );
  110. await connection.end();
  111. if(rows.length<=0){
  112. return null
  113. }
  114. return rows[0]
  115. }
  116. CMD.init = async function(){
  117. redis_help.connect((results)=>{
  118. if(results){
  119. processTask();
  120. }
  121. })
  122. }
  123. CMD.init()