module_menu.go 7.3 KB
package allied_creation_user

import (
	"encoding/json"
	"fmt"
	"strconv"

	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway"
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/log"
)

// MenusCreate 创建菜单
func (gateway HttplibAlliedCreationUser) MenusCreate(param ReqMenus) (*DataMenus, error) {
	url := gateway.baseUrL + "/menus"
	method := "post"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:创建菜单。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("请求创建菜单失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("获取创建菜单失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:创建菜单。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析创建菜单:%w", err)
	}
	var data DataMenus
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// MenusUpdate 更新菜单
func (gateway HttplibAlliedCreationUser) MenusUpdate(param ReqMenusUpdate) (*DataMenusUpdate, error) {
	url := gateway.baseUrL + "/menus/" + strconv.FormatInt(param.MenuId, 10)
	method := "put"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:更新菜单。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("请求更新菜单失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("获取更新菜单失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:更新菜单。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析更新菜单:%w", err)
	}
	var data DataMenusUpdate
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// MenusRemove 移除菜单
func (gateway HttplibAlliedCreationUser) MenusRemove(param ReqMenusRemove) (*DataMenusRemove, error) {
	url := gateway.baseUrL + "/menus/" + strconv.FormatInt(param.MenuId, 10)
	method := "delete"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:移除菜单。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("请求移除菜单失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("获取移除菜单失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:移除菜单。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析移除菜单:%w", err)
	}
	var data DataMenusRemove
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// MenusGet 返回菜单
func (gateway HttplibAlliedCreationUser) MenusGet(param ReqMenusGet) (*DataMenusGet, error) {
	url := gateway.baseUrL + "/menus/" + strconv.FormatInt(param.MenuId, 10)
	method := "get"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:返回菜单。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("请求返回菜单失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("获取返回菜单失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:返回菜单。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析返回菜单:%w", err)
	}
	var data DataMenusGet
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// MenusSearch 返回菜单列表
func (gateway HttplibAlliedCreationUser) MenusSearch(param ReqMenusSearch) (*DataMenusSearch, error) {
	url := gateway.baseUrL + "/menus/search"
	method := "post"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:返回菜单列表。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("请求返回菜单列表失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("获取返回菜单列表失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:返回菜单列表。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析返回菜单列表:%w", err)
	}
	var data DataMenusSearch
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// MenusBatchDelete 菜单批量删除
func (gateway HttplibAlliedCreationUser) MenusBatchDelete(param ReqMenusBatchDelete) (*DataMenusBatchDelete, error) {
	url := gateway.baseUrL + "/menus/batch-delete"
	method := "post"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:菜单批量删除。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("菜单批量删除失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("菜单批量删除失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:菜单批量删除。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析菜单批量删除:%w", err)
	}
	var data DataMenusBatchDelete
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// MenusBatchEnable 菜单批量启用、禁用
func (gateway HttplibAlliedCreationUser) MenusBatchEnable(param ReqMenusBatchEnable) (*DataMenusBatchEnable, error) {
	url := gateway.baseUrL + "/menus/batch-enable"
	method := "post"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向用户模块请求数据:菜单批量启用、禁用。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": param,
	})
	req, err := req.JSONBody(param)
	if err != nil {
		return nil, fmt.Errorf("菜单批量启用、禁用失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return nil, fmt.Errorf("菜单批量启用、禁用失败:%w", err)
	}
	log.Logger.Debug("获取用户模块请求数据:菜单批量启用、禁用。", map[string]interface{}{
		"result": string(byteResult),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析菜单批量启用、禁用:%w", err)
	}
	var data DataMenusBatchEnable
	err = gateway.GetResponseData(result, &data)
	return &data, err
}