package service import ( "errors" "fmt" "time" "xk-of-api/internal/model" ) // OrderService 负责套餐订购和订单状态查询。 type OrderService struct{} // Order 暴露订单服务单例。 var Order = OrderService{} // Create 创建套餐订单;金额根据套餐和周期计算。 func (s OrderService) Create(order model.Order) (model.Order, error) { if order.TenantName == "" || order.ContactName == "" || order.Phone == "" { return model.Order{}, errors.New("请补全诊所名称、联系人和手机号") } plan, ok := Pricing.FindByCode(order.PlanCode) if !ok { return model.Order{}, errors.New("套餐不存在") } if order.BillingCycle == "year" { order.Amount = plan.YearlyFee } else { order.BillingCycle = "month" order.Amount = plan.MonthlyFee } order.OrderNo = fmt.Sprintf("XK%d", time.Now().UnixNano()) order.Status = "pending" return order, nil } // Detail 返回订单详情占位数据,后续改为读取 nl_order。 func (s OrderService) Detail(orderNo string) model.Order { return model.Order{OrderNo: orderNo, TenantName: "萧康示例诊所", ContactName: "王医生", Phone: "13800000000", PlanCode: "growth", BillingCycle: "year", Amount: 399000, Status: "pending"} } // List 返回后台订单列表占位数据。 func (s OrderService) List() []model.Order { return []model.Order{s.Detail("XK202607040001")} } // Notify 处理支付渠道回调占位逻辑,真实渠道验签在后续适配器完成。 func (s OrderService) Notify(channel string, payload map[string]interface{}) map[string]interface{} { return map[string]interface{}{"channel": channel, "notify_status": "received", "payload": payload} }