package dto import ( "assets/consts/procurement" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gtime" "go.mongodb.org/mongo-driver/v2/bson" ) // GeneratePurchaseOrderTestDataReq 生成采购订单测试数据请求 type GeneratePurchaseOrderTestDataReq struct { g.Meta `path:"/generateTestData" method:"post" tags:"采购订单管理" summary:"生成测试数据" dc:"生成采购订单测试数据"` } // CreatePurchaseOrderReq 创建采购订单请求 type CreatePurchaseOrderReq struct { g.Meta `path:"/createPurchaseOrder" method:"post" tags:"采购订单管理" summary:"创建采购订单" dc:"创建新的采购订单"` // 基础订单信息 OrderNo string `json:"orderNo" v:"required" dc:"订单编号"` Title string `json:"title" v:"required" dc:"订单标题"` Description string `json:"description" dc:"订单描述"` OrderType consts.PurchaseOrderType `json:"orderType" v:"required" dc:"订单类型:direct/assignment/bidding"` // 需求方信息 BuyerId *bson.ObjectID `json:"buyerId" v:"required" dc:"采购方ID(经销商/门店)"` BuyerName string `json:"buyerName" v:"required" dc:"采购方名称"` BuyerType string `json:"buyerType" v:"required" dc:"采购方类型"` // 通用状态信息 Priority int `json:"priority" dc:"优先级"` // 通用字段 ExpectedDelivery *gtime.Time `json:"expectedDelivery" dc:"期望交付时间"` ExpiryTime *gtime.Time `json:"expiryTime" dc:"订单有效期/竞价结束时间"` // 模式特定信息 DirectPurchase *CreateDirectPurchaseReq `json:"directPurchase" dc:"指定供应商模式信息"` BiddingInfo *CreateBiddingReq `json:"biddingInfo" dc:"竞价模式信息"` } // CreateDirectPurchaseReq 指定供应商模式信息 type CreateDirectPurchaseReq struct { SupplierId *bson.ObjectID `json:"supplierId" v:"required" dc:"指定供应商ID"` SupplierName string `json:"supplierName" dc:"指定供应商名称"` SupplierCode string `json:"supplierCode" dc:"供应商编码"` AssignReason string `json:"assignReason" dc:"指派原因"` DeliveryAddress string `json:"deliveryAddress" dc:"交付地址"` ContactPerson string `json:"contactPerson" dc:"联系人"` ContactPhone string `json:"contactPhone" dc:"联系电话"` } // CreateBiddingReq 竞价模式信息 type CreateBiddingReq struct { BidMode consts.BidMode `json:"bidMode" v:"required" dc:"竞价模式:price/quality/time/mixed"` MinSuppliers int `json:"minSuppliers" v:"min:1" dc:"最少参与供应商数"` MaxSuppliers int `json:"maxSuppliers" v:"min:1" dc:"最多参与供应商数"` BidDuration int `json:"bidDuration" v:"min:1" dc:"竞价持续时长(分钟)"` BidStartAt *gtime.Time `json:"bidStartAt" dc:"竞价开始时间"` BidEndAt *gtime.Time `json:"bidEndAt" dc:"竞价结束时间"` } // CreatePurchaseOrderRes 创建采购订单响应 type CreatePurchaseOrderRes struct { ID *bson.ObjectID `json:"id"` // 采购订单ID } // UpdatePurchaseOrderReq 更新采购订单请求 type UpdatePurchaseOrderReq struct { g.Meta `path:"/updatePurchaseOrder" method:"put" tags:"采购订单管理" summary:"更新采购订单" dc:"更新采购订单信息"` ID *bson.ObjectID `json:"id" v:"required" dc:"采购订单ID"` // 基础订单信息 Title string `json:"title" dc:"订单标题"` Description string `json:"description" dc:"订单描述"` OrderType consts.PurchaseOrderType `json:"orderType" dc:"订单类型"` // 需求方信息 BuyerId *bson.ObjectID `json:"buyerId" dc:"采购方ID"` BuyerName string `json:"buyerName" dc:"采购方名称"` BuyerType string `json:"buyerType" dc:"采购方类型"` // 通用状态信息 Status consts.PurchaseOrderStatus `json:"status" dc:"订单状态"` Priority int `json:"priority" dc:"优先级"` // 通用字段 ExpectedDelivery *gtime.Time `json:"expectedDelivery" dc:"期望交付时间"` ExpiryTime *gtime.Time `json:"expiryTime" dc:"订单有效期/竞价结束时间"` // 模式特定信息 DirectPurchase *UpdateDirectPurchaseReq `json:"directPurchase" dc:"指定供应商模式信息"` BiddingInfo *UpdateBiddingReq `json:"biddingInfo" dc:"竞价模式信息"` } // UpdateDirectPurchaseReq 更新指定供应商模式信息 type UpdateDirectPurchaseReq struct { SupplierId *bson.ObjectID `json:"supplierId" dc:"指定供应商ID"` SupplierName string `json:"supplierName" dc:"指定供应商名称"` SupplierCode string `json:"supplierCode" dc:"供应商编码"` AssignReason string `json:"assignReason" dc:"指派原因"` DeliveryAddress string `json:"deliveryAddress" dc:"交付地址"` ContactPerson string `json:"contactPerson" dc:"联系人"` ContactPhone string `json:"contactPhone" dc:"联系电话"` ResponseStatus string `json:"responseStatus" dc:"供应商响应状态"` } // UpdateBiddingReq 更新竞价模式信息 type UpdateBiddingReq struct { BidMode consts.BidMode `json:"bidMode" dc:"竞价模式"` MinSuppliers int `json:"minSuppliers" dc:"最少参与供应商数"` MaxSuppliers int `json:"maxSuppliers" dc:"最多参与供应商数"` BidDuration int `json:"bidDuration" dc:"竞价持续时长(分钟)"` BidSupplierCount int `json:"bidSupplierCount" dc:"参与竞价的供应商数量"` BidStartAt *gtime.Time `json:"bidStartAt" dc:"竞价开始时间"` BidEndAt *gtime.Time `json:"bidEndAt" dc:"竞价结束时间"` } // DeletePurchaseOrderReq 删除采购订单请求 type DeletePurchaseOrderReq struct { g.Meta `path:"/deletePurchaseOrder" method:"delete" tags:"采购订单管理" summary:"删除采购订单" dc:"删除采购订单"` ID *bson.ObjectID `json:"id" v:"required" dc:"采购订单ID"` } // GetPurchaseOrderReq 获取采购订单详情请求 type GetPurchaseOrderReq struct { g.Meta `path:"/getPurchaseOrder" method:"get" tags:"采购订单管理" summary:"获取采购订单详情" dc:"获取采购订单详情"` ID *bson.ObjectID `json:"id" v:"required" dc:"采购订单ID"` } // GetPurchaseOrderRes 获取采购订单详情响应 type GetPurchaseOrderRes struct { ID *bson.ObjectID `json:"id"` OrderNo string `json:"orderNo"` Title string `json:"title"` Description string `json:"description"` OrderType consts.PurchaseOrderType `json:"orderType"` BuyerId *bson.ObjectID `json:"buyerId"` BuyerName string `json:"buyerName"` BuyerType string `json:"buyerType"` Status consts.PurchaseOrderStatus `json:"status"` StatusText string `json:"statusText"` Priority int `json:"priority"` DirectPurchase *DirectPurchaseInfoRes `json:"directPurchase"` BiddingInfo *BiddingInfoRes `json:"biddingInfo"` ExpectedDelivery string `json:"expectedDelivery"` ExpiryTime string `json:"expiryTime"` CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` } // DirectPurchaseInfoRes 指定供应商模式信息响应 type DirectPurchaseInfoRes struct { SupplierId *bson.ObjectID `json:"supplierId"` SupplierName string `json:"supplierName"` SupplierCode string `json:"supplierCode"` AssignReason string `json:"assignReason"` DeliveryAddress string `json:"deliveryAddress"` ContactPerson string `json:"contactPerson"` ContactPhone string `json:"contactPhone"` ResponseStatus string `json:"responseStatus"` AssignedAt string `json:"assignedAt"` AcceptedAt string `json:"acceptedAt"` RejectedAt string `json:"rejectedAt"` DeliveredAt string `json:"deliveredAt"` } // BiddingInfoRes 竞价模式信息响应 type BiddingInfoRes struct { BidMode consts.BidMode `json:"bidMode"` BidModeText string `json:"bidModeText"` MinSuppliers int `json:"minSuppliers"` MaxSuppliers int `json:"maxSuppliers"` BidDuration int `json:"bidDuration"` BidSupplierCount int `json:"bidSupplierCount"` BidStartAt string `json:"bidStartAt"` BidEndAt string `json:"bidEndAt"` ResultPublishedAt string `json:"resultPublishedAt"` } // ListPurchaseOrdersReq 获取采购订单列表请求 type ListPurchaseOrdersReq struct { g.Meta `path:"/listPurchaseOrders" method:"get" tags:"采购订单管理" summary:"获取采购订单列表" dc:"分页查询采购订单列表"` OrderNo string `json:"orderNo" dc:"订单编号(精确查询)"` Title string `json:"title" dc:"订单标题(模糊查询)"` BuyerId *bson.ObjectID `json:"buyerId" dc:"采购方ID(精确查询)"` OrderType consts.PurchaseOrderType `json:"orderType" dc:"订单类型"` Status *consts.PurchaseOrderStatus `json:"status" dc:"订单状态"` PageNum int `json:"pageNum" dc:"页码"` PageSize int `json:"pageSize" dc:"每页大小"` } // ListPurchaseOrdersRes 获取采购订单列表响应 type ListPurchaseOrdersRes struct { List []*PurchaseOrderListItem `json:"list" dc:"采购订单列表"` Total int64 `json:"total" dc:"总数"` } // PurchaseOrderListItem 采购订单列表项 type PurchaseOrderListItem struct { ID *bson.ObjectID `json:"id"` OrderNo string `json:"orderNo"` Title string `json:"title"` OrderType consts.PurchaseOrderType `json:"orderType"` OrderTypeText string `json:"orderTypeText"` BuyerName string `json:"buyerName"` BuyerType string `json:"buyerType"` Status consts.PurchaseOrderStatus `json:"status"` StatusText string `json:"statusText"` Priority int `json:"priority"` ExpectedDelivery string `json:"expectedDelivery"` ExpiryTime string `json:"expiryTime"` CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` } // BatchCreatePurchaseOrdersReq 批量创建采购订单请求 type BatchCreatePurchaseOrdersReq struct { g.Meta `path:"/batchCreatePurchaseOrders" method:"post" tags:"采购订单管理" summary:"批量创建采购订单" dc:"批量创建采购订单"` Orders []CreatePurchaseOrderReq `json:"orders" v:"required" dc:"采购订单列表"` } // BatchCreatePurchaseOrdersRes 批量创建采购订单响应 type BatchCreatePurchaseOrdersRes struct { IDs []*bson.ObjectID `json:"ids"` // 创建的ID列表 }