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"` }