chenyc
2024-12-23 a2c78f7b515723ac3744a71e4bc04e823a3a772f
thirdPartyApi.js
@@ -1,11 +1,13 @@
// thirdPartyApi.js
const axios = require('axios');
const logger = require('./logger'); // 根据实际情况调整路径
// BASIC_API = 'https://hemobs.icoldchain.cn/'
const path = require('path');
const FormData = require('form-data');
const logger = require(path.resolve(__dirname, 'logger'));
// const BASIC_API = 'https://hemobs.icoldchain.cn/'
const BASIC_API = 'http://testbs.ihemodialysis.com/'
let cachedToken = null;
let tokenExpiresAt = null;
// 获取 Token 的函数
async function getAccessToken() {
@@ -30,13 +32,15 @@
// 获取缓存或新的 Token
async function getCachedOrNewToken() {
  logger.log('Check if the token exists')
  logger.info('获取缓存或新的 Token')
  if (cachedToken && tokenExpiresAt > Date.now()) {
    logger.info('有缓存token,直接输出')
    return cachedToken;
  }
  // 如果 token 已经过期或不存在,则重新获取
  logger.log('If the token has expired or does not exist, retrieve it again')
  logger.info('如果 token 已经过期或不存在,则重新获取')
  console.log('如果 token 已经过期或不存在,则重新获取')
  const { data, expires_in } = await getAccessToken();
  cachedToken = data;
  tokenExpiresAt = Date.now() + (expires_in - 60) * 1000; // 提前 60 秒刷新 token
@@ -56,6 +60,7 @@
async function fetchThirdPartyDataNoToke(url, method = 'GET', headers = {}, data = null, queryParams = {}, pathParams = {}) {
  try {
    const fullUrl = buildUrl(url, pathParams);
    logger.info(`打包token 请求头url${fullUrl},data=${JSON.stringify(data)}`)
    const response = await axios({
      url: fullUrl,
      method,
@@ -68,7 +73,7 @@
    return response.data;
  } catch (error) {
    console.error('Error fetching third-party data:', error.message);
    throw error;
  }
}
@@ -77,10 +82,8 @@
async function fetchThirdPartyData(url, method = 'GET', headers = {}, data = null, queryParams = {}, pathParams = {}) {
  try {
    const token = await getCachedOrNewToken();
    logger.info(`get token====${token}`)
    console.log('得到了token------------------------',token)
    const fullUrl = buildUrl(url, pathParams);
    logger.info(`打包token 请求头url${fullUrl},data=${JSON.stringify(data)}`)
    const response = await axios({
      url: fullUrl,
      method,
@@ -94,8 +97,7 @@
    return response.data;
  } catch (error) {
    logger.error('Error fetching third-party data:', error.message)
    console.error('Error fetching third-party data:', error.message);
    logger.error(`请求失败!'${error.message} `)
    throw error;
  }
}
@@ -105,48 +107,3 @@
  fetchThirdPartyData,
  getAccessToken
};
// 插入数据
const installData=async (mode)=>{
  console.log(mode)
  try{
   let selectSql=`SELECT * FROM patient_rtcf_result WHERE code='${mode.recordNo}'`
   const [rows] = await pool.promise().query(selectSql);
   if(rows.length>0){
      let updateSql=''
      if(mode.fatFree){
           updateSql=`UPDATE patient_rtcf_result SET rtcf_json_bf ='${JSON.stringify(mode)}'`
      }else if (mode.bmi){
           updateSql=`UPDATE patient_rtcf_result SET rtcf_json_bmi ='${JSON.stringify(mode)}'`
      }
      if(updateSql){
          console.log(`-------------------------更新${updateSql}---------`)
          console.log(updateSql)
          await pool.promise().query(updateSql)
      }
   }else{
      console.log('34')
      // 临时的人体成分分析
      let bf=''
      // 临时的身高体重
      let bmi=''
      if(mode.fatFree){
          bf=JSON.stringify(mode)
      }
      if(mode.bmi){
          bmi=JSON.stringify(mode)
      }
      console.log(`bf=${bf},bmi=====${bmi}`)
      let sqlStr=`INSERT INTO  patient_rtcf_result (id, code, patient_code,`+
          `comm_time,rtcf_json_bmi,`+
          `rtcf_json_bf,`+
          `create_time)`+
          `VALUES (0, '${mode.recordNo}', '${mode.userID}', '${mode.measureTime}','${bmi}','${bf}','${moment(new Date()).format('YYYY-MM-DD HH:mm:ss')}')`
      console.log(sqlStr)
      await pool.promise().query(sqlStr)
   }
  }catch(err){
      console.log('数据写入异常22')
  }
}