package controllers import ( "fmt" "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" "net/http" "psi/constant" "psi/database" systemReq "psi/models/request" systemRes "psi/models/response" "psi/service" "psi/utils" ) type SupplierApi struct{} var supplierService = service.SupplierService{} // GetSupplierList 获取供应商列表 func (r *SupplierApi) GetSupplierList(c *gin.Context) { var req systemReq.GetSupplierListRequest if err := c.ShouldBindQuery(&req); err != nil { ValidAndFail(constant.LoggerChannelRequest, "供应商列表请求参数异常", "参数错误: "+err.Error(), c, err) return } result, err := supplierService.GetSupplierList(req, database.GetDB(c)) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "供应商列表异常", err, c, req) return } c.JSON(http.StatusOK, gin.H{ "code": 200, "data": result, }) } // GetSupplierDetail 获取供应商详情 func (r *SupplierApi) GetSupplierDetail(c *gin.Context) { idStr := c.Param("id") if idStr == "" { utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ "source": "获取供应商详情请求参数异常", "err_msg": "ID参数不能为空", }) systemRes.FailWithValidateMessage("参数错误: ID不能为空", c) return } var id int64 if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil || id <= 0 { utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ "source": "获取供应商详情请求参数异常", "err_msg": "ID格式错误: " + idStr, }) systemRes.FailWithValidateMessage("参数错误: ID格式不正确", c) return } result, err := supplierService.GetSupplierDetail(id, database.GetDB(c)) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "供应商详情异常", err, c, gin.H{"id": id}) return } systemRes.OkWithDetailed(result, "查询成功", c) } // CreateSupplier 创建供应商 func (r *SupplierApi) CreateSupplier(c *gin.Context) { var req systemReq.AddSupplierRequest if err := c.ShouldBind(&req); err != nil { ValidAndFail(constant.LoggerChannelRequest, "创建供应商请求参数异常", "参数错误: "+err.Error(), c, err) return } id, err := supplierService.CreateSupplier(req, database.GetDB(c)) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "创建供应商异常", err, c, req) return } systemRes.OkWithDetailed(gin.H{"id": id}, "创建成功", c) } // UpdateSupplier 更新供应商 func (r *SupplierApi) UpdateSupplier(c *gin.Context) { var req systemReq.UpdateSupplierRequest if err := c.ShouldBind(&req); err != nil { ValidAndFail(constant.LoggerChannelRequest, "更新供应商请求参数异常", "参数错误: "+err.Error(), c, err) return } err := supplierService.UpdateSupplier(req, database.GetDB(c)) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "更新供应商异常", err, c, req) return } systemRes.OkWithMessage("更新成功", c) } // DeleteSupplier 删除供应商 func (r *SupplierApi) DeleteSupplier(c *gin.Context) { var req systemReq.DeleteSupplierRequest if err := c.ShouldBind(&req); err != nil { ValidAndFail(constant.LoggerChannelRequest, "删除供应商请求参数异常", "参数错误: "+err.Error(), c, err) return } err := supplierService.DeleteSupplier(req, database.GetDB(c)) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "删除供应商异常", err, c, req) return } systemRes.OkWithMessage("删除成功", c) }