cooperation_application.go 4.4 KB
package service

import (
	"github.com/linmadan/egglib-go/core/application"
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/cooperationApplication/command"
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/cooperationApplication/query"
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_cooperation"
)

// 共创申请管理
type CooperationApplicationService struct {
}

// 审核共创申请
func (cooperationApplicationService *CooperationApplicationService) AuditCooperationApplication(
	auditCooperationApplicationCommand *command.AuditCooperationApplicationCommand) (interface{}, error) {
	if err := auditCooperationApplicationCommand.ValidateCommand(); err != nil {
		return nil, application.ThrowError(application.ARG_ERROR, err.Error())
	}
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(
		auditCooperationApplicationCommand.Operator)

	if auditCooperationApplicationCommand.CooperationApplicationStatus == 2 {
		_, err := creationCooperationGateway.CooperationApplicationsAgree(allied_creation_cooperation.ReqCooperationApplicationAgree{
			CooperationApplicationId:                auditCooperationApplicationCommand.CooperationApplicationId,
			CooperationApplicationVerifyDescription: auditCooperationApplicationCommand.CooperationApplicationVerifyDescription,
		})
		if err != nil {
			return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
		}
	} else if auditCooperationApplicationCommand.CooperationApplicationStatus == 3 {
		_, err := creationCooperationGateway.CooperationApplicationReject(allied_creation_cooperation.ReqCooperationApplicationReject{
			CooperationApplicationId:                auditCooperationApplicationCommand.CooperationApplicationId,
			CooperationApplicationVerifyDescription: auditCooperationApplicationCommand.CooperationApplicationVerifyDescription,
		})
		if err != nil {
			return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
		}
	} else {
		return nil, application.ThrowError(application.TRANSACTION_ERROR, "status 参数错误")
	}

	return auditCooperationApplicationCommand, nil
}

// 返回共创申请管理
func (cooperationApplicationService *CooperationApplicationService) GetCooperationApplication(getCooperationApplicationQuery *query.GetCooperationApplicationQuery) (interface{}, error) {
	if err := getCooperationApplicationQuery.ValidateQuery(); err != nil {
		return nil, application.ThrowError(application.ARG_ERROR, err.Error())
	}
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(getCooperationApplicationQuery.Operator)
	result, err := creationCooperationGateway.CooperationApplicationGet(allied_creation_cooperation.ReqCooperationApplicationGet{
		CooperationApplicationId: getCooperationApplicationQuery.CooperationApplicationId,
	})
	if err != nil {
		return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
	}
	return result, nil
}

// 返回共创申请管理列表
func (cooperationApplicationService *CooperationApplicationService) ListCooperationApplication(
	listCooperationApplicationQuery *query.ListCooperationApplicationQuery) (int64, interface{}, error) {
	if err := listCooperationApplicationQuery.ValidateQuery(); err != nil {
		return 0, nil, application.ThrowError(application.ARG_ERROR, err.Error())
	}
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(listCooperationApplicationQuery.Operator)
	result, err := creationCooperationGateway.CooperationApplicationsSearch(allied_creation_cooperation.ReqCooperationApplicationSearch{
		ApplicantName:                listCooperationApplicationQuery.ApplicantName,
		CooperationApplicationStatus: listCooperationApplicationQuery.VerifyStatus,
		CooperationProjectName:       listCooperationApplicationQuery.ProjectName,
		PageNumber:                   listCooperationApplicationQuery.PageNumber,
		PageSize:                     listCooperationApplicationQuery.PageSize,
	})
	if err != nil {
		return 0, nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
	}

	return int64(result.Gride.Total), result.Gride.List, nil
}

func NewCooperationApplicationService(options map[string]interface{}) *CooperationApplicationService {
	newCooperationApplicationService := &CooperationApplicationService{}
	return newCooperationApplicationService
}