{"openapi":"3.1.0","info":{"title":"久爵用户端 API","description":"久爵 H5、小程序和 App 共用的业务用户接口；后台管理接口不在本文档范围内。","version":"1.0.0"},"servers":[{"url":"/api/v1","description":"当前 Webman 用户端 API"}],"tags":[{"name":"System","description":"系统探活接口"},{"name":"Public","description":"公开站点配置和协议"},{"name":"Auth","description":"业务用户认证与令牌生命周期"},{"name":"User","description":"当前业务用户资料"},{"name":"Payment","description":"业务用户支付下单与查询"},{"name":"Recycle","description":"用户、回收员和城市代理共用的回收业务接口"}],"paths":{"/health":{"get":{"operationId":"getApiHealth","summary":"API 健康检查","tags":["System"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/public/config":{"get":{"operationId":"getPublicConfig","summary":"获取应用公共配置","tags":["Public"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicConfigResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/cities":{"get":{"operationId":"listCities","summary":"查询可选省份或城市","tags":["Public"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CityListResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[{"name":"parent_id","in":"query","required":false,"description":"上级地区编号，传 0 返回省份","schema":{"type":"integer","minimum":0,"default":0}}]}},"/public/protocols/{type}":{"get":{"operationId":"getPublicProtocol","summary":"获取指定公开协议","tags":["Public"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProtocolResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[{"name":"type","in":"path","required":true,"description":"协议类型","schema":{"type":"string","enum":["member","privacy","register","cancellation"]}}]}},"/auth/login":{"post":{"operationId":"loginBusinessUser","summary":"业务用户登录","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}}}}},"/auth/sms-codes":{"post":{"operationId":"sendBusinessSmsCode","summary":"发送业务用户短信验证码","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsCodeResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsCodeRequest"}}}}}},"/auth/register":{"post":{"operationId":"registerBusinessUser","summary":"使用手机号注册业务用户","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}}}}},"/auth/sms-login":{"post":{"operationId":"smsLoginBusinessUser","summary":"使用短信验证码登录","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsLoginRequest"}}}}}},"/auth/wechat":{"post":{"operationId":"wechatLoginBusinessUser","summary":"使用微信授权码登录","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WechatLoginResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WechatLoginRequest"}}}}}},"/auth/wechat/oa/start":{"get":{"operationId":"startWechatOaOAuth","summary":"创建公众号 OAuth 授权链接","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WechatOAuthStartResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/wechat/phone-login":{"post":{"operationId":"loginWechatMiniProgramWithPhone","summary":"使用小程序已验证手机号完成微信登录","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WechatPhoneLoginRequest"}}}}}},"/auth/wechat/complete":{"post":{"operationId":"completeWechatOaLogin","summary":"使用手机号验证完成公众号微信登录","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WechatOaCompleteRequest"}}}}}},"/auth/phone/bind":{"post":{"operationId":"bindBusinessPhone","summary":"绑定已验证手机号","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneBindRequest"}}}},"security":[{"bearerAuth":[]}]}},"/auth/wechat/phone-bind":{"post":{"operationId":"bindWechatPhone","summary":"绑定微信授权手机号","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WechatPhoneBindRequest"}}}},"security":[{"bearerAuth":[]}]}},"/auth/wechat/link":{"post":{"operationId":"linkWechatIdentity","summary":"绑定微信身份","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WechatIdentityLinkResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WechatIdentityLinkRequest"}}}},"security":[{"bearerAuth":[]}]}},"/auth/reset-password":{"post":{"operationId":"resetBusinessPassword","summary":"使用短信验证码重置密码","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}}}}},"/auth/refresh":{"post":{"operationId":"refreshBusinessToken","summary":"轮换业务用户令牌","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshRequest"}}}}}},"/auth/logout":{"post":{"operationId":"logoutBusinessUser","summary":"退出当前业务用户会话","tags":["Auth"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/payments":{"post":{"operationId":"createPaymentOrder","summary":"创建支付订单","tags":["Payment"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentCreateRequest"}}}},"security":[{"bearerAuth":[]}]}},"/payments/virtual-currency":{"post":{"operationId":"consumeVirtualCurrency","summary":"查询代币余额并扣减已有代币","tags":["Payment"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyConsumeRequest"}}}},"security":[{"bearerAuth":[]}]}},"/payments/{orderNo}":{"get":{"operationId":"getPaymentOrder","summary":"查询当前用户的支付订单","tags":["Payment"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"orderNo","in":"path","required":true,"description":"商户订单号","schema":{"type":"string"}}]}},"/users/me":{"get":{"operationId":"getCurrentBusinessUser","summary":"获取当前业务用户资料","tags":["User"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"updateCurrentBusinessUser","summary":"修改当前业务用户资料","tags":["User"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdateRequest"}}}},"security":[{"bearerAuth":[]}]}},"/users/me/password":{"put":{"operationId":"changeCurrentBusinessUserPassword","summary":"修改当前业务用户密码","tags":["User"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordChangeResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordChangeRequest"}}}},"security":[{"bearerAuth":[]}]}},"/users/me/avatar":{"post":{"operationId":"uploadCurrentBusinessUserAvatar","summary":"上传当前业务用户头像","tags":["User"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvatarUploadResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"JPG、PNG、GIF 或 WEBP 图片"}}}}}}}},"/service/config":{"get":{"operationId":"getServiceConfig","summary":"获取客服入口配置","tags":["Service"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceConfigResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/service/feedbacks":{"post":{"operationId":"createServiceFeedback","summary":"提交客服留言","tags":["Service"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceFeedbackResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceFeedbackRequest"}}}},"security":[{"bearerAuth":[]}]}},"/service/session":{"get":{"operationId":"openServiceSession","summary":"打开客服会话","tags":["Service"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceSessionResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/service/messages":{"get":{"operationId":"listServiceMessages","summary":"读取客服消息","tags":["Service"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceMessageListResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"after_id","in":"query","required":false,"description":"从指定消息编号之后读取，0 表示读取当前会话历史","schema":{"type":"integer","minimum":0,"default":0}}]},"post":{"operationId":"sendServiceMessage","summary":"发送客服消息","tags":["Service"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceSendMessageResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"手机号或微信身份已绑定其他业务账号","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceMessageRequest"}}}},"security":[{"bearerAuth":[]}]}},"/recycle/bootstrap":{"get":{"operationId":"getBootstrap","summary":"获取回收业务公开配置","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleBootstrapResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/recycle/identity":{"get":{"operationId":"getIdentity","summary":"获取当前用户业务身份","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleIdentityResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/recycle/addresses":{"get":{"operationId":"listAddresses","summary":"查询当前用户回收地址","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleAddressListResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"createAddress","summary":"新增当前用户回收地址","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleAddressResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleAddressCreateRequest"}}}},"security":[{"bearerAuth":[]}]}},"/recycle/addresses/{id}":{"put":{"operationId":"updateAddress","summary":"修改当前用户回收地址","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleAddressResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleAddressUpdateRequest"}}}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"业务记录编号","schema":{"type":"integer","format":"int64","minimum":1}}]},"delete":{"operationId":"deleteAddress","summary":"删除当前用户回收地址","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"业务记录编号","schema":{"type":"integer","format":"int64","minimum":1}}]}},"/recycle/orders":{"get":{"operationId":"listOrders","summary":"分页查询回收订单","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleOrderListResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"role","in":"query","required":false,"description":"当前身份或接单大厅视角","schema":{"type":"string","enum":["user","recycler","hall"],"default":"user"}},{"name":"status","in":"query","required":false,"description":"订单状态","schema":{"type":"string","enum":["booked","accepted","arrived","quoted","paid","refunding","done","cancelled"]}},{"name":"statuses","in":"query","required":false,"description":"逗号分隔的多个订单状态；与 status 同时提供时按状态交集筛选","schema":{"type":"string","example":"paid,done"}},{"name":"current","in":"query","required":false,"description":"页码","schema":{"type":"integer","minimum":1,"default":1}},{"name":"size","in":"query","required":false,"description":"每页条数","schema":{"type":"integer","minimum":1,"default":20,"maximum":100}},{"name":"date_from","in":"query","required":false,"description":"开始日期（含）","schema":{"type":"string","format":"date"}},{"name":"date_to","in":"query","required":false,"description":"结束日期（含）","schema":{"type":"string","format":"date"}}]},"post":{"operationId":"createOrder","summary":"创建上门回收预约","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleOrderResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"幂等键已被不同请求内容使用","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleOrderCreateRequest"}}}},"security":[{"bearerAuth":[]}]}},"/recycle/orders/{id}":{"get":{"operationId":"getOrderDetail","summary":"获取回收订单详情","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleOrderResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"业务记录编号","schema":{"type":"integer","format":"int64","minimum":1}},{"name":"role","in":"query","required":false,"description":"查看身份","schema":{"type":"string","enum":["user","recycler"],"default":"user"}}]}},"/recycle/orders/{id}/actions/{action}":{"post":{"operationId":"orderAction","summary":"执行回收订单动作","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleOrderActionResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleOrderActionRequest"}}}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"业务记录编号","schema":{"type":"integer","format":"int64","minimum":1}},{"name":"action","in":"path","required":true,"description":"订单动作","schema":{"type":"string","enum":["accept","arrive","quote","cancel","confirm","pay"]}}]}},"/recycle/recycler-application":{"post":{"operationId":"applyRecycler","summary":"提交回收员入驻申请","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleRecyclerProfileResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleRecyclerApplicationRequest"}}}},"security":[{"bearerAuth":[]}]}},"/recycle/recycler-profile":{"put":{"operationId":"updateRecyclerProfile","summary":"修改回收员联系电话","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleRecyclerProfileResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleRecyclerProfileRequest"}}}},"security":[{"bearerAuth":[]}]}},"/recycle/verification-photos":{"post":{"operationId":"uploadVerificationPhoto","summary":"上传回收员实名认证材料","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleVerificationPhotoResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file","side"],"properties":{"file":{"type":"string","format":"binary","description":"JPG、PNG 或 WEBP 图片"},"side":{"type":"string","enum":["front","back"]}}}}}}}},"/recycle/verification-photos/{id}":{"get":{"operationId":"getVerificationPhoto","summary":"读取本人上传的实名认证图片","tags":["Recycle"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"本人上传的实名认证图片","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/png":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"当前账号无权读取该图片","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"业务记录编号","schema":{"type":"integer","format":"int64","minimum":1}}]}},"/recycle/join-payment":{"post":{"operationId":"createJoinPayment","summary":"创建回收员入驻费支付订单","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleJoinPaymentRequest"}}}},"security":[{"bearerAuth":[]}]}},"/recycle/agent-application":{"post":{"operationId":"applyAgent","summary":"提交城市代理申请","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleIdentityResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleAgentApplicationRequest"}}}},"security":[{"bearerAuth":[]}]}},"/recycle/agent-dashboard":{"get":{"operationId":"getAgentDashboard","summary":"获取城市代理工作台数据","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleAgentDashboardResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"current","in":"query","required":false,"description":"代理收益流水页码","schema":{"type":"integer","minimum":1,"default":1}},{"name":"size","in":"query","required":false,"description":"每页收益流水条数","schema":{"type":"integer","minimum":1,"default":20,"maximum":100}},{"name":"date_from","in":"query","required":false,"description":"开始日期（含）","schema":{"type":"string","format":"date"}},{"name":"date_to","in":"query","required":false,"description":"结束日期（含）","schema":{"type":"string","format":"date"}}]}},"/recycle/wallet":{"get":{"operationId":"getWallet","summary":"获取用户或代理钱包","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleWalletResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"owner_type","in":"query","required":false,"description":"钱包归属","schema":{"type":"string","enum":["user","agent"],"default":"user"}},{"name":"current","in":"query","required":false,"description":"账本和提现记录页码","schema":{"type":"integer","minimum":1,"default":1}},{"name":"size","in":"query","required":false,"description":"账本和提现记录每页条数","schema":{"type":"integer","minimum":1,"default":20,"maximum":100}},{"name":"date_from","in":"query","required":false,"description":"开始日期（含）","schema":{"type":"string","format":"date"}},{"name":"date_to","in":"query","required":false,"description":"结束日期（含）","schema":{"type":"string","format":"date"}}]}},"/recycle/withdrawals":{"post":{"operationId":"createWithdrawal","summary":"申请提现","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleWithdrawalResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"幂等键已被不同请求内容使用","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecycleWithdrawalCreateRequest"}}}},"security":[{"bearerAuth":[]}]}},"/recycle/photos":{"post":{"operationId":"uploadPhoto","summary":"上传回收凭证图片","tags":["Recycle"],"responses":{"200":{"description":"请求成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecyclePhotoResponse"}}}},"400":{"description":"参数或业务校验失败","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"服务器内部错误","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"访问令牌无效或已过期","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"JPG、PNG、GIF 或 WEBP 图片"}}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"opaque"}},"schemas":{"ErrorResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"null"}}},"ActionResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":["object","null"]}}},"HealthResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["application","service","version","status","time"],"properties":{"application":{"type":"string","example":"api"},"service":{"type":"string","example":"jiujue-api"},"version":{"type":"string","example":"v1"},"status":{"type":"string","example":"ok"},"time":{"type":"string","format":"date-time"}}}}},"CityOption":{"type":"object","required":["id","parent_id","name","level"],"properties":{"id":{"type":"integer","description":"地区编号"},"parent_id":{"type":"integer","description":"上级地区编号，省份为 0"},"name":{"type":"string","description":"地区名称"},"area_code":{"type":["string","null"],"description":"行政区划代码"},"level":{"type":"integer","description":"层级，1 为省，2 为市"}}},"CityListResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"array","items":{"$ref":"#/components/schemas/CityOption"}}}},"PublicConfigResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["site","maintenance","protocols","auth_options"],"properties":{"site":{"$ref":"#/components/schemas/SiteConfig"},"maintenance":{"$ref":"#/components/schemas/MaintenanceConfig"},"protocols":{"type":"array","items":{"$ref":"#/components/schemas/ProtocolSummary"}},"auth_options":{"$ref":"#/components/schemas/AuthOptions"}}}}},"AuthOptions":{"type":"object","required":["sms_enabled","wechat_mp_enabled","wechat_mp_phone_enabled","wechat_oa_oauth_enabled"],"properties":{"sms_enabled":{"type":"boolean","description":"后台选择的短信驱动及必要凭证、模板已就绪"},"wechat_mp_enabled":{"type":"boolean","description":"小程序 AppID 和 AppSecret 已填写"},"wechat_mp_phone_enabled":{"type":"boolean","description":"小程序手机号授权调用所需凭证已填写"},"wechat_oa_oauth_enabled":{"type":"boolean","description":"公众号 AppID、AppSecret 和安全回调地址已配置"}}},"ProtocolResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"$ref":"#/components/schemas/ProtocolDetail"}}},"AuthResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"$ref":"#/components/schemas/AuthPayload"}}},"WechatLoginResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"oneOf":[{"$ref":"#/components/schemas/AuthPayload"},{"$ref":"#/components/schemas/WechatPhoneRequired"}]}}},"WechatOAuthStartResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["authorization_url","state","state_verifier","expires_in"],"properties":{"authorization_url":{"type":"string","format":"uri","description":"使用已配置公众号回调地址的微信 OAuth URL"},"state":{"type":"string","description":"微信回传的随机状态，前端还应与 sessionStorage 对比"},"state_verifier":{"type":"string","description":"只保存于当前浏览器 sessionStorage，不得放到授权 URL"},"expires_in":{"type":"integer","const":300}}}}},"WechatPhoneRequired":{"type":"object","required":["status","login_ticket","expires_in"],"properties":{"status":{"type":"string","const":"phone_required"},"login_ticket":{"type":"string","description":"5 分钟内单次使用的手机号验证票据"},"expires_in":{"type":"integer","const":300}}},"ProfileResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"$ref":"#/components/schemas/BusinessUserProfile"}}},"AvatarUploadResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"头像公开地址"}}}}},"PasswordChangeResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["require_relogin"],"properties":{"require_relogin":{"type":"boolean","example":true}}}}},"LoginRequest":{"type":"object","required":["account","password"],"properties":{"account":{"type":"string","maxLength":128,"description":"用户名、手机号或邮箱"},"password":{"type":"string","format":"password","maxLength":72},"client_type":{"type":"string","enum":["web","h5","ios","android","miniapp"],"default":"h5"},"device_id":{"type":["string","null"],"maxLength":191}}},"SmsCodeRequest":{"type":"object","required":["phone","scene"],"properties":{"phone":{"type":"string","maxLength":32,"description":"手机号"},"scene":{"type":"string","enum":["register","login","reset_password","bind_phone","wechat_bind"]}}},"SmsCodeResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["expire_seconds","interval_seconds"],"properties":{"expire_seconds":{"type":"integer","example":300},"interval_seconds":{"type":"integer","example":60}}}}},"RegisterRequest":{"type":"object","required":["phone","code","password"],"properties":{"phone":{"type":"string","maxLength":32},"code":{"type":"string","minLength":4,"maxLength":8},"password":{"type":"string","format":"password","minLength":8,"maxLength":72},"client_type":{"type":"string","enum":["web","h5","ios","android","miniapp"],"default":"h5"},"device_id":{"type":["string","null"],"maxLength":191}}},"SmsLoginRequest":{"type":"object","required":["phone","code"],"properties":{"phone":{"type":"string","maxLength":32},"code":{"type":"string","minLength":4,"maxLength":8},"client_type":{"type":"string","enum":["web","h5","ios","android","miniapp"],"default":"h5"},"device_id":{"type":["string","null"],"maxLength":191}}},"WechatLoginRequest":{"type":"object","required":["code"],"properties":{"code":{"type":"string","description":"微信授权码"},"scene":{"type":"string","enum":["miniapp","oa"],"default":"miniapp"},"client_type":{"type":"string","enum":["web","h5","ios","android","miniapp"],"default":"miniapp"},"device_id":{"type":["string","null"],"maxLength":191},"state":{"type":"string","description":"公众号 OAuth 回传 state，scene=oa 时必填"},"state_verifier":{"type":"string","description":"公众号 OAuth 开始时返回并保存在 sessionStorage 的 verifier，scene=oa 时必填"}}},"WechatPhoneLoginRequest":{"type":"object","required":["login_ticket","phone_code"],"properties":{"login_ticket":{"type":"string","minLength":64,"maxLength":64},"phone_code":{"type":"string","minLength":1,"maxLength":512,"description":"wx.getPhoneNumber 返回的临时 code"},"client_type":{"type":"string","enum":["web","h5","ios","android","miniapp"],"default":"miniapp"},"device_id":{"type":["string","null"],"maxLength":191}}},"WechatOaCompleteRequest":{"type":"object","required":["login_ticket","phone","code"],"properties":{"login_ticket":{"type":"string","minLength":64,"maxLength":64},"phone":{"type":"string","maxLength":32},"code":{"type":"string","minLength":4,"maxLength":8,"description":"scene=wechat_bind 的短信验证码"},"device_id":{"type":["string","null"],"maxLength":191}}},"PhoneBindRequest":{"type":"object","required":["phone","code"],"properties":{"phone":{"type":"string","maxLength":32},"code":{"type":"string","minLength":4,"maxLength":8,"description":"scene=bind_phone 的短信验证码"}}},"WechatPhoneBindRequest":{"type":"object","required":["phone_code"],"properties":{"phone_code":{"type":"string","minLength":1,"maxLength":512,"description":"wx.getPhoneNumber 返回的临时 code"}}},"WechatIdentityLinkRequest":{"type":"object","required":["code","scene"],"properties":{"code":{"type":"string","maxLength":512},"scene":{"type":"string","enum":["mp","oa"]},"state":{"type":"string","description":"公众号授权回传状态，scene=oa 时必填"},"state_verifier":{"type":"string","description":"公众号授权 state verifier，scene=oa 时必填"}}},"WechatIdentityLinkResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["linked","scene"],"properties":{"linked":{"type":"boolean","const":true},"scene":{"type":"string","enum":["mp","oa"]}}}}},"ResetPasswordRequest":{"type":"object","required":["phone","code","password"],"properties":{"phone":{"type":"string","maxLength":32},"code":{"type":"string","minLength":4,"maxLength":8},"password":{"type":"string","format":"password","minLength":8,"maxLength":72}}},"PaymentCreateRequest":{"type":"object","required":["channel","amount"],"properties":{"channel":{"type":"string","enum":["wechat","alipay","lishoutong","wechat_virtual","newpay"]},"amount":{"type":"number","minimum":0.01},"subject":{"type":"string","maxLength":128},"trade_type":{"type":"string","maxLength":32},"openid":{"type":"string","maxLength":64},"session_key":{"type":"string","maxLength":128},"client_type":{"type":"string","enum":["web","h5","ios","android","miniapp"],"default":"h5"},"return_url":{"type":"string","maxLength":500}}},"CurrencyConsumeRequest":{"type":"object","required":["amount"],"properties":{"amount":{"type":"integer","minimum":1,"description":"消耗的代币数量"},"subject":{"type":"string","maxLength":128},"product_id":{"type":"string","maxLength":64},"client_type":{"type":"string","enum":["web","h5","ios","android","miniapp"],"default":"miniapp"}}},"PaymentOrderResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"$ref":"#/components/schemas/PaymentOrder"}}},"PaymentOrder":{"type":"object","required":["order_no","channel","amount","status"],"properties":{"id":{"type":"integer","format":"int64"},"order_no":{"type":"string"},"channel":{"type":"string"},"trade_type":{"type":"string"},"subject":{"type":"string"},"amount":{"type":"string"},"status":{"type":"integer","enum":[0,1,2,3]},"trade_no":{"type":["string","null"]},"prepay":{"type":"object","additionalProperties":true},"paid_at":{"type":["string","null"],"format":"date-time"},"client_type":{"type":"string"}}},"RefreshRequest":{"type":"object","required":["refresh_token"],"properties":{"refresh_token":{"type":"string","minLength":1}}},"ProfileUpdateRequest":{"type":"object","properties":{"nickname":{"type":"string","maxLength":64},"real_name":{"type":["string","null"],"maxLength":64},"avatar":{"type":["string","null"],"maxLength":1000},"gender":{"type":"integer","enum":[0,1,2]},"birthday":{"type":["string","null"],"format":"date"},"email":{"type":["string","null"],"format":"email","maxLength":128},"country":{"type":["string","null"],"maxLength":64},"province":{"type":["string","null"],"maxLength":64},"city":{"type":["string","null"],"maxLength":64},"address":{"type":["string","null"],"maxLength":500}}},"PasswordChangeRequest":{"type":"object","required":["current_password","new_password"],"properties":{"current_password":{"type":"string","format":"password","maxLength":72},"new_password":{"type":"string","format":"password","minLength":8,"maxLength":72}}},"AuthPayload":{"type":"object","required":["token_type","access_token","refresh_token","expires_at","refresh_expires_at","user"],"properties":{"token_type":{"type":"string","example":"Bearer"},"access_token":{"type":"string"},"refresh_token":{"type":"string"},"expires_at":{"type":"string","format":"date-time"},"refresh_expires_at":{"type":"string","format":"date-time"},"user":{"$ref":"#/components/schemas/BusinessUserProfile"}}},"BusinessUserProfile":{"type":"object","required":["id","user_no","nickname","gender","status","level","vip_level","points","balance","frozen_balance","source","login_count"],"properties":{"id":{"type":"integer","format":"int64"},"user_no":{"type":"string"},"username":{"type":["string","null"]},"nickname":{"type":"string"},"real_name":{"type":["string","null"]},"avatar":{"type":["string","null"]},"gender":{"type":"integer","enum":[0,1,2]},"birthday":{"type":["string","null"],"format":"date"},"email":{"type":["string","null"]},"phone":{"type":["string","null"]},"country":{"type":["string","null"]},"province":{"type":["string","null"]},"city":{"type":["string","null"]},"address":{"type":["string","null"]},"status":{"type":"integer"},"level":{"type":"integer"},"vip_level":{"type":"integer"},"vip_expired_at":{"type":["string","null"],"format":"date-time"},"points":{"type":"integer","format":"int64"},"balance":{"type":"string"},"frozen_balance":{"type":"string"},"source":{"type":"string"},"register_channel":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"},"last_login_at":{"type":["string","null"],"format":"date-time"},"last_login_ip":{"type":["string","null"]},"last_active_at":{"type":["string","null"],"format":"date-time"},"login_count":{"type":"integer","format":"int64"}}},"SiteConfig":{"type":"object","required":["enabled","name","url","logo","icon","contact_phone","contact_email","record_no","copyright"],"properties":{"enabled":{"type":"boolean"},"name":{"type":"string"},"url":{"type":"string"},"logo":{"type":"string"},"icon":{"type":"string"},"contact_phone":{"type":"string"},"contact_email":{"type":"string"},"record_no":{"type":"string"},"copyright":{"type":"string"}}},"MaintenanceConfig":{"type":"object","required":["enabled","message"],"properties":{"enabled":{"type":"boolean"},"message":{"type":"string"}}},"ProtocolSummary":{"type":"object","required":["type","title"],"properties":{"type":{"type":"string"},"title":{"type":"string"}}},"ProtocolDetail":{"type":"object","required":["type","title","content"],"properties":{"type":{"type":"string"},"title":{"type":"string"},"content":{"type":"string","description":"已执行安全过滤的 HTML"}}},"ServiceConfigResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"$ref":"#/components/schemas/ServiceConfig"}}},"ServiceConfig":{"type":"object","required":["contact_type","phone","link","feedback","online"],"properties":{"contact_type":{"type":"string","enum":["system","phone","link"]},"phone":{"type":"string"},"link":{"type":"string"},"feedback":{"type":"string"},"online":{"type":"boolean"}}},"ServiceFeedbackRequest":{"type":"object","required":["content"],"properties":{"nickname":{"type":"string"},"phone":{"type":"string"},"content":{"type":"string"}}},"ServiceFeedbackResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["id","content","status"],"properties":{"id":{"type":"integer"},"content":{"type":"string"},"status":{"type":"integer"}}}}},"ServiceSessionResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["session","config"],"properties":{"session":{"anyOf":[{"$ref":"#/components/schemas/ServiceSessionState"},{"type":"null"}]},"config":{"$ref":"#/components/schemas/ServiceConfig"}}}}},"ServiceSessionState":{"type":"object","required":["id","agent_id","user_id","nickname","avatar","last_message","last_message_type","unread_count","user_unread_count","updated_at"],"properties":{"id":{"type":"integer","format":"int64"},"agent_id":{"type":"integer","format":"int64"},"user_id":{"type":"integer","format":"int64"},"nickname":{"type":"string"},"avatar":{"type":"string"},"last_message":{"type":"string"},"last_message_type":{"type":"string","enum":["text","image","emoji"]},"unread_count":{"type":"integer","minimum":0},"user_unread_count":{"type":"integer","minimum":0},"updated_at":{"type":"string","format":"date-time"}}},"ServiceMessageListResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["records","session"],"properties":{"records":{"type":"array","items":{"$ref":"#/components/schemas/ServiceMessageRecord"}},"session":{"anyOf":[{"$ref":"#/components/schemas/ServiceSessionState"},{"type":"null"}]}}}}},"ServiceMessageRecord":{"type":"object","required":["id","session_id","sender_type","sender_id","message_type","content","created_at"],"properties":{"id":{"type":"integer","format":"int64"},"session_id":{"type":"integer","format":"int64"},"sender_type":{"type":"string","enum":["user","agent","system"]},"sender_id":{"type":"integer","format":"int64"},"message_type":{"type":"string","enum":["text","image","emoji"]},"content":{"type":"string"},"created_at":{"type":"string","format":"date-time"}}},"ServiceMessageRequest":{"type":"object","required":["content"],"properties":{"message_type":{"type":"string","enum":["text","image","emoji"]},"content":{"type":"string"}}},"ServiceSendMessageResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["message"],"properties":{"message":{"$ref":"#/components/schemas/ServiceMessageRecord"},"auto_reply":{"anyOf":[{"$ref":"#/components/schemas/ServiceMessageRecord"},{"type":"null"}]}}}}},"RecycleBootstrapResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["categories","banners","areas","settings"],"properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/RecycleCategory"}},"banners":{"type":"array","items":{"$ref":"#/components/schemas/RecycleBanner"}},"areas":{"type":"array","items":{"$ref":"#/components/schemas/RecycleArea"}},"settings":{"$ref":"#/components/schemas/RecycleSettings"}}}}},"RecycleIdentityResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"$ref":"#/components/schemas/RecycleIdentity"}}},"RecycleIdentity":{"type":"object","required":["available_roles","recycler","agent"],"properties":{"available_roles":{"type":"array","items":{"type":"string","enum":["user","recycler","agent"]}},"recycler":{"anyOf":[{"$ref":"#/components/schemas/RecycleRecyclerProfile"},{"type":"null"}]},"agent":{"type":["object","null"],"additionalProperties":true}}},"RecycleRecyclerProfile":{"type":"object","required":["id","user_id","real_name","phone","city_id","district","status","reason","join_fee","fee_paid","id_number_masked","consent_at","has_verification","created_at","updated_at"],"properties":{"id":{"type":"integer","format":"int64"},"user_id":{"type":"integer","format":"int64"},"real_name":{"type":"string"},"phone":{"type":"string"},"city_id":{"type":"integer","format":"int64"},"district":{"type":["string","null"]},"status":{"type":"string","enum":["pending","approved","rejected","suspended"]},"reason":{"type":["string","null"]},"join_fee":{"type":"string","description":"入驻费，元"},"fee_paid":{"type":"boolean"},"id_number_masked":{"type":["string","null"]},"consent_at":{"type":["string","null"],"format":"date-time"},"has_verification":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"RecycleAddress":{"type":"object","required":["id","contact_name","phone","city_id","district","address","is_default"],"properties":{"id":{"type":"integer","format":"int64"},"contact_name":{"type":"string"},"phone":{"type":"string"},"city_id":{"type":"integer","format":"int64"},"district":{"type":"string"},"address":{"type":"string"},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]},"is_default":{"type":"boolean"}}},"RecycleAddressListResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"array","items":{"$ref":"#/components/schemas/RecycleAddress"}}}},"RecycleAddressResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"$ref":"#/components/schemas/RecycleAddress"}}},"RecycleAddressCreateRequest":{"type":"object","required":["contact_name","phone","city_id","district","address"],"properties":{"contact_name":{"type":"string","maxLength":64},"phone":{"type":"string","maxLength":32},"city_id":{"type":"integer","format":"int64","minimum":1},"district":{"type":"string","maxLength":64},"address":{"type":"string","maxLength":500},"latitude":{"type":["number","null"],"minimum":-90,"maximum":90},"longitude":{"type":["number","null"],"minimum":-180,"maximum":180},"is_default":{"type":"boolean"}}},"RecycleAddressUpdateRequest":{"type":"object","properties":{"contact_name":{"type":"string","maxLength":64},"phone":{"type":"string","maxLength":32},"city_id":{"type":"integer","format":"int64","minimum":1},"district":{"type":"string","maxLength":64},"address":{"type":"string","maxLength":500},"latitude":{"type":["number","null"],"minimum":-90,"maximum":90},"longitude":{"type":["number","null"],"minimum":-180,"maximum":180},"is_default":{"type":"boolean"}}},"RecycleOrder":{"type":"object","required":["id","order_no","status","total_amount","service_fee","net_amount","commission_rate","items","events","photos","payment_order_no"],"properties":{"id":{"type":"integer","format":"int64"},"order_no":{"type":"string"},"status":{"type":"string","enum":["booked","accepted","arrived","quoted","paid","refunding","done","cancelled"]},"read_only":{"type":"boolean","description":"停用或未开通身份可只读查看关联历史订单"},"city_id":{"type":"integer","format":"int64"},"address":{"$ref":"#/components/schemas/RecycleAddress"},"date":{"type":"string","format":"date"},"slot":{"type":"string"},"remark":{"type":["string","null"]},"is_free_gift":{"type":"boolean"},"total_amount":{"type":"string","description":"成交总金额，元"},"service_fee":{"type":"string","description":"平台服务费，元"},"net_amount":{"type":"string","description":"回收员应收净额，元"},"commission_rate":{"type":"string","description":"订单创建时的代理费率快照"},"items":{"type":"array","items":{"$ref":"#/components/schemas/RecycleOrderItem"}},"events":{"type":"array","items":{"$ref":"#/components/schemas/RecycleOrderEvent"}},"photos":{"type":"array","items":{"$ref":"#/components/schemas/RecyclePhoto"}},"payment_order_no":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"}}},"RecycleOrderItem":{"type":"object","required":["id","category_id","estimated_weight"],"properties":{"id":{"type":"integer","format":"int64"},"category_id":{"type":"integer","format":"int64"},"category_name":{"type":"string"},"estimated_weight":{"type":"number","description":"估算重量，kg"},"actual_weight":{"type":["number","null"],"description":"实际重量，kg"},"unit_price":{"type":["string","null"],"description":"单价，元/kg"},"amount":{"type":["string","null"],"description":"金额，元"}}},"RecycleOrderEvent":{"type":"object","required":["id","action","from_status","to_status","actor_type","actor_id","note","created_at"],"properties":{"id":{"type":"integer","format":"int64"},"action":{"type":"string"},"from_status":{"type":"string"},"to_status":{"type":"string"},"actor_type":{"type":"string"},"actor_id":{"type":"integer"},"note":{"type":"string"},"created_at":{"type":"string","format":"date-time"}}},"RecycleOrderListResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"$ref":"#/components/schemas/RecycleOrderPage"}}},"RecycleOrderPage":{"type":"object","required":["records","current","size","total","summary"],"properties":{"records":{"type":"array","items":{"$ref":"#/components/schemas/RecycleOrder"}},"current":{"type":"integer","minimum":1},"size":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"summary":{"$ref":"#/components/schemas/RecycleOrderSummary"}}},"RecycleOrderSummary":{"type":"object","required":["count","total_amount","net_amount"],"properties":{"count":{"type":"integer","minimum":0,"description":"全部筛选结果中的订单数"},"total_amount":{"type":"string","description":"筛选结果货款合计，元"},"net_amount":{"type":"string","description":"已确认交付订单净到账合计，元"}}},"RecycleOrderResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"$ref":"#/components/schemas/RecycleOrder"}}},"RecycleOrderCreateRequest":{"type":"object","required":["address_id","date","slot","items"],"properties":{"request_key":{"type":"string","minLength":16,"maxLength":80,"pattern":"^[A-Za-z0-9_-]{16,80}$","description":"可选幂等键；相同键和请求体返回原结果"},"address_id":{"type":"integer","format":"int64","minimum":1},"date":{"type":"string","format":"date"},"slot":{"type":"string","maxLength":64},"remark":{"type":["string","null"],"maxLength":1000},"is_free_gift":{"type":"boolean","default":false},"items":{"type":"array","minItems":1,"items":{"type":"object","required":["category_id","estimated_weight"],"properties":{"category_id":{"type":"integer","format":"int64"},"estimated_weight":{"type":"number","exclusiveMinimum":0,"description":"估算重量，kg"}}}}}},"RecycleOrderActionRequest":{"oneOf":[{"$ref":"#/components/schemas/RecycleArriveRequest"},{"$ref":"#/components/schemas/RecycleQuoteRequest"},{"$ref":"#/components/schemas/RecyclePayRequest"},{"$ref":"#/components/schemas/RecycleReasonRequest"}]},"RecycleArriveRequest":{"type":"object","required":["photo_ids"],"properties":{"photo_ids":{"type":"array","minItems":1,"items":{"type":"integer","format":"int64"}}}},"RecycleQuoteRequest":{"type":"object","required":["items"],"properties":{"items":{"type":"array","minItems":1,"items":{"type":"object","required":["id","actual_weight","unit_price"],"properties":{"id":{"type":"integer","format":"int64"},"actual_weight":{"type":"number","exclusiveMinimum":0,"description":"实际重量，kg"},"unit_price":{"type":"number","minimum":0,"description":"单价，元/kg"}}}}}},"RecyclePayRequest":{"type":"object","required":["channel"],"properties":{"channel":{"type":"string","enum":["wechat","alipay","lishoutong","newpay"]},"client_type":{"type":"string","enum":["web","h5","ios","android","miniapp"]},"trade_type":{"type":"string","maxLength":32},"return_url":{"type":"string","maxLength":500}}},"RecycleReasonRequest":{"type":"object","properties":{"reason":{"type":"string","maxLength":500}}},"RecycleOrderActionResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"oneOf":[{"$ref":"#/components/schemas/RecycleOrder"},{"$ref":"#/components/schemas/PaymentOrder"}]}}},"RecycleRecyclerApplicationRequest":{"type":"object","required":["real_name","phone","city_id","id_number","front_photo_id","back_photo_id","consent"],"properties":{"real_name":{"type":"string","minLength":2,"maxLength":64},"phone":{"type":"string","maxLength":32},"city_id":{"type":"integer","format":"int64","minimum":1},"district":{"type":["string","null"],"maxLength":64},"remark":{"type":["string","null"],"maxLength":500},"id_number":{"type":"string","minLength":15,"maxLength":18,"writeOnly":true},"front_photo_id":{"type":"integer","format":"int64","minimum":1},"back_photo_id":{"type":"integer","format":"int64","minimum":1},"consent":{"type":"boolean","const":true,"description":"确认同意回收员实名认证与服务条款"}}},"RecycleAgentApplicationRequest":{"type":"object","required":["real_name","phone","city_id"],"properties":{"real_name":{"type":"string","minLength":2,"maxLength":64},"phone":{"type":"string","maxLength":32},"city_id":{"type":"integer","format":"int64","minimum":1},"district":{"type":["string","null"],"maxLength":64},"remark":{"type":["string","null"],"maxLength":500}}},"RecycleRecyclerProfileRequest":{"type":"object","required":["phone"],"properties":{"phone":{"type":"string","minLength":6,"maxLength":32},"real_name":{"type":"string","minLength":2,"maxLength":64,"description":"仅允许提交与现实名相同的值，不能自行修改实名"}}},"RecycleRecyclerProfileResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"$ref":"#/components/schemas/RecycleRecyclerProfile"}}},"RecycleVerificationPhoto":{"type":"object","required":["id","side","uploaded_at"],"properties":{"id":{"type":"integer","format":"int64"},"side":{"type":"string","enum":["front","back"]},"uploaded_at":{"type":"string","format":"date-time"}}},"RecycleVerificationPhotoResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"$ref":"#/components/schemas/RecycleVerificationPhoto"}}},"RecycleJoinPaymentRequest":{"type":"object","required":["channel"],"properties":{"channel":{"type":"string","enum":["wechat","alipay","lishoutong","newpay"]},"client_type":{"type":"string","enum":["web","h5","ios","android","miniapp"]},"trade_type":{"type":"string","maxLength":32},"return_url":{"type":"string","maxLength":500}}},"RecycleAgentDashboardResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["agent","city_name","balance","frozen_balance","commission_income","join_fee_income","total_income","recycler_count","order_count","ledgers"],"properties":{"agent":{"type":"object","additionalProperties":true},"city_name":{"type":"string"},"balance":{"type":"string"},"frozen_balance":{"type":"string"},"commission_income":{"type":"string","description":"分润收入，元"},"join_fee_income":{"type":"string","description":"入驻费收入，元"},"total_income":{"type":"string","description":"以上收入合计，元"},"recycler_count":{"type":"integer"},"order_count":{"type":"integer"},"ledgers":{"$ref":"#/components/schemas/RecycleLedgerPage"}}}}},"RecycleWalletResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"type":"object","required":["owner_type","balance","frozen_balance","summary","ledgers","withdrawals"],"properties":{"owner_type":{"type":"string","enum":["user","agent"]},"balance":{"type":"string","description":"可用余额，元"},"frozen_balance":{"type":"string","description":"冻结余额，元"},"summary":{"$ref":"#/components/schemas/RecycleWalletSummary"},"ledgers":{"$ref":"#/components/schemas/RecycleLedgerPage"},"withdrawals":{"$ref":"#/components/schemas/RecycleWithdrawalPage"}}}}},"RecycleWalletSummary":{"type":"object","required":["total_income","total_withdrawn","pending_withdrawal","completed_orders"],"properties":{"total_income":{"type":"string","description":"钱包收入合计，元"},"total_withdrawn":{"type":"string","description":"已打款提现合计，元"},"pending_withdrawal":{"type":"string","description":"处理中提现金额，元"},"completed_orders":{"type":"integer","minimum":0}}},"RecycleLedgerPage":{"type":"object","required":["records","current","size","total"],"properties":{"records":{"type":"array","items":{"$ref":"#/components/schemas/RecycleLedger"}},"current":{"type":"integer","minimum":1},"size":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0}}},"RecycleLedger":{"type":"object","required":["id","owner_type","owner_id","business_key","kind","amount","frozen_amount","balance_after","frozen_after","note","created_at"],"properties":{"id":{"type":"integer","format":"int64"},"owner_type":{"type":"string","enum":["user","agent","platform"]},"owner_id":{"type":"integer","format":"int64"},"business_key":{"type":"string"},"kind":{"type":"string","enum":["escrow","settlement","commission","join","withdraw","refund"]},"amount":{"type":"string"},"frozen_amount":{"type":"string"},"balance_after":{"type":"string"},"frozen_after":{"type":"string"},"note":{"type":"string"},"created_at":{"type":"string","format":"date-time"}}},"RecycleWithdrawalPage":{"type":"object","required":["records","current","size","total"],"properties":{"records":{"type":"array","items":{"$ref":"#/components/schemas/RecycleWithdrawal"}},"current":{"type":"integer","minimum":1},"size":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0}}},"RecycleWithdrawal":{"type":"object","required":["id","amount","channel","account","status","created_at"],"properties":{"id":{"type":"integer","format":"int64"},"amount":{"type":"string"},"channel":{"type":"string"},"account":{"type":"string"},"account_name":{"type":"string"},"status":{"type":"string","enum":["pending","approved","rejected","paid"]},"reference_no":{"type":["string","null"]},"reason":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"}}},"RecycleWithdrawalResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"$ref":"#/components/schemas/RecycleWithdrawal"}}},"RecycleWithdrawalCreateRequest":{"type":"object","required":["owner_type","amount","channel","account","account_name"],"properties":{"request_key":{"type":"string","minLength":16,"maxLength":80,"pattern":"^[A-Za-z0-9_-]{16,80}$","description":"可选幂等键；相同键和请求体返回原结果"},"owner_type":{"type":"string","enum":["user","agent"]},"amount":{"type":"number","exclusiveMinimum":0},"channel":{"type":"string","enum":["wechat","alipay","bank"]},"account":{"type":"string","maxLength":128},"account_name":{"type":"string","maxLength":64}}},"RecyclePhoto":{"type":"object","required":["id","url"],"properties":{"id":{"type":"integer","format":"int64"},"url":{"type":"string","format":"uri"}}},"RecyclePhotoResponse":{"type":"object","required":["code","msg","data"],"properties":{"code":{"type":"integer","example":200},"msg":{"type":"string","example":"ok"},"data":{"$ref":"#/components/schemas/RecyclePhoto"}}},"RecycleCategory":{"type":"object","required":["id","parent_id","name","short_name","hint","reference_price","min_weight","unit","sort","status","children"],"properties":{"id":{"type":"integer","format":"int64"},"parent_id":{"type":"integer","format":"int64"},"name":{"type":"string"},"short_name":{"type":"string","description":"适合移动端展示的简短名称，未配置时为空字符串"},"hint":{"type":"string","description":"品类说明，未配置时为空字符串"},"reference_price":{"type":["string","null"],"description":"元/kg；null 表示面议"},"min_weight":{"type":"string","description":"最小起收重量，kg"},"unit":{"type":"string","enum":["kg"]},"reject_note":{"type":["string","null"]},"sort":{"type":"integer"},"status":{"type":"integer","enum":[0,1]},"children":{"type":"array","items":{"$ref":"#/components/schemas/RecycleSubcategory"}}}},"RecycleSubcategory":{"type":"object","required":["id","parent_id","name","short_name","hint","reference_price","min_weight","unit","sort","status"],"properties":{"id":{"type":"integer","format":"int64"},"parent_id":{"type":"integer","format":"int64"},"name":{"type":"string"},"short_name":{"type":"string","description":"适合移动端展示的简短名称，未配置时为空字符串"},"hint":{"type":"string","description":"品类说明，未配置时为空字符串"},"reference_price":{"type":["string","null"],"description":"元/kg；null 表示面议"},"min_weight":{"type":"string","description":"最小起收重量，kg"},"unit":{"type":"string","enum":["kg"]},"reject_note":{"type":["string","null"]},"sort":{"type":"integer"},"status":{"type":"integer","enum":[0,1]}}},"RecycleBanner":{"type":"object","required":["id","title","image_url","scope","link_type","target_category_id","sort","status"],"properties":{"id":{"type":"integer","format":"int64"},"title":{"type":"string"},"image_url":{"type":"string"},"scope":{"type":"string","enum":["user","recycler","all"]},"link_type":{"type":"string","enum":["none","book","category","agent"]},"target_category_id":{"type":["integer","null"],"format":"int64"},"sort":{"type":"integer"},"status":{"type":"integer","enum":[0,1]}},"additionalProperties":true},"RecycleArea":{"type":"object","required":["id","city_id","name","city_name","slots_json","districts"],"properties":{"id":{"type":"integer","format":"int64"},"city_id":{"type":"integer","format":"int64"},"name":{"type":"string"},"city_name":{"type":"string","description":"行政城市名称，区别于可配置的服务区域展示名称；用于地图区域校验"},"slots_json":{"type":"array","items":{"type":"string"}},"districts":{"type":"array","items":{"$ref":"#/components/schemas/RecycleDistrict"}}}},"RecycleDistrict":{"type":"object","required":["id","name"],"properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}}},"RecycleSettings":{"type":"object","properties":{"commission_rate":{"type":"number","minimum":0,"maximum":1},"join_fee":{"type":"string"},"withdraw_min":{"type":"string"},"withdraw_max":{"type":"string"},"withdraw_daily_limit":{"type":"integer","minimum":1,"maximum":100},"booking_days":{"type":"integer"},"recycle_notice":{"type":"string"},"recycler_agreement":{"type":"string"},"service_phone":{"type":"string"},"about_us":{"type":"string","maxLength":10000},"user_agreement":{"type":"string","maxLength":10000},"privacy_policy":{"type":"string","maxLength":10000}},"additionalProperties":true}}},"x-jiujue-application":"docs"}