const fs = require('fs'); const path = require('path'); var util = require('util'); var logPath = path.join(__dirname, 'recover_ledger_his.log'); var logFile = fs.createWriteStream(logPath, { flags: 'a' }); console.log = function() { logFile.write(util.format.apply(null, arguments) + '\n'); process.stdout.write(util.format.apply(null, arguments) + '\n'); }; const mysql = require('mysql'); const oss = require('ali-oss'); const config = process.argv.splice(2)[0]; if (['local', 'uat', 'default'].indexOf(config) < 0) throw `参数错误: ${config}`; const options = require(`../config/config.${config}`)({ baseDir: __dirname + '/app', root: __dirname, name: 'calc' }); const pool = mysql.createPool(options.mysql.client); const ossOption = { bucket: options.oss.clients.his.bucket, accessKeyId: options.oss.default.accessKeyId, accessKeySecret: options.oss.default.accessKeySecret, endpoint: options.oss.default.endpoint, timeout: options.oss.default.timeout, }; const ossClient = new oss(ossOption); const querySql = async function(sql, sqlParam) { return new Promise(function(resolve, reject) { pool.getConnection(function(err, conn) { if (err) { if (err) console.log(err); reject(err); } else { conn.query(sql, sqlParam, function(err, rows, fields) { if (err) console.log(err); // 释放连接 conn.release(); // 传递Promise回调对象 resolve(rows); }); } }); }); }; const recoverLedgerHis = async function (id, countField, url) { let File; try { File = await ossClient.get('undefined' + url); } catch(err) { if (err.status === 404) return; } if (File.res.status !== 200) { await ossClient.put(options.hisOssPath + url, File.content); // const result = JSON.parse(File.content); // await querySql(`Update zh_ledger_history Set ${countField} = ? Where id = ?`, [result.length, l.id]); // console.log(`LedgerHis: ${countField}-${result.length}`); } }; const checkLedgerHis = async function (his) { await recoverLedgerHis(his.id, 'bills_count', his.bills_file); await recoverLedgerHis(his.id, 'pos_count', his.pos_file); }; const doComplete = async function() { try { const ledgerHis = await querySql('Select * From zh_ledger_history where tid = 5709'); for (const l of ledgerHis) { await checkLedgerHis(l); } } catch (err) { console.log(err); } pool.end(); }; doComplete();