qm_mf_book_async.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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 get_fq_book_tab_controllers = require("../src/data_manager/Controllers/get_fq_book_tab_controllers");
  8. const dbConfig = config.isDebug?config.debug_mysql:config.release_mysql
  9. const CMD = {}
  10. function getCodeFromUrl(url) {
  11. const codeMatch = url.match(/code=([^&]+)/);
  12. if (codeMatch && codeMatch[1]) {
  13. return codeMatch[1];
  14. }
  15. return null;
  16. }
  17. async function processTask(){
  18. let connection = null
  19. let status = 0
  20. try{
  21. const today = helper.getLocalDate();
  22. let date = today.replace(/-/g, '');
  23. let table_name = `qm_iap_lib`;
  24. // 创建数据库连接
  25. connection = await mysql.createConnection({
  26. ...dbConfig,
  27. multipleStatements: true
  28. });
  29. // 检查表是否存在
  30. const [tableCheck] = await connection.execute(
  31. `SELECT TABLE_NAME
  32. FROM information_schema.tables
  33. WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?`,
  34. [dbConfig.database, table_name]
  35. );
  36. if (tableCheck.length === 0) {
  37. // 表不存在
  38. console.error(`表 ${table_name} 不存在`);
  39. throw new Error(`表 ${table_name} 不存在`);
  40. } else {
  41. const [rows] = await connection.execute(
  42. `SELECT * FROM ${table_name} WHERE is_have_iaa = -1 LIMIT 100`
  43. );
  44. if(rows.length<=0){
  45. throw -1
  46. }
  47. for (let index = 0; index < rows.length; index++) {
  48. const element = rows[index];
  49. let iaa_book_info = await require('./src/api/qm_mf/qm_mf_search_book').search_name(element.book_author,element.book_origin_name)
  50. if(iaa_book_info!=null){
  51. await connection.execute(
  52. `UPDATE ${table_name} SET is_have_iaa = 1 , iaa_book_id = ${iaa_book_info.book_id} WHERE book_id = ${element.book_id}`
  53. );
  54. }else{
  55. await connection.execute(
  56. `UPDATE ${table_name} SET is_have_iaa = 0 WHERE book_id = ${element.book_id}`
  57. );
  58. }
  59. }
  60. }
  61. }catch(e){
  62. if(e==-1){
  63. status = -1
  64. }
  65. console.error("processTask error:",e)
  66. } finally{
  67. if(status!=-1){
  68. global.setTimeout(processTask, 1000);
  69. }else{
  70. console.log("完成所有定义!")
  71. }
  72. if(connection!=null){
  73. await connection.end();
  74. }
  75. }
  76. }
  77. CMD.init = async function(){
  78. redis_help.connect((results)=>{
  79. if(results){
  80. processTask();
  81. }
  82. })
  83. }
  84. CMD.init()