319 lines
10 KiB
Go
Executable File
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"})
|
|
}
|