package controllers import ( "github.com/gin-gonic/gin" "net/http" "psi/constant" systemReq "psi/models/request" systemRes "psi/models/response" "psi/service" "psi/utils" ) type BookApi struct{} // SyncBook 同步书籍信息 var bookService = service.BookService{} // GetBookInfo 获取图书信息 func (r *BookApi) GetBookInfo(c *gin.Context) { // 参数校验 var req systemReq.BookRequest if err := c.ShouldBindQuery(&req); err != nil { ValidAndFail(constant.LoggerChannelRequest, "获取图书信息请求参数异常", "参数错误: "+err.Error(), c, err) return } // 业务处理 result, err := bookService.GetBookInfo(req) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "获取图书信息异常", err, c, req) return } c.JSON(http.StatusOK, gin.H{ "code": 200, "data": result, }) } // GetSuitBook 获取套装书 func (r *BookApi) GetSuitBook(c *gin.Context) { var req systemReq.BookRequest if err := c.ShouldBindQuery(&req); err != nil { ValidAndFail(constant.LoggerChannelRequest, "获取套装书请求参数异常", "参数错误: "+err.Error(), c, err) return } result, err := bookService.GetSuitBook(req) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "获取套装书异常", err, c, req) return } c.JSON(http.StatusOK, gin.H{ "code": 200, "data": result, }) } // GetNoIsbnBook 获取无书号书 func (r *BookApi) GetNoIsbnBook(c *gin.Context) { var req systemReq.GetNoIsbnBookRequest if err := c.ShouldBindQuery(&req); err != nil { ValidAndFail(constant.LoggerChannelRequest, "获取无书号书请求参数异常", "参数错误: "+err.Error(), c, err) return } result, err := bookService.GetNoIsbnBook(req) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "获取无书号书异常", err, c, req) return } c.JSON(http.StatusOK, gin.H{ "code": 200, "data": result, "msg": "查询成功", }) } // GetProCode 获取商品编码 func (r *BookApi) GetProCode(c *gin.Context) { var req systemReq.GetCodeRequest if err := c.ShouldBindQuery(&req); err != nil { ValidAndFail(constant.LoggerChannelRequest, "获取商品编码请求参数异常", "参数错误: "+err.Error(), c, err) return } result, err := bookService.GetProCode(req) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "获取商品编码异常", err, c, req) return } c.JSON(http.StatusOK, gin.H{ "code": 200, "data": result, }) } // SyncBook 同步书籍信息 func (r *BookApi) SyncBook(c *gin.Context) { var req systemReq.AddBookRequest if err := c.ShouldBind(&req); err != nil { ValidAndFail(constant.LoggerChannelRequest, "同步书籍信息请求参数异常", "参数错误: "+err.Error(), c, err) return } if len(req.LiveImage) == 0 { image, err := parseImageFromForm(c) if err != nil { systemRes.FailWithValidateMessage("参数错误: "+err.Error(), c) return } req.LiveImage = image } bookID, result, err := bookService.SyncBook(req) if err != nil { // 记录日志 utils.FailWithRequestLog(constant.LoggerChannelWork, "同步书籍信息异常", err, c, req) return } c.JSON(http.StatusOK, gin.H{ "code": 200, "data": gin.H{ "id": bookID, "isbn": result, }, }) }