module_dictionary.go 6.6 KB
package allied_creation_basic

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

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

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

//GetDictionarysByCode 根据code获取字典数据
func (gateway HttplibAlliedCreationBasic) GetDictionarysByCode(param ReqGetDictionaryByCode) (*DataGetDictionaryByCode, error) {
	url := gateway.baseUrL + "/dictionarys/dictionary-code"
	method := "post"
	req := gateway.CreateRequest(url, method)
	//TODO traceID
	log.Logger.Debug("向基础模块请求数据:根据code获取字典数据。", 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("获取基础模块响应数据:根据code获取字典数据。", 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 DataGetDictionaryByCode
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

//DictionaryAdd 添加字典
func (gateway HttplibAlliedCreationBasic) DictionaryAdd(param ReqDictionaryAdd) (*DataDictionaryAdd, error) {
	url := gateway.baseUrL + "/dictionarys"
	method := "post"
	req := gateway.CreateRequest(url, method)
	//TODO traceID
	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 DataDictionaryAdd
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

//DictionaryUpdate 更新字典
func (gateway HttplibAlliedCreationBasic) DictionaryUpdate(param ReqDictionaryUpdate) (*DataDictionaryUpdate, error) {
	url := gateway.baseUrL + "/dictionarys/" + strconv.Itoa(int(param.DictionaryId))
	method := "PUT"
	req := gateway.CreateRequest(url, method)
	//TODO traceID
	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 DataDictionaryUpdate
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

//DictionaryGet 获取字典
func (gateway HttplibAlliedCreationBasic) DictionaryGet(param ReqDictionaryGet) (*DataDictionaryGet, error) {
	url := gateway.baseUrL + "/dictionarys/" + strconv.Itoa(int(param.DictionaryId))
	method := "GET"
	req := gateway.CreateRequest(url, method)
	//TODO traceID
	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 DataDictionaryGet
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

//DictionaryRemove 删除字典
func (gateway HttplibAlliedCreationBasic) DictionaryRemove(param ReqDictionaryRemove) (*DataDictionaryRemove, error) {
	url := gateway.baseUrL + "/dictionarys/remove"
	method := "DELETE"
	req := gateway.CreateRequest(url, method)
	//TODO traceID
	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 DataDictionaryRemove
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

//DictionarySearch 查询字典
func (gateway HttplibAlliedCreationBasic) DictionarySearch(param ReqDictionarySearch) (*DataDictionarySearch, error) {
	url := gateway.baseUrL + "/dictionarys/search"
	method := "POST"
	req := gateway.CreateRequest(url, method)
	//TODO traceID
	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 DataDictionarySearch
	err = gateway.GetResponseData(result, &data)
	return &data, err
}