package dto import ( "assets/consts/stock" "gitea.com/red-future/common/beans" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gtime" "go.mongodb.org/mongo-driver/v2/bson" ) // CreatePrivateStockReq 创建实物库存批次请求 type CreatePrivateStockReq struct { g.Meta `path:"/createPrivateStock" method:"post" tags:"实物库存批次管理" summary:"创建实物库存批次" dc:"创建新的实物库存批次"` WarehouseId *bson.ObjectID `json:"warehouseId" v:"required" dc:"仓库ID"` ZoneId *bson.ObjectID `json:"zoneId" dc:"库区ID"` LocationId *bson.ObjectID `json:"locationId" dc:"库位ID"` PrivateSkuID *bson.ObjectID `json:"privateSkuId" v:"required" dc:"私域SKU ID"` BatchNo string `json:"batchNo" v:"required" dc:"批次号"` BatchQty int `json:"batchQty" v:"required|min:1" dc:"批次总数量"` AvailableQty int `json:"availableQty" v:"required|min:0" dc:"可用数量"` BatchStatus *stock.BatchStatus `json:"batchStatus" dc:"批次状态"` StockStatus *stock.StockStatus `json:"stockStatus" dc:"库存状态"` SupplierID *bson.ObjectID `json:"supplierId" dc:"供应商ID"` SupportsRecycle bool `json:"supportsRecycle" dc:"是否支持回收"` ProductionDate *gtime.Time `json:"productionDate" dc:"生产日期"` ExpiryDate *gtime.Time `json:"expiryDate" dc:"过期日期"` ExpiryWarningDate *gtime.Time `json:"expiryWarningDate" dc:"临期预警时间"` PrivateCategoryPath string `json:"privateCategoryPath" dc:"私域分类路径"` StockType stock.StockLocationType `json:"stockType" dc:"库存类型"` } // CreatePrivateStockRes 创建实物库存批次响应 type CreatePrivateStockRes struct { Id *bson.ObjectID `json:"id"` } // UpdatePrivateStockReq 更新实物库存批次请求 type UpdatePrivateStockReq struct { g.Meta `path:"/updatePrivateStock" method:"put" tags:"实物库存批次管理" summary:"更新实物库存批次" dc:"更新实物库存批次信息"` Id *bson.ObjectID `json:"id" v:"required" dc:"实物库存批次ID"` WarehouseId *bson.ObjectID `json:"warehouseId" dc:"仓库ID"` ZoneId *bson.ObjectID `json:"zoneId" dc:"库区ID"` LocationId *bson.ObjectID `json:"locationId" dc:"库位ID"` PrivateSkuID *bson.ObjectID `json:"privateSkuId" dc:"私域SKU ID"` BatchNo string `json:"batchNo" dc:"批次号"` BatchQty int `json:"batchQty" dc:"批次总数量"` AvailableQty int `json:"availableQty" dc:"可用数量"` BatchStatus *stock.BatchStatus `json:"batchStatus" dc:"批次状态"` StockStatus *stock.StockStatus `json:"stockStatus" dc:"库存状态"` SupplierID *bson.ObjectID `json:"supplierId" dc:"供应商ID"` SupportsRecycle *bool `json:"supportsRecycle" dc:"是否支持回收"` ProductionDate *gtime.Time `json:"productionDate" dc:"生产日期"` ExpiryDate *gtime.Time `json:"expiryDate" dc:"过期日期"` ExpiryWarningDate *gtime.Time `json:"expiryWarningDate" dc:"临期预警时间"` PrivateCategoryPath string `json:"privateCategoryPath" dc:"私域分类路径"` StockType stock.StockLocationType `json:"stockType" dc:"库存类型"` } // DeletePrivateStockReq 删除私域库存请求 type DeletePrivateStockReq struct { g.Meta `path:"/deletePrivateStock" method:"delete" tags:"私域库存管理" summary:"删除私域库存" dc:"删除私域库存"` Id *bson.ObjectID `json:"id" v:"required" dc:"私域库存ID"` } // GetPrivateStockReq 获取私域库存详情请求 type GetPrivateStockReq struct { g.Meta `path:"/getPrivateStock" method:"get" tags:"私域库存管理" summary:"获取私域库存详情" dc:"获取私域库存详情"` Id *bson.ObjectID `json:"id" v:"required" dc:"私域库存ID"` } // GetPrivateStockRes 获取私域库存详情响应 type GetPrivateStockRes struct { Id *bson.ObjectID `json:"id"` StockType stock.StockLocationType `json:"stockType"` WarehouseId *bson.ObjectID `json:"warehouseId"` WarehouseCode string `json:"warehouseCode"` WarehouseName string `json:"warehouseName"` ZoneId *bson.ObjectID `json:"zoneId"` ZoneCode string `json:"zoneCode"` ZoneName string `json:"zoneName"` ZoneType stock.ZoneType `json:"zoneType"` LocationId *bson.ObjectID `json:"locationId"` LocationCode string `json:"locationCode"` LocationName string `json:"locationName"` LocationType stock.LocationType `json:"locationType"` PrivateSkuID *bson.ObjectID `json:"privateSkuId"` BatchNo string `json:"batchNo"` BatchQty int `json:"batchQty"` AvailableQty int `json:"availableQty"` BatchStatus stock.BatchStatus `json:"batchStatus"` OrderID *bson.ObjectID `json:"orderId"` SupplierID *bson.ObjectID `json:"supplierId"` SupportsRecycle bool `json:"supportsRecycle"` ProductionDate *gtime.Time `json:"productionDate"` ExpiryDate *gtime.Time `json:"expiryDate"` ExpiryWarningDate *gtime.Time `json:"expiryWarningDate"` PrivateCategoryPath string `json:"privateCategoryPath"` StockStatus stock.StockStatus `json:"stockStatus"` LastMovedAt *gtime.Time `json:"lastMovedAt"` CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` } // ListPrivateStockReq 获取私域库存列表请求 type ListPrivateStockReq struct { g.Meta `path:"/listPrivateStocks" method:"get" tags:"私域库存管理" summary:"获取私域库存列表" dc:"分页查询私域库存列表"` *beans.Page OrderBy []beans.OrderBy `json:"orderBy" dc:"排序规则"` WarehouseId *bson.ObjectID `json:"warehouseId" dc:"仓库ID"` ZoneId *bson.ObjectID `json:"zoneId" dc:"库区ID"` LocationId *bson.ObjectID `json:"locationId" dc:"库位ID"` PrivateSkuID *bson.ObjectID `json:"privateSkuId" dc:"私域SKU ID"` BatchStatus *stock.BatchStatus `json:"batchStatus" dc:"批次状态"` StockStatus *stock.StockStatus `json:"stockStatus" dc:"库存状态"` SupplierID *bson.ObjectID `json:"supplierId" dc:"供应商ID"` PrivateCategoryPath string `json:"privateCategoryPath" dc:"私域分类路径"` StockType stock.StockLocationType `json:"stockType" dc:"库存类型"` } // ListPrivateStockRes 获取私域库存列表响应 type ListPrivateStockRes struct { List []GetPrivateStockRes `json:"list"` Total int64 `json:"total"` } // OutboundPrivateStockReq 实物库存批次出库请求 type OutboundPrivateStockReq struct { g.Meta `path:"/outboundPrivateStock" method:"post" tags:"实物库存批次管理" summary:"实物库存批次出库" dc:"实物库存批次出库操作"` StockId *bson.ObjectID `json:"stockId" v:"required" dc:"实物库存批次ID"` OutboundQty int `json:"outboundQty" v:"required|min:1" dc:"出库数量"` StockType stock.StockLocationType `json:"stockType" v:"required" dc:"库存类型(必须为PrivateStock)"` }