cooperation_project.go 5.9 KB
package service

import (
	"strconv"

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

// 共创项目管理
type CooperationProjectService struct {
}

// 创建共创项目管理
func (cooperationProjectService *CooperationProjectService) CreateCooperationProject(createCooperationProjectCommand *command.CreateCooperationProjectCommand) (interface{}, error) {
	if err := createCooperationProjectCommand.ValidateCommand(); err != nil {
		return nil, application.ThrowError(application.ARG_ERROR, err.Error())
	}
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(createCooperationProjectCommand.Operator)
	result, err := creationCooperationGateway.CooperationProjectAdd(allied_creation_cooperation.ReqCooperationProjectAdd{
		CooperationProjectDescription:    createCooperationProjectCommand.CooperationProjectDescription,
		CooperationProjectName:           createCooperationProjectCommand.CooperationProjectName,
		PublisherUid:                     strconv.Itoa(int(createCooperationProjectCommand.Operator.UserId)),
		SponsorUid:                       createCooperationProjectCommand.CooperationProjectSponsor,
		CooperationProjectUndertakerType: createCooperationProjectCommand.CooperationProjectUndertakerType,
		Images:                           createCooperationProjectCommand.Images,
	})

	if err != nil {
		return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
	}
	data := struct {
		CooperationProjectId int `json:"cooperationProjectId"`
		command.CreateCooperationProjectCommand
	}{
		CooperationProjectId:            result.CooperationProjectId,
		CreateCooperationProjectCommand: *createCooperationProjectCommand,
	}
	return data, nil
}

// 结束共创项目管理
func (cooperationProjectService *CooperationProjectService) EndCooperationProject(endCooperationProjectCommand *command.EndCooperationProjectCommand) (interface{}, error) {
	if err := endCooperationProjectCommand.ValidateCommand(); err != nil {
		return nil, application.ThrowError(application.ARG_ERROR, err.Error())
	}
	//creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(endCooperationProjectCommand.Operator)
	//TODO 等待接口
	return nil, nil
}

// 返回共创项目管理
func (cooperationProjectService *CooperationProjectService) GetCooperationProject(getCooperationProjectQuery *query.GetCooperationProjectQuery) (interface{}, error) {
	if err := getCooperationProjectQuery.ValidateQuery(); err != nil {
		return nil, application.ThrowError(application.ARG_ERROR, err.Error())
	}
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(getCooperationProjectQuery.Operator)
	result, err := creationCooperationGateway.CooperationProjectGet(allied_creation_cooperation.ReqCooperationProjectGet{
		CooperationProjectId: getCooperationProjectQuery.CooperationProjectId,
	})
	if err != nil {
		return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
	}
	return result, nil
}

// 返回共创项目管理列表
func (cooperationProjectService *CooperationProjectService) ListCooperationProject(listCooperationProjectQuery *query.ListCooperationProjectQuery) (int64, interface{}, error) {
	if err := listCooperationProjectQuery.ValidateQuery(); err != nil {
		return 0, nil, application.ThrowError(application.ARG_ERROR, err.Error())
	}
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(listCooperationProjectQuery.Operator)
	result, err := creationCooperationGateway.CooperationProjectsSearch(allied_creation_cooperation.ReqCooperationProjectSearch{
		PageNumber: listCooperationProjectQuery.PageNumber,
		PageSize:   listCooperationProjectQuery.PageSize,
		//发起部门名称
		DepartmentName: listCooperationProjectQuery.DepartmentName,
		//项目名
		CooperationProjectName: listCooperationProjectQuery.CooperationProjectName,
	})
	if err != nil {
		return 0, nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
	}
	return result.Total, result.CooperationProjects, nil
}

// 更新共创项目管理
func (cooperationProjectService *CooperationProjectService) UpdateCooperationProject(updateCooperationProjectCommand *command.UpdateCooperationProjectCommand) (interface{}, error) {
	if err := updateCooperationProjectCommand.ValidateCommand(); err != nil {
		return nil, application.ThrowError(application.ARG_ERROR, err.Error())
	}
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(updateCooperationProjectCommand.Operator)
	_, err := creationCooperationGateway.CooperationProjectUpdate(allied_creation_cooperation.ReqCooperationProjectUpdate{
		CooperationProjectId:             updateCooperationProjectCommand.CooperationProjectId,
		CooperationProjectName:           updateCooperationProjectCommand.CooperationProjectName,
		CooperationProjectUndertakerType: updateCooperationProjectCommand.CooperationProjectUndertakerType,
		SponsorUid:                       updateCooperationProjectCommand.CooperationProjectSponsor,
		PublisherUid:                     strconv.Itoa(int(updateCooperationProjectCommand.Operator.UserId)),
		CooperationProjectDescription:    updateCooperationProjectCommand.CooperationProjectDescription,
		Images:                           updateCooperationProjectCommand.Images,
	})
	if err != nil {
		return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
	}

	return updateCooperationProjectCommand, nil
}

func NewCooperationProjectService(options map[string]interface{}) *CooperationProjectService {
	newCooperationProjectService := &CooperationProjectService{}
	return newCooperationProjectService
}