package services

import (
	"encoding/json"
	"eta/eta_mini_api/utils"
	"io"
	"net/http"
	"strconv"
	"time"
)

type ChartPermission struct {
	ChartPermissionId   int       `description:"问题ID"`
	ChartPermissionName string    `description:"名称"`
	PermissionName      string    `description:"权限名"`
	Sort                int       `description:"排序"`
	Enabled             int       `description:"是否可用"`
	CreatedTime         time.Time `description:"创建时间"`
	LastUpdatedTime     time.Time `description:"更新时间"`
	Remark              string    `description:"备注"`
	ImageURL            string    `description:"图片地址"`
	ParentId            int       `description:"父级权限id" json:"parent_id"`
	IsPublic            int       `description:"是否是公有权限1:公有权限,0私有权限"`
}

type ChartPermissionResp struct {
	Ret    int
	Data   []*ChartPermission
	Msg    string
	ErrMsg string
}

func GetChartPermissionSecondList(chartPermissionId int) (resp *ChartPermissionResp, err error) {
	url := utils.ETA_MINI_BRIDGE_URL + "/chart_permission/second/list"
	client := &http.Client{}
	if url != "" {
		url += "?chartPermissonId=" + strconv.Itoa(chartPermissionId)
	}
	// 提交请求
	req, err := http.NewRequest("GET", url, nil)
	if err != nil {
		return
	}
	nonce := utils.GetRandStringNoSpecialChar(16)
	timestamp := time.Now().Format(utils.FormatDateTimeUnSpace)
	signature := utils.GetSign(nonce, timestamp, utils.ETA_MINI_APPID, utils.ETA_MINI_APP_SECRET)
	//增加header选项
	req.Header.Add("Nonce", nonce)
	req.Header.Add("Timestamp", timestamp)
	req.Header.Add("Appid", utils.ETA_MINI_APPID)
	req.Header.Add("Signature", signature)
	req.Header.Set("Content-Type", "application/json")

	response, err := client.Do(req)
	if err != nil {
		return
	}
	defer response.Body.Close()

	body, err := io.ReadAll(response.Body)

	if err != nil {
		return
	}
	utils.FileLog.Info("result:" + string(body))
	err = json.Unmarshal(body, &resp)
	if err != nil {
		return
	}
	return

}

func GetChartPermissionList() (resp *ChartPermissionResp, err error) {
	url := utils.ETA_MINI_BRIDGE_URL + "/chart_permission/list"
	client := &http.Client{}
	// 提交请求
	req, err := http.NewRequest("GET", url, nil)
	if err != nil {
		return
	}
	nonce := utils.GetRandStringNoSpecialChar(16)
	timestamp := time.Now().Format(utils.FormatDateTimeUnSpace)
	signature := utils.GetSign(nonce, timestamp, utils.ETA_MINI_APPID, utils.ETA_MINI_APP_SECRET)
	//增加header选项
	req.Header.Add("Nonce", nonce)
	req.Header.Add("Timestamp", timestamp)
	req.Header.Add("Appid", utils.ETA_MINI_APPID)
	req.Header.Add("Signature", signature)
	req.Header.Set("Content-Type", "application/json")

	response, err := client.Do(req)
	if err != nil {
		return
	}
	defer response.Body.Close()

	body, err := io.ReadAll(response.Body)

	if err != nil {
		return
	}
	utils.FileLog.Info("result:" + string(body))
	err = json.Unmarshal(body, &resp)
	if err != nil {
		return
	}
	return

}

func GetChartPermissionAllList() (resp *ChartPermissionResp, err error) {
	url := utils.ETA_MINI_BRIDGE_URL + "/chart_permission/allList"
	client := &http.Client{}
	// 提交请求
	req, err := http.NewRequest("GET", url, nil)
	if err != nil {
		return
	}
	nonce := utils.GetRandStringNoSpecialChar(16)
	timestamp := time.Now().Format(utils.FormatDateTimeUnSpace)
	signature := utils.GetSign(nonce, timestamp, utils.ETA_MINI_APPID, utils.ETA_MINI_APP_SECRET)
	//增加header选项
	req.Header.Add("Nonce", nonce)
	req.Header.Add("Timestamp", timestamp)
	req.Header.Add("Appid", utils.ETA_MINI_APPID)
	req.Header.Add("Signature", signature)
	req.Header.Set("Content-Type", "application/json")

	response, err := client.Do(req)
	if err != nil {
		return
	}
	defer response.Body.Close()

	body, err := io.ReadAll(response.Body)

	if err != nil {
		return
	}
	utils.FileLog.Info("result:" + string(body))
	err = json.Unmarshal(body, &resp)
	if err != nil {
		return
	}
	return

}