221 lines
3.9 KiB
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
|
|
}
|