syntax = "proto3"; package mixservice.mixv1; import "validate/validate.proto"; import "mix/mixv1/common.proto"; option go_package = "./mix/mixv1;mixv1"; // 合同 service Contract { // 合同列表 rpc SearchList (ReqContractSearchList) returns (RespContractSearchList) {} // 创建 rpc Create (ReqContractSave) returns (RespContractDetail) {} // 更新 rpc Update (ReqContractSave) returns (RespContractDetail) {} // 删除 rpc Delete (ReqContractDelete) returns (Empty) {} // 获取渠道已关联的合同数量 rpc GroupChannelCnt(ReqContractGroupChannelCnt) returns (RespContractGroupChannelCnt) {} // ApplyDownload 合同申请下载 rpc ApplyDownload(ReqContractApplyDownload) returns (RespContractApplyDownload) {} // 获取详情 rpc GetDetail (ReqContractDetail) returns (RespContractDetail) {} } message ReqContractDetail { int32 id = 1 [(validate.rules).int32.gt = 0]; // id } message ReqContractApplyDownload { int32 id = 1 [(validate.rules).int32.gt = 0]; // id int32 user_id = 2 [(validate.rules).int32.gt = 0]; // 用户id string out_user_id = 3 [(validate.rules).string.min_len = 1]; // 用户id string subjectName = 4 [(validate.rules).string.min_len = 1]; // 主体名称 } message RespContractApplyDownload { int32 id = 1; int32 user_id = 2; // 用户id int32 type = 3; // 类型,1-合同 string name = 4; // 资源名称 int32 type_out_id = 5; // 关联的外部 id,合同类型-contract.id int32 create_time = 10; // 创建时间 int32 status = 12; // 状态,-1-已删除,0-终止,1-审批中,2-审批通过,3-生成中,4-已生成,5-驳回 } // 获取已关联的合同数量 message ReqContractGroupChannelCnt { repeated int32 ids = 1 [(validate.rules).repeated = {min_items:1, unique:true, items:{int32:{gt:0}}}]; // 渠道id } // 响应已关联的合同数量 message RespContractGroupChannelCnt { map channel_cnt_map = 2; // 关联的合同数量:渠道id => 合同数量 } // 合同列表请求参数 message ReqContractSearchList { enum ExpireType { ALl = 0; //所有 VALID = 1; //有效 INVALID = 2; //无效 } ReqPage page = 1; // 分页 ReqContractType Type = 2; // 合同类型 repeated int32 product_ids = 3 [(validate.rules).repeated = {unique:true, items:{int32:{gt:0}}}]; // 产品id repeated int32 channel_ids = 4 [(validate.rules).repeated = {unique:true, items:{int32:{gt:0}}}]; // 渠道id ExpireType expire_type = 5; // 状态类型 string keyword = 6; // 关键字 // 外部ids,供应商或分销商 id repeated int32 type_out_ids = 7 [(validate.rules).repeated = {unique:true, items:{int32:{gt:0}}}]; // 签约人id repeated int32 sign_user_ids = 8; // 签约公司id repeated int32 sign_company_ids = 9; // 签约公司id } message RespContractSearchList { repeated RespContractDetail list = 1; // 列表 RespPage page = 2; // 分页 } message RespContractDetail { message Attachment { int32 id = 1; int32 type = 2; // 附件类型 string url = 3; // 链接 int32 create_time = 4; //创建时间 } message Channel { int32 channel_config_id = 1; // id int32 create_time = 2; //创建时间 ChannelConfig channel_config = 3; //渠道配置 message ChannelConfig { int32 id = 1; // id string name = 2; // 名称 } } message Product { int32 product_id = 1; // id int32 create_time = 2; //创建时间 } int32 id = 1; // id string name = 2; // 合同名称 int32 type = 3; // 合同类型 repeated Product products = 4; //商品 int32 start_date = 5; // 开始时间 int32 end_date = 6; // 结束时间 repeated Channel channels = 7; //渠道 repeated Attachment attachments = 8; //附件 string tags = 9; //标签 string remark = 10; // 备注 int32 create_time = 11; //创建时间 int32 update_time = 12; //更新时间 int32 status = 13; // 状态 int32 type_out_id = 14; // 外部 id int32 user_id = 15; // 用户id int32 sign_user_id = 16; // 签约人id int32 sign_company_id = 17; // 签约公司id } enum ReqContractType { UNKNOWN = 0; //未知 PLATFORM = 1; // 平台 RESELLER = 2; // 分销商 } // 创建合同请求参数 message ReqContractSave { string name = 1 [(validate.rules).string = {min_len:1}]; // 合同名称 ReqContractType type = 2; // 合同类型 repeated int32 product_ids = 3 [(validate.rules).repeated = {min_items:1, unique:true, items:{int32:{gt:0}}}]; // 产品id int32 start_date = 4 [(validate.rules).int32 = {gt:19000101, lt:23990101}]; // 开始时间 int32 end_date = 5 [(validate.rules).int32 = {gt:19000101, lt:23990101}]; // 结束时间 repeated int32 channel_ids = 6 [(validate.rules).repeated = {min_items:1, unique:true, items:{int32:{gt:0}}}]; // 渠道id //头图 repeated string head_attachments = 7 [(validate.rules).repeated = {min_items:1, unique:true, items:{string:{min_len:10}}}]; //尾图 repeated string end_attachments = 8 [(validate.rules).repeated = {min_items:1, unique:true, items:{string:{min_len:10}}}]; //pdf repeated string pdf_attachments = 9 [(validate.rules).repeated = {min_items:1, unique:true, items:{string:{min_len:10}}}]; string tags = 10; //标签 string remark = 11; // 备注 int32 id = 12; // id,更新接口必传 int32 user_id = 13 [(validate.rules).int32.gt = 0]; // 用户id int32 type_out_id = 14 [(validate.rules).int32.gt = 0]; // 外部 id int32 sign_user_id = 15 [(validate.rules).int32.gt = 0]; // 签约人id int32 sign_company_id = 16 [(validate.rules).int32.gt = 0]; // 签约公司id } message ReqContractDelete { int32 id = 1 [(validate.rules).int32.gt = 0]; // id int32 user_id = 2 [(validate.rules).int32.gt = 0]; // 用户id }