syntax = "v1" info ( title: "健康AI助手API" desc: "健康AI问询助手后端服务" author: "healthApps" version: "v1" ) // ==================== 公共类型 ==================== type ( // 通用响应 CommonResp { Code int `json:"code"` Message string `json:"message"` Data interface{} `json:"data,omitempty"` } // 分页请求 PageReq { Page int `form:"page,default=1"` PageSize int `form:"page_size,default=10"` } // 分页响应 PageInfo { Total int64 `json:"total"` Page int `json:"page"` PageSize int `json:"page_size"` } ) // ==================== 认证模块 ==================== type ( // 注册请求 RegisterReq { Phone string `json:"phone,optional"` Email string `json:"email,optional"` Password string `json:"password"` Code string `json:"code,optional"` } // 登录请求 LoginReq { Phone string `json:"phone,optional"` Email string `json:"email,optional"` Password string `json:"password"` } // 登录响应 LoginResp { Token string `json:"token"` ExpiresAt int64 `json:"expires_at"` User UserInfo `json:"user"` } // 用户信息 UserInfo { ID uint `json:"id"` Phone string `json:"phone,omitempty"` Email string `json:"email,omitempty"` Nickname string `json:"nickname"` Avatar string `json:"avatar"` SurveyCompleted bool `json:"survey_completed"` } // 刷新Token请求 RefreshTokenReq { Token string `json:"token"` } // 发送验证码请求 SendCodeReq { Phone string `json:"phone,optional"` Email string `json:"email,optional"` Type string `json:"type"` // register/login/reset } // 更新用户资料请求 UpdateProfileReq { Nickname string `json:"nickname,optional"` Avatar string `json:"avatar,optional"` } ) // ==================== 健康档案模块 ==================== type ( // 健康档案 HealthProfile { ID uint `json:"id"` UserID uint `json:"user_id"` Name string `json:"name"` BirthDate string `json:"birth_date"` Gender string `json:"gender"` Height float64 `json:"height"` Weight float64 `json:"weight"` BMI float64 `json:"bmi"` BloodType string `json:"blood_type"` Occupation string `json:"occupation"` MaritalStatus string `json:"marital_status"` Region string `json:"region"` } // 生活习惯 LifestyleInfo { ID uint `json:"id"` UserID uint `json:"user_id"` SleepTime string `json:"sleep_time"` WakeTime string `json:"wake_time"` SleepQuality string `json:"sleep_quality"` MealRegularity string `json:"meal_regularity"` DietPreference string `json:"diet_preference"` DailyWaterML int `json:"daily_water_ml"` ExerciseFrequency string `json:"exercise_frequency"` ExerciseType string `json:"exercise_type"` ExerciseDurationMin int `json:"exercise_duration_min"` IsSmoker bool `json:"is_smoker"` AlcoholFrequency string `json:"alcohol_frequency"` } // 病史 MedicalHistory { ID uint `json:"id"` HealthProfileID uint `json:"health_profile_id"` DiseaseName string `json:"disease_name"` DiseaseType string `json:"disease_type"` DiagnosedDate string `json:"diagnosed_date"` Status string `json:"status"` Notes string `json:"notes"` } // 家族病史 FamilyHistory { ID uint `json:"id"` HealthProfileID uint `json:"health_profile_id"` Relation string `json:"relation"` DiseaseName string `json:"disease_name"` Notes string `json:"notes"` } // 过敏记录 AllergyRecord { ID uint `json:"id"` HealthProfileID uint `json:"health_profile_id"` AllergyType string `json:"allergy_type"` Allergen string `json:"allergen"` Severity string `json:"severity"` ReactionDesc string `json:"reaction_desc"` } // 完整健康档案响应 FullHealthProfileResp { Profile HealthProfile `json:"profile"` Lifestyle LifestyleInfo `json:"lifestyle"` MedicalHistory []MedicalHistory `json:"medical_history"` FamilyHistory []FamilyHistory `json:"family_history"` AllergyRecords []AllergyRecord `json:"allergy_records"` } // 更新健康档案请求 UpdateHealthProfileReq { Name string `json:"name,optional"` BirthDate string `json:"birth_date,optional"` Gender string `json:"gender,optional"` Height float64 `json:"height,optional"` Weight float64 `json:"weight,optional"` BloodType string `json:"blood_type,optional"` Occupation string `json:"occupation,optional"` MaritalStatus string `json:"marital_status,optional"` Region string `json:"region,optional"` } // 更新生活习惯请求 UpdateLifestyleReq { SleepTime string `json:"sleep_time,optional"` WakeTime string `json:"wake_time,optional"` SleepQuality string `json:"sleep_quality,optional"` MealRegularity string `json:"meal_regularity,optional"` DietPreference string `json:"diet_preference,optional"` DailyWaterML int `json:"daily_water_ml,optional"` ExerciseFrequency string `json:"exercise_frequency,optional"` ExerciseType string `json:"exercise_type,optional"` ExerciseDurationMin int `json:"exercise_duration_min,optional"` IsSmoker bool `json:"is_smoker,optional"` AlcoholFrequency string `json:"alcohol_frequency,optional"` } // ID路径参数 IdPathReq { Id uint `path:"id"` } ) // ==================== 健康调查模块 ==================== type ( // 调查状态响应 SurveyStatusResp { Completed bool `json:"completed"` BasicInfo bool `json:"basic_info"` Lifestyle bool `json:"lifestyle"` MedicalHistory bool `json:"medical_history"` FamilyHistory bool `json:"family_history"` Allergy bool `json:"allergy"` } // 提交基础信息请求 SubmitBasicInfoReq { Name string `json:"name"` BirthDate string `json:"birth_date"` Gender string `json:"gender"` Height float64 `json:"height"` Weight float64 `json:"weight"` BloodType string `json:"blood_type,optional"` Occupation string `json:"occupation,optional"` MaritalStatus string `json:"marital_status,optional"` Region string `json:"region,optional"` } // 提交生活习惯请求 SubmitLifestyleReq { SleepTime string `json:"sleep_time"` WakeTime string `json:"wake_time"` SleepQuality string `json:"sleep_quality"` MealRegularity string `json:"meal_regularity"` DietPreference string `json:"diet_preference,optional"` DailyWaterML int `json:"daily_water_ml,optional"` ExerciseFrequency string `json:"exercise_frequency"` ExerciseType string `json:"exercise_type,optional"` ExerciseDurationMin int `json:"exercise_duration_min,optional"` IsSmoker bool `json:"is_smoker"` AlcoholFrequency string `json:"alcohol_frequency"` } // 提交病史请求 SubmitMedicalHistoryReq { DiseaseName string `json:"disease_name"` DiseaseType string `json:"disease_type,optional"` DiagnosedDate string `json:"diagnosed_date,optional"` Status string `json:"status,optional"` Notes string `json:"notes,optional"` } // 批量提交病史请求 BatchMedicalHistoryReq { Items []SubmitMedicalHistoryReq `json:"items"` } // 提交家族史请求 SubmitFamilyHistoryReq { Relation string `json:"relation"` DiseaseName string `json:"disease_name"` Notes string `json:"notes,optional"` } // 批量提交家族史请求 BatchFamilyHistoryReq { Items []SubmitFamilyHistoryReq `json:"items"` } // 提交过敏信息请求 SubmitAllergyReq { AllergyType string `json:"allergy_type"` Allergen string `json:"allergen"` Severity string `json:"severity,optional"` ReactionDesc string `json:"reaction_desc,optional"` } // 批量提交过敏信息请求 BatchAllergyReq { Items []SubmitAllergyReq `json:"items"` } ) // ==================== 体质辨识模块 ==================== type ( // 问卷题目 Question { ID int `json:"id"` ConstitutionType string `json:"constitution_type"` QuestionText string `json:"question_text"` Options []string `json:"options"` OrderNum int `json:"order_num"` } // 问卷题目列表响应 QuestionsResp { Questions []Question `json:"questions"` } // 分组问卷响应 GroupedQuestionsResp { Groups map[string][]Question `json:"groups"` } // 提交测评请求 SubmitAssessmentReq { Answers []AnswerItem `json:"answers"` } // 答题项 AnswerItem { QuestionID int `json:"question_id"` Score int `json:"score"` // 1-5 } // 测评结果 AssessmentResult { ID uint `json:"id"` UserID uint `json:"user_id"` AssessedAt string `json:"assessed_at"` Scores map[string]float64 `json:"scores"` PrimaryConstitution string `json:"primary_constitution"` SecondaryConstitutions []string `json:"secondary_constitutions"` Recommendations map[string]string `json:"recommendations"` } // 测评历史响应 AssessmentHistoryResp { History []AssessmentResult `json:"history"` } // 调养建议响应 RecommendationsResp { Constitution string `json:"constitution"` Recommendations map[string]string `json:"recommendations"` } ) // ==================== AI对话模块 ==================== type ( // 对话列表项 ConversationItem { ID uint `json:"id"` Title string `json:"title"` CreatedAt string `json:"created_at"` UpdatedAt string `json:"updated_at"` } // 对话列表响应 ConversationListResp { Conversations []ConversationItem `json:"conversations"` } // 创建对话请求 CreateConversationReq { Title string `json:"title,optional"` } // 消息 Message { ID uint `json:"id"` ConversationID uint `json:"conversation_id"` Role string `json:"role"` // user/assistant/system Content string `json:"content"` CreatedAt string `json:"created_at"` } // 对话详情响应 ConversationDetailResp { ID uint `json:"id"` Title string `json:"title"` Messages []Message `json:"messages"` CreatedAt string `json:"created_at"` } // 对话ID路径参数 ConversationIdReq { Id uint `path:"id"` } // 发送消息请求 SendMessageReq { Id uint `path:"id"` Content string `json:"content"` } // 消息响应 MessageResp { UserMessage Message `json:"user_message"` AssistantMessage Message `json:"assistant_message"` } ) // ==================== 产品模块 ==================== type ( // 产品 Product { ID uint `json:"id"` Name string `json:"name"` Category string `json:"category"` Description string `json:"description"` Efficacy string `json:"efficacy"` Suitable string `json:"suitable"` Price float64 `json:"price"` ImageURL string `json:"image_url"` MallURL string `json:"mall_url"` IsActive bool `json:"is_active"` } // 产品列表请求 ProductListReq { Page int `form:"page,default=1"` PageSize int `form:"page_size,default=10"` Category string `form:"category,optional"` } // 产品列表响应 ProductListResp { Products []Product `json:"products"` PageInfo PageInfo `json:"page_info"` } // 产品搜索请求 ProductSearchReq { Keyword string `form:"keyword"` Page int `form:"page,default=1"` PageSize int `form:"page_size,default=10"` } // 推荐产品响应 RecommendProductsResp { Products []Product `json:"products"` Constitution string `json:"constitution"` Reason string `json:"reason"` } // 购买历史 PurchaseHistory { ID uint `json:"id"` UserID uint `json:"user_id"` OrderNo string `json:"order_no"` ProductID uint `json:"product_id"` ProductName string `json:"product_name"` PurchasedAt string `json:"purchased_at"` Source string `json:"source"` } // 购买历史响应 PurchaseHistoryResp { History []PurchaseHistory `json:"history"` PageInfo PageInfo `json:"page_info"` } // 同步购买请求 SyncPurchaseReq { OrderNo string `json:"order_no"` ProductID uint `json:"product_id"` ProductName string `json:"product_name"` UserID uint `json:"user_id"` PurchasedAt string `json:"purchased_at"` Source string `json:"source"` } ) // ==================== 路由定义 ==================== // 无需认证的路由 @server ( prefix: /api ) service healthapi-api { // 健康检查 @handler HealthCheckHandler get /health returns (CommonResp) // 认证模块 @handler RegisterHandler post /auth/register (RegisterReq) returns (LoginResp) @handler LoginHandler post /auth/login (LoginReq) returns (LoginResp) @handler RefreshTokenHandler post /auth/refresh (RefreshTokenReq) returns (LoginResp) @handler SendCodeHandler post /auth/send-code (SendCodeReq) returns (CommonResp) // 产品模块(公开) @handler GetProductListHandler get /products (ProductListReq) returns (ProductListResp) @handler GetProductHandler get /products/:id (IdPathReq) returns (Product) @handler GetProductsByCategoryHandler get /products/category (ProductListReq) returns (ProductListResp) @handler SearchProductsHandler get /products/search (ProductSearchReq) returns (ProductListResp) // 商城同步(需要API Key,在handler中验证) @handler SyncPurchaseHandler post /sync/purchase (SyncPurchaseReq) returns (CommonResp) } // 需要认证的路由 @server ( prefix: /api jwt: Auth ) service healthapi-api { // 用户模块 @handler GetUserProfileHandler get /user/profile returns (UserInfo) @handler UpdateUserProfileHandler put /user/profile (UpdateProfileReq) returns (UserInfo) // 健康档案模块 @handler GetHealthProfileHandler get /user/health-profile returns (FullHealthProfileResp) @handler UpdateHealthProfileHandler put /user/health-profile (UpdateHealthProfileReq) returns (HealthProfile) @handler GetBasicProfileHandler get /user/basic-profile returns (HealthProfile) @handler GetLifestyleHandler get /user/lifestyle returns (LifestyleInfo) @handler UpdateLifestyleHandler put /user/lifestyle (UpdateLifestyleReq) returns (LifestyleInfo) @handler GetMedicalHistoryHandler get /user/medical-history returns ([]MedicalHistory) @handler DeleteMedicalHistoryHandler delete /user/medical-history/:id (IdPathReq) returns (CommonResp) @handler GetFamilyHistoryHandler get /user/family-history returns ([]FamilyHistory) @handler DeleteFamilyHistoryHandler delete /user/family-history/:id (IdPathReq) returns (CommonResp) @handler GetAllergyRecordsHandler get /user/allergy-records returns ([]AllergyRecord) @handler DeleteAllergyRecordHandler delete /user/allergy-records/:id (IdPathReq) returns (CommonResp) @handler GetPurchaseHistoryHandler get /user/purchase-history (PageReq) returns (PurchaseHistoryResp) // 健康调查模块 @handler GetSurveyStatusHandler get /survey/status returns (SurveyStatusResp) @handler SubmitBasicInfoHandler post /survey/basic-info (SubmitBasicInfoReq) returns (CommonResp) @handler SubmitLifestyleHandler post /survey/lifestyle (SubmitLifestyleReq) returns (CommonResp) @handler SubmitMedicalHistoryHandler post /survey/medical-history (SubmitMedicalHistoryReq) returns (CommonResp) @handler BatchSubmitMedicalHistoryHandler post /survey/medical-history/batch (BatchMedicalHistoryReq) returns (CommonResp) @handler SubmitFamilyHistoryHandler post /survey/family-history (SubmitFamilyHistoryReq) returns (CommonResp) @handler BatchSubmitFamilyHistoryHandler post /survey/family-history/batch (BatchFamilyHistoryReq) returns (CommonResp) @handler SubmitAllergyHandler post /survey/allergy (SubmitAllergyReq) returns (CommonResp) @handler BatchSubmitAllergyHandler post /survey/allergy/batch (BatchAllergyReq) returns (CommonResp) @handler CompleteSurveyHandler post /survey/complete returns (CommonResp) // 体质辨识模块 @handler GetQuestionsHandler get /constitution/questions returns (QuestionsResp) @handler GetGroupedQuestionsHandler get /constitution/questions/grouped returns (GroupedQuestionsResp) @handler SubmitAssessmentHandler post /constitution/submit (SubmitAssessmentReq) returns (AssessmentResult) @handler GetAssessmentResultHandler get /constitution/result returns (AssessmentResult) @handler GetAssessmentHistoryHandler get /constitution/history returns (AssessmentHistoryResp) @handler GetRecommendationsHandler get /constitution/recommendations returns (RecommendationsResp) // AI对话模块 @handler GetConversationsHandler get /conversations returns (ConversationListResp) @handler CreateConversationHandler post /conversations (CreateConversationReq) returns (ConversationItem) @handler GetConversationHandler get /conversations/:id (ConversationIdReq) returns (ConversationDetailResp) @handler DeleteConversationHandler delete /conversations/:id (ConversationIdReq) returns (CommonResp) @handler SendMessageHandler post /conversations/:id/messages (SendMessageReq) returns (MessageResp) // 流式消息需要特殊处理,在handler中实现SSE @handler SendMessageStreamHandler post /conversations/:id/messages/stream (SendMessageReq) // 产品推荐(需要认证,基于用户体质) @handler GetRecommendProductsHandler get /products/recommend returns (RecommendProductsResp) } // ==================== 会员系统模块 ==================== type ( // 会员信息 MemberInfo { Level string `json:"level"` // normal/silver/gold/diamond LevelName string `json:"level_name"` // 等级名称 TotalSpent float64 `json:"total_spent"` // 累计消费 Points int `json:"points"` // 当前积分 MemberSince string `json:"member_since"` // 首次消费时间 NextLevel string `json:"next_level"` // 下一等级 NextLevelSpent float64 `json:"next_level_spent"` // 升级还需消费 Discount float64 `json:"discount"` // 当前折扣 PointsMultiplier float64 `json:"points_multiplier"` // 积分倍率 FreeShippingMin float64 `json:"free_shipping_min"` // 包邮门槛 } // 积分记录 PointsRecord { ID uint `json:"id"` Type string `json:"type"` // earn/spend/expire/adjust Points int `json:"points"` // 变动积分 Balance int `json:"balance"` // 变动后余额 Source string `json:"source"` // order/activity/system Remark string `json:"remark"` CreatedAt string `json:"created_at"` } // 积分记录列表响应 PointsRecordsResp { Records []PointsRecord `json:"records"` PageInfo PageInfo `json:"page_info"` } // 积分兑换请求(积分抵扣现金) UsePointsReq { Points int `json:"points"` // 使用积分数 OrderNo string `json:"order_no,optional"` // 关联订单 } ) // ==================== 商城商品模块 ==================== type ( // 商品分类 ProductCategory { ID uint `json:"id"` Name string `json:"name"` ParentID uint `json:"parent_id"` Icon string `json:"icon"` Description string `json:"description"` Sort int `json:"sort"` } // 分类列表响应 CategoryListResp { Categories []ProductCategory `json:"categories"` } // 商品SKU ProductSku { ID uint `json:"id"` ProductID uint `json:"product_id"` SkuCode string `json:"sku_code"` Name string `json:"name"` Attributes string `json:"attributes"` Price float64 `json:"price"` Stock int `json:"stock"` Image string `json:"image"` } // 商品详情(包含SKU) ProductDetail { ID uint `json:"id"` CategoryID uint `json:"category_id"` Name string `json:"name"` Description string `json:"description"` MainImage string `json:"main_image"` Images []string `json:"images"` Price float64 `json:"price"` OriginalPrice float64 `json:"original_price"` Stock int `json:"stock"` SalesCount int `json:"sales_count"` IsFeatured bool `json:"is_featured"` ConstitutionTypes []string `json:"constitution_types"` HealthTags []string `json:"health_tags"` Efficacy string `json:"efficacy"` Ingredients string `json:"ingredients"` Usage string `json:"usage"` Contraindications string `json:"contraindications"` Skus []ProductSku `json:"skus"` } ) // ==================== 购物车模块 ==================== type ( // 购物车项 CartItem { ID uint `json:"id"` ProductID uint `json:"product_id"` SkuID uint `json:"sku_id"` ProductName string `json:"product_name"` SkuName string `json:"sku_name"` Image string `json:"image"` Price float64 `json:"price"` Quantity int `json:"quantity"` Selected bool `json:"selected"` Stock int `json:"stock"` // 当前库存 } // 购物车响应 CartResp { Items []CartItem `json:"items"` TotalCount int `json:"total_count"` SelectedCount int `json:"selected_count"` TotalAmount float64 `json:"total_amount"` } // 添加购物车请求 AddCartReq { ProductID uint `json:"product_id"` SkuID uint `json:"sku_id,optional"` Quantity int `json:"quantity,default=1"` } // 更新购物车请求 UpdateCartReq { Id uint `path:"id"` Quantity int `json:"quantity,optional"` Selected bool `json:"selected,optional"` } // 批量选择请求 BatchSelectCartReq { Ids []uint `json:"ids"` Selected bool `json:"selected"` } ) // ==================== 收货地址模块 ==================== type ( // 收货地址 Address { ID uint `json:"id"` ReceiverName string `json:"receiver_name"` Phone string `json:"phone"` Province string `json:"province"` City string `json:"city"` District string `json:"district"` DetailAddr string `json:"detail_addr"` PostalCode string `json:"postal_code"` IsDefault bool `json:"is_default"` Tag string `json:"tag"` // home/company/other } // 地址列表响应 AddressListResp { Addresses []Address `json:"addresses"` } // 创建/更新地址请求 SaveAddressReq { ReceiverName string `json:"receiver_name"` Phone string `json:"phone"` Province string `json:"province"` City string `json:"city"` District string `json:"district"` DetailAddr string `json:"detail_addr"` PostalCode string `json:"postal_code,optional"` IsDefault bool `json:"is_default,optional"` Tag string `json:"tag,optional"` } // 地址ID请求 AddressIdReq { Id uint `path:"id"` } ) // ==================== 订单模块 ==================== type ( // 订单商品项 OrderItem { ID uint `json:"id"` ProductID uint `json:"product_id"` SkuID uint `json:"sku_id"` ProductName string `json:"product_name"` SkuName string `json:"sku_name"` Image string `json:"image"` Price float64 `json:"price"` Quantity int `json:"quantity"` TotalAmount float64 `json:"total_amount"` } // 订单 Order { ID uint `json:"id"` OrderNo string `json:"order_no"` Status string `json:"status"` TotalAmount float64 `json:"total_amount"` DiscountAmount float64 `json:"discount_amount"` ShippingFee float64 `json:"shipping_fee"` PayAmount float64 `json:"pay_amount"` PointsUsed int `json:"points_used"` PointsEarned int `json:"points_earned"` PayMethod string `json:"pay_method"` PayTime string `json:"pay_time"` ShipTime string `json:"ship_time"` ReceiveTime string `json:"receive_time"` ReceiverName string `json:"receiver_name"` ReceiverPhone string `json:"receiver_phone"` ReceiverAddr string `json:"receiver_addr"` ShippingCompany string `json:"shipping_company"` TrackingNo string `json:"tracking_no"` Remark string `json:"remark"` CancelReason string `json:"cancel_reason"` Items []OrderItem `json:"items"` CreatedAt string `json:"created_at"` } // 订单列表响应 OrderListResp { Orders []Order `json:"orders"` PageInfo PageInfo `json:"page_info"` } // 订单列表请求 OrderListReq { Page int `form:"page,default=1"` PageSize int `form:"page_size,default=10"` Status string `form:"status,optional"` // 筛选状态 } // 创建订单请求 CreateOrderReq { AddressID uint `json:"address_id"` CartItemIDs []uint `json:"cart_item_ids"` // 购物车项ID PointsUsed int `json:"points_used,optional"` // 使用积分 Remark string `json:"remark,optional"` } // 订单预览(结算页) OrderPreview { Items []CartItem `json:"items"` TotalAmount float64 `json:"total_amount"` DiscountAmount float64 `json:"discount_amount"` ShippingFee float64 `json:"shipping_fee"` PayAmount float64 `json:"pay_amount"` MaxPointsUse int `json:"max_points_use"` // 最多可用积分 PointsDiscount float64 `json:"points_discount"` // 积分可抵扣金额 } // 订单预览请求 OrderPreviewReq { CartItemIDs []uint `json:"cart_item_ids"` AddressID uint `json:"address_id,optional"` } // 订单ID请求 OrderIdReq { Id uint `path:"id"` } // 支付订单请求 PayOrderReq { Id uint `path:"id"` PayMethod string `json:"pay_method"` // wechat/alipay } // 取消订单请求 CancelOrderReq { Id uint `path:"id"` Reason string `json:"reason,optional"` } ) // ==================== 商城公开路由 ==================== @server ( prefix: /api/mall ) service healthapi-api { // 商品分类 @handler GetCategoriesHandler get /categories returns (CategoryListResp) // 商品列表(支持分类筛选) @handler GetMallProductsHandler get /products (ProductListReq) returns (ProductListResp) // 商品详情 @handler GetMallProductDetailHandler get /products/:id (IdPathReq) returns (ProductDetail) // 搜索商品 @handler SearchMallProductsHandler get /products/search (ProductSearchReq) returns (ProductListResp) // 推荐/热门商品 @handler GetFeaturedProductsHandler get /products/featured (PageReq) returns (ProductListResp) } // ==================== 商城认证路由 ==================== @server ( prefix: /api/mall jwt: Auth ) service healthapi-api { // ===== 会员 ===== @handler GetMemberInfoHandler get /member/info returns (MemberInfo) @handler GetPointsRecordsHandler get /member/points/records (PageReq) returns (PointsRecordsResp) // ===== 购物车 ===== @handler GetCartHandler get /cart returns (CartResp) @handler AddCartHandler post /cart (AddCartReq) returns (CartItem) @handler UpdateCartHandler put /cart/:id (UpdateCartReq) returns (CartItem) @handler DeleteCartHandler delete /cart/:id (IdPathReq) returns (CommonResp) @handler BatchSelectCartHandler post /cart/batch-select (BatchSelectCartReq) returns (CommonResp) @handler ClearCartHandler delete /cart/clear returns (CommonResp) // ===== 收货地址 ===== @handler GetAddressesHandler get /addresses returns (AddressListResp) @handler GetAddressHandler get /addresses/:id (AddressIdReq) returns (Address) @handler CreateAddressHandler post /addresses (SaveAddressReq) returns (Address) @handler UpdateAddressHandler put /addresses/:id (AddressIdReq) @handler DeleteAddressHandler delete /addresses/:id (AddressIdReq) returns (CommonResp) @handler SetDefaultAddressHandler put /addresses/:id/default (AddressIdReq) returns (CommonResp) // ===== 订单 ===== @handler GetOrdersHandler get /orders (OrderListReq) returns (OrderListResp) @handler GetOrderHandler get /orders/:id (OrderIdReq) returns (Order) @handler PreviewOrderHandler post /orders/preview (OrderPreviewReq) returns (OrderPreview) @handler CreateOrderHandler post /orders (CreateOrderReq) returns (Order) @handler PayOrderHandler post /orders/:id/pay (PayOrderReq) returns (CommonResp) @handler CancelOrderHandler post /orders/:id/cancel (CancelOrderReq) returns (CommonResp) @handler ConfirmReceiveHandler post /orders/:id/receive (OrderIdReq) returns (CommonResp) // ===== 基于体质的商品推荐 ===== @handler GetConstitutionProductsHandler get /products/constitution-recommend returns (RecommendProductsResp) }