param_cooperation_contract.go 10.0 KB
package allied_creation_cooperation

import (
	"time"

	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain"
)

type CooperationContract struct {
	CooperationContractId              int    `json:"cooperationContractId,string"`      // 共创合约ID
	CooperationContractDescription     string `json:"cooperationContractDescription"`    // 共创合约描述
	CooperationContractName            string `json:"cooperationContractName"`           // 共创合约名称
	CooperationContractNumber          string `json:"cooperationContractNumber"`         // 共创合约编号
	CooperationContractUndertakerTypes []int  `json:"cooperationContractUndertakerType"` // 共创合约承接对象,1员工,2共创用户,3公开
	CooperationContractSponsor         struct {
		UserId   int `json:"userId"` //id
		UserInfo struct {
			UserAvatar  string `json:"userAvatar"`  // 用户头像
			UserEmail   string `json:"userEmail"`   // 用户邮箱
			UserName    string `json:"userName"`    // 共创人员姓名
			UserPhone   string `json:"userPhone"`   // 用户手机号
			UserAccount string `json:"userAccount"` // 用户账号,区别于手机号,冗余字段
		} `json:"userInfo"`
		Department struct {
			DepartmentId     int64  `json:"departmentId,string"` // 部门ID,通过REST集成上下文获取
			DepartmentName   string `json:"departmentName"`      // 部门名称
			DepartmentNumber string `json:"departmentNumber"`    // 部门编码
		} `json:"department"` //申请人部门
		Org struct {
			OrgId   int64  `json:"orgId,string"` // 组织机构ID
			OrgName string `json:"orgName"`      // 组织名称
		} `json:"org"`
		UserType  int    `json:"userType"`
		UserName  string `json:"userName"`
		UserPhone string `json:"userPhone"`
	} `json:"cooperationContractSponsor"` // 共创合约发起人
	CooperationMode domain.CooperationMode `json:"cooperationMode"` // 共创模式或者合伙模式
	Status          int                    `json:"status"`          // 合约状态,1启用,2禁用
	Org             struct {
		OrgId   int64  `json:"orgId,string"` // 组织机构ID
		OrgName string `json:"orgName"`      // 组织名称
	} `json:"org"` // 数据所属组织机构
	Company struct {
		CompanyId   int64  `json:"companyId,string"` // 公司ID
		CompanyLogo string `json:"companyLogo"`      // 公司logo
		CompanyName string `json:"companyName"`      // 公司名称
	} `json:"company"` // 公司
	DividendsIncentivesRules []DividendsIncentivesRule `json:"dividendsIncentivesRules"` // 分红激励规则
	MoneyIncentivesRules     []MoneyIncentivesRule     `json:"moneyIncentivesRules"`     // 金额激励规则
	Undertakers              []struct {
		UserId   int `json:"userId"`
		UserInfo struct {
			UserAvatar  string `json:"userAvatar"`  // 用户头像
			UserEmail   string `json:"userEmail"`   // 用户邮箱
			UserName    string `json:"userName"`    // 共创人员姓名
			UserPhone   string `json:"userPhone"`   // 用户手机号
			UserAccount string `json:"userAccount"` // 用户账号,区别于手机号,冗余字段
		} `json:"userInfo"`
		Department struct {
			DepartmentId     int64  `json:"departmentId,string"` // 部门ID
			DepartmentName   string `json:"departmentName"`      // 部门名称
			DepartmentNumber string `json:"departmentNumber"`    // 部门编码
		} `json:"department"` //申请人部门
		Org struct {
			OrgId   int64  `json:"orgId,string"` // 组织机构ID
			OrgName string `json:"orgName"`      // 组织名称
		} `json:"org"`
		UserType  int    `json:"userType"`
		UserName  string `json:"userName"`
		UserPhone string `json:"userPhone"`
	} `json:"undertakers"` // 共创承接人列表
	RelevantPeople []struct {
		RelevantId                int    `json:"relevantId,string"`
		CooperationContractNumber string `json:"cooperationContractNumber"` // 共创合约编号
		UserId                    int64  `json:"userId,string"`
		UserBaseId                int    `json:"userBaseId,string"`
		Org                       struct {
			OrgId   int64  `json:"orgId,string"` // 组织机构ID
			OrgName string `json:"orgName"`      // 组织名称
		} `json:"org"`
		UserInfo   domain.UserInfo `json:"userInfo"`
		Department struct {
			DepartmentId     int64  `json:"departmentId,string"` // 部门ID
			DepartmentName   string `json:"departmentName"`      // 部门名称
			DepartmentNumber string `json:"departmentNumber"`    // 部门编码
		} `json:"department"` //申请人部门
	} `json:"relevantPeople"` // 共创合约相关人列表
	OperateTime time.Time `json:"operateTime"` // 操作时间
	CreatedAt   time.Time `json:"createdAt"`   // 创建时间
	UpdatedAt   time.Time `json:"updatedAt"`   // 更新时间
}

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

	//合约承接方
	Undertaker struct {
		UndertakerId string            `json:"undertakerId"` //承接人用户id
		RerferrerId  string            `json:"rerferrerId"`  //推荐人用户id
		SalesmanId   string            `json:"salesmanId"`   //关联业务员id
		Attachment   domain.Attachment `json:"attachment"`
	}

	ReqCooperationContractAdd struct {
		// 共创合约描述
		CooperationContractDescription string `json:"cooperationContractDescription"`
		// 共创合约编号
		CooperationContractNumber string `json:"cooperationContractNumber"`
		// 共创项目编号,
		CooperationProjectNumber string `json:"cooperationProjectNumber"`
		// 共创合约发起部门id
		DepartmentId string `json:"departmentId"`
		// 共创合约承接对象,1员工,2共创用户,3公开
		CooperationContractUndertakerType []int `json:"cooperationContractUndertakerType"`
		// 共创合约名称
		CooperationContractName string `json:"cooperationContractName"`
		// 共创模式编码,
		CooperationModeNumber string `json:"cooperationModeNumber"`
		// 共创合约发起人uid
		SponsorUid string `json:"sponsorUid"`
		// 业绩分红激励规则列表
		DividendsIncentivesRules []DividendsIncentivesRule `json:"dividendsIncentivesRules"`
		// 金额激励规则列表
		MoneyIncentivesRules []MoneyIncentivesRule `json:"moneyIncentivesRules"`
		// 承接方列表
		Undertakers []Undertaker `json:"undertakers"`
		//关联业务员
		RelevantIds []string `json:"relevantIds"`
	}

	DataCooperationContractAdd struct {
	}
)

//更新共创合约
type (
	ReqCooperationContractUpdate struct {
		CooperationContractId int `json:"cooperationContractId"`
		// 共创合约描述
		CooperationContractDescription string `json:"cooperationContractDescription"`
		// 共创合约编号
		CooperationContractNumber string `json:"cooperationContractNumber"`
		// 共创项目编号,
		CooperationProjectNumber string `json:"cooperationProjectNumber"`
		// 共创合约发起部门id
		DepartmentId string `json:"departmentId"`
		// 共创合约承接对象,1员工,2共创用户,3公开
		CooperationContractUndertakerType []int `json:"cooperationContractUndertakerType"`
		// 共创合约名称
		CooperationContractName string `json:"cooperationContractName"`
		// 共创模式编码,
		CooperationModeNumber string `json:"cooperationModeNumber"`
		// 共创合约发起人uid
		SponsorUid string `json:"sponsorUid,omitempty,"`
		// 业绩分红激励规则列表
		DividendsIncentivesRules []DividendsIncentivesRule `json:"dividendsIncentivesRules"`
		// 金额激励规则列表
		MoneyIncentivesRules []MoneyIncentivesRule `json:"moneyIncentivesRules"`
		// 承接方列表
		Undertakers []Undertaker `json:"undertakers"`
		//关联业务员
		RelevantIds []string `json:"relevantIds"`
	}

	DataCooperationContractUpdate struct {
	}
)

//查询共创合约
type (
	ReqCooperationContractSearch struct {
		// 查询偏离量
		PageNumber int `json:"pageNumber"`
		// 查询限制
		PageSize int `json:"pageSize" valid:"Required"`
	}

	DataCooperationContractSearch struct {
		Grid struct {
			Total int                   `json:"total"`
			List  []CooperationContract `json:"list"`
		} `json:"grid"`
	}
)

//根据承接人查询并返回共创项目合约
type (
	ReqCooperationContractSearchByUndertaker struct {
		CooperationContractName string //合约名称
		SponsorName             string //项目发起人姓名
		UserId                  int    //合约发起人
		PageNumber              int
		PageIndex               int
	}

	DataCooperationContractSearchByUndertaker struct {
	}
)

//移除共创合约
type (
	ReqCooperationContractRemove struct {
		CooperationContractId int
	}

	DataCooperationContractRemove struct {
	}
)

//返回共创合约列表
type (
	ReqCooperationContractList struct {
	}

	DataCooperationContractList struct {
	}
)

//返回共创合约详情
type (
	ReqCooperationContractGet struct {
		CooperationContractId int `json:"cooperationContractId"`
	}

	DataCooperationContractGet struct {
		CooperationContract
	}
)