package api import ( "net/http" "strconv" "strings" "cockpit/internal/domain" "github.com/gin-gonic/gin" ) func (h *Handler) CustomerList(c *gin.Context) { page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) size, _ := strconv.Atoi(c.DefaultQuery("size", "20")) if page < 1 { page = 1 } if size < 1 || size > 200 { size = 20 } keyword := strings.TrimSpace(c.Query("keyword")) q := h.db.Model(&domain.Customer{}) if keyword != "" { q = q.Where("name LIKE ? OR code LIKE ?", "%"+keyword+"%", "%"+keyword+"%") } var total int64 _ = q.Count(&total).Error var list []domain.Customer _ = q.Order("id DESC").Offset((page - 1) * size).Limit(size).Find(&list).Error c.JSON(http.StatusOK, domain.OK(gin.H{ "list": list, "total": total, })) } type customerReq struct { Name string `json:"name" binding:"required"` Code string `json:"code"` Remark string `json:"remark"` } func (h *Handler) CustomerCreate(c *gin.Context) { var req customerReq if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, domain.Fail("参数错误")) return } row := domain.Customer{Name: strings.TrimSpace(req.Name), Code: strings.TrimSpace(req.Code), Remark: req.Remark} if err := h.db.Create(&row).Error; err != nil { c.JSON(http.StatusBadRequest, domain.Fail("创建失败:"+err.Error())) return } c.JSON(http.StatusOK, domain.OK(row)) } func (h *Handler) CustomerUpdate(c *gin.Context) { id, _ := strconv.ParseUint(c.Param("id"), 10, 64) var req customerReq if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, domain.Fail("参数错误")) return } var row domain.Customer if err := h.db.Where("id = ?", id).First(&row).Error; err != nil { c.JSON(http.StatusNotFound, domain.Fail("不存在")) return } row.Name = strings.TrimSpace(req.Name) row.Code = strings.TrimSpace(req.Code) row.Remark = req.Remark if err := h.db.Save(&row).Error; err != nil { c.JSON(http.StatusBadRequest, domain.Fail("更新失败:"+err.Error())) return } c.JSON(http.StatusOK, domain.OK(row)) } func (h *Handler) CustomerDelete(c *gin.Context) { id, _ := strconv.ParseUint(c.Param("id"), 10, 64) if err := h.db.Delete(&domain.Customer{}, id).Error; err != nil { c.JSON(http.StatusBadRequest, domain.Fail("删除失败:"+err.Error())) return } c.JSON(http.StatusOK, domain.OK(gin.H{})) }