cooperation_applications.go 9.9 KB
package service

import (
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain"
	"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/infrastructure/service_gateway/allied_creation_cooperation"
)

// CooperationApplicationsService 共创申请服务 【100%】
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: int(applicationQuery.CooperationApplicationId),
	})
	if err != nil {
		return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
	}

	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),
	//}
	resultApplication.CooperationProject.CooperationMode.CooperationModeNumber = resultProject.CooperationMode.CooperationModeNumber
	resultApplication.CooperationProject.CooperationMode.CooperationModeName = resultProject.CooperationMode.CooperationModeName
	resultApplication.CooperationProject.CooperationMode.CooperationModeId = resultProject.CooperationMode.CooperationModeId

	resultApplication.Department.DepartmentID = resultApplication.Org.OrgID
	resultApplication.Department.DepartmentName = resultApplication.Org.OrgName
	return resultApplication, nil
}

// AuditCooperationApplications  企业审核共创申请
func (srv CooperationApplicationsService) AuditCooperationApplications(auditCommand *command.AuditCooperationApplicationCommand) (interface{}, error) {
	creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(
		auditCommand.Operator)
	//applicationIds := []string{strconv.Itoa(auditCommand.CooperationApplicationId)}
	//for _, v := range auditCommand.CooperationApplicationId {
	//	idStr := strconv.Itoa(v)
	//	applicationIds = append(applicationIds, idStr)
	//}
	_, err := creationCooperationGateway.CooperationApplicationsApproval(allied_creation_cooperation.ReqCooperationApplicationApproval{
		CooperationApplicationId:                strconv.Itoa(auditCommand.CooperationApplicationId),
		CooperationApplicationVerifyDescription: auditCommand.CooperationApplicationVerifyDescription,
		Action:                                  auditCommand.CooperationApplicationStatus,
		Code:                                    "a1-2",
	})
	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 + 1, //手机序号从0开始的
		PageSize:                     applicationQuery.PageSize,
		CompanyId:                    int(applicationQuery.Operator.CompanyId),
		OrgId:                        applicationQuery.Operator.OrgId,
		CooperationApplicationStatus: applicationQuery.Status,
		IsCanceled:                   1,
	})
	for i := 0; i < len(resultApplications.Grid.List); i++ {
		resultApplications.Grid.List[i].Department.DepartmentID = int(resultApplications.Grid.List[i].CooperationApplicationApplicant.Department.DepartmentId)
		resultApplications.Grid.List[i].Department.DepartmentName = resultApplications.Grid.List[i].CooperationApplicationApplicant.Department.DepartmentName
		if len(resultApplications.Grid.List[i].Department.DepartmentName) == 0 && resultApplications.Grid.List[i].Department.DepartmentID == 0 {
			resultApplications.Grid.List[i].Department.DepartmentName = domain.CooperationUserDepartmentName
		}
	}

	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.ApplyForCooperation(allied_creation_cooperation.ReqApplyForCooperation{
		CooperationApplicationDescription: createApplicationsCommand.CooperationApplicationDescription,
		CooperationProjectId:              createApplicationsCommand.CooperationProjectId,
		CooperationApplicationAttachment:  createApplicationsCommand.Attachment,
	})
	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: int(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 resultApplication, 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,
		Code:          "code", //TODO: 菜单编码?
	})
	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 + 1,
		PageSize:                     applicationQuery.PageSize,
		CooperationApplicationStatus: applicationQuery.Status,
		UserBaseId:                   applicationQuery.Operator.UserBaseId,
		IsCanceled:                   1,
	})
	if err != nil {
		return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
	}
	// var dataList []dto.CooperationApplication

	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{
			CooperationApplicationVerifyDescription: auditCommand.CooperationApplicationVerifyDescription,
			Action:                                  auditCommand.CooperationApplicationStatus,
			Code:                                    "a1-2",
		})
	if err != nil {
		return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
	}
	return auditCommand, nil
}