94 lines
3.3 KiB
Go
94 lines
3.3 KiB
Go
package v1
|
||
|
||
import "github.com/gogf/gf/v2/frame/g"
|
||
|
||
// ============================================================================
|
||
// 管理端优惠码契约(A1–A5):list / save / toggle / delete / usages
|
||
// ============================================================================
|
||
|
||
// PromoItem 优惠码列表项(响应 snake_case)
|
||
type PromoItem struct {
|
||
Id int64 `json:"id"`
|
||
Code string `json:"code"`
|
||
ProductId string `json:"product_id"`
|
||
PriceCents int64 `json:"price_cents"`
|
||
Scope int `json:"scope"`
|
||
ScopeKeys []string `json:"scope_keys"`
|
||
MaxUses int `json:"max_uses"`
|
||
UsedCount int `json:"used_count"`
|
||
PerUserLimit int `json:"per_user_limit"`
|
||
ValidFrom string `json:"valid_from"`
|
||
ValidTo string `json:"valid_to"`
|
||
Status int `json:"status"`
|
||
Remark string `json:"remark"`
|
||
}
|
||
|
||
// PromoListReq 优惠码列表(A1)
|
||
type PromoListReq struct {
|
||
g.Meta `path:"/promo/list" method:"get" tags:"promo" summary:"优惠码列表"`
|
||
Keyword string `json:"keyword"`
|
||
Status *int `json:"status"`
|
||
Page int `json:"page"`
|
||
PageSize int `json:"pageSize"`
|
||
}
|
||
type PromoListRes struct {
|
||
List []PromoItem `json:"list"`
|
||
Total int `json:"total"`
|
||
}
|
||
|
||
// PromoSaveReq 新增/编辑优惠码(A2)。编辑(id>0)时 code 不可改(跨端契约)。
|
||
type PromoSaveReq struct {
|
||
g.Meta `path:"/promo/save" method:"post" tags:"promo" summary:"保存优惠码"`
|
||
Id int64 `json:"id"`
|
||
Code string `v:"required#优惠码不能为空" json:"code"`
|
||
ProductId string `v:"required#支付道具不能为空" json:"productId"`
|
||
PriceCents int64 `v:"min:0#价格不能为负" json:"priceCents"`
|
||
Scope int `json:"scope"`
|
||
ScopeKeys []string `json:"scopeKeys"`
|
||
MaxUses int `v:"min:0#总上限不能为负" json:"maxUses"`
|
||
PerUserLimit int `v:"min:0#单人限用不能为负" json:"perUserLimit"`
|
||
ValidFrom string `json:"validFrom"`
|
||
ValidTo string `json:"validTo"`
|
||
Status int `json:"status"`
|
||
Remark string `json:"remark"`
|
||
}
|
||
type PromoSaveRes struct {
|
||
Id int64 `json:"id"`
|
||
}
|
||
|
||
// PromoToggleReq 启停优惠码(A3)
|
||
type PromoToggleReq struct {
|
||
g.Meta `path:"/promo/toggle" method:"post" tags:"promo" summary:"启停优惠码"`
|
||
Id int64 `v:"required" json:"id"`
|
||
Status int `json:"status"`
|
||
}
|
||
type PromoToggleRes struct{}
|
||
|
||
// PromoDeleteReq 删除优惠码(A4)
|
||
type PromoDeleteReq struct {
|
||
g.Meta `path:"/promo/delete" method:"post" tags:"promo" summary:"删除优惠码"`
|
||
Id int64 `v:"required" json:"id"`
|
||
}
|
||
type PromoDeleteRes struct{}
|
||
|
||
// PromoUsageItem 优惠码使用明细项(A5,响应 snake_case)
|
||
type PromoUsageItem struct {
|
||
At string `json:"at"`
|
||
User string `json:"user"`
|
||
OutTradeNo string `json:"out_trade_no"`
|
||
OriginPriceCents int64 `json:"origin_price_cents"`
|
||
PaidPriceCents int64 `json:"paid_price_cents"`
|
||
}
|
||
|
||
// PromoUsagesReq 优惠码使用明细(A5)
|
||
type PromoUsagesReq struct {
|
||
g.Meta `path:"/promo/usages" method:"get" tags:"promo" summary:"优惠码使用明细"`
|
||
PromoId int64 `json:"promoId"`
|
||
Page int `json:"page"`
|
||
PageSize int `json:"pageSize"`
|
||
}
|
||
type PromoUsagesRes struct {
|
||
List []PromoUsageItem `json:"list"`
|
||
Total int `json:"total"`
|
||
}
|