Files
zsp-project/backend/internal/handler/zsp_finances_handler.go
2026-06-03 20:59:39 +08:00

319 lines
10 KiB
Go
Executable File

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"})
}