修复(#79): 修复促销管理审查问题

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
2026-05-27 06:09:22 -07:00
parent 9de7a69756
commit c18a6788c4
9 changed files with 217 additions and 25 deletions
+58
View File
@@ -0,0 +1,58 @@
package types
import (
"testing"
"github.com/go-playground/validator/v10"
)
func TestPromoPriceItemsMustNotBeEmpty(t *testing.T) {
validate := validator.New()
req := SetPromoPriceRequest{
PromoRuleId: 1,
Items: []PromoPriceItem{},
}
if err := validate.Struct(req); err == nil {
t.Fatal("expected empty promo price items to fail validation")
}
}
func TestPromoListPageSizeLimit(t *testing.T) {
validate := validator.New()
tests := []struct {
name string
req any
}{
{
name: "rule list",
req: GetPromoRuleListRequest{
Page: 1,
Size: 201,
},
},
{
name: "price list",
req: GetPromoPriceListRequest{
PromoRuleId: 1,
Page: 1,
Size: 201,
},
},
{
name: "usage list",
req: GetPromoUsageListRequest{
Page: 1,
Size: 201,
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := validate.Struct(tt.req); err == nil {
t.Fatal("expected page size greater than 200 to fail validation")
}
})
}
}
+7 -7
View File
@@ -1147,8 +1147,8 @@ type GetCouponListResponse struct {
type GetPromoPriceListRequest struct {
PromoRuleId int64 `form:"promo_rule_id" validate:"required,gt=0"`
Page int64 `form:"page" validate:"required"`
Size int64 `form:"size" validate:"required"`
Page int64 `form:"page" validate:"required,gt=0"`
Size int64 `form:"size" validate:"required,gt=0,lte=200"`
}
type GetPromoPriceListResponse struct {
@@ -1161,8 +1161,8 @@ type GetPromoRuleDetailRequest struct {
}
type GetPromoRuleListRequest struct {
Page int64 `form:"page" validate:"required"`
Size int64 `form:"size" validate:"required"`
Page int64 `form:"page" validate:"required,gt=0"`
Size int64 `form:"size" validate:"required,gt=0,lte=200"`
Type string `form:"type" validate:"omitempty,oneof=new_user inactive_user campaign"`
Enabled *bool `form:"enabled"`
Search string `form:"search,omitempty"`
@@ -1174,8 +1174,8 @@ type GetPromoRuleListResponse struct {
}
type GetPromoUsageListRequest struct {
Page int64 `form:"page" validate:"required"`
Size int64 `form:"size" validate:"required"`
Page int64 `form:"page" validate:"required,gt=0"`
Size int64 `form:"size" validate:"required,gt=0,lte=200"`
RuleId int64 `form:"rule_id,omitempty"`
UserId int64 `form:"user_id,omitempty"`
SubscribeId int64 `form:"subscribe_id,omitempty"`
@@ -3223,7 +3223,7 @@ type UpdateCouponRequest struct {
type SetPromoPriceRequest struct {
PromoRuleId int64 `json:"promo_rule_id" validate:"required,gt=0"`
Items []PromoPriceItem `json:"items" validate:"required,dive"`
Items []PromoPriceItem `json:"items" validate:"required,min=1,dive"`
}
type DeletePromoPriceRequest struct {