module_cooperation_contract.go 8.4 KB
package allied_creation_cooperation

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

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

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

// CooperationContractAdd 创建共创合约
func (gateway HttplibAlliedCreationCooperation) CooperationContractAdd(param ReqCooperationContractAdd) (*DataCooperationContractAdd, error) {
	url := gateway.baseUrL + "/cooperation-contracts"
	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": strings.ReplaceAll(string(byteResult), "\n", ""),
	})
	var result service_gateway.GatewayResponse
	err = json.Unmarshal(byteResult, &result)
	if err != nil {
		return nil, fmt.Errorf("解析创建共创合约:%w", err)
	}
	var data DataCooperationContractAdd
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// CooperationContractUpdate 更新共创合约
func (gateway HttplibAlliedCreationCooperation) CooperationContractUpdate(param ReqCooperationContractUpdate) (*DataCooperationContractUpdate, error) {
	url := gateway.baseUrL + "/cooperation-contracts/" + strconv.Itoa(param.CooperationContractId)
	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 DataCooperationContractUpdate
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// CooperationContractSearch 查询共创合约
func (gateway HttplibAlliedCreationCooperation) CooperationContractSearch(param ReqCooperationContractSearch) (*DataCooperationContractSearch, error) {
	url := gateway.baseUrL + "/cooperation-contracts/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 DataCooperationContractSearch
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// CooperationContractsSearchByUndertaker 根据承接人查询并返回共创项目合约
func (gateway HttplibAlliedCreationCooperation) CooperationContractsSearchByUndertaker(
	param ReqCooperationContractSearchByUndertaker) (*DataCooperationContractSearchByUndertaker, error) {
	url := gateway.baseUrL + "/cooperation-contracts/search-by-undertaker"
	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 DataCooperationContractSearchByUndertaker
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// CooperationContractRemove 移除共创合约
func (gateway HttplibAlliedCreationCooperation) CooperationContractRemove(param ReqCooperationContractRemove) (*DataCooperationContractRemove, error) {
	url := gateway.baseUrL + "/cooperation-contracts/" + strconv.Itoa(param.CooperationContractId)
	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 DataCooperationContractRemove
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// CooperationContractList 返回共创合约列表
func (gateway HttplibAlliedCreationCooperation) CooperationContractList(param ReqCooperationContractList) (*DataCooperationContractList, error) {
	url := gateway.baseUrL + "/cooperation-contracts"
	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 DataCooperationContractList
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// CooperationContractGet 返回共创合约详情
func (gateway HttplibAlliedCreationCooperation) CooperationContractGet(param ReqCooperationContractGet) (*DataCooperationContractGet, error) {
	url := gateway.baseUrL + "/cooperation-contracts/" + strconv.Itoa(param.CooperationContractId)
	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 DataCooperationContractGet
	err = gateway.GetResponseData(result, &data)
	return &data, err
}