package services

import (
	"encoding/json"
	"eta/eta_data_init/models"
	"eta/eta_data_init/utils"
	"fmt"
	"github.com/xuri/excelize/v2"
	"os"
	"path/filepath"
)

//初始化指标目录结构

func InitEdbClassify() {
	var err error

	defer func() {
		if err != nil {
			fmt.Println("InitBaseIndexData Err:" + err.Error())
		}
	}()

	//读取excel
	path, err := filepath.Abs(os.Args[0])
	if err != nil {
		fmt.Println(err)
	}

	dir := filepath.Dir(path)
	fmt.Println("dir:" + dir)
	dataPath := dir + "/docs/ETA数据库目录配置.xlsx"
	fmt.Println("dataPath:" + dataPath)
	f, err := excelize.OpenFile(dataPath)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer func() {
		// Close the spreadsheet.
		if err := f.Close(); err != nil {
			fmt.Println(err)
		}
	}()
	rows, err := f.GetRows("Sheet1")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("rows len:", len(rows))
	for rk, row := range rows {
		if rk > 0 {
			var classifyFirst, classifySecond, classifyThree string
			for ck, colCell := range row {
				switch ck {
				case 0:
					classifyFirst = colCell
				case 1:
					classifySecond = colCell
				case 2:
					classifyThree = colCell
				}
			}

			if classifyFirst != "" &&
				classifySecond != "" &&
				classifyThree != "" {

				method := "classify/get_or_add"
				classifyFirstMap := make(map[string]interface{})
				classifyFirstMap["ClassifyName"] = classifyFirst
				classifyFirstMap["ParentId"] = 0
				classifyFirstMap["Level"] = 0
				classifyFirstMap["ClassifyType"] = 0
				result, err := PostEdbLib(classifyFirstMap, method)
				if err != nil {
					utils.FileLog.Info("初始化分类1失败:" + err.Error())
					return
				}

				resp := new(models.ClassifyResp)
				err = json.Unmarshal(result, &resp)
				if err != nil {
					utils.FileLog.Info("初始化分类1失败:" + err.Error())
					return
				}

				if resp.Ret != 200 {
					utils.FileLog.Info("初始化分类1失败:" + resp.Msg + ";" + resp.ErrMsg)
					return
				}

				classifySecondMap := make(map[string]interface{})
				classifySecondMap["ClassifyName"] = classifySecond
				classifySecondMap["ParentId"] = resp.Data.ClassifyId
				classifySecondMap["Level"] = 1
				classifySecondMap["ClassifyType"] = 0
				result, err = PostEdbLib(classifySecondMap, method)
				if err != nil {
					utils.FileLog.Info("初始化分类2失败:" + err.Error())
					return
				}
				resp = new(models.ClassifyResp)
				err = json.Unmarshal(result, &resp)
				if err != nil {
					utils.FileLog.Info("初始化分类2失败:" + err.Error())
					return
				}
				if resp.Ret != 200 {
					utils.FileLog.Info("初始化分类2失败:" + resp.Msg + ";" + resp.ErrMsg)
					return
				}

				classifyThreeMap := make(map[string]interface{})
				classifyThreeMap["ClassifyName"] = classifyThree
				classifyThreeMap["ParentId"] = resp.Data.ClassifyId
				classifyThreeMap["Level"] = 2
				classifyThreeMap["ClassifyType"] = 0
				result, err = PostEdbLib(classifyThreeMap, method)
				if err != nil {
					utils.FileLog.Info("初始化分类3失败:" + err.Error())
					return
				}
				resp = new(models.ClassifyResp)
				err = json.Unmarshal(result, &resp)
				if err != nil {
					utils.FileLog.Info("初始化分类2失败:" + err.Error())
					return
				}

				if resp.Ret != 200 {
					utils.FileLog.Info("初始化分类3失败:" + resp.Msg + ";" + resp.ErrMsg)
					return
				}
			} else {
				fmt.Println("data is empty")
				fmt.Println(classifyFirst, classifySecond, classifyThree)
			}
		}
	}
}
