const fs = require('fs-extra');
const yapi = require('./yapi.js');
const commons = require('./utils/commons');
const dbModule = require('./utils/db.js');
const userModel = require('./models/user.js');
const mongoose = require('mongoose');

yapi.commons = commons;
yapi.connect = dbModule.connect();


function install() {
    let exist = yapi.commons.fileExist(yapi.path.join(yapi.WEBROOT_RUNTIME, 'init.lock'));

    if (exist) {
        throw new Error('init.lock文件已存在，请确认您是否已安装。如果需要重新安装，请删掉init.lock文件');
    }

    setupSql();
}

function setupSql() {
    let userInst = yapi.getInst(userModel);
    let passsalt = yapi.commons.randStr();
    let result = userInst.save({
        username: yapi.WEBCONFIG.adminAccount.substr(0, yapi.WEBCONFIG.adminAccount.indexOf('@')),
        email: yapi.WEBCONFIG.adminAccount,
        password: yapi.commons.generatePassword('qunar.com', passsalt),
        passsalt: passsalt,
        role: 'admin',
        add_time: yapi.commons.time(),
        up_time: yapi.commons.time()
    });

    yapi.connect.then(function () {
        let userCol = mongoose.connection.db.collection('user')
        userCol.ensureIndex({
            username: 1
        })
        userCol.ensureIndex({
            email: 1
        }, {
                unique: true
            })

        let projectCol = mongoose.connection.db.collection('project')
        projectCol.ensureIndex({
            uid: 1
        })
        projectCol.ensureIndex({
            name: 1
        })
        projectCol.ensureIndex({
            group_id: 1
        })

        let logCol = mongoose.connection.db.collection('log')
        logCol.ensureIndex({
            uid: 1
        })

        logCol.ensureIndex({
            typeid: 1,
            type: 1
        })

        let interfaceColCol = mongoose.connection.db.collection('interface_col')
        interfaceColCol.ensureIndex({
            uid: 1
        })
        interfaceColCol.ensureIndex({
            project_id: 1
        })

        let interfaceCatCol = mongoose.connection.db.collection('interface_cat')
        interfaceCatCol.ensureIndex({
            uid: 1
        })
        interfaceCatCol.ensureIndex({
            project_id: 1
        })

        let interfaceCaseCol = mongoose.connection.db.collection('interface_case')
        interfaceCaseCol.ensureIndex({
            uid: 1
        })
        interfaceCaseCol.ensureIndex({
            col_id: 1
        })
        interfaceCaseCol.ensureIndex({
            project_id: 1
        })

        let interfaceCol = mongoose.connection.db.collection('interface')
        interfaceCol.ensureIndex({
            uid: 1
        })
        interfaceCol.ensureIndex({
            path: 1,
            method: 1
        })
        interfaceCol.ensureIndex({
            project_id: 1
        })

        let groupCol = mongoose.connection.db.collection('group')
        groupCol.ensureIndex({
            uid: 1
        })
        groupCol.ensureIndex({
            group_name: 1
        })

        let avatarCol = mongoose.connection.db.collection('avatar')
        avatarCol.ensureIndex({
            uid: 1
        })

        let followCol = mongoose.connection.db.collection('follow')
        followCol.ensureIndex({
            uid: 1
        })
        followCol.ensureIndex({
            project_id: 1
        })
        
        result.then(function () {
            fs.ensureFileSync(yapi.path.join(yapi.WEBROOT_RUNTIME, 'init.lock'));
            console.log(`初始化管理员账号 "${yapi.WEBCONFIG.adminAccount}" 成功`); // eslint-disable-line
            process.exit(0);
        }, function (err) {
            console.error(`初始化管理员账号 "${yapi.WEBCONFIG.adminAccount}" 失败, ${err.message}`); // eslint-disable-line
            process.exit();
        });

    })

}

install();
@@ -311,24 +311,38 @@
 install() %7B%0A
+    try %7B%0A    
     let exis
@@ -417,24 +417,28 @@
 t.lock'));%0A%0A
+    
     if (exis
@@ -438,24 +438,28 @@
 f (exist) %7B%0A
+    
         thro
@@ -531,26 +531,175 @@
     
-%7D%0A%0A    setupSql();
+    %7D%0A        fs.ensureFileSync(yapi.path.join(yapi.WEBROOT_RUNTIME, 'init.lock'));%0A%0A        setupSql();%0A    %7D catch (err) %7B%0A        console.error(err.message);%0A    %7D%0A
 %0A%7D%0A%0A
@@ -3515,24 +3515,16 @@
      %7D)%0A
-        
 %0A       
@@ -3554,90 +3554,8 @@
 ) %7B%0A
-            fs.ensureFileSync(yapi.path.join(yapi.WEBROOT_RUNTIME, 'init.lock'));%0A
     
@@ -3575,32 +3575,39 @@
 le.log(%60%E5%88%9D%E5%A7%8B%E5%8C%96%E7%AE%A1%E7%90%86%E5%91%98%E8%B4%A6%E5%8F%B7
+%E6%88%90%E5%8A%9F%EF%BC%8C%E8%B4%A6%E5%8F%B7%E5%90%8D%EF%BC%9A
  %22$%7Byapi.WEBCONF
@@ -3627,11 +3627,23 @@
 nt%7D%22
- %E6%88%90%E5%8A%9F
+,%E9%BB%98%E8%AE%A4%E5%AF%86%E7%A0%81%EF%BC%9Aqunar.com
 %60); 
@@ -3730,33 +3730,35 @@
             
-console.e
+throw new E
 rror(%60%E5%88%9D%E5%A7%8B%E5%8C%96%E7%AE%A1%E7%90%86%E5%91%98
@@ -3842,36 +3842,8 @@
 ine%0A
-            process.exit();%0A
     

修改install.js 错误