{ "openapi": "3.0.1", "info": { "title": "PC", "description": "家谱业务 APP/PC 用户侧接口文档,用于 Apifox 导入。\n\n导入方式:Apifox -> 导入 API 数据 -> OpenAPI/Swagger -> 选择本文件。\n\n约定:\n- APP 路径前缀为 `/genealogy/app`\n- PC/H5 路径前缀为 `/genealogy/pc`\n- 后台管理接口不包含在本文件内\n- 登录后接口需要携带 token,且请求 Header 需携带 `clientid`\n", "version": "1.0.0" }, "tags": [ { "name": "认证登录" }, { "name": "验证中心" }, { "name": "文件上传" }, { "name": "行政区划" }, { "name": "家族圈" } ], "paths": { "/genealogy/pc/auth/register": { "post": { "summary": "PC 用户注册", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordRegisterBody" }, "example": { "grantType": "password", "tenantId": "000000", "phone": "13800000000", "password": "e10adc3949ba59abbe56e057f20f883e", "nickName": "测试用户", "registerSource": "app", "validToken": "captcha-ticket-or-sms-token" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LoginResult", "description": "登录结果" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/auth/login": { "post": { "summary": "PC 密码登录", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordLoginBody" }, "example": { "grantType": "password", "tenantId": "000000", "phone": "13800000000", "password": "e10adc3949ba59abbe56e057f20f883e", "validToken": "captcha-ticket" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LoginResult", "description": "登录结果" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/auth/login/sms": { "post": { "summary": "PC 短信登录", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SmsLoginBody" }, "example": { "grantType": "sms", "tenantId": "000000", "phone": "13800000000", "smsCode": "123456", "validToken": "captcha-ticket" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LoginResult", "description": "登录结果" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/auth/sms/code": { "post": { "summary": "PC 发送短信验证码", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SmsCodeBody" }, "example": { "tenantId": "000000", "phone": "13800000000", "sceneCode": "WEB_H5_LOGIN", "validToken": "captcha-ticket" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/auth/profile": { "get": { "summary": "PC 当前用户资料", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken1": [] } ] }, "put": { "summary": "PC 修改用户资料", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProfileUpdateBody" }, "example": { "nickName": "张三", "avatarOssId": "2060000000000000000", "sex": "0", "birthday": "1990-01-01", "regionCode": "110101", "addressDetail": "北京市东城区" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/auth/password": { "put": { "summary": "PC 修改密码", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordChangeBody" }, "example": { "oldPassword": "e10adc3949ba59abbe56e057f20f883e", "newPassword": "25d55ad283aa400af464c76d713c07ad", "validToken": "captcha-ticket" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/auth/password/reset": { "put": { "summary": "PC 找回密码", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordResetBody" }, "example": { "tenantId": "000000", "phone": "13800000000", "smsCode": "123456", "newPassword": "25d55ad283aa400af464c76d713c07ad", "validToken": "captcha-ticket" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/auth/phone": { "put": { "summary": "PC 换绑手机号", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PhoneChangeBody" }, "example": { "newPhone": "13900000000", "smsCode": "123456", "validToken": "captcha-ticket" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/auth/account/deactivate": { "post": { "summary": "PC 注销账号", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccountDeactivateBody" }, "example": { "password": "e10adc3949ba59abbe56e057f20f883e", "reason": "user request" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/auth/logout": { "delete": { "summary": "PC 退出登录", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken1": [] } ] } }, "/captcha/require": { "get": { "summary": "查询当前场景是否需要验证", "deprecated": false, "description": "用于登录、注册、换绑手机等场景。按租户、客户端和场景编码匹配后台验证策略。", "tags": [ "验证中心" ], "parameters": [ { "name": "tenantId", "in": "query", "description": "租户ID,用于区分不同租户的数据和验证策略", "required": false, "example": "000000", "schema": { "type": "string" } }, { "name": "clientId", "in": "query", "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", "required": false, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } }, { "name": "sceneCode", "in": "query", "description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER", "required": true, "example": "WEB_H5_LOGIN", "schema": { "type": "string" } }, { "name": "subject", "in": "query", "description": "验证主体,通常为手机号、用户ID或登录账号", "required": false, "example": "13800000000", "schema": { "type": "string" } }, { "name": "clientid", "in": "header", "description": "客户端ID", "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string", "default": "ced7e5f0498645c6ec642dcf450b036f" } } ], "responses": { "200": { "$ref": "#/components/responses/VerificationRequireResult", "description": "验证需求查询结果" } }, "security": [ { "SaToken1": [] } ] } }, "/captcha/challenge": { "post": { "summary": "生成验证挑战", "deprecated": false, "description": "统一生成验证码。策略为天爱时返回行为验证数据;策略为系统图形时返回 uuid 和 img。", "tags": [ "验证中心" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID", "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string", "default": "ced7e5f0498645c6ec642dcf450b036f" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerificationChallengeBody" }, "example": { "tenantId": "000000", "clientId": "ced7e5f0498645c6ec642dcf450b036f", "sceneCode": "WEB_H5_LOGIN", "subject": "13800000000" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VerificationChallengeResult", "description": "验证挑战生成结果" } }, "security": [ { "SaToken1": [] } ] } }, "/captcha/verify": { "post": { "summary": "校验验证结果并换取 validToken", "deprecated": false, "description": "验证通过后返回 validToken,登录、注册、发短信等业务接口将 validToken 随请求体一起提交。", "tags": [ "验证中心" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID", "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string", "default": "ced7e5f0498645c6ec642dcf450b036f" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerificationCheckBody" }, "examples": { "tianai_behavior": { "value": { "tenantId": "000000", "clientId": "ced7e5f0498645c6ec642dcf450b036f", "sceneCode": "WEB_H5_LOGIN", "subject": "13800000000", "challengeId": "CAPTCHA_CHALLENGE_ID", "providerCode": "tianai", "captchaType": "SLIDER", "payload": { "track": { "bgImageWidth": 340, "bgImageHeight": 180, "templateImageWidth": 50, "templateImageHeight": 50, "startTime": 1720000000000, "stopTime": 1720000001500, "left": 120, "top": 0, "trackList": [ { "x": 0, "y": 0, "t": 0, "type": "down" }, { "x": 120, "y": 0, "t": 650, "type": "move" }, { "x": 120, "y": 0, "t": 700, "type": "up" } ] } } }, "summary": "天爱滑块/旋转/滑动还原/文字点选验证" }, "system_image": { "value": { "tenantId": "000000", "clientId": "ced7e5f0498645c6ec642dcf450b036f", "sceneCode": "WEB_H5_LOGIN", "subject": "13800000000", "challengeId": "CAPTCHA_CHALLENGE_ID", "providerCode": "ruoyi_image", "captchaType": "math", "payload": { "uuid": "captcha-uuid", "code": "6" } }, "summary": "系统图形验证码" } } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VerificationCheckResult", "description": "验证校验结果" } }, "security": [ { "SaToken1": [] } ] } }, "/auth/code": { "get": { "summary": "兼容旧系统图形验证码", "deprecated": false, "description": "老版后台登录图形验证码入口。新的 APP/PC 业务优先使用 /captcha/require + /captcha/challenge + /captcha/verify。", "tags": [ "验证中心" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID", "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string", "default": "ced7e5f0498645c6ec642dcf450b036f" } } ], "responses": { "200": { "$ref": "#/components/responses/LegacyCaptchaResult", "description": "兼容旧图形验证码结果" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/files/upload": { "post": { "summary": "PC 单文件上传", "deprecated": false, "description": "", "tags": [ "文件上传" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "file": { "type": "string", "format": "binary", "example": "" } }, "required": [ "file" ] }, "example": { "file": "" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/FileUploadResult", "description": "文件上传结果" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/files/resumable/init": { "post": { "summary": "PC 分片上传初始化", "deprecated": false, "description": "", "tags": [ "文件上传" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResumableInitBody" }, "example": { "fileName": "cover.jpg", "fileSize": 9532, "fileMd5": "d41d8cd98f00b204e9800998ecf8427e", "contentType": "image/jpeg", "chunkSize": 4194304, "totalChunks": 1, "bizType": "genealogy", "usageScene": "cover" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/files/resumable/chunk": { "post": { "summary": "PC 上传分片", "deprecated": false, "description": "", "tags": [ "文件上传" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "uploadId": { "type": "string", "example": "" }, "chunkIndex": { "type": "integer", "example": 0 }, "chunkMd5": { "type": "string", "example": "d41d8cd98f00b204e9800998ecf8427e" }, "file": { "type": "string", "format": "binary", "example": "" } }, "required": [ "uploadId", "chunkIndex", "chunkMd5", "file" ] }, "example": { "uploadId": "", "chunkIndex": 0, "chunkMd5": "d41d8cd98f00b204e9800998ecf8427e", "file": "" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/files/resumable/complete": { "post": { "summary": "PC 完成分片上传", "deprecated": false, "description": "", "tags": [ "文件上传" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResumableCompleteBody" }, "example": { "uploadId": "UPLOAD202607090001", "fileMd5": "d41d8cd98f00b204e9800998ecf8427e", "fileSize": 9532 } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/FileUploadResult", "description": "文件上传结果" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/files/reference": { "post": { "summary": "PC 绑定文件业务引用", "deprecated": false, "description": "", "tags": [ "文件上传" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileReferenceBody" }, "example": { "bizType": "family_feed", "bizName": "family feed image", "bizTable": "gen_family_feed", "bizId": 900013001, "bizField": "media_oss_ids", "ossId": "2060000000000000000", "usageScene": "feed_image" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken1": [] } ] }, "delete": { "summary": "PC 释放文件业务引用", "deprecated": false, "description": "", "tags": [ "文件上传" ], "parameters": [ { "name": "bizTable", "in": "query", "description": "业务表名,用于文件引用绑定", "required": true, "example": "gen_family_feed", "schema": { "type": "string" } }, { "name": "bizId", "in": "query", "description": "业务数据ID,用于文件引用绑定", "required": true, "example": 900013001, "schema": { "type": "integer", "format": "int64" } }, { "name": "bizField", "in": "query", "description": "业务字段名,例如avatar_oss_id、cover_oss_id", "required": true, "example": "media_ids", "schema": { "type": "string" } }, { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/region/children": { "get": { "summary": "查询下级行政区划", "deprecated": false, "description": "", "tags": [ "行政区划" ], "parameters": [ { "name": "parentCode", "in": "query", "description": "父级行政区划编码,不传或传0查省级", "required": false, "example": "51", "schema": { "type": "string" } }, { "name": "clientid", "in": "header", "description": "客户端ID", "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string", "default": "ced7e5f0498645c6ec642dcf450b036f" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/region/path/{regionCode}": { "get": { "summary": "查询行政区划路径", "deprecated": false, "description": "", "tags": [ "行政区划" ], "parameters": [ { "name": "regionCode", "in": "path", "description": "行政区划编码", "required": true, "example": "510000", "schema": { "type": "string" } }, { "name": "clientid", "in": "header", "description": "客户端ID", "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string", "default": "ced7e5f0498645c6ec642dcf450b036f" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/region/search": { "get": { "summary": "搜索行政区划", "deprecated": false, "description": "", "tags": [ "行政区划" ], "parameters": [ { "name": "keyword", "in": "query", "description": "搜索关键词,支持地区名称或编码模糊查询", "required": true, "example": "北京", "schema": { "type": "string" } }, { "name": "level", "in": "query", "description": "行政区划级别,1省、2市、3区县、4乡镇街道、5村社区", "required": false, "example": 3, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "返回数量上限", "required": false, "example": 20, "schema": { "type": "integer" } }, { "name": "clientid", "in": "header", "description": "客户端ID", "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string", "default": "ced7e5f0498645c6ec642dcf450b036f" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/region/{regionCode}": { "get": { "summary": "查询行政区划详情", "deprecated": false, "description": "", "tags": [ "行政区划" ], "parameters": [ { "name": "regionCode", "in": "path", "description": "行政区划编码", "required": true, "example": "510000", "schema": { "type": "string" } }, { "name": "clientid", "in": "header", "description": "客户端ID", "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string", "default": "ced7e5f0498645c6ec642dcf450b036f" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds": { "get": { "summary": "PC 家族圈动态列表", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken1": [] } ] }, "post": { "summary": "PC 发布家族圈动态", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FamilyFeedBody" }, "example": { "feedType": "text", "feedContent": "今天上传一张老照片。", "mediaOssIds": "2060000000000000001,2060000000000000002", "sortOrder": 0, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds/page": { "get": { "summary": "PC 家族圈动态分页", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "pageNum", "in": "query", "description": "页码,从1开始", "required": false, "schema": { "type": "integer", "default": 1 } }, { "name": "pageSize", "in": "query", "description": "每页条数", "required": false, "schema": { "type": "integer", "default": 10 } }, { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/PageResult", "description": "通用分页响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}": { "get": { "summary": "PC 家族圈动态详情", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "家族动态ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken1": [] } ] }, "put": { "summary": "PC 修改家族圈动态", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "家族动态ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FamilyFeedBody" }, "example": { "feedType": "text", "feedContent": "今天上传一张老照片。", "mediaOssIds": "2060000000000000001,2060000000000000002", "sortOrder": 0, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken1": [] } ] }, "delete": { "summary": "PC 删除家族圈动态", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "家族动态ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/likes": { "post": { "summary": "PC 点赞动态", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "家族动态ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken1": [] } ] }, "delete": { "summary": "PC 取消点赞动态", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "家族动态ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/comments": { "get": { "summary": "PC 动态评论列表", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "家族动态ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken1": [] } ] }, "post": { "summary": "PC 评论动态", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "家族动态ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FamilyFeedCommentBody" }, "example": { "parentCommentId": null, "replyUserId": null, "content": "这张照片很有年代感。" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/comments/page": { "get": { "summary": "PC 动态评论分页", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "家族动态ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "pageNum", "in": "query", "description": "页码,从1开始", "required": false, "schema": { "type": "integer", "default": 1 } }, { "name": "pageSize", "in": "query", "description": "每页条数", "required": false, "schema": { "type": "integer", "default": 10 } }, { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/PageResult", "description": "通用分页响应" } }, "security": [ { "SaToken1": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/comments/{commentId}": { "delete": { "summary": "PC 删除动态评论", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "家族动态ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "commentId", "in": "path", "description": "评论ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", "required": true, "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken1": [] } ] } } }, "components": { "schemas": { "PasswordRegisterBody": { "type": "object", "required": [ "grantType", "tenantId", "phone", "password" ], "properties": { "clientId": { "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", "type": "string" }, "grantType": { "description": "授权类型,例如password、sms、wechat、apple", "type": "string", "example": "password" }, "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string", "example": "000000" }, "phone": { "description": "手机号", "type": "string", "example": "13800000000" }, "password": { "type": "string", "description": "32 位 MD5", "example": "e10adc3949ba59abbe56e057f20f883e" }, "nickName": { "description": "用户昵称", "type": "string" }, "registerSource": { "description": "注册来源,例如APP、PC、H5、MINI_PROGRAM", "type": "string" }, "validToken": { "description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验", "type": "string" } } }, "PasswordLoginBody": { "type": "object", "required": [ "grantType", "tenantId", "phone", "password" ], "properties": { "clientId": { "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", "type": "string" }, "grantType": { "description": "授权类型,例如password、sms、wechat、apple", "type": "string", "example": "password" }, "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string", "example": "000000" }, "phone": { "description": "手机号", "type": "string", "example": "13800000000" }, "password": { "type": "string", "description": "32 位 MD5", "example": "e10adc3949ba59abbe56e057f20f883e" }, "validToken": { "description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验", "type": "string" } } }, "SmsLoginBody": { "type": "object", "required": [ "grantType", "tenantId", "phone", "smsCode" ], "properties": { "clientId": { "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", "type": "string" }, "grantType": { "description": "授权类型,例如password、sms、wechat、apple", "type": "string", "example": "sms" }, "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string", "example": "000000" }, "phone": { "description": "手机号", "type": "string", "example": "13800000000" }, "smsCode": { "description": "短信验证码", "type": "string", "example": "1234" } } }, "SmsCodeBody": { "type": "object", "required": [ "grantType", "tenantId", "sceneCode", "phone", "validToken" ], "properties": { "clientId": { "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", "type": "string" }, "grantType": { "description": "授权类型,例如password、sms、wechat、apple", "type": "string", "example": "sms" }, "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string", "example": "000000" }, "sceneCode": { "description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER", "type": "string", "example": "WEB_H5_LOGIN" }, "phone": { "description": "手机号", "type": "string", "example": "13800000000" }, "validToken": { "description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验", "type": "string" } } }, "ProfileUpdateBody": { "type": "object", "properties": { "nickName": { "description": "用户昵称", "type": "string" }, "avatarOssId": { "description": "头像文件OSS ID", "type": "integer", "format": "int64" }, "sex": { "description": "性别,建议使用系统字典值", "type": "string" }, "birthday": { "description": "生日,格式 yyyy-MM-dd", "type": "string", "format": "date" }, "provinceCode": { "type": "string" }, "cityCode": { "type": "string" }, "districtCode": { "type": "string" } } }, "PasswordChangeBody": { "type": "object", "required": [ "oldPassword", "newPassword" ], "properties": { "oldPassword": { "type": "string", "description": "32 位 MD5" }, "newPassword": { "type": "string", "description": "32 位 MD5" } } }, "PasswordResetBody": { "type": "object", "required": [ "tenantId", "phone", "smsCode", "newPassword" ], "properties": { "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string", "example": "000000" }, "phone": { "description": "手机号", "type": "string" }, "smsCode": { "description": "短信验证码", "type": "string" }, "newPassword": { "type": "string", "description": "32 位 MD5" }, "validToken": { "description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验", "type": "string" } } }, "PhoneChangeBody": { "type": "object", "required": [ "newPhone", "smsCode" ], "properties": { "newPhone": { "type": "string" }, "smsCode": { "description": "短信验证码", "type": "string" }, "validToken": { "description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验", "type": "string" } } }, "AccountDeactivateBody": { "type": "object", "required": [ "password" ], "properties": { "password": { "type": "string", "description": "32 位 MD5" }, "reason": { "description": "操作原因或说明", "type": "string" } } }, "ResumableInitBody": { "type": "object", "required": [ "fileName", "fileSize", "fileMd5", "chunkSize", "totalChunks" ], "properties": { "fileName": { "description": "原始文件名", "type": "string" }, "fileSize": { "description": "文件大小,单位字节", "type": "integer", "format": "int64" }, "fileMd5": { "description": "完整文件MD5,用于秒传和完整性校验", "type": "string" }, "contentType": { "description": "文件MIME类型,例如 image/jpeg、video/mp4", "type": "string" }, "chunkSize": { "description": "单个分片大小,单位字节", "type": "integer", "example": 4194304 }, "totalChunks": { "description": "总分片数", "type": "integer" }, "bizType": { "description": "业务类型,例如avatar、cover、feed_image", "type": "string" }, "usageScene": { "description": "文件使用场景,便于后续引用统计和清理", "type": "string" } } }, "ResumableCompleteBody": { "type": "object", "required": [ "uploadId", "fileMd5", "fileSize" ], "properties": { "uploadId": { "description": "分片上传任务ID", "type": "string" }, "fileMd5": { "description": "完整文件MD5,用于秒传和完整性校验", "type": "string" }, "fileSize": { "description": "文件大小,单位字节", "type": "integer", "format": "int64" } } }, "FileReferenceBody": { "type": "object", "required": [ "bizType", "bizTable", "bizId", "bizField" ], "properties": { "bizType": { "description": "业务类型,例如avatar、cover、feed_image", "type": "string", "example": "family_feed" }, "bizName": { "description": "业务名称,用于后台展示文件引用来源", "type": "string", "example": "家族圈动态" }, "bizTable": { "description": "业务表名,用于文件引用绑定", "type": "string", "example": "gen_family_feed" }, "bizId": { "description": "业务数据ID,用于文件引用绑定", "type": "integer", "format": "int64" }, "bizField": { "description": "业务字段名,例如avatar_oss_id、cover_oss_id", "type": "string", "example": "media_ids" }, "ossId": { "description": "OSS文件ID,表单内部使用,用户侧应通过上传组件获取", "type": "integer", "format": "int64" }, "ossIds": { "type": "string", "example": "2060001,2060002" }, "usageScene": { "description": "文件使用场景,便于后续引用统计和清理", "type": "string" }, "usageName": { "type": "string" } } }, "FamilyFeedBody": { "type": "object", "required": [ "feedContent" ], "properties": { "feedType": { "description": "动态类型,未传时默认为 text", "type": "string", "example": "text" }, "feedContent": { "description": "动态内容,不能为空", "type": "string", "example": "今天上传一张老照片。" }, "mediaOssIds": { "description": "媒体文件 OSS ID 列表,多个 ID 使用英文逗号分隔", "type": "string", "example": "2060000000000000001,2060000000000000002" }, "sortOrder": { "description": "排序值,未传时默认为 0", "type": "integer", "format": "int64", "example": 0 }, "status": { "description": "动态状态,未传时默认为正常状态", "type": "string", "example": "0" } } }, "FamilyFeedCommentBody": { "type": "object", "required": [ "content" ], "properties": { "parentCommentId": { "type": "integer", "format": "int64", "nullable": true }, "replyUserId": { "type": "integer", "format": "int64", "nullable": true }, "content": { "type": "string" } } }, "VerificationChallengeBody": { "type": "object", "required": [ "sceneCode" ], "properties": { "tenantId": { "type": "string", "description": "租户 ID" }, "clientId": { "type": "string", "description": "客户端 ID" }, "sceneCode": { "type": "string", "description": "验证场景编码,如 ADMIN_LOGIN/APP_LOGIN/APP_REGISTER" }, "subject": { "type": "string", "description": "验证主体,如手机号/用户名/IP" } }, "example": { "tenantId": "000000", "clientId": "ced7e5f0498645c6ec642dcf450b036f", "sceneCode": "WEB_H5_LOGIN", "subject": "13800000000" } }, "VerificationCheckBody": { "type": "object", "required": [ "sceneCode" ], "properties": { "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string" }, "clientId": { "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", "type": "string" }, "sceneCode": { "description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER", "type": "string" }, "subject": { "description": "验证主体,通常为手机号、用户ID或登录账号", "type": "string" }, "challengeId": { "description": "验证挑战ID,由验证挑战接口返回", "type": "string" }, "providerCode": { "type": "string", "description": "验证服务,tianai 或 ruoyi_image" }, "captchaType": { "type": "string", "description": "SLIDER/ROTATE/CONCAT/WORD_IMAGE_CLICK/math/char" }, "payload": { "description": "验证结果载荷。天爱行为验证码提交 payload.track;系统图形验证码提交 payload.uuid 和 payload.code", "oneOf": [ { "$ref": "#/components/schemas/TianaiVerificationPayload" }, { "$ref": "#/components/schemas/SystemImageVerificationPayload" } ] } } }, "TianaiVerificationPayload": { "type": "object", "required": [ "track" ], "properties": { "track": { "$ref": "#/components/schemas/TianaiCaptchaTrack" } } }, "TianaiCaptchaTrack": { "type": "object", "required": [ "bgImageWidth", "bgImageHeight", "startTime", "stopTime", "trackList" ], "properties": { "bgImageWidth": { "type": "integer", "description": "验证码背景图片在前端实际显示的宽度,单位像素" }, "bgImageHeight": { "type": "integer", "description": "验证码背景图片在前端实际显示的高度,单位像素" }, "templateImageWidth": { "type": "integer", "description": "滑块或旋转模板图片在前端实际显示的宽度,单位像素" }, "templateImageHeight": { "type": "integer", "description": "滑块或旋转模板图片在前端实际显示的高度,单位像素" }, "startTime": { "type": "integer", "format": "int64", "description": "用户开始操作的时间戳,单位毫秒" }, "stopTime": { "type": "integer", "format": "int64", "description": "用户结束操作的时间戳,单位毫秒" }, "left": { "type": "integer", "description": "滑块最终水平偏移量,单位像素;由天爱前端控件生成" }, "top": { "type": "integer", "description": "点选或模板最终垂直偏移量,单位像素;由天爱前端控件生成" }, "trackList": { "type": "array", "minItems": 1, "description": "用户操作轨迹,不能为空,必须直接使用天爱前端控件产生的数据", "items": { "$ref": "#/components/schemas/TianaiCaptchaTrackPoint" } }, "data": { "type": "object", "additionalProperties": true, "description": "不同验证码类型附带的扩展数据,由天爱前端控件原样提交", "properties": {}, "nullable": true } } }, "TianaiCaptchaTrackPoint": { "type": "object", "required": [ "x", "y", "t", "type" ], "properties": { "x": { "type": "number", "format": "float", "description": "当前轨迹点的水平坐标" }, "y": { "type": "number", "format": "float", "description": "当前轨迹点的垂直坐标" }, "t": { "type": "number", "format": "float", "description": "当前轨迹点相对操作开始时的时间,单位毫秒" }, "type": { "type": "string", "description": "轨迹事件类型,例如 down、move、up" } } }, "SystemImageVerificationPayload": { "type": "object", "required": [ "uuid", "code" ], "properties": { "uuid": { "type": "string", "description": "系统图形验证码接口返回的唯一标识" }, "code": { "type": "string", "description": "用户填写的图形验证码答案" } } }, "RVoid": { "type": "object", "properties": { "code": { "type": "integer", "example": 200 }, "msg": { "type": "string", "example": "操作成功" }, "data": { "type": "null" } } }, "RObject": { "type": "object", "properties": { "code": { "type": "integer", "example": 200 }, "msg": { "type": "string", "example": "操作成功" }, "data": { "type": "object", "additionalProperties": true, "properties": {} } } }, "RList": { "type": "object", "properties": { "code": { "type": "integer", "example": 200 }, "msg": { "type": "string", "example": "操作成功" }, "data": { "type": "array", "items": { "type": "object", "additionalProperties": true, "properties": {} } } } }, "PageResult": { "type": "object", "properties": { "code": { "type": "integer", "example": 200 }, "msg": { "type": "string", "example": "操作成功" }, "rows": { "type": "array", "items": { "type": "object", "additionalProperties": true, "properties": {} } }, "total": { "type": "integer", "example": 0 } } }, "RLogin": { "type": "object", "properties": { "code": { "type": "integer", "example": 200 }, "msg": { "type": "string", "example": "操作成功" }, "data": { "$ref": "#/components/schemas/LoginVo" } } }, "LoginVo": { "type": "object", "properties": { "token": { "type": "string" }, "accessToken": { "type": "string" }, "tokenValue": { "type": "string" }, "userId": { "type": "integer", "format": "int64" }, "tenantId": { "type": "string" }, "clientId": { "type": "string" }, "clientKey": { "type": "string" } } }, "RFileUpload": { "type": "object", "properties": { "code": { "type": "integer", "example": 200 }, "msg": { "type": "string", "example": "操作成功" }, "data": { "$ref": "#/components/schemas/FileUploadVo" } } }, "FileUploadVo": { "type": "object", "properties": { "ossId": { "type": "integer", "format": "int64" }, "url": { "type": "string" }, "thumbnailUrl": { "type": "string", "nullable": true }, "fileName": { "type": "string" }, "originalName": { "type": "string" } } }, "RVoid1": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "type": "null" } } }, "RObject2": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "type": "object", "additionalProperties": true, "properties": {} } } }, "RList3": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "type": "array", "items": { "type": "object", "additionalProperties": true, "properties": {} } } } }, "PageResult4": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "rows": { "description": "分页数据列表", "type": "array", "items": { "type": "object", "additionalProperties": true, "properties": {} } }, "total": { "type": "integer", "example": 0 } } }, "RLogin5": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/LoginVo6" } } }, "LoginVo6": { "type": "object", "properties": { "token": { "type": "string" }, "accessToken": { "type": "string" }, "tokenValue": { "type": "string" }, "userId": { "type": "integer", "format": "int64" }, "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string" }, "clientId": { "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", "type": "string" }, "clientKey": { "type": "string" } } }, "RFileUpload7": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/FileUploadVo8" } } }, "FileUploadVo8": { "type": "object", "properties": { "ossId": { "description": "OSS文件ID,表单内部使用,用户侧应通过上传组件获取", "type": "integer", "format": "int64" }, "url": { "type": "string" }, "thumbnailUrl": { "type": "string", "nullable": true }, "fileName": { "description": "原始文件名", "type": "string" }, "originalName": { "type": "string" } } }, "RVerificationRequire": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/VerificationRequireVo" } } }, "VerificationRequireVo": { "type": "object", "properties": { "required": { "description": "当前场景是否需要验证", "type": "boolean" }, "providerCode": { "description": "第三方服务商编码", "type": "string" }, "captchaType": { "description": "验证码类型,例如SLIDER、ROTATE、CONCAT、WORD_IMAGE_CLICK", "type": "string" }, "sceneCode": { "description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER", "type": "string" }, "ttlSeconds": { "description": "验证或票据有效秒数", "type": "integer" } }, "example": { "required": true, "providerCode": "tianai", "captchaType": "SLIDER", "sceneCode": "APP_LOGIN", "ttlSeconds": 300 } }, "RVerificationChallenge": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/VerificationChallengeVo" } } }, "VerificationChallengeVo": { "type": "object", "properties": { "required": { "description": "当前场景是否需要验证", "type": "boolean" }, "providerCode": { "description": "第三方服务商编码", "type": "string" }, "captchaType": { "description": "验证码类型,例如SLIDER、ROTATE、CONCAT、WORD_IMAGE_CLICK", "type": "string" }, "challengeId": { "description": "验证挑战ID,由验证挑战接口返回", "type": "string" }, "uuid": { "type": "string", "description": "系统图形验证码 uuid" }, "img": { "type": "string", "description": "系统图形验证码 base64 图片" }, "payload": { "type": "object", "additionalProperties": true, "description": "天爱验证码数据,包括背景图、模板图、尺寸等", "properties": {} }, "expireSeconds": { "description": "验证挑战过期秒数", "type": "integer" } }, "example": { "required": true, "providerCode": "tianai", "captchaType": "SLIDER", "challengeId": "CAPTCHA_CHALLENGE_ID", "payload": { "backgroundImage": "data:image/png;base64,...", "templateImage": "data:image/png;base64,...", "backgroundImageWidth": 340, "backgroundImageHeight": 180 }, "expireSeconds": 300 } }, "RVerificationCheck": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/VerificationCheckVo" } } }, "VerificationCheckVo": { "type": "object", "properties": { "passed": { "description": "验证是否通过", "type": "boolean" }, "validToken": { "type": "string", "description": "验证通过后交给业务接口的票据" }, "expireSeconds": { "description": "验证挑战过期秒数", "type": "integer" }, "message": { "description": "返回消息", "type": "string" } }, "example": { "passed": true, "validToken": "captcha-ticket", "expireSeconds": 300, "message": "验证通过" } }, "RLegacyCaptcha": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/LegacyCaptchaVo" } } }, "LegacyCaptchaVo": { "type": "object", "properties": { "captchaEnabled": { "type": "boolean" }, "uuid": { "description": "系统图形验证码UUID", "type": "string" }, "img": { "type": "string", "description": "base64 图形验证码" } }, "example": { "captchaEnabled": true, "uuid": "captcha-uuid", "img": "data:image/png;base64,..." } }, "RVerificationRequire9": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/VerificationRequireVo10" } } }, "VerificationRequireVo10": { "type": "object", "properties": { "required": { "description": "当前场景是否需要验证", "type": "boolean" }, "providerCode": { "description": "第三方服务商编码", "type": "string" }, "captchaType": { "description": "验证码类型,例如SLIDER、ROTATE、CONCAT、WORD_IMAGE_CLICK", "type": "string" }, "sceneCode": { "description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER", "type": "string" }, "ttlSeconds": { "description": "验证或票据有效秒数", "type": "integer" } }, "example": { "required": true, "providerCode": "tianai", "captchaType": "SLIDER", "sceneCode": "WEB_H5_LOGIN", "ttlSeconds": 300 } }, "RVerificationChallenge11": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/VerificationChallengeVo12" } } }, "VerificationChallengeVo12": { "type": "object", "properties": { "required": { "description": "当前场景是否需要验证", "type": "boolean" }, "providerCode": { "description": "第三方服务商编码", "type": "string" }, "captchaType": { "description": "验证码类型,例如SLIDER、ROTATE、CONCAT、WORD_IMAGE_CLICK", "type": "string" }, "challengeId": { "description": "验证挑战ID,由验证挑战接口返回", "type": "string" }, "uuid": { "type": "string", "description": "系统图形验证码 uuid" }, "img": { "type": "string", "description": "系统图形验证码 base64 图片" }, "payload": { "type": "object", "additionalProperties": true, "description": "天爱验证码数据,包括背景图、模板图、尺寸等", "properties": {} }, "expireSeconds": { "description": "验证挑战过期秒数", "type": "integer" } }, "example": { "required": true, "providerCode": "tianai", "captchaType": "SLIDER", "challengeId": "CAPTCHA_CHALLENGE_ID", "payload": { "backgroundImage": "data:image/png;base64,...", "templateImage": "data:image/png;base64,...", "backgroundImageWidth": 340, "backgroundImageHeight": 180 }, "expireSeconds": 300 } }, "RVerificationCheck13": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/VerificationCheckVo14" } } }, "VerificationCheckVo14": { "type": "object", "properties": { "passed": { "description": "验证是否通过", "type": "boolean" }, "validToken": { "type": "string", "description": "验证通过后交给业务接口的票据" }, "expireSeconds": { "description": "验证挑战过期秒数", "type": "integer" }, "message": { "description": "返回消息", "type": "string" } }, "example": { "passed": true, "validToken": "captcha-ticket", "expireSeconds": 300, "message": "验证通过" } }, "RLegacyCaptcha15": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/LegacyCaptchaVo16" } } }, "LegacyCaptchaVo16": { "type": "object", "properties": { "captchaEnabled": { "type": "boolean" }, "uuid": { "description": "系统图形验证码UUID", "type": "string" }, "img": { "type": "string", "description": "base64 图形验证码" } }, "example": { "captchaEnabled": true, "uuid": "captcha-uuid", "img": "data:image/png;base64,..." } } }, "responses": { "VoidResult": { "description": "通用成功响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RVoid1" } } } }, "ObjectResult": { "description": "通用对象响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RObject2" } } } }, "ListResult": { "description": "通用列表响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RList3" } } } }, "PageResult": { "description": "通用分页响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageResult4" } } } }, "LoginResult": { "description": "登录结果", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RLogin5" } } } }, "FileUploadResult": { "description": "文件上传结果", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RFileUpload7" } } } }, "VerificationRequireResult": { "description": "验证需求查询结果", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RVerificationRequire9" } } } }, "VerificationChallengeResult": { "description": "验证挑战生成结果", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RVerificationChallenge11" } } } }, "VerificationCheckResult": { "description": "验证校验结果", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RVerificationCheck13" } } } }, "LegacyCaptchaResult": { "description": "兼容旧图形验证码结果", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RLegacyCaptcha15" } } } } }, "securitySchemes": { "SaToken1": { "type": "apiKey", "in": "header", "name": "Authorization", "description": "登录后返回的 token。若本地配置使用 sa-token 名称,请按项目实际 token-name 调整。" } } }, "servers": [], "security": [ { "SaToken1": [] } ] }