create_cooperation_contract.go 3.6 KB
package command

import (
	"fmt"

	"github.com/beego/beego/v2/core/validation"
)

type CreateCooperationContractCommand struct {
	CooperationContract struct {
		CooperationContractId int `json:"cooperationContractId,string"`
		// 共创合约描述
		Description string `json:"Description"`
		// 共创合约编号
		CooperationContractNumber string `json:"cooperationContractNumber"`
		// 共创项目编号,
		CooperationProjectNumber string `json:"cooperationProjectNumber"`
		// 共创合约发起部门编码
		DepartmentId string `json:"departmentId"`
		// 共创合约承接对象,1员工,2共创用户,3公开
		CooperationContractUndertakerType []int `json:"cooperationContractUndertakerType"`
		// 共创合约名称
		CooperationContractName string `json:"cooperationContractName"`
		// 共创模式编码,手动输入,唯一确定
		CooperationModeNumber string `json:"cooperationModeNumber"`
		// 共创合约发起人uid
		SponsorUserId string `json:"sponsorUserId"`
	} `json:"cooperationContract"`

	// 业绩分红激励规则列表
	DividendsIncentivesRules []struct {
		// 关联的项目合约编号
		CooperationContractNumber string `json:"cooperationContractNumber"`
		// 推荐人抽成比例
		ReferrerPercentage float64 `json:"referrerPercentage"`
		// 业务员抽成比例
		SalesmanPercentage float64 `json:"salesmanPercentage"`
		// 分红规则激励百分点
		DividendsIncentivesPercentage float64 `json:"dividendsIncentivesPercentage"`
		// 分红规则激励阶段,
		DividendsIncentivesStage int64 `json:"dividendsIncentivesStage,string,"`
		// 分红规则激励阶段结束
		DividendsIncentivesStageEnd int `json:"dividendsIncentivesStageEnd"`
		// 分红规则激励阶段开始
		DividendsIncentivesStageStart int `json:"dividendsIncentivesStageStart"`
	} `json:"dividendsIncentivesRules"`
	// 金额激励规则列表
	MoneyIncentivesRules []struct {
		// 金额激励规则ID
		MoneyIncentivesRuleId int64 `json:"moneyIncentivesRuleId,string,"`
		// 关联的共创合约编号
		CooperationContractNumber string `json:"cooperationContractNumber"`
		// 激励金额
		MoneyIncentivesAmount float64 `json:"moneyIncentivesAmount"`
		// 金额激励阶段,
		MoneyIncentivesStage int64 `json:"moneyIncentivesStage,string,"`
		// 金额激励规则时间
		MoneyIncentivesTime int `json:"moneyIncentivesTime"`
		// 推荐人抽成比例
		ReferrerPercentage float64 `json:"referrerPercentage"`
		// 业务员抽成比例
		SalesmanPercentage float64 `json:"salesmanPercentage"`
	} `json:"moneyIncentivesRules"`

	// 关联用户id
	RelationUser []int `json:"relationUser"`
	//承接人列表
	ContractUndertaker []struct {
		HasReferrer  bool `json:"hasReferrer"`
		HasSalesman  bool `json:"hasSalesman"`
		UsersId      int  `json:"usersId,string,"`
		ReferrerUser struct {
			UserId int `json:"userId,string,"`
		} `json:"referrerUser"`
		SalesmanUser struct {
			UserId int `json:"userId"`
		} `json:"salesmanUser"`
		Attachment []struct {
			Name     string `json:"name"`
			Type     string `json:"type"`
			Url      string `json:"url"`
			FileSize int    `json:"fileSize"`
		} `json:"attachment"`
	} `json:"contractUndertaker"`
}

func (createCooperationContractCommand *CreateCooperationContractCommand) Valid(validation *validation.Validation) {
	validation.SetError("CustomValid", "未实现的自定义认证")
}

func (createCooperationContractCommand *CreateCooperationContractCommand) ValidateCommand() error {
	valid := validation.Validation{}
	b, err := valid.Valid(createCooperationContractCommand)
	if err != nil {
		return err
	}
	if !b {
		for _, validErr := range valid.Errors {
			return fmt.Errorf("%s  %s", validErr.Key, validErr.Message)
		}
	}
	return nil
}