实现套餐生效条件覆盖与购买快照
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"github.com/bytedance/sonic"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
|
||||
"github.com/break/junhong_cmp_fiber/internal/model/dto"
|
||||
@@ -23,10 +26,40 @@ func (h *ShopPackageBatchAllocationHandler) BatchAllocate(c *fiber.Ctx) error {
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
|
||||
}
|
||||
req.ExpiryBaseOverrideSet = hasJSONField(c.Body(), "expiry_base_override")
|
||||
|
||||
if err := h.service.BatchAllocate(c.UserContext(), &req); err != nil {
|
||||
result, err := h.service.BatchAllocate(c.UserContext(), &req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return response.Success(c, nil)
|
||||
return response.Success(c, result)
|
||||
}
|
||||
|
||||
// UpdateExpiryBase 修改套餐分配生效条件覆盖。
|
||||
// PATCH /api/admin/shop-package-allocations/:id/expiry-base
|
||||
func (h *ShopPackageBatchAllocationHandler) UpdateExpiryBase(c *fiber.Ctx) error {
|
||||
id, err := strconv.ParseUint(c.Params("id"), 10, 64)
|
||||
if err != nil {
|
||||
return errors.New(errors.CodeInvalidParam)
|
||||
}
|
||||
var req dto.UpdateAllocationExpiryBaseRequest
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam)
|
||||
}
|
||||
req.ExpiryBaseOverrideSet = hasJSONField(c.Body(), "expiry_base_override")
|
||||
result, err := h.service.UpdateExpiryBase(c.UserContext(), uint(id), &req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return response.Success(c, result)
|
||||
}
|
||||
|
||||
func hasJSONField(body []byte, field string) bool {
|
||||
var object map[string]any
|
||||
if err := sonic.Unmarshal(body, &object); err != nil {
|
||||
return false
|
||||
}
|
||||
_, ok := object[field]
|
||||
return ok
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ func (h *ShopSeriesGrantHandler) Create(c *fiber.Ctx) error {
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
|
||||
}
|
||||
req.ExpiryBaseOverrideSet = hasJSONField(c.Body(), "expiry_base_override")
|
||||
|
||||
result, err := h.service.Create(c.UserContext(), &req)
|
||||
if err != nil {
|
||||
@@ -83,7 +84,6 @@ func (h *ShopSeriesGrantHandler) Update(c *fiber.Ctx) error {
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
|
||||
}
|
||||
|
||||
result, err := h.service.Update(c.UserContext(), uint(id), &req)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -105,6 +105,7 @@ func (h *ShopSeriesGrantHandler) ManagePackages(c *fiber.Ctx) error {
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
|
||||
}
|
||||
req.ExpiryBaseOverrideSet = hasJSONField(c.Body(), "expiry_base_override")
|
||||
|
||||
result, err := h.service.ManagePackages(c.UserContext(), uint(id), &req)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user