119 lines
4.9 KiB
Go
119 lines
4.9 KiB
Go
package v1
|
||
|
||
import "github.com/gogf/gf/v2/frame/g"
|
||
|
||
// ============================================================================
|
||
// 会员购买(微信小程序虚拟支付 · 道具直购)
|
||
// ============================================================================
|
||
|
||
// MemberPlanOut 可购买的会员套餐
|
||
type MemberPlanOut struct {
|
||
PlanKey string `json:"plan_key"`
|
||
Name string `json:"name"`
|
||
Subtitle string `json:"subtitle"`
|
||
LevelKey string `json:"level_key"`
|
||
DurationDays int `json:"duration_days"`
|
||
PriceCents int64 `json:"price_cents"` // 单位:分
|
||
ProductId string `json:"product_id"`
|
||
Badge string `json:"badge"`
|
||
}
|
||
|
||
// MemberLevelOut 等级权益(用于前端渲染权益对比)
|
||
type MemberLevelOut struct {
|
||
LevelKey string `json:"level_key"`
|
||
Name string `json:"name"`
|
||
Modules []string `json:"modules"`
|
||
ModuleNames []string `json:"module_names"`
|
||
IsCurrent bool `json:"is_current"`
|
||
}
|
||
|
||
// MemberStateOut 我的会员状态
|
||
type MemberStateOut struct {
|
||
IsMember bool `json:"is_member"`
|
||
LevelKey string `json:"level_key"`
|
||
LevelName string `json:"level_name"`
|
||
ExpireAt string `json:"expire_at"` // 空串表示永久或未开通
|
||
DaysLeft int `json:"days_left"`
|
||
Modules []string `json:"modules"`
|
||
}
|
||
|
||
// MemberCenterReq 会员中心
|
||
type MemberCenterReq struct {
|
||
g.Meta `path:"/member/center" method:"get" tags:"member" summary:"会员中心(套餐 + 会员状态 + 权益)"`
|
||
}
|
||
type MemberCenterRes struct {
|
||
Plans []MemberPlanOut `json:"plans"`
|
||
Levels []MemberLevelOut `json:"levels"`
|
||
State MemberStateOut `json:"state"`
|
||
Notices []string `json:"notices"`
|
||
XpayReady bool `json:"xpay_ready"` // 服务端虚拟支付参数是否已配置
|
||
Quotas []QuotaToolOut `json:"quotas"` // 各工具额度(会员权益页据此展示提升幅度)
|
||
Packs []QuotaPackOut `json:"packs"` // 次数包通用档位
|
||
PeriodDays int `json:"period_days"` // 当前生效的额度重置周期
|
||
}
|
||
|
||
// MemberOrderCreateReq 创建会员订单(**只建单**,N1-1/2)。
|
||
//
|
||
// Code 保留以兼容旧客户端但**非必传**:建单不再校验「支付人 = 登录人」(该校验前移到
|
||
// POST /member/order/pay)。两步式的第一步只负责落一条待支付订单。
|
||
type MemberOrderCreateReq struct {
|
||
g.Meta `path:"/member/order" method:"post" tags:"member" summary:"创建会员订单(待支付,不返回支付参数)"`
|
||
PlanKey string `v:"required#请选择会员套餐" json:"plan_key"`
|
||
Code string `json:"code"`
|
||
}
|
||
|
||
// MemberOrderCreateRes 创建会员订单响应(只建单,**不返回支付参数**;N1-1/2)。
|
||
//
|
||
// 支付参数由独立端点 POST /member/order/pay 构建(见 order.go 的 MemberOrderPayRes)。
|
||
// Reused=true 表示命中「同用户 + 同套餐 + 待支付」的既有单(N1-10),保证待支付单恒为 1 条。
|
||
type MemberOrderCreateRes struct {
|
||
OutTradeNo string `json:"out_trade_no"`
|
||
Reused bool `json:"reused"`
|
||
OriginPriceCents int64 `json:"origin_price_cents"`
|
||
PaidPriceCents int64 `json:"paid_price_cents"`
|
||
Status int `json:"status"`
|
||
}
|
||
|
||
// MemberOrderCheckReq 查询订单状态(前端支付成功回调后轮询;同时承担兜底发货)
|
||
type MemberOrderCheckReq struct {
|
||
g.Meta `path:"/member/order/check" method:"post" tags:"member" summary:"查询会员订单状态"`
|
||
OutTradeNo string `v:"required#订单号不能为空" json:"out_trade_no"`
|
||
}
|
||
type MemberOrderCheckRes struct {
|
||
Status int `json:"status"`
|
||
Delivered bool `json:"delivered"`
|
||
State MemberStateOut `json:"state"`
|
||
}
|
||
|
||
// MemberOrdersReq 我的会员订单
|
||
type MemberOrdersReq struct {
|
||
g.Meta `path:"/member/orders" method:"get" tags:"member" summary:"我的会员订单"`
|
||
Limit int `json:"limit"`
|
||
}
|
||
type MemberOrderOut struct {
|
||
OutTradeNo string `json:"out_trade_no"`
|
||
OrderType int `json:"order_type"` // 1=会员套餐 2=次数包
|
||
PlanKey string `json:"plan_key"`
|
||
PlanName string `json:"plan_name"`
|
||
PackKey string `json:"pack_key"`
|
||
Title string `json:"title"` // 统一展示标题(套餐名 / 次数包名)
|
||
ToolKey string `json:"tool_key"`
|
||
ToolName string `json:"tool_name"`
|
||
Times int `json:"times"`
|
||
PriceCents int64 `json:"price_cents"`
|
||
Status int `json:"status"`
|
||
StatusText string `json:"status_text"`
|
||
PayChannel string `json:"pay_channel"`
|
||
CreatedAt string `json:"created_at"`
|
||
DeliveredAt string `json:"delivered_at"`
|
||
// ===== T04.6 优惠凭证(响应 snake_case)=====
|
||
OriginPriceCents int64 `json:"origin_price_cents"`
|
||
PaidPriceCents int64 `json:"paid_price_cents"`
|
||
PromoCode string `json:"promo_code"`
|
||
DiscountCents int64 `json:"discount_cents"`
|
||
PromoKind int `json:"promo_kind"`
|
||
}
|
||
type MemberOrdersRes struct {
|
||
List []MemberOrderOut `json:"list"`
|
||
}
|