module_cooperation_statistics.go 6.7 KB
package allied_creation_cooperation

import (
	"encoding/json"
	"fmt"
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/log"

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

const (
	// 合约分红列表查询
	SearchContractDividends = "SearchContractDividends"
	// 获取分红合约详情
	GetContractDividends = "GetContractDividends"
	// 分红统计(分红明细)
	DividendsStatistics = "DividendsStatistics"

	// 企业-商品统计
	CooperationGoodsStatistics = "cooperationGoodsStatistics"
	// 企业-共创模式统计
	CooperationModeStatistics = "CooperationModeStatistics"
	// 企业-分红统计
	CompanyDividendsStatistics = "CompanyDividendsStatistics"
	// 企业、个人 - 分红预算列表
	SearchDividendsEstimates = "SearchDividendsEstimates"
	// 公司 - 共创用户统计
	CompanyCooperationUsersStatistics = "CompanyCooperationUsersStatistics"
	//公司 - 共创用户模式统计
	CooperationUserModeStatistics = "CooperationUserModeStatistics"
	// 公司 - 共创用户分红支付统计
	CompanyPaymentHistoryStatistics = "CompanyPaymentHistoryStatistics"
	// 企业共创项目 - 合约列表
	CompanyCooperationProjectContracts = "CompanyCooperationProjectContracts"

	// 个人 - 共创企业统计
	CooperationCompanyStatistics = "CooperationCompanyStatistics"
	// 个人 - 用户合约统计
	PersonCooperationContractStatistics = "PersonCooperationContractStatistics"
	// 个人 - 企业支付统计
	PersonCompanyPaymentHistoryStatistics = "PersonCompanyPaymentHistoryStatistics"
	// 个人 - 共创项目共享信息数据
	PersonCooperationProjectSharedInfo = "PersonCooperationProjectSharedInfo"
	// 个人 - 共创项目共享信息数据 - 附件
	PersonCooperationProjectSharedInfoAttachment = "PersonCooperationProjectSharedInfoAttachment"

	// 账期结算单统计
	CreditAccountStatistics = "CreditAccountStatistics"
	// 公司/个人 - 支付历史统计直方图
	PaymentHistoryHistogramStatistics = "PaymentHistoryHistogramStatistics"
	// 用户相关的项目合约编号列表查询
	RelevantCooperationContractNumbers = "RelevantCooperationContractNumbers"
)

// CooperationStatistics 共创统计
func (gateway HttplibAlliedCreationCooperation) CooperationStatistics(action string, queryOptions interface{}) (interface{}, error) {
	url := gateway.baseUrL + "/cooperation-statistics"
	method := "post"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向业务模块请求数据:共创统计。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": queryOptions,
	})
	param := map[string]interface{}{
		"action":       action,
		"queryOptions": queryOptions,
	}
	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 interface{}
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// CreditAccountStatistics 账期结算单统计
func (gateway HttplibAlliedCreationCooperation) CreditAccountStatistics(action string, queryOptions interface{}) (*DataCreditAccountStatistics, error) {
	url := gateway.baseUrL + "/cooperation-statistics"
	method := "post"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向业务模块请求数据:共创统计。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": queryOptions,
	})
	param := map[string]interface{}{
		"action":       action,
		"queryOptions": queryOptions,
	}
	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 DataCreditAccountStatistics
	err = gateway.GetResponseData(result, &data)
	return &data, err
}

// CreditAccountStatistics 账期结算单统计
func (gateway HttplibAlliedCreationCooperation) RelevantCooperationContractNumbers(action string, queryOptions interface{}) ([]string, error) {
	url := gateway.baseUrL + "/cooperation-statistics"
	method := "post"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向业务模块请求数据:共创统计。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": queryOptions,
	})
	param := map[string]interface{}{
		"action":       action,
		"queryOptions": queryOptions,
	}
	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 []string
	err = gateway.GetResponseData(result, &data)
	return data, err
}

// CooperationStatistics 共创统计
func (gateway HttplibAlliedCreationCooperation) CooperationStatisticsWithObject(action string, queryOptions interface{}, object interface{}) error {
	url := gateway.baseUrL + "/cooperation-statistics"
	method := "post"
	req := gateway.CreateRequest(url, method)
	log.Logger.Debug("向业务模块请求数据:共创统计。", map[string]interface{}{
		"api":   method + ":" + url,
		"param": queryOptions,
	})
	param := map[string]interface{}{
		"action":       action,
		"queryOptions": queryOptions,
	}
	req, err := req.JSONBody(param)
	if err != nil {
		return fmt.Errorf("请求共创统计失败:%w", err)
	}

	byteResult, err := req.Bytes()
	if err != nil {
		return 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 fmt.Errorf("解析共创统计:%w", err)
	}
	err = gateway.GetResponseData(result, &object)
	return err
}