package service import ( "time" "github.com/rovina/zsp-backend/internal/model" "github.com/rovina/zsp-backend/internal/repository" "gorm.io/gorm" ) type DeliveryService interface { // 我要提货 ListApply(page, pageSize int, orderNumber, blNumber, status string) ([]model.DeliveryApply, int64, error) GetApplyByID(id uint) (*model.DeliveryApply, error) CreateApply(e *model.DeliveryApply) error UpdateApply(e *model.DeliveryApply) error DeleteApply(id uint) error // 出库单 ListOutbound(page, pageSize int, outboundNumber, blNumber, status string) ([]model.DeliveryOutbound, int64, error) GetOutboundByID(id uint) (*model.DeliveryOutbound, error) CreateOutbound(e *model.DeliveryOutbound) error UpdateOutbound(e *model.DeliveryOutbound) error DeleteOutbound(id uint) error // 仓库 ListWarehouses() ([]model.Warehouse, error) GetWarehouseByID(id uint) (*model.Warehouse, error) CreateWarehouse(e *model.Warehouse) error UpdateWarehouse(e *model.Warehouse) error DeleteWarehouse(id uint) error // 入库 ListInbound(page, pageSize int, warehouse, commodity string) ([]model.InventoryInbound, int64, error) GetInboundByID(id uint) (*model.InventoryInbound, error) CreateInbound(e *model.InventoryInbound) error UpdateInbound(e *model.InventoryInbound) error DeleteInbound(id uint) error // 货权转移 ListOwnership(page, pageSize int, transferNumber, blNumber, status string) ([]model.OwnershipTransfer, int64, error) GetOwnershipByID(id uint) (*model.OwnershipTransfer, error) CreateOwnership(e *model.OwnershipTransfer) error DeleteOwnership(id uint) error CreateOwnershipFiles(files []model.OwnershipTransferFile) error // DB for complex queries (InventorySummary) DB() *gorm.DB } type deliveryService struct { repo *repository.DeliveryRepository } func NewDeliveryService(repo *repository.DeliveryRepository) DeliveryService { return &deliveryService{repo: repo} } func (s *deliveryService) DB() *gorm.DB { return s.repo.DB() } func (s *deliveryService) ListApply(page, pageSize int, orderNumber, blNumber, status string) ([]model.DeliveryApply, int64, error) { return s.repo.ListDeliveryApply(page, pageSize, orderNumber, blNumber, status) } func (s *deliveryService) GetApplyByID(id uint) (*model.DeliveryApply, error) { return s.repo.GetDeliveryApplyByID(id) } func (s *deliveryService) CreateApply(e *model.DeliveryApply) error { e.CreateTime = time.Now() e.UpdateTime = time.Now() return s.repo.CreateDeliveryApply(e) } func (s *deliveryService) UpdateApply(e *model.DeliveryApply) error { e.UpdateTime = time.Now() return s.repo.UpdateDeliveryApply(e) } func (s *deliveryService) DeleteApply(id uint) error { return s.repo.DeleteDeliveryApply(id) } func (s *deliveryService) ListOutbound(page, pageSize int, outboundNumber, blNumber, status string) ([]model.DeliveryOutbound, int64, error) { return s.repo.ListDeliveryOutbound(page, pageSize, outboundNumber, blNumber, status) } func (s *deliveryService) GetOutboundByID(id uint) (*model.DeliveryOutbound, error) { return s.repo.GetDeliveryOutboundByID(id) } func (s *deliveryService) CreateOutbound(e *model.DeliveryOutbound) error { e.CreateTime = time.Now() e.UpdateTime = time.Now() return s.repo.CreateDeliveryOutbound(e) } func (s *deliveryService) UpdateOutbound(e *model.DeliveryOutbound) error { e.UpdateTime = time.Now() return s.repo.UpdateDeliveryOutbound(e) } func (s *deliveryService) DeleteOutbound(id uint) error { return s.repo.DeleteDeliveryOutbound(id) } func (s *deliveryService) ListWarehouses() ([]model.Warehouse, error) { return s.repo.ListWarehouses() } func (s *deliveryService) GetWarehouseByID(id uint) (*model.Warehouse, error) { return s.repo.GetWarehouseByID(id) } func (s *deliveryService) CreateWarehouse(e *model.Warehouse) error { e.CreateTime = time.Now() e.UpdateTime = time.Now() return s.repo.CreateWarehouse(e) } func (s *deliveryService) UpdateWarehouse(e *model.Warehouse) error { e.UpdateTime = time.Now() return s.repo.UpdateWarehouse(e) } func (s *deliveryService) DeleteWarehouse(id uint) error { return s.repo.DeleteWarehouse(id) } func (s *deliveryService) ListInbound(page, pageSize int, warehouse, commodity string) ([]model.InventoryInbound, int64, error) { return s.repo.ListInventoryInbound(page, pageSize, warehouse, commodity) } func (s *deliveryService) GetInboundByID(id uint) (*model.InventoryInbound, error) { return s.repo.GetInventoryInboundByID(id) } func (s *deliveryService) CreateInbound(e *model.InventoryInbound) error { e.CreateTime = time.Now() e.UpdateTime = time.Now() return s.repo.CreateInventoryInbound(e) } func (s *deliveryService) UpdateInbound(e *model.InventoryInbound) error { e.UpdateTime = time.Now() return s.repo.UpdateInventoryInbound(e) } func (s *deliveryService) DeleteInbound(id uint) error { return s.repo.DeleteInventoryInbound(id) } func (s *deliveryService) ListOwnership(page, pageSize int, transferNumber, blNumber, status string) ([]model.OwnershipTransfer, int64, error) { return s.repo.ListOwnershipTransfer(page, pageSize, transferNumber, blNumber, status) } func (s *deliveryService) GetOwnershipByID(id uint) (*model.OwnershipTransfer, error) { return s.repo.GetOwnershipTransferByID(id) } func (s *deliveryService) CreateOwnership(e *model.OwnershipTransfer) error { e.CreateTime = time.Now() e.UpdateTime = time.Now() return s.repo.CreateOwnershipTransfer(e) } func (s *deliveryService) DeleteOwnership(id uint) error { return s.repo.DeleteOwnershipTransfer(id) } func (s *deliveryService) CreateOwnershipFiles(files []model.OwnershipTransferFile) error { return s.repo.CreateOwnershipTransferFiles(files) }