/* eslint-disable */
const path = require('path');
const fs = require('fs');
const json2xls = require('json2xls');
const menuData = require('./menu-data.js');

function checkData(data, level) {
  return data.some(el => {
    // 每个节点是否有menu属性
    let flag = el.hasOwnProperty('menu');
    if (!flag) {
      console.log(el, '没有menu属性');
      return !flag;
    }
    // 每个menu是否有三个元素
    flag = Array.isArray(el.menu) && el.menu.length == 3;
    if (!flag) {
      console.log(el, 'menu格式错误');
      return !flag;
    }
    // 第一、二级菜单没有url
    if (level == 0 || level == 1) {
      flag = !el.menu[1];
      if (!flag) {
        console.log(el, '配置了menuUrl');
        return !flag;
      }
    } else {
      // 一、二级之后的菜单必须有url
      flag = !!el.menu[1];
      if (!flag) {
        console.log(el, '未配置menuUrl');
        return !flag;
      }
      flag = el.menu[1].indexOf('/') != 0;
      if (!flag) {
        console.log(el, 'menuUrl不能以/开头');
        return !flag;
      }
    }
    if (flag && Array.isArray(el.children)) {
      flag = !checkData(el.children, level + 1);
    }
    return !flag;
  });
};
function createMenuJson(data, parentCode) {
  let result = [];
  // 菜单名称、路径、icon_url、code、父code
  data.forEach((el, index) => {
    const [ menuName, menuUrl, isRight, iconUrl ] = el.menu;
    const menuIndex = (index + 1).toString().padStart(2, '0');
    const item = {
      menuName,
      menuCode: parentCode ? parentCode  + menuIndex : 'hb_m' + menuIndex,
      parentCode,
      menuUrl,
      type: 0,
      iconUrl: iconUrl || '',
      isRight,
      isPageBtn: 0
    }
    result.push(item);
    if (Array.isArray(el.children)) {
      result = result.concat(createMenuJson(el.children, item.menuCode));
    }
  });
  return result;
}
function createXls() {
  if (checkData(menuData, 0)) return;
  return;
  const data = createMenuJson(menuData, '');
  const jsonArray = data.map( item => {
    return {
      '菜单名称': item.menuName,
      '菜单code': item.menuCode,
      '父菜单code': item.parentCode,
      '菜单路径': item.menuUrl,
      '菜单类型(0菜单 5按钮)': item.type,
      'icon_url': item.iconUrl,
      '是否控制权限，1控制  0否': item.isRight,
      '只有页面才有,用于菜单不需要独立权限控制,配置的是按钮的menu_code': '',
      '是否赠删改的按钮': item.isPageBtn
    }
  });
  fs.writeFile(path.resolve(__dirname, './result.xlsx'), json2xls(jsonArray), 'binary', (err) => {
    if (err) {
      console.log(err);
      return;
    }
    console.log('写入完成');
  });
}
createXls();

// console.log(createMenuJson(menuData, ''));
