cooperation_applications.go 8.5 KB
package service

import (
	"strconv"

	"github.com/linmadan/egglib-go/core/application"
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/mobile/cooperation/command"
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/mobile/cooperation/dto"
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_cooperation"
)

// CooperationApplicationsService 共创申请服务
type CooperationApplicationsService struct {
}

/*****   企业端  *****/

// GetCooperationApplications  企业获取共创申请详情
func (srv CooperationApplicationsService) GetCooperationApplications(applicationQuery *command.GetCooperationApplicationQuery) (interface{}, error) {
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(
		applicationQuery.Operator)
	resultApplication, err := creationCooperationGateway.CooperationApplicationGet(allied_creation_cooperation.ReqCooperationApplicationGet{
		CooperationApplicationId: applicationQuery.CooperationApplicationId,
	})
	if err != nil {
		return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
	}
	resultProject, err := creationCooperationGateway.CooperationProjectGet(allied_creation_cooperation.ReqCooperationProjectGet{
		CooperationProjectId: resultApplication.CooperationProject.CooperationProjectID,
	})
	if err != nil {
		return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
	}
	data := map[string]interface{}{
		"cooperationApplication": dto.ToCooperationApplication(&resultApplication.CooperationApplication),
		"cooperationProject":     dto.ToCooperationProjectInfo(&resultProject.CooperationProject),
	}
	return data, nil
}

// AuditCooperationApplications  企业审核共创申请
func (srv CooperationApplicationsService) AuditCooperationApplications(auditCommand *command.AuditCooperationApplicationCommand) (interface{}, error) {
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(
		auditCommand.Operator)
	applicationIds := []string{}
	for _, v := range auditCommand.CooperationApplicationId {
		idStr := strconv.Itoa(v)
		applicationIds = append(applicationIds, idStr)
	}
	_, err := creationCooperationGateway.CooperationApplicationsBatchApproval(allied_creation_cooperation.ReqCooperationApplicationBatchApproval{
		CooperationApplicationIds:         applicationIds,
		CooperationApplicationDescription: auditCommand.CooperationApplicationVerifyDescription,
		Action:                            auditCommand.CooperationApplicationStatus,
	})
	if err != nil {
		return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
	}
	return auditCommand, nil
}

// SearchCooperationApplications  企业获取共创申请列表
func (srv CooperationApplicationsService) SearchCooperationApplications(applicationQuery *command.ListCooperationApplicationQuery) (interface{}, error) {
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(
		applicationQuery.Operator)
	resultApplications, err := creationCooperationGateway.CooperationApplicationsSearch(allied_creation_cooperation.ReqCooperationApplicationSearch{
		PageNumber:                   applicationQuery.PageNumber,
		PageSize:                     applicationQuery.PageSize,
		CompanyId:                    int(applicationQuery.Operator.CompanyId),
		CooperationApplicationStatus: applicationQuery.Status,
	})
	if err != nil {
		return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
	}
	return resultApplications, nil
}

/*****   共创用户端  *****/

// CreateCooperationApplications  创建共创申请管理
func (srv CooperationApplicationsService) CreateCooperationApplications(createApplicationsCommand *command.CreateCooperationApplicationCommand) (interface{}, error) {
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(
		createApplicationsCommand.Operator)
	result, err := creationCooperationGateway.CooperationApplicationAdd(allied_creation_cooperation.ReqCooperationApplicationAdd{
		ApplicantUid:                      strconv.Itoa(int(createApplicationsCommand.Operator.UserId)),
		CooperationApplicationDescription: createApplicationsCommand.CooperationApplicationDescription,
		CooperationApplicationAttachment:  createApplicationsCommand.Attachment,
		CooperationProjectNumber:          createApplicationsCommand.CooperationProjectNumber,
	})
	if err != nil {
		return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
	}
	data := struct {
		CooperationApplicationId int `json:"cooperationApplicationId"`
		command.CreateCooperationApplicationCommand
	}{
		CooperationApplicationId:            result.CooperationApplicationId,
		CreateCooperationApplicationCommand: *createApplicationsCommand,
	}
	return data, err
}

//PersonGetCooperationApplications 共创用户获取共创申请详情
func (srv CooperationApplicationsService) PersonGetCooperationApplications(applicationQuery *command.GetCooperationApplicationQuery) (interface{}, error) {
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(
		applicationQuery.Operator)
	resultApplication, err := creationCooperationGateway.CooperationApplicationGet(allied_creation_cooperation.ReqCooperationApplicationGet{
		CooperationApplicationId: applicationQuery.CooperationApplicationId,
	})
	if err != nil {
		return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
	}
	resultProject, err := creationCooperationGateway.CooperationProjectGet(allied_creation_cooperation.ReqCooperationProjectGet{
		CooperationProjectId: resultApplication.CooperationProject.CooperationProjectID,
	})
	if err != nil {
		return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
	}
	data := map[string]interface{}{
		"cooperationApplication": dto.ToCooperationApplication(&resultApplication.CooperationApplication),
		"cooperationProject":     dto.ToCooperationProjectInfo(&resultProject.CooperationProject),
	}
	return data, nil
}

// PersonCancelCooperationApplications  共创用户取消共创申请
func (srv CooperationApplicationsService) PersonCancelCooperationApplications(cancelCommand *command.CancelCooperationApplicationCommand) (interface{}, error) {
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(
		cancelCommand.Operator)
	_, err := creationCooperationGateway.CooperationApplicationCancel(allied_creation_cooperation.ReqCooperationApplicationCancel{
		ApplicationId: cancelCommand.CooperationApplicationId,
	})
	if err != nil {
		return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
	}
	return cancelCommand, nil
}

// PersonSearchCooperationApplications  共创用户获取共创申请列表
func (srv CooperationApplicationsService) PersonSearchCooperationApplications(applicationQuery *command.ListCooperationApplicationQuery) (interface{}, error) {
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(
		applicationQuery.Operator)
	resultApplications, err := creationCooperationGateway.CooperationApplicationsSearch(allied_creation_cooperation.ReqCooperationApplicationSearch{
		PageNumber:                   applicationQuery.PageNumber,
		PageSize:                     applicationQuery.PageSize,
		CompanyId:                    int(applicationQuery.Operator.CompanyId),
		CooperationApplicationStatus: applicationQuery.Status,
	})
	if err != nil {
		return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
	}
	// var dataList []dto.CooperationApplication

	// for i := range resultApplications.Gride.List {
	// 	item := dto.ToCooperationApplication(&resultApplications.Gride.List[i])
	// 	dataList = append(dataList, *item)
	// }
	return resultApplications, nil
}

// CooperationApplicationsOneclickApproval  企业一键审核申请
func (srv CooperationApplicationsService) CooperationApplicationsOneclickApproval(auditCommand *command.AuditAllCooperationApplicationCommand) (interface{}, error) {
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(
		auditCommand.Operator)
	_, err := creationCooperationGateway.CooperationApplicationsOneclickApproval(
		allied_creation_cooperation.ReqCooperationApplicationOneclickApproval{
			CooperationApplicationDescription: auditCommand.CooperationApplicationVerifyDescription,
			Action:                            auditCommand.CooperationApplicationStatus,
		})
	if err != nil {
		return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
	}
	return auditCommand, nil
}