package handler import ( "github.com/gin-gonic/gin" "github.com/rovina/zsp-backend/internal/dto" "github.com/rovina/zsp-backend/internal/service" ) type ZSPFinancesHandler struct { service service.ZSPFinancesService } func NewZSPFinancesHandler(service service.ZSPFinancesService) *ZSPFinancesHandler { return &ZSPFinancesHandler{service: service} } // ============ 货代费用 ============ func (h *ZSPFinancesHandler) CreateFreightCharge(c *gin.Context) { var req dto.ZSPFreightChargesCreateRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(400, gin.H{"success": false, "message": err.Error()}) return } err := h.service.CreateFreightCharge(&req) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "freight charge created"}) } func (h *ZSPFinancesHandler) GetFreightCharge(c *gin.Context) { id := c.Param("id") charge, err := h.service.GetFreightCharge(id) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "freight charge retrieved", "data": charge}) } func (h *ZSPFinancesHandler) ListFreightCharges(c *gin.Context) { charges, err := h.service.ListFreightCharges() if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "freight charges retrieved", "data": charges}) } func (h *ZSPFinancesHandler) UpdateFreightCharge(c *gin.Context) { id := c.Param("id") var req dto.ZSPFreightChargesUpdateRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(400, gin.H{"success": false, "message": err.Error()}) return } err := h.service.UpdateFreightCharge(id, &req) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "freight charge updated"}) } func (h *ZSPFinancesHandler) DeleteFreightCharge(c *gin.Context) { id := c.Param("id") err := h.service.DeleteFreightCharge(id) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "freight charge deleted"}) } // ============ 杂费 ============ func (h *ZSPFinancesHandler) CreateMiscCharge(c *gin.Context) { var req dto.ZSPMiscChargesCreateRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(400, gin.H{"success": false, "message": err.Error()}) return } err := h.service.CreateMiscCharge(&req) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "misc charge created"}) } func (h *ZSPFinancesHandler) GetMiscCharge(c *gin.Context) { id := c.Param("id") charge, err := h.service.GetMiscCharge(id) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "misc charge retrieved", "data": charge}) } func (h *ZSPFinancesHandler) ListMiscCharges(c *gin.Context) { charges, err := h.service.ListMiscCharges() if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "misc charges retrieved", "data": charges}) } func (h *ZSPFinancesHandler) UpdateMiscCharge(c *gin.Context) { id := c.Param("id") var req dto.ZSPMiscChargesUpdateRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(400, gin.H{"success": false, "message": err.Error()}) return } err := h.service.UpdateMiscCharge(id, &req) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "misc charge updated"}) } func (h *ZSPFinancesHandler) DeleteMiscCharge(c *gin.Context) { id := c.Param("id") err := h.service.DeleteMiscCharge(id) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "misc charge deleted"}) } // ============ 服务费 ============ func (h *ZSPFinancesHandler) CreateServiceFee(c *gin.Context) { var req dto.ZSPServiceFeesCreateRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(400, gin.H{"success": false, "message": err.Error()}) return } err := h.service.CreateServiceFee(&req) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "service fee created"}) } func (h *ZSPFinancesHandler) GetServiceFee(c *gin.Context) { id := c.Param("id") fee, err := h.service.GetServiceFee(id) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "service fee retrieved", "data": fee}) } func (h *ZSPFinancesHandler) ListServiceFees(c *gin.Context) { fees, err := h.service.ListServiceFees() if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "service fees retrieved", "data": fees}) } func (h *ZSPFinancesHandler) UpdateServiceFee(c *gin.Context) { id := c.Param("id") var req dto.ZSPServiceFeesUpdateRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(400, gin.H{"success": false, "message": err.Error()}) return } err := h.service.UpdateServiceFee(id, &req) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "service fee updated"}) } func (h *ZSPFinancesHandler) DeleteServiceFee(c *gin.Context) { id := c.Param("id") err := h.service.DeleteServiceFee(id) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "service fee deleted"}) } // ============ 成本构成 ============ func (h *ZSPFinancesHandler) CreateCostBreakdown(c *gin.Context) { var req dto.ZSPCostBreakdownCreateRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(400, gin.H{"success": false, "message": err.Error()}) return } err := h.service.CreateCostBreakdown(&req) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "cost breakdown created"}) } func (h *ZSPFinancesHandler) GetCostBreakdown(c *gin.Context) { id := c.Param("id") breakdown, err := h.service.GetCostBreakdown(id) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "cost breakdown retrieved", "data": breakdown}) } func (h *ZSPFinancesHandler) ListCostBreakdowns(c *gin.Context) { businessID := c.Query("businessId") breakdowns, err := h.service.ListCostBreakdowns(businessID) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "cost breakdowns retrieved", "data": breakdowns}) } func (h *ZSPFinancesHandler) UpdateCostBreakdown(c *gin.Context) { id := c.Param("id") var req dto.ZSPCostBreakdownUpdateRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(400, gin.H{"success": false, "message": err.Error()}) return } err := h.service.UpdateCostBreakdown(id, &req) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "cost breakdown updated"}) } func (h *ZSPFinancesHandler) DeleteCostBreakdown(c *gin.Context) { id := c.Param("id") err := h.service.DeleteCostBreakdown(id) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "cost breakdown deleted"}) } // ============ 利润记录 ============ func (h *ZSPFinancesHandler) CreateProfitRecord(c *gin.Context) { var req dto.ZSPProfitRecordCreateRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(400, gin.H{"success": false, "message": err.Error()}) return } err := h.service.CreateProfitRecord(&req) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "profit record created"}) } func (h *ZSPFinancesHandler) GetProfitRecord(c *gin.Context) { id := c.Param("id") record, err := h.service.GetProfitRecord(id) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "profit record retrieved", "data": record}) } func (h *ZSPFinancesHandler) ListProfitRecords(c *gin.Context) { filters := make(map[string]string) if c.Query("businessId") != "" { filters["businessId"] = c.Query("businessId") } if c.Query("businessType") != "" { filters["businessType"] = c.Query("businessType") } records, err := h.service.ListProfitRecords(filters) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "profit records retrieved", "data": records}) } func (h *ZSPFinancesHandler) UpdateProfitRecord(c *gin.Context) { id := c.Param("id") var req dto.ZSPProfitRecordUpdateRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(400, gin.H{"success": false, "message": err.Error()}) return } err := h.service.UpdateProfitRecord(id, &req) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "profit record updated"}) } func (h *ZSPFinancesHandler) DeleteProfitRecord(c *gin.Context) { id := c.Param("id") err := h.service.DeleteProfitRecord(id) if err != nil { c.JSON(500, gin.H{"success": false, "message": err.Error()}) return } c.JSON(200, gin.H{"success": true, "message": "profit record deleted"}) }