|
@@ -1,161 +0,0 @@
|
|
-const fs = require('fs')
|
|
|
|
-const path = require('path')
|
|
|
|
-const XLSX = require('xlsx')
|
|
|
|
-// const Rsync = require('rsync')
|
|
|
|
-const {MongoConf} = require('./config')
|
|
|
|
-
|
|
|
|
-const MongoClient = require('mongodb').MongoClient
|
|
|
|
-const assert = require('assert')
|
|
|
|
-
|
|
|
|
-const dbIns = MongoConf['R1']
|
|
|
|
-const connStr = `mongodb://${dbIns.host}:${dbIns.port}`
|
|
|
|
-const connOpt = {
|
|
|
|
- auth : {
|
|
|
|
- user: dbIns.username,
|
|
|
|
- password: dbIns.password,
|
|
|
|
- },
|
|
|
|
- authSource: dbIns.dbname,
|
|
|
|
- authMechanism: "SCRAM-SHA-1",
|
|
|
|
- useNewUrlParser: true
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-const dataPath = "../assets/scripts/data"
|
|
|
|
-const dataPrefix = "taptapstar_"
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * excel表转换为json对象
|
|
|
|
- * @param {String} filename 文件名
|
|
|
|
- */
|
|
|
|
-const getSheet = function (filename) {
|
|
|
|
- let filePath = path.join(__dirname, "/excel", filename)
|
|
|
|
- // let buf = fs.readFile(filePath);
|
|
|
|
- let workbook = XLSX.readFileSync(filePath)
|
|
|
|
- let sheets = workbook.SheetNames
|
|
|
|
- let sheetsObj = {}
|
|
|
|
-
|
|
|
|
- sheets.forEach(n => {
|
|
|
|
- let ws = workbook.Sheets[n]
|
|
|
|
- let def = XLSX.utils.sheet_to_json(ws, {range: 0, header: 1})
|
|
|
|
- let typeMap = {}
|
|
|
|
- let typeArr = def[0]
|
|
|
|
- let keyArr = def[2]
|
|
|
|
- keyArr.forEach((item, index) => {
|
|
|
|
- typeMap[item] = typeArr[index]
|
|
|
|
- })
|
|
|
|
-
|
|
|
|
- let res = XLSX.utils.sheet_to_json(ws, {range: 2})
|
|
|
|
- res.forEach(item => {
|
|
|
|
- for(let i in item) {
|
|
|
|
- item[i] = formatType(item[i], typeMap[i])
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- sheetsObj[n] = res
|
|
|
|
- })
|
|
|
|
- return sheetsObj
|
|
|
|
-
|
|
|
|
- // console.log(XLSX.utils.sheet_to_json(ws));
|
|
|
|
- // console.log(workbook.SheetNames);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * 写入json内容到客户端assets目录
|
|
|
|
- * @param {String} filename 文件名
|
|
|
|
- * @param {Object} content json内容
|
|
|
|
- */
|
|
|
|
-const writeToAssets = function (filename, content) {
|
|
|
|
- let writeFileName = filename.replace(/\.xlsx|\.xls/, '.js').replace(dataPrefix, "")
|
|
|
|
- let writePath = path.join(__dirname, dataPath, writeFileName)
|
|
|
|
- let string = JSON.stringify(content);
|
|
|
|
- fs.writeFile(writePath, 'module.exports=' + string)
|
|
|
|
- // console.log(JSON.stringify(content, null, 2));
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * 配置表生成的json内容rsync到静态资源服务器
|
|
|
|
- * @param {String} filename 文件名
|
|
|
|
- * @param {Object} content json内容
|
|
|
|
- */
|
|
|
|
-const rsyncJson = function (filename, content) {
|
|
|
|
- let writeFileName = filename.replace(/\.xlsx|\.xls/, '.json').replace(dataPrefix, "")
|
|
|
|
- let writePath = path.join(__dirname, "/sheet", writeFileName)
|
|
|
|
-
|
|
|
|
- fs.writeFile(writePath, JSON.stringify(content))
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-const formatType = function(target, type) {
|
|
|
|
- let _type = type.toLowerCase()
|
|
|
|
- switch (_type) {
|
|
|
|
- case 'integer':
|
|
|
|
- target = parseInt(target, 10)
|
|
|
|
- break;
|
|
|
|
- case 'double':
|
|
|
|
- target = parseFloat(target)
|
|
|
|
- break;
|
|
|
|
- case 'string':
|
|
|
|
- target = target.toString()
|
|
|
|
- break;
|
|
|
|
- case 'object':
|
|
|
|
- target = JSON.parse(target)
|
|
|
|
- break;
|
|
|
|
- default:
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- return target
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-const init = function () {
|
|
|
|
- fs.readdir("./excel", (err, file) => {
|
|
|
|
- file.forEach(n => {
|
|
|
|
- if(n.match(/\~\$/)) {
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- let ws = getSheet(n)
|
|
|
|
- let sheetName = n.replace(/\.xlsx|\.xls/, "")
|
|
|
|
-
|
|
|
|
- let target
|
|
|
|
- if(ws.length > 0) {
|
|
|
|
- //单个表
|
|
|
|
- // ws.forEach(n => {
|
|
|
|
- // if(typeof n['id'] != undefined) {
|
|
|
|
- // n['_id'] = n['id']
|
|
|
|
- // }
|
|
|
|
- // })
|
|
|
|
-
|
|
|
|
- target = ws
|
|
|
|
- } else {
|
|
|
|
- //多个表合拼成一个Array
|
|
|
|
- let _array = []
|
|
|
|
- for(let i in ws) {
|
|
|
|
- _array = _array.concat(ws[i])
|
|
|
|
- }
|
|
|
|
- target = _array
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // MongoClient.connect(connStr, connOpt, (err, client) => {
|
|
|
|
- // var db = client.db(dbIns.dbname)
|
|
|
|
- // var collection = db.collection(sheetName)
|
|
|
|
- // collection.drop(null, () => {
|
|
|
|
- // collection.insert(target, () => {
|
|
|
|
- // console.log(`成功更新配置表:${sheetName}`)
|
|
|
|
- // client.close()
|
|
|
|
- // })
|
|
|
|
- // })
|
|
|
|
- // });
|
|
|
|
-
|
|
|
|
- //把生成的js写入客户端assets目录
|
|
|
|
- let wsKeys = Object.keys(ws)
|
|
|
|
- if(wsKeys.length == 1) {
|
|
|
|
- writeToAssets(n, ws[wsKeys[0]])
|
|
|
|
- rsyncJson(n, ws[wsKeys[0]])
|
|
|
|
- } else {
|
|
|
|
- writeToAssets(n, ws)
|
|
|
|
- rsyncJson(n, ws)
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
-
|
|
|
|
- // process.exit()
|
|
|
|
- })
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-init()
|
|
|