Files
platform/web/handlers/product.go

221 lines
3.9 KiB
Go

package handlers
import (
"platform/web/auth"
"platform/web/core"
g "platform/web/globals"
s "platform/web/services"
"github.com/gofiber/fiber/v2"
)
func AllProductByAdmin(c *fiber.Ctx) error {
// 检查权限
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProductRead)
if err != nil {
return err
}
// 解析请求参数
// var req AllProductsByAdminReq
// if err := g.Validator.ParseBody(c, &req); err != nil {
// return err
// }
// 查询产品
products, err := s.Product.AllProducts()
if err != nil {
return err
}
return c.JSON(products)
}
type AllProductsByAdminReq struct {
}
func CreateProduct(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProductWrite)
if err != nil {
return err
}
var req s.CreateProductData
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
err = s.Product.CreateProduct(&req)
if err != nil {
return err
}
return nil
}
func UpdateProduct(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProductWrite)
if err != nil {
return err
}
var req s.UpdateProductData
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
err = s.Product.UpdateProduct(&req)
if err != nil {
return err
}
return nil
}
func DeleteProduct(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProductWrite)
if err != nil {
return err
}
var req core.IdReq
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
err = s.Product.DeleteProduct(req.Id)
if err != nil {
return err
}
return nil
}
func AllProductSkuByAdmin(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProductSkuRead)
if err != nil {
return err
}
var req AllProductSkuByAdminReq
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
list, err := s.ProductSku.All(req.Code)
if err != nil {
return err
}
return c.JSON(list)
}
type AllProductSkuByAdminReq struct {
Code string `json:"product_code"`
}
func PageProductSkuByAdmin(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProductSkuRead)
if err != nil {
return err
}
var req PageProductSkuByAdminReq
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
list, total, err := s.ProductSku.Page(&req.PageReq, req.ProductId)
if err != nil {
return err
}
return c.JSON(core.PageResp{
Total: int(total),
Page: req.GetPage(),
Size: req.GetSize(),
List: list,
})
}
type PageProductSkuByAdminReq struct {
core.PageReq
ProductId *int32 `json:"product_id"`
}
func CreateProductSku(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProductSkuWrite)
if err != nil {
return err
}
var req s.CreateProductSkuData
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
err = s.ProductSku.Create(req)
if err != nil {
return err
}
return nil
}
func UpdateProductSku(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProductSkuWrite)
if err != nil {
return err
}
var req s.UpdateProductSkuData
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
err = s.ProductSku.Update(req)
if err != nil {
return err
}
return nil
}
func BatchUpdateProductSkuDiscount(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProductSkuWrite)
if err != nil {
return err
}
var req s.BatchUpdateSkuDiscountData
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
err = s.ProductSku.BatchUpdateDiscount(req)
if err != nil {
return err
}
return nil
}
func DeleteProductSku(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProductSkuWrite)
if err != nil {
return err
}
var req core.IdReq
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
err = s.ProductSku.Delete(req.Id)
if err != nil {
return err
}
return nil
}