{ "openapi": "3.0.1", "info": { "title": "APP", "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": "家谱" }, { "name": "家谱成员" }, { "name": "字辈谱" }, { "name": "世系人物" }, { "name": "家族圈" }, { "name": "内容文章" }, { "name": "相册" }, { "name": "祭祀" }, { "name": "族务记录" }, { "name": "消息通知" }, { "name": "意见反馈" }, { "name": "VIP" }, { "name": "视频" } ], "paths": { "/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": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } }, { "name": "sceneCode", "in": "query", "description": "APP 短信场景编码,例如APP_SMS_LOGIN、APP_REGISTER", "required": true, "example": "APP_SMS_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": [ { "SaToken": [] } ] } }, "/captcha/challenge": { "post": { "summary": "生成验证挑战", "deprecated": false, "description": "统一生成验证码。tenantId、clientId、sceneCode、subject 必须完整提交;挑战仅可由同一租户、客户端、场景、主体和请求 IP 校验。策略为天爱时返回行为验证数据;策略为系统图形时返回 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": "428a8310cd442757ae699df5d894f051", "sceneCode": "APP_SMS_LOGIN", "subject": "13800000000" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VerificationChallengeResult", "description": "验证挑战生成结果" } }, "security": [ { "SaToken": [] } ] } }, "/captcha/verify": { "post": { "summary": "校验验证结果并换取 validToken", "deprecated": false, "description": "必须提交生成挑战时相同的 tenantId、clientId、sceneCode、subject 和 challengeId。验证通过后返回 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": "428a8310cd442757ae699df5d894f051", "sceneCode": "APP_SMS_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": "428a8310cd442757ae699df5d894f051", "sceneCode": "APP_SMS_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": [ { "SaToken": [] } ] } }, "/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": [ { "SaToken": [] } ] } }, "/genealogy/app/auth/register": { "post": { "summary": "APP 用户注册", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordRegisterBody" }, "example": { "grantType": "password", "tenantId": "000000", "phone": "13800000000", "password": "e10adc3949ba59abbe56e057f20f883e", "nickName": "测试用户", "registerSource": "app", "smsCode": "1234" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LoginResult", "description": "登录结果" }, "400": { "$ref": "#/components/responses/LoginResult", "description": "短信验证码必须为 4 位数字;验证码错误、过期、重复使用,或租户、客户端、场景不匹配时拒绝;携带 validToken、code、uuid、供应商配置等旧字段返回 HTTP 400。", "headers": {} } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/auth/login": { "post": { "summary": "APP 密码登录", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordLoginBody" }, "example": { "grantType": "password", "tenantId": "000000", "phone": "13800000000", "password": "e10adc3949ba59abbe56e057f20f883e" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LoginResult", "description": "登录结果" }, "400": { "$ref": "#/components/responses/LoginResult", "description": "密码登录仅接收租户、客户端、手机号和密码;不需要短信验证码或行为验证票据,携带验证码及其他未知旧字段返回 HTTP 400。", "headers": {} } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/auth/login/sms": { "post": { "summary": "APP 短信登录", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SmsLoginBody" }, "example": { "grantType": "sms", "tenantId": "000000", "phone": "13800000000", "smsCode": "1234" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LoginResult", "description": "登录结果" }, "400": { "$ref": "#/components/responses/LoginResult", "description": "短信验证码必须为 4 位数字;验证码错误、过期、重复使用,或租户、客户端、场景不匹配时拒绝;携带 validToken、code、uuid、供应商配置等旧字段返回 HTTP 400。", "headers": {} } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/auth/sms/code": { "post": { "summary": "APP 发送短信验证码", "deprecated": false, "description": "先完成验证中心校验,再提交 validToken。sceneCode 仅允许 APP_SMS_LOGIN、APP_REGISTER、APP_FORGOT_PASSWORD、APP_PHONE_CHANGE、APP_ACCOUNT_DEACTIVATE;服务端按租户、APP 客户端、场景和手机号主体校验票据,不接收短信供应商配置 ID。", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SmsCodeBody" }, "example": { "tenantId": "000000", "phone": "13800000000", "grantType": "sms", "sceneCode": "APP_SMS_LOGIN", "validToken": "captcha-ticket" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" }, "400": { "$ref": "#/components/responses/VoidResult", "description": "拒绝原因:票据缺失;票据与租户不匹配(错租户);票据与客户端不匹配(错客户端);票据与场景不匹配(错场景);票据过期;票据已被使用(重复使用);手机号主体不匹配;请求携带供应商配置或历史字段。", "headers": {} } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/auth/profile": { "get": { "summary": "APP 当前用户资料", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "put": { "summary": "APP 修改用户资料", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "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": [ { "SaToken": [] } ] } }, "/genealogy/app/auth/password": { "put": { "summary": "APP 修改密码", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordChangeBody" }, "example": { "oldPassword": "e10adc3949ba59abbe56e057f20f883e", "newPassword": "25d55ad283aa400af464c76d713c07ad" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/auth/password/reset": { "put": { "summary": "APP 找回密码", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordResetBody" }, "example": { "grantType": "password", "tenantId": "000000", "phone": "13800000000", "smsCode": "1234", "newPassword": "25d55ad283aa400af464c76d713c07ad" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" }, "400": { "$ref": "#/components/responses/VoidResult", "description": "短信验证码必须为 4 位数字;验证码错误、过期、重复使用,或租户、客户端、场景不匹配时拒绝;携带 validToken、code、uuid、供应商配置等旧字段返回 HTTP 400。", "headers": {} } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/auth/phone": { "put": { "summary": "APP 换绑手机号", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PhoneChangeBody" }, "example": { "clientId": "428a8310cd442757ae699df5d894f051", "phone": "13900000000", "smsCode": "1234" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" }, "400": { "$ref": "#/components/responses/ObjectResult", "description": "短信验证码必须为 4 位数字;验证码错误、过期、重复使用,或租户、客户端、场景不匹配时拒绝;携带 validToken、code、uuid、供应商配置等旧字段返回 HTTP 400。", "headers": {} } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/auth/account/deactivate": { "post": { "summary": "APP 注销账号", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccountDeactivateBody" }, "example": { "clientId": "428a8310cd442757ae699df5d894f051", "smsCode": "1234" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" }, "400": { "$ref": "#/components/responses/VoidResult", "description": "短信验证码必须为 4 位数字;验证码错误、过期、重复使用,或租户、客户端、场景不匹配时拒绝;携带 validToken、code、uuid、供应商配置等旧字段返回 HTTP 400。", "headers": {} } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/auth/logout": { "delete": { "summary": "APP 退出登录", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/auth/register": { "post": { "summary": "PC 用户注册", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordRegisterBody" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LoginResult", "description": "登录结果" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/auth/login": { "post": { "summary": "PC 密码登录", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordLoginBody" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LoginResult", "description": "登录结果" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/auth/login/sms": { "post": { "summary": "PC 短信登录", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SmsLoginBody" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LoginResult", "description": "登录结果" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/auth/sms/code": { "post": { "summary": "PC 发送短信验证码", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SmsCodeBody" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/auth/profile": { "get": { "summary": "PC 当前用户资料", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "put": { "summary": "PC 修改用户资料", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProfileUpdateBody" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/auth/password": { "put": { "summary": "PC 修改密码", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordChangeBody" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/auth/password/reset": { "put": { "summary": "PC 找回密码", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordResetBody" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/auth/phone": { "put": { "summary": "PC 换绑手机号", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PhoneChangeBody" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/auth/account/deactivate": { "post": { "summary": "PC 注销账号", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccountDeactivateBody" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/auth/logout": { "delete": { "summary": "PC 退出登录", "deprecated": false, "description": "", "tags": [ "认证登录" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/files/upload": { "post": { "summary": "APP 单文件上传", "deprecated": false, "description": "", "tags": [ "文件上传" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "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": [ { "SaToken": [] } ] } }, "/genealogy/app/files/resumable/init": { "post": { "summary": "APP 分片上传初始化", "deprecated": false, "description": "所有文件统一使用分片上传;普通小文件可设置为一个分片。返回 instant=true 时直接使用返回的 OSS 信息,跳过分片上传和合并。", "tags": [ "文件上传" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "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": [ { "SaToken": [] } ] } }, "/genealogy/app/files/resumable/chunk": { "post": { "summary": "APP 上传分片", "deprecated": false, "description": "", "tags": [ "文件上传" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "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": [ { "SaToken": [] } ] } }, "/genealogy/app/files/resumable/complete": { "post": { "summary": "APP 完成分片上传", "deprecated": false, "description": "", "tags": [ "文件上传" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "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": [ { "SaToken": [] } ] } }, "/genealogy/app/files/reference": { "post": { "summary": "APP 绑定文件业务引用", "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": [ { "SaToken": [] } ] }, "delete": { "summary": "APP 释放文件业务引用", "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": [ { "SaToken": [] } ] } }, "/genealogy/pc/files/upload": { "post": { "summary": "PC 单文件上传", "deprecated": false, "description": "", "tags": [ "文件上传" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "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": [ { "SaToken": [] } ] } }, "/genealogy/pc/files/resumable/init": { "post": { "summary": "PC 分片上传初始化", "deprecated": false, "description": "", "tags": [ "文件上传" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResumableInitBody" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/files/resumable/chunk": { "post": { "summary": "PC 上传分片", "deprecated": false, "description": "", "tags": [ "文件上传" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "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": [ { "SaToken": [] } ] } }, "/genealogy/pc/files/resumable/complete": { "post": { "summary": "PC 完成分片上传", "deprecated": false, "description": "", "tags": [ "文件上传" ], "parameters": [ { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResumableCompleteBody" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/FileUploadResult", "description": "文件上传结果" } }, "security": [ { "SaToken": [] } ] } }, "/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": [ { "SaToken": [] } ] } }, "/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": [ { "SaToken": [] } ] } }, "/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": [ { "SaToken": [] } ] } }, "/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": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies": { "post": { "summary": "APP 创建家谱", "deprecated": false, "description": "", "tags": [ "家谱" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenealogyCreateBody" }, "example": { "genealogyName": "彭氏家谱", "surname": "彭", "ancestralHall": "陇西堂", "originPlace": "江西吉安", "regionCode": "360800", "addressDetail": "江西省吉安市", "coverOssId": "2060000000000000000", "intro": "彭氏家谱简介", "visibility": "1", "joinMode": "1" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/mine": { "get": { "summary": "APP 我的家谱", "deprecated": false, "description": "", "tags": [ "家谱" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/public": { "get": { "summary": "APP 公开家谱", "deprecated": false, "description": "", "tags": [ "家谱" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/options": { "get": { "summary": "APP 家谱下拉选项", "deprecated": false, "description": "", "tags": [ "家谱" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}": { "get": { "summary": "APP 家谱详情", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "put": { "summary": "APP 修改家谱", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenealogyUpdateBody" }, "example": { "genealogyName": "彭氏家谱", "surname": "彭", "ancestralHall": "陇西堂", "originPlace": "江西吉安", "regionCode": "360800", "addressDetail": "江西省吉安市", "coverOssId": "2060000000000000000", "intro": "更新后的家谱简介", "visibility": "1", "joinMode": "1" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/overview": { "get": { "summary": "APP 家谱概览", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/join-applies": { "post": { "summary": "APP 申请加入家谱", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenealogyJoinApplyBody" }, "example": { "applicantName": "彭小明", "phone": "13800000000", "relationDesc": "本族成员", "applyReason": "申请加入家谱维护", "inviterUserId": 900000001 } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/join-applies/mine": { "get": { "summary": "APP 我的加入申请", "deprecated": false, "description": "", "tags": [ "家谱" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/join-applies/pending": { "get": { "summary": "APP 待审核加入申请", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/join-applies/{applyId}/audit": { "put": { "summary": "APP 审核加入申请", "deprecated": false, "description": "", "tags": [ "家谱" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "applyId", "in": "path", "description": "加入家谱申请ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenealogyJoinAuditBody" }, "example": { "status": "1", "auditRemark": "信息核验通过" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/join-applies/{applyId}": { "delete": { "summary": "APP 撤销加入申请", "deprecated": false, "description": "", "tags": [ "家谱" ], "parameters": [ { "name": "applyId", "in": "path", "description": "加入家谱申请ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/members": { "get": { "summary": "APP 家谱成员列表", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/members/options": { "get": { "summary": "APP 家谱成员选项", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/members/{memberId}": { "put": { "summary": "APP 修改成员", "deprecated": false, "description": "", "tags": [ "家谱成员" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "memberId", "in": "path", "description": "家谱成员ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenealogyMemberUpdateBody" }, "example": { "memberName": "彭小明", "relationName": "族亲", "roleType": "member", "lineagePersonId": 900020001 } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "delete": { "summary": "APP 移除成员", "deprecated": false, "description": "", "tags": [ "家谱成员" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "memberId", "in": "path", "description": "家谱成员ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/members/me": { "delete": { "summary": "APP 退出家谱", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/members/owner-transfer": { "put": { "summary": "APP 转让家谱所有者", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenealogyOwnerTransferBody" }, "example": { "targetMemberId": 900010002 } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/generation-poems": { "get": { "summary": "APP 查询正常字辈谱", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/GenerationPoemListResult", "description": "字辈列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 新增字辈", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerationPoemBody" }, "example": { "generationNo": 5, "generationText": "忠", "description": "fifth generation poem", "sortOrder": 5, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/GenerationPoemResult", "description": "字辈详情响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/generation-poems/batch/preview": { "post": { "summary": "APP 批量字辈预览", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerationPoemBatchBody" }, "example": { "poemText": "德承家亦\n忠厚传芳", "disableMissing": false } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/GenerationPoemBatchPreviewResult", "description": "字辈批量预览响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/generation-poems/batch/save": { "post": { "summary": "APP 批量保存字辈", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerationPoemBatchBody" }, "example": { "poemText": "德承家亦\n忠厚传芳", "disableMissing": false } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/generation-poems/management": { "get": { "summary": "APP 查询字辈维护列表", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/GenerationPoemListResult", "description": "字辈列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/generation-poems/{poemId}": { "put": { "summary": "APP 修改、停用或恢复字辈", "deprecated": false, "description": "", "tags": [ "字辈谱" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "poemId", "in": "path", "description": "字辈记录ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerationPoemBody" }, "example": { "generationNo": 5, "generationText": "忠", "description": "fifth generation poem", "sortOrder": 5, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/GenerationPoemResult", "description": "字辈详情响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/lineage/persons": { "get": { "summary": "APP 世系人物列表", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/LineagePersonListResult", "description": "世系人物列表或选项响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 新增世系人物", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LineagePersonBody" }, "example": { "appUserId": 900000001, "personNo": "P202607090001", "name": "彭德明", "aliasName": "德明", "sex": "0", "generation": 1, "generationName": "德", "avatarOssId": "2060000000000000000", "birthDate": "1950-01-01", "birthLunar": "0", "birthPlace": "江西吉安", "personStatus": "0", "biography": "第一世人物简介", "sortOrder": 1 } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LineagePersonResult", "description": "世系人物详情响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/lineage/persons/page": { "get": { "summary": "APP 世系人物分页", "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": "keyword", "in": "query", "description": "姓名、别名或人物编号关键词", "required": false, "schema": { "type": "string" } }, { "name": "generation", "in": "query", "description": "世代序号", "required": false, "schema": { "type": "integer", "format": "int64" } }, { "name": "personStatus", "in": "query", "description": "人物状态字典值", "required": false, "schema": { "type": "string" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/LineagePersonPageResult", "description": "世系人物分页响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/lineage/persons/options": { "get": { "summary": "APP 世系人物选项", "deprecated": false, "description": "", "tags": [ "世系人物" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "keyword", "in": "query", "description": "姓名、别名或人物编号关键词", "required": false, "schema": { "type": "string" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/LineagePersonListResult", "description": "世系人物列表或选项响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/lineage/tree": { "get": { "summary": "APP 世系树", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/LineagePersonTreeResult", "description": "世系树响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/lineage/persons/{personId}": { "get": { "summary": "APP 世系人物详情", "deprecated": false, "description": "", "tags": [ "世系人物" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "personId", "in": "path", "description": "世系人物ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/LineagePersonResult", "description": "世系人物详情响应" } }, "security": [ { "SaToken": [] } ] }, "put": { "summary": "APP 修改世系人物", "deprecated": false, "description": "", "tags": [ "世系人物" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "personId", "in": "path", "description": "世系人物ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LineagePersonBody" }, "example": { "appUserId": 900000001, "personNo": "P202607090001", "name": "彭德明", "aliasName": "德明", "sex": "0", "generation": 1, "generationName": "德", "avatarOssId": "2060000000000000000", "birthDate": "1950-01-01", "birthLunar": "0", "birthPlace": "江西吉安", "personStatus": "0", "biography": "第一世人物简介", "sortOrder": 1 } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LineagePersonResult", "description": "世系人物详情响应" } }, "security": [ { "SaToken": [] } ] }, "delete": { "summary": "APP 停用世系人物", "deprecated": false, "description": "逻辑停用人物,不执行物理删除;存在正常子女时拒绝停用。", "tags": [ "世系人物" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "personId", "in": "path", "description": "世系人物ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/lineage/persons/{personId}/children": { "post": { "summary": "APP 给人物添加子女", "deprecated": false, "description": "", "tags": [ "世系人物" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "personId", "in": "path", "description": "世系人物ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LineagePersonBody" }, "example": { "appUserId": 900000001, "personNo": "P202607090001", "name": "彭德明", "aliasName": "德明", "sex": "0", "generation": 1, "generationName": "德", "avatarOssId": "2060000000000000000", "birthDate": "1950-01-01", "birthLunar": "0", "birthPlace": "江西吉安", "personStatus": "0", "biography": "第一世人物简介", "sortOrder": 1 } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LineagePersonResult", "description": "世系人物详情响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/lineage/persons/{personId}/parents": { "post": { "summary": "APP 给人物添加父母", "deprecated": false, "description": "", "tags": [ "世系人物" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "personId", "in": "path", "description": "世系人物ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LineagePersonBody" }, "example": { "appUserId": 900000001, "personNo": "P202607090001", "name": "彭德明", "aliasName": "德明", "sex": "0", "generation": 1, "generationName": "德", "avatarOssId": "2060000000000000000", "birthDate": "1950-01-01", "birthLunar": "0", "birthPlace": "江西吉安", "personStatus": "0", "biography": "第一世人物简介", "sortOrder": 1 } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LineagePersonResult", "description": "世系人物详情响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/lineage/persons/{personId}/siblings": { "post": { "summary": "APP 给人物添加兄弟姐妹", "deprecated": false, "description": "", "tags": [ "世系人物" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "personId", "in": "path", "description": "世系人物ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LineagePersonBody" }, "example": { "appUserId": 900000001, "personNo": "P202607090001", "name": "彭德明", "aliasName": "德明", "sex": "0", "generation": 1, "generationName": "德", "avatarOssId": "2060000000000000000", "birthDate": "1950-01-01", "birthLunar": "0", "birthPlace": "江西吉安", "personStatus": "0", "biography": "第一世人物简介", "sortOrder": 1 } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LineagePersonResult", "description": "世系人物详情响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/lineage/persons/{personId}/spouses": { "post": { "summary": "APP 给人物添加配偶", "deprecated": false, "description": "", "tags": [ "世系人物" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "personId", "in": "path", "description": "世系人物ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LineagePersonBody" }, "example": { "appUserId": 900000001, "personNo": "P202607090001", "name": "彭德明", "aliasName": "德明", "sex": "0", "generation": 1, "generationName": "德", "avatarOssId": "2060000000000000000", "birthDate": "1950-01-01", "birthLunar": "0", "birthPlace": "江西吉安", "personStatus": "0", "biography": "第一世人物简介", "sortOrder": 1 } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LineagePersonResult", "description": "世系人物详情响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/feeds": { "get": { "summary": "APP 家族圈动态列表", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 发布家族圈动态", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "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": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/feeds/page": { "get": { "summary": "APP 家族圈动态分页", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/PageResult", "description": "通用分页响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/feeds/{feedId}": { "get": { "summary": "APP 家族圈动态详情", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "put": { "summary": "APP 修改家族圈动态", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "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": [ { "SaToken": [] } ] }, "delete": { "summary": "APP 删除家族圈动态", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/feeds/{feedId}/likes": { "post": { "summary": "APP 点赞动态", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] }, "delete": { "summary": "APP 取消点赞动态", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/feeds/{feedId}/comments": { "get": { "summary": "APP 动态一级评论列表", "deprecated": false, "description": "仅返回正常展示的一级评论;每条评论的 replyCount 为正常展示的直接回复数量。", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/FamilyFeedCommentListResult", "description": "家族圈评论列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 评论动态", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FamilyFeedCommentBody" }, "example": { "parentCommentId": null, "commentContent": "这张照片很有年代感。" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/FamilyFeedCommentResult", "description": "家族圈评论对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/feeds/{feedId}/comments/page": { "get": { "summary": "APP 动态一级评论分页", "deprecated": false, "description": "仅返回正常展示的一级评论;展开回复时请调用 replies 接口。", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/FamilyFeedCommentPageResult", "description": "家族圈评论分页响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds": { "get": { "summary": "PC 家族圈动态列表", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "PC 发布家族圈动态", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "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": [ { "SaToken": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds/page": { "get": { "summary": "PC 家族圈动态分页", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "pageNum", "in": "query", "description": "", "required": false, "schema": { "type": "integer", "default": 1 } }, { "name": "pageSize", "in": "query", "description": "", "required": false, "schema": { "type": "integer", "default": 10 } }, { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/PageResult", "description": "通用分页响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/feeds/{feedId}/comments/{commentId}": { "delete": { "summary": "APP 删除本人动态评论;有回复时保留删除占位", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}": { "get": { "summary": "PC 家族圈动态详情", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "put": { "summary": "PC 修改家族圈动态", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "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": [ { "SaToken": [] } ] }, "delete": { "summary": "PC 删除家族圈动态", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/likes": { "post": { "summary": "PC 点赞动态", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] }, "delete": { "summary": "PC 取消点赞动态", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/comments": { "get": { "summary": "PC 动态评论列表", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "PC 评论动态", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FamilyFeedCommentBody" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/comments/page": { "get": { "summary": "PC 动态评论分页", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "pageNum", "in": "query", "description": "", "required": false, "schema": { "type": "integer", "default": 1 } }, { "name": "pageSize", "in": "query", "description": "", "required": false, "schema": { "type": "integer", "default": 10 } }, { "name": "clientid", "in": "header", "description": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/PageResult", "description": "通用分页响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/comments/{commentId}": { "delete": { "summary": "PC 删除动态评论", "deprecated": false, "description": "", "tags": [ "家族圈" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "feedId", "in": "path", "description": "", "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": "", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/feeds/{feedId}/comments/{commentId}/replies": { "get": { "summary": "APP 获取评论的直接回复列表", "deprecated": false, "description": "仅返回指定正常评论的正常展示直接回复;回复的 replyCount 可用于继续按需展开下一层。", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/FamilyFeedCommentListResult", "description": "家族圈评论列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/feeds/{feedId}/comments/{commentId}/replies/page": { "get": { "summary": "APP 分页获取评论的直接回复", "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": "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/FamilyFeedCommentPageResult", "description": "家族圈评论分页响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/article-categories": { "get": { "summary": "APP 谱文分类", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/articles": { "get": { "summary": "APP 谱文列表", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 新增谱文", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArticleBody" }, "example": { "categoryId": 900040001, "articleTitle": "族谱源流", "articleSummary": "介绍本支源流", "coverOssId": "2060000000000000000", "articleContent": "

article content

", "authorName": "族谱管理员", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/articles/{articleId}": { "get": { "summary": "APP 谱文详情", "deprecated": false, "description": "", "tags": [ "内容文章" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "articleId", "in": "path", "description": "谱文/官网文章ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "put": { "summary": "APP 修改谱文", "deprecated": false, "description": "", "tags": [ "内容文章" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "articleId", "in": "path", "description": "谱文/官网文章ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArticleBody" }, "example": { "categoryId": 900040001, "articleTitle": "族谱源流", "articleSummary": "介绍本支源流", "coverOssId": "2060000000000000000", "articleContent": "

article content

", "authorName": "族谱管理员", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "delete": { "summary": "APP 删除谱文", "deprecated": false, "description": "", "tags": [ "内容文章" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "articleId", "in": "path", "description": "要删除的谱文ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/help-articles": { "get": { "summary": "APP 帮助文章列表", "deprecated": false, "description": "", "tags": [ "内容文章" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID", "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string", "default": "ced7e5f0498645c6ec642dcf450b036f" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/help-articles/{helpId}": { "get": { "summary": "APP 帮助文章详情", "deprecated": false, "description": "", "tags": [ "内容文章" ], "parameters": [ { "name": "helpId", "in": "path", "description": "帮助文章ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "客户端ID", "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string", "default": "ced7e5f0498645c6ec642dcf450b036f" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/promotions": { "get": { "summary": "APP 应用推广列表", "deprecated": false, "description": "", "tags": [ "内容文章" ], "parameters": [ { "name": "clientid", "in": "header", "description": "客户端ID", "example": "ced7e5f0498645c6ec642dcf450b036f", "schema": { "type": "string", "default": "ced7e5f0498645c6ec642dcf450b036f" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/albums": { "get": { "summary": "APP 相册列表", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 创建相册", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AlbumBody" }, "example": { "albumName": "老照片", "albumDesc": "family old photos", "coverOssId": "2060000000000000000", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/albums/{albumId}": { "put": { "summary": "APP 修改相册", "deprecated": false, "description": "", "tags": [ "相册" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "albumId", "in": "path", "description": "相册ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AlbumBody" }, "example": { "albumName": "老照片", "albumDesc": "family old photos", "coverOssId": "2060000000000000000", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "delete": { "summary": "APP 删除相册", "deprecated": false, "description": "逻辑删除相册及其照片,并释放封面和照片文件引用。", "tags": [ "相册" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "albumId", "in": "path", "description": "要删除的相册ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/albums/{albumId}/photos": { "get": { "summary": "APP 相册图片列表", "deprecated": false, "description": "", "tags": [ "相册" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "albumId", "in": "path", "description": "相册ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 上传相册图片记录", "deprecated": false, "description": "", "tags": [ "相册" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "albumId", "in": "path", "description": "相册ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AlbumPhotoBody" }, "example": { "ossId": "2060000000000000000", "photoTitle": "老宅合影", "photoDesc": "old house photo", "photographer": "彭小明", "shootTime": "2026-07-09 10:00:00", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/albums/{albumId}/photos/{photoId}": { "delete": { "summary": "APP 删除单张相册图片", "deprecated": false, "description": "", "tags": [ "相册" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "albumId", "in": "path", "description": "相册ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "photoId", "in": "path", "description": "要删除的相册图片ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/ceremonies": { "get": { "summary": "APP 祭祀列表", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 创建祭祀", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CeremonyBody" }, "example": { "ceremonyType": "ancestor", "ceremonyTitle": "清明祭祖", "ceremonyDesc": "online ancestor ceremony", "ceremonyTime": "2026-04-04 09:00:00", "location": "祠堂", "coverOssId": "2060000000000000000", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/ceremonies/{ceremonyId}": { "get": { "summary": "APP 祭祀详情", "deprecated": false, "description": "", "tags": [ "祭祀" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "ceremonyId", "in": "path", "description": "祭祀/活动ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "put": { "summary": "APP 修改祭祀", "deprecated": false, "description": "", "tags": [ "祭祀" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "ceremonyId", "in": "path", "description": "祭祀/活动ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CeremonyBody" }, "example": { "ceremonyType": "ancestor", "ceremonyTitle": "清明祭祖", "ceremonyDesc": "online ancestor ceremony", "ceremonyTime": "2026-04-04 09:00:00", "location": "祠堂", "coverOssId": "2060000000000000000", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "delete": { "summary": "APP 删除祭祀活动", "deprecated": false, "description": "逻辑删除祭祀活动及其祭品,并释放活动封面文件引用。", "tags": [ "祭祀" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "ceremonyId", "in": "path", "description": "要删除的祭祀活动ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/ceremonies/{ceremonyId}/gifts": { "get": { "summary": "APP 祭祀献礼列表", "deprecated": false, "description": "", "tags": [ "祭祀" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "ceremonyId", "in": "path", "description": "祭祀/活动ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 新增祭祀献礼", "deprecated": false, "description": "", "tags": [ "祭祀" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "ceremonyId", "in": "path", "description": "祭祀/活动ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CeremonyGiftBody" }, "example": { "giverName": "彭小明", "giftAmount": 66.66, "giftMessage": "缅怀先祖" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/ceremonies/{ceremonyId}/gifts/{giftId}": { "delete": { "summary": "APP 删除单条祭品", "deprecated": false, "description": "", "tags": [ "祭祀" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "ceremonyId", "in": "path", "description": "祭祀活动ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "giftId", "in": "path", "description": "要删除的祭品ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/growth-records": { "get": { "summary": "APP 成长记录列表", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 新增成长记录", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GrowthRecordBody" }, "example": { "lineagePersonId": 900020001, "recordType": "birth", "recordTitle": "出生记录", "recordContent": "birth record", "recordDate": "2026-07-09 10:00:00", "remindTime": "2027-07-09 10:00:00", "mediaOssIds": "2060000000000000001", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/growth-records/{recordId}": { "get": { "summary": "APP 成长记录详情", "deprecated": false, "description": "", "tags": [ "族务记录" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "recordId", "in": "path", "description": "记录ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "put": { "summary": "APP 修改成长记录", "deprecated": false, "description": "", "tags": [ "族务记录" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "recordId", "in": "path", "description": "记录ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GrowthRecordBody" }, "example": { "lineagePersonId": 900020001, "recordType": "birth", "recordTitle": "出生记录", "recordContent": "birth record", "recordDate": "2026-07-09 10:00:00", "remindTime": "2027-07-09 10:00:00", "mediaOssIds": "2060000000000000001", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "delete": { "summary": "APP 删除成长记录", "deprecated": false, "description": "", "tags": [ "族务记录" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "recordId", "in": "path", "description": "要删除的成长记录ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/memos": { "get": { "summary": "APP 备忘录列表", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 新增备忘录", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MemoBody" }, "example": { "memoTitle": "修谱事项", "memoContent": "contact family members", "remindTime": "2026-08-01 09:00:00", "completed": "0", "mediaOssIds": "2060000000000000001", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/memos/{memoId}": { "get": { "summary": "APP 备忘录详情", "deprecated": false, "description": "", "tags": [ "族务记录" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "memoId", "in": "path", "description": "", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "put": { "summary": "APP 修改备忘录", "deprecated": false, "description": "", "tags": [ "族务记录" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "memoId", "in": "path", "description": "", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MemoBody" }, "example": { "memoTitle": "修谱事项", "memoContent": "contact family members", "remindTime": "2026-08-01 09:00:00", "completed": "0", "mediaOssIds": "2060000000000000001", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "delete": { "summary": "APP 删除备忘录", "deprecated": false, "description": "", "tags": [ "族务记录" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "memoId", "in": "path", "description": "要删除的备忘录ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/relative-records": { "get": { "summary": "APP 亲友记录列表", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 新增亲友记录", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RelativeRecordBody" }, "example": { "relativeName": "张三", "relationName": "亲友", "eventName": "礼尚往来", "eventTime": "2026-07-16 10:00:00", "giftAmount": 100, "recordContent": "往来记录", "mediaOssIds": "2060000000000000001", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/relative-records/{relativeId}": { "get": { "summary": "APP 亲友记录详情", "deprecated": false, "description": "", "tags": [ "族务记录" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "relativeId", "in": "path", "description": "亲友记录ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "put": { "summary": "APP 修改亲友记录", "deprecated": false, "description": "", "tags": [ "族务记录" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "relativeId", "in": "path", "description": "亲友记录ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RelativeRecordBody" }, "example": { "relativeName": "张三", "relationName": "亲友", "eventName": "礼尚往来", "eventTime": "2026-07-16 10:00:00", "giftAmount": 100, "recordContent": "往来记录", "mediaOssIds": "2060000000000000001", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] }, "delete": { "summary": "APP 删除亲友记录", "deprecated": false, "description": "", "tags": [ "族务记录" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "relativeId", "in": "path", "description": "要删除的亲友记录ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/merit-records": { "get": { "summary": "APP 功德记录列表", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 新增功德记录", "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": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MeritRecordBody" }, "example": { "donorName": "彭小明", "meritType": "donation", "meritTitle": "修谱捐款", "meritContent": "support genealogy work", "amount": 100, "meritTime": "2026-07-09 10:00:00", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/merit-records/{meritId}": { "delete": { "summary": "APP 删除功德记录", "deprecated": false, "description": "", "tags": [ "族务记录" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "meritId", "in": "path", "description": "要删除的功德记录ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/notifications": { "get": { "summary": "APP 消息通知列表", "deprecated": false, "description": "", "tags": [ "消息通知" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/notifications/{notificationId}/read": { "post": { "summary": "APP 标记通知已读", "deprecated": false, "description": "", "tags": [ "消息通知" ], "parameters": [ { "name": "notificationId", "in": "path", "description": "通知ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/notifications/read-all": { "post": { "summary": "APP 全部标记已读", "deprecated": false, "description": "", "tags": [ "消息通知" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/feedback": { "get": { "summary": "APP 我的反馈列表", "deprecated": false, "description": "", "tags": [ "意见反馈" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 提交反馈", "deprecated": false, "description": "", "tags": [ "意见反馈" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FeedbackBody" }, "example": { "feedbackType": "bug", "feedbackContent": "upload image failed", "contactInfo": "13800000000" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/vip/packages": { "get": { "summary": "APP VIP 套餐列表", "deprecated": false, "description": "", "tags": [ "VIP" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/vip/orders": { "get": { "summary": "APP VIP 订单列表", "deprecated": false, "description": "", "tags": [ "VIP" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/ListResult", "description": "通用列表响应" } }, "security": [ { "SaToken": [] } ] }, "post": { "summary": "APP 创建 VIP 订单", "deprecated": false, "description": "", "tags": [ "VIP" ], "parameters": [ { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VipOrderBody" }, "example": { "packageId": 900060001, "genealogyId": 900001001, "payType": "wechat" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/videos/{videoId}": { "delete": { "summary": "APP 删除视频", "deprecated": false, "description": "逻辑删除视频,并释放视频文件和封面文件引用。", "tags": [ "视频" ], "parameters": [ { "name": "genealogyId", "in": "path", "description": "家谱ID", "required": true, "example": 900001001, "schema": { "type": "integer", "format": "int64" } }, { "name": "videoId", "in": "path", "description": "要删除的视频ID", "required": true, "example": "", "schema": { "type": "integer", "format": "int64" } }, { "name": "clientid", "in": "header", "description": "APP 认证业务请求的 clientid Header 必填;必须与请求体 clientId(如提交)一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "required": true, "example": "428a8310cd442757ae699df5d894f051", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" } }, "security": [ { "SaToken": [] } ] } } }, "components": { "schemas": { "RVoid": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "type": "null" } } }, "PasswordRegisterBody": { "type": "object", "additionalProperties": false, "required": [ "clientId", "grantType", "tenantId", "phone", "password", "smsCode" ], "properties": { "clientId": { "description": "必填;必须与 clientid Header 一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "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" }, "smsCode": { "description": "4 位短信验证码", "type": "string", "pattern": "^\\d{4}$", "example": "1234" } } }, "PasswordLoginBody": { "type": "object", "additionalProperties": false, "required": [ "clientId", "grantType", "tenantId", "phone", "password" ], "properties": { "clientId": { "description": "必填;必须与 clientid Header 一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "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" } } }, "SmsLoginBody": { "type": "object", "additionalProperties": false, "required": [ "clientId", "grantType", "tenantId", "phone", "smsCode" ], "properties": { "clientId": { "description": "必填;必须与 clientid Header 一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "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": "4 位短信验证码", "type": "string", "pattern": "^\\d{4}$", "example": "1234" } } }, "SmsCodeBody": { "type": "object", "additionalProperties": false, "required": [ "clientId", "grantType", "tenantId", "sceneCode", "phone", "validToken" ], "properties": { "clientId": { "description": "必填;必须与 clientid Header 一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "type": "string" }, "grantType": { "description": "授权类型,例如password、sms、wechat、apple", "type": "string", "example": "sms" }, "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string", "example": "000000" }, "sceneCode": { "description": "APP 短信场景编码", "type": "string", "enum": [ "APP_SMS_LOGIN", "APP_REGISTER", "APP_FORGOT_PASSWORD", "APP_PHONE_CHANGE", "APP_ACCOUNT_DEACTIVATE" ], "example": "APP_SMS_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", "additionalProperties": false, "required": [ "clientId", "grantType", "tenantId", "phone", "smsCode", "newPassword" ], "properties": { "clientId": { "description": "必填;必须与 clientid Header 一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "type": "string" }, "grantType": { "description": "授权类型", "type": "string", "example": "password" }, "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string", "example": "000000" }, "phone": { "description": "手机号", "type": "string" }, "smsCode": { "description": "4 位短信验证码", "type": "string", "pattern": "^\\d{4}$", "example": "1234" }, "newPassword": { "type": "string", "description": "32 位 MD5" } } }, "PhoneChangeBody": { "type": "object", "additionalProperties": false, "required": [ "clientId", "phone", "smsCode" ], "properties": { "clientId": { "description": "必填;必须与 clientid Header 一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "type": "string" }, "phone": { "description": "新手机号", "type": "string" }, "smsCode": { "description": "4 位短信验证码", "type": "string", "pattern": "^\\d{4}$", "example": "1234" } } }, "AccountDeactivateBody": { "type": "object", "additionalProperties": false, "required": [ "clientId", "smsCode" ], "properties": { "clientId": { "description": "必填;必须与 clientid Header 一致,且客户端 clientKey 必须为 app 并与 APP 路由一致。", "type": "string" }, "smsCode": { "description": "4 位短信验证码", "type": "string", "pattern": "^\\d{4}$", "example": "1234" } } }, "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" } } }, "GenerationPoemBatchBody": { "type": "object", "required": [ "poemText" ], "properties": { "poemText": { "description": "字辈文本。无分隔符时按单个字拆分;可用空格、逗号、分号、顿号、斜杠或竖线分隔多个字辈。单个字辈最多50个字符,一次最多500个世代。", "type": "string", "maxLength": 26000, "example": "德承家亦\n忠厚传芳" }, "disableMissing": { "description": "保存时是否停用未出现在新文本中的后续世代;不会删除历史记录。", "type": "boolean", "example": false } } }, "LineagePersonBody": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "appUserId": { "description": "绑定的业务用户ID;仅家谱管理员可绑定,且用户必须属于当前租户并处于正常状态", "type": "integer", "format": "int64" }, "personNo": { "description": "人物编号;不传时由服务端生成", "type": "string" }, "name": { "description": "姓名", "type": "string" }, "aliasName": { "description": "别名或曾用名", "type": "string" }, "sex": { "description": "性别,建议使用系统字典值", "type": "string", "example": "0" }, "generation": { "description": "世代序号", "type": "integer", "format": "int64" }, "generationName": { "description": "字辈或辈分", "type": "string" }, "fatherId": { "description": "父亲人物ID,必须属于当前家谱", "type": "integer", "format": "int64" }, "motherId": { "description": "母亲人物ID,必须属于当前家谱", "type": "integer", "format": "int64" }, "avatarOssId": { "description": "头像文件OSS ID;用户界面应通过统一上传组件获得,不允许手工录入", "type": "integer", "format": "int64", "nullable": true }, "birthDate": { "type": "string", "format": "date-time", "nullable": true }, "birthLunar": { "description": "生日是否农历,使用项目字典值", "type": "string" }, "birthPlace": { "description": "出生地", "type": "string" }, "deathDate": { "type": "string", "format": "date-time", "nullable": true }, "deathLunar": { "description": "逝世日期是否农历,使用项目字典值", "type": "string" }, "deathPlace": { "description": "逝世地", "type": "string" }, "burialPlace": { "description": "安葬地", "type": "string" }, "personStatus": { "description": "人物状态字典值", "type": "string" }, "biography": { "description": "人物简介", "type": "string" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "remark": { "description": "备注", "type": "string" }, "relationName": { "description": "通过添加配偶快捷接口提交时使用的关系显示名称", "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": [ "commentContent" ], "properties": { "parentCommentId": { "description": "父评论 ID;不传或传 null 表示发布一级评论", "type": "integer", "format": "int64", "nullable": true }, "commentContent": { "description": "评论内容,最多 1000 个字符", "type": "string" } } }, "GenealogyCreateBody": { "type": "object", "required": [ "genealogyName", "surname", "regionCode" ], "properties": { "genealogyName": { "description": "家谱名称", "type": "string" }, "surname": { "description": "姓氏", "type": "string" }, "ancestralHall": { "description": "堂号/祠堂名称", "type": "string" }, "originPlace": { "description": "籍贯/起源地", "type": "string" }, "regionCode": { "description": "行政区划编码", "type": "string" }, "addressDetail": { "description": "详细地址", "type": "string" }, "coverOssId": { "description": "封面图片OSS ID", "type": "integer", "format": "int64" }, "intro": { "description": "简介", "type": "string" }, "visibility": { "description": "可见范围,例如0私密、1公开、2成员可见", "type": "string" }, "joinMode": { "description": "加入方式,例如0关闭、1审核、2邀请码", "type": "string" } }, "example": { "genealogyName": "彭氏家谱", "surname": "彭", "ancestralHall": "陇西堂", "originPlace": "江西吉安", "regionCode": "360800", "addressDetail": "江西省吉安市", "coverOssId": 2060000000000000000, "intro": "彭氏家谱简介", "visibility": "1", "joinMode": "1" } }, "GenealogyUpdateBody": { "type": "object", "properties": { "genealogyName": { "description": "家谱名称", "type": "string" }, "surname": { "description": "姓氏", "type": "string" }, "ancestralHall": { "description": "堂号/祠堂名称", "type": "string" }, "originPlace": { "description": "籍贯/起源地", "type": "string" }, "regionCode": { "description": "行政区划编码", "type": "string" }, "addressDetail": { "description": "详细地址", "type": "string" }, "coverOssId": { "description": "封面图片OSS ID", "type": "integer", "format": "int64" }, "intro": { "description": "简介", "type": "string" }, "visibility": { "description": "可见范围,例如0私密、1公开、2成员可见", "type": "string" }, "joinMode": { "description": "加入方式,例如0关闭、1审核、2邀请码", "type": "string" } }, "example": { "genealogyName": "彭氏家谱", "surname": "彭", "ancestralHall": "陇西堂", "originPlace": "江西吉安", "regionCode": "360800", "addressDetail": "江西省吉安市", "coverOssId": 2060000000000000000, "intro": "更新后的家谱简介", "visibility": "1", "joinMode": "1" } }, "GenealogyJoinApplyBody": { "type": "object", "properties": { "applicantName": { "description": "申请人姓名", "type": "string" }, "phone": { "description": "手机号", "type": "string" }, "relationDesc": { "description": "与家谱/人物的关系说明", "type": "string" }, "applyReason": { "description": "申请理由", "type": "string" }, "inviterUserId": { "description": "邀请人业务用户ID", "type": "integer", "format": "int64" } }, "example": { "applicantName": "彭小明", "phone": "13800000000", "relationDesc": "本族成员", "applyReason": "申请加入家谱维护", "inviterUserId": 900000001 } }, "GenealogyJoinAuditBody": { "type": "object", "required": [ "status" ], "properties": { "status": { "description": "状态,建议使用对应字典值", "type": "string" }, "auditRemark": { "description": "审核备注", "type": "string" } }, "example": { "status": "1", "auditRemark": "信息核验通过" } }, "GenealogyMemberUpdateBody": { "type": "object", "properties": { "memberName": { "description": "成员姓名", "type": "string" }, "relationName": { "description": "成员关系名称", "type": "string" }, "roleType": { "description": "成员角色类型,例如创建者、管理员、普通成员", "type": "string" }, "lineagePersonId": { "description": "绑定的世系人物ID", "type": "integer", "format": "int64" } }, "example": { "memberName": "彭小明", "relationName": "族亲", "roleType": "member", "lineagePersonId": 900020001 } }, "GenealogyOwnerTransferBody": { "type": "object", "required": [ "targetMemberId" ], "properties": { "targetMemberId": { "description": "目标成员ID", "type": "integer", "format": "int64" } }, "example": { "targetMemberId": 900010002 } }, "GenerationPoemBody": { "type": "object", "required": [ "generationNo", "generationText" ], "properties": { "generationNo": { "description": "世代序号", "type": "integer", "format": "int64", "minimum": 1, "maximum": 2147483647 }, "generationText": { "description": "当前世代的字辈文字,最长50个字符", "type": "string", "maxLength": 50 }, "description": { "description": "字辈说明,最长500个字符", "type": "string", "maxLength": 500 }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64", "minimum": -2147483648, "maximum": 2147483647 }, "status": { "description": "状态,0正常,1停用", "type": "string" } }, "example": { "generationNo": 5, "generationText": "忠", "description": "fifth generation poem", "sortOrder": 5, "status": "0" } }, "ArticleBody": { "type": "object", "required": [ "articleTitle", "articleContent" ], "properties": { "categoryId": { "description": "分类ID", "type": "integer", "format": "int64" }, "articleTitle": { "description": "文章标题", "type": "string" }, "articleSummary": { "description": "文章摘要", "type": "string" }, "coverOssId": { "description": "封面图片OSS ID", "type": "integer", "format": "int64" }, "articleContent": { "description": "文章内容", "type": "string" }, "authorName": { "description": "作者名称", "type": "string" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "status": { "description": "状态,建议使用对应字典值", "type": "string" } }, "example": { "categoryId": 900040001, "articleTitle": "族谱源流", "articleSummary": "介绍本支源流", "coverOssId": 2060000000000000000, "articleContent": "

article content

", "authorName": "族谱管理员", "sortOrder": 1, "status": "0" } }, "AlbumBody": { "type": "object", "required": [ "albumName" ], "properties": { "albumName": { "description": "相册名称", "type": "string" }, "albumDesc": { "description": "相册说明", "type": "string" }, "coverOssId": { "description": "封面图片OSS ID", "type": "integer", "format": "int64" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "status": { "description": "状态,建议使用对应字典值", "type": "string" } }, "example": { "albumName": "老照片", "albumDesc": "family old photos", "coverOssId": 2060000000000000000, "sortOrder": 1, "status": "0" } }, "AlbumPhotoBody": { "type": "object", "required": [ "ossId" ], "properties": { "ossId": { "description": "OSS文件ID,表单内部使用,用户侧应通过上传组件获取", "type": "integer", "format": "int64" }, "photoTitle": { "description": "图片标题", "type": "string" }, "photoDesc": { "description": "图片说明", "type": "string" }, "photographer": { "description": "拍摄人", "type": "string" }, "shootTime": { "description": "拍摄时间", "type": "string" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "status": { "description": "状态,建议使用对应字典值", "type": "string" } }, "example": { "ossId": 2060000000000000000, "photoTitle": "老宅合影", "photoDesc": "old house photo", "photographer": "彭小明", "shootTime": "2026-07-09 10:00:00", "sortOrder": 1, "status": "0" } }, "CeremonyBody": { "type": "object", "required": [ "ceremonyType", "ceremonyTitle" ], "properties": { "ceremonyType": { "description": "祭祀/活动类型", "type": "string" }, "ceremonyTitle": { "description": "祭祀/活动标题", "type": "string" }, "ceremonyDesc": { "description": "祭祀/活动说明", "type": "string" }, "ceremonyTime": { "description": "祭祀/活动时间", "type": "string" }, "location": { "description": "地点", "type": "string" }, "coverOssId": { "description": "封面图片OSS ID", "type": "integer", "format": "int64" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "status": { "description": "状态,建议使用对应字典值", "type": "string" } }, "example": { "ceremonyType": "ancestor", "ceremonyTitle": "清明祭祖", "ceremonyDesc": "online ancestor ceremony", "ceremonyTime": "2026-04-04 09:00:00", "location": "祠堂", "coverOssId": 2060000000000000000, "sortOrder": 1, "status": "0" } }, "CeremonyGiftBody": { "type": "object", "required": [ "giftAmount" ], "properties": { "giverName": { "description": "赠送人/献礼人姓名", "type": "string" }, "giftAmount": { "description": "礼物金额", "type": "number", "format": "double" }, "giftMessage": { "description": "礼物留言", "type": "string" } }, "example": { "giverName": "彭小明", "giftAmount": 66.66, "giftMessage": "缅怀先祖" } }, "GrowthRecordBody": { "type": "object", "required": [ "recordTitle" ], "properties": { "lineagePersonId": { "description": "绑定的世系人物ID", "type": "integer", "format": "int64" }, "recordType": { "description": "记录类型", "type": "string" }, "recordTitle": { "description": "记录标题", "type": "string" }, "recordContent": { "description": "记录内容", "type": "string" }, "recordDate": { "description": "记录日期", "type": "string" }, "remindTime": { "description": "提醒时间", "type": "string" }, "mediaOssIds": { "description": "媒体文件 OSS ID 列表;多个正整数 ID 使用英文逗号分隔,禁止空项和其他字符", "type": "string", "pattern": "^$|^[1-9][0-9]*(,[1-9][0-9]*)*$" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "status": { "description": "状态,建议使用对应字典值", "type": "string" } }, "example": { "lineagePersonId": 900020001, "recordType": "birth", "recordTitle": "出生记录", "recordContent": "birth record", "recordDate": "2026-07-09 10:00:00", "remindTime": "2027-07-09 10:00:00", "mediaOssIds": "2060000000000000001", "sortOrder": 1, "status": "0" } }, "MemoBody": { "type": "object", "required": [ "memoTitle" ], "properties": { "memoTitle": { "description": "备忘标题", "type": "string" }, "memoContent": { "description": "备忘内容", "type": "string" }, "remindTime": { "description": "提醒时间", "type": "string" }, "completed": { "description": "是否已完成", "type": "string" }, "mediaOssIds": { "description": "媒体文件 OSS ID 列表;多个正整数 ID 使用英文逗号分隔,禁止空项和其他字符", "type": "string", "pattern": "^$|^[1-9][0-9]*(,[1-9][0-9]*)*$" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "status": { "description": "状态,建议使用对应字典值", "type": "string" } }, "example": { "memoTitle": "修谱事项", "memoContent": "contact family members", "remindTime": "2026-08-01 09:00:00", "completed": "0", "mediaOssIds": "2060000000000000001", "sortOrder": 1, "status": "0" } }, "RelativeRecordBody": { "type": "object", "required": [ "relativeName" ], "properties": { "relativeName": { "description": "亲友姓名", "type": "string" }, "relationName": { "description": "关系名称", "type": "string" }, "eventName": { "description": "事件名称", "type": "string" }, "eventTime": { "description": "事件时间", "type": "string" }, "giftAmount": { "description": "礼金金额", "type": "number" }, "recordContent": { "description": "记录内容", "type": "string" }, "mediaOssIds": { "description": "媒体文件 OSS ID 列表;多个正整数 ID 使用英文逗号分隔,禁止空项和其他字符", "type": "string", "pattern": "^$|^[1-9][0-9]*(,[1-9][0-9]*)*$" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "status": { "description": "状态,建议使用对应字典值", "type": "string" } } }, "MeritRecordBody": { "type": "object", "required": [ "donorName", "meritTitle" ], "properties": { "donorName": { "description": "功德人/捐赠人姓名", "type": "string" }, "meritType": { "description": "功德类型", "type": "string" }, "meritTitle": { "description": "功德标题", "type": "string" }, "meritContent": { "description": "功德内容", "type": "string" }, "amount": { "description": "金额", "type": "number", "format": "double" }, "meritTime": { "description": "功德时间", "type": "string" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "status": { "description": "状态,建议使用对应字典值", "type": "string" } }, "example": { "donorName": "彭小明", "meritType": "donation", "meritTitle": "修谱捐款", "meritContent": "support genealogy work", "amount": 100, "meritTime": "2026-07-09 10:00:00", "sortOrder": 1, "status": "0" } }, "FeedbackBody": { "type": "object", "required": [ "feedbackContent" ], "properties": { "feedbackType": { "description": "反馈类型", "type": "string" }, "feedbackContent": { "description": "反馈内容", "type": "string" }, "contactInfo": { "description": "联系方式", "type": "string" } }, "example": { "feedbackType": "bug", "feedbackContent": "upload image failed", "contactInfo": "13800000000" } }, "VipOrderBody": { "type": "object", "required": [ "packageId" ], "properties": { "packageId": { "description": "VIP套餐ID", "type": "integer", "format": "int64" }, "genealogyId": { "description": "家谱ID", "type": "integer", "format": "int64" }, "payType": { "description": "支付方式", "type": "string" } }, "example": { "packageId": 900060001, "genealogyId": 900001001, "payType": "wechat" } }, "VerificationChallengeBody": { "type": "object", "required": [ "tenantId", "clientId", "sceneCode", "subject" ], "properties": { "tenantId": { "type": "string", "description": "租户 ID" }, "clientId": { "type": "string", "description": "客户端 ID" }, "sceneCode": { "type": "string", "description": "APP 短信场景编码", "enum": [ "APP_SMS_LOGIN", "APP_REGISTER", "APP_FORGOT_PASSWORD", "APP_PHONE_CHANGE", "APP_ACCOUNT_DEACTIVATE" ] }, "subject": { "type": "string", "description": "验证主体,如手机号/用户名/IP" } }, "example": { "tenantId": "000000", "clientId": "428a8310cd442757ae699df5d894f051", "sceneCode": "APP_SMS_LOGIN", "subject": "13800000000" } }, "VerificationCheckBody": { "type": "object", "required": [ "tenantId", "clientId", "sceneCode", "subject", "challengeId" ], "properties": { "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string" }, "clientId": { "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", "type": "string" }, "sceneCode": { "description": "APP 短信场景编码", "type": "string", "enum": [ "APP_SMS_LOGIN", "APP_REGISTER", "APP_FORGOT_PASSWORD", "APP_PHONE_CHANGE", "APP_ACCOUNT_DEACTIVATE" ] }, "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", "description": "将天爱 1.5.5 前端验证回调中的 data 原样放入 track;回调 id 不放入 payload,挑战标识统一提交顶层 challengeId", "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": "用户填写的图形验证码答案" } } }, "RObject": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "type": "object", "additionalProperties": true, "properties": {} } } }, "RList": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "type": "array", "items": { "type": "object", "additionalProperties": true, "properties": {} } } } }, "PageResult": { "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 } } }, "RLogin": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/LoginVo" } } }, "LoginVo": { "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" } } }, "RFileUpload": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/FileUploadVo" } } }, "FileUploadVo": { "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 短信场景编码", "type": "string", "enum": [ "APP_SMS_LOGIN", "APP_REGISTER", "APP_FORGOT_PASSWORD", "APP_PHONE_CHANGE", "APP_ACCOUNT_DEACTIVATE" ] }, "ttlSeconds": { "description": "验证或票据有效秒数", "type": "integer" } }, "example": { "required": true, "providerCode": "tianai", "captchaType": "SLIDER", "sceneCode": "APP_SMS_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,..." } }, "RGenerationPoem": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string" }, "data": { "$ref": "#/components/schemas/GenerationPoemView" } } }, "GenerationPoemView": { "type": "object", "properties": { "poemId": { "description": "字辈记录ID", "type": "integer", "format": "int64" }, "genealogyId": { "description": "所属家谱ID", "type": "integer", "format": "int64" }, "genealogyNo": { "description": "家谱编号", "type": "string" }, "genealogyName": { "description": "家谱名称", "type": "string" }, "generationNo": { "description": "世代序号", "type": "integer", "format": "int64" }, "generationText": { "description": "字辈文字", "type": "string" }, "description": { "description": "字辈说明", "type": "string" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "status": { "description": "状态,0正常,1停用", "type": "string" } } }, "RGenerationPoemList": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/GenerationPoemView" } } } }, "RGenerationPoemBatchPreview": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string" }, "data": { "$ref": "#/components/schemas/GenerationPoemBatchPreviewView" } } }, "GenerationPoemBatchPreviewView": { "type": "object", "properties": { "genealogyId": { "description": "所属家谱ID", "type": "integer", "format": "int64" }, "genealogyNo": { "description": "家谱编号", "type": "string" }, "genealogyName": { "description": "家谱名称", "type": "string" }, "createCount": { "description": "将新增的字辈数量", "type": "integer" }, "updateCount": { "description": "将修改或恢复的字辈数量", "type": "integer" }, "keepCount": { "description": "保持不变的字辈数量", "type": "integer" }, "disableCount": { "description": "将停用的字辈数量", "type": "integer" }, "items": { "description": "按世代排序的逐项变更预览", "type": "array", "items": { "$ref": "#/components/schemas/GenerationPoemBatchItemView" } } } }, "GenerationPoemBatchItemView": { "type": "object", "properties": { "poemId": { "description": "现有字辈记录ID;新增时为空", "type": "integer", "format": "int64" }, "generationNo": { "description": "世代序号", "type": "integer", "format": "int64" }, "oldGenerationText": { "description": "保存前字辈文字", "type": "string" }, "newGenerationText": { "description": "保存后字辈文字", "type": "string" }, "oldStatus": { "description": "保存前状态", "type": "string" }, "newStatus": { "description": "保存后状态", "type": "string" }, "action": { "description": "预览动作,create、update、keep 或 disable", "type": "string" }, "warning": { "description": "需要用户确认的变更提示", "type": "string" } } }, "RLineagePerson": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "$ref": "#/components/schemas/LineagePersonView" } } }, "LineagePersonView": { "type": "object", "properties": { "personId": { "description": "人物ID", "type": "integer", "format": "int64" }, "genealogyId": { "description": "家谱ID", "type": "integer", "format": "int64" }, "genealogyName": { "description": "家谱名称", "type": "string" }, "genealogyNo": { "description": "家谱编号", "type": "string" }, "appUserId": { "description": "绑定业务用户ID", "type": "integer", "format": "int64", "nullable": true }, "appUserNickName": { "description": "绑定业务用户昵称", "type": "string" }, "personNo": { "description": "人物编号", "type": "string" }, "name": { "description": "姓名", "type": "string" }, "aliasName": { "description": "别名或曾用名", "type": "string" }, "sex": { "description": "性别字典值", "type": "string" }, "generation": { "description": "世代序号", "type": "integer", "format": "int64" }, "generationName": { "description": "字辈或辈分", "type": "string" }, "fatherId": { "description": "父亲人物ID", "type": "integer", "format": "int64", "nullable": true }, "fatherName": { "description": "父亲姓名", "type": "string" }, "motherId": { "description": "母亲人物ID", "type": "integer", "format": "int64", "nullable": true }, "motherName": { "description": "母亲姓名", "type": "string" }, "spouseNames": { "description": "配偶姓名,多个使用顿号分隔", "type": "string" }, "avatarOssId": { "description": "头像文件OSS ID", "type": "integer", "format": "int64", "nullable": true }, "birthDate": { "description": "出生日期", "type": "string", "format": "date-time", "nullable": true }, "birthLunar": { "description": "生日是否农历字典值", "type": "string" }, "birthPlace": { "description": "出生地", "type": "string" }, "deathDate": { "description": "逝世日期", "type": "string", "format": "date-time", "nullable": true }, "deathLunar": { "description": "逝世日期是否农历字典值", "type": "string" }, "deathPlace": { "description": "逝世地", "type": "string" }, "burialPlace": { "description": "安葬地", "type": "string" }, "personStatus": { "description": "人物状态字典值", "type": "string" }, "biography": { "description": "人物简介", "type": "string" }, "sortOrder": { "description": "排序值", "type": "integer", "format": "int64" }, "status": { "description": "数据状态,0正常、1停用", "type": "string" }, "remark": { "description": "备注", "type": "string" } } }, "RLineagePersonList": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/LineagePersonView" } } } }, "RLineagePersonTreeList": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/LineagePersonTreeView" } } } }, "LineagePersonTreeView": { "allOf": [ { "$ref": "#/components/schemas/LineagePersonView" }, { "type": "object", "properties": { "relationType": { "description": "与当前树节点的关系类型", "type": "string" }, "relationName": { "description": "关系显示名称", "type": "string" }, "spouses": { "description": "配偶节点", "type": "array", "items": { "$ref": "#/components/schemas/LineagePersonTreeView" } }, "children": { "description": "子女节点", "type": "array", "items": { "$ref": "#/components/schemas/LineagePersonTreeView" } } } } ] }, "LineagePersonPageResult": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string", "example": "操作成功" }, "rows": { "description": "当前页世系人物", "type": "array", "items": { "$ref": "#/components/schemas/LineagePersonView" } }, "total": { "description": "总记录数", "type": "integer", "format": "int64", "example": 0 } } }, "RFamilyFeedComment": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string" }, "data": { "$ref": "#/components/schemas/FamilyFeedCommentView" } } }, "FamilyFeedCommentView": { "type": "object", "properties": { "commentId": { "description": "评论 ID", "type": "integer", "format": "int64" }, "genealogyId": { "description": "所属家谱 ID", "type": "integer", "format": "int64" }, "feedId": { "description": "所属动态 ID", "type": "integer", "format": "int64" }, "parentCommentId": { "description": "父评论 ID;null 或 0 表示一级评论", "type": "integer", "format": "int64", "nullable": true }, "appUserId": { "description": "评论业务用户 ID", "type": "integer", "format": "int64" }, "appUserNickName": { "description": "评论人昵称", "type": "string" }, "appUserAvatar": { "description": "评论人头像文件 ID", "type": "integer", "format": "int64", "nullable": true }, "parentAppUserId": { "description": "被直接回复的业务用户 ID", "type": "integer", "format": "int64", "nullable": true }, "parentAppUserNickName": { "description": "被直接回复的用户昵称", "type": "string", "nullable": true }, "commentContent": { "description": "评论内容;作者删除后为 null", "type": "string", "nullable": true }, "userDeleted": { "description": "作者删除状态,0 未删除,1 已删除并保留占位", "type": "string", "enum": [ "0", "1" ], "example": "0" }, "replyCount": { "description": "正常展示的直接回复数量", "type": "integer", "format": "int64" }, "commentLevel": { "description": "评论层级,root 为一级评论,reply 为回复", "type": "string", "enum": [ "root", "reply" ] }, "status": { "description": "可见状态;会员接口仅返回 0(正常展示)", "type": "string", "example": "0" }, "createTime": { "description": "评论发布时间", "type": "string", "format": "date-time" } } }, "RFamilyFeedCommentList": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/FamilyFeedCommentView" } } } }, "FamilyFeedCommentPageResult": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "example": 200 }, "msg": { "description": "响应消息", "type": "string" }, "rows": { "description": "评论分页数据", "type": "array", "items": { "$ref": "#/components/schemas/FamilyFeedCommentView" } }, "total": { "description": "评论总数", "type": "integer", "format": "int64" } } } }, "responses": { "VoidResult": { "description": "通用成功响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RVoid" } } } }, "ObjectResult": { "description": "通用对象响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RObject" } } } }, "ListResult": { "description": "通用列表响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RList" } } } }, "PageResult": { "description": "通用分页响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageResult" } } } }, "LoginResult": { "description": "登录结果", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RLogin" } } } }, "FileUploadResult": { "description": "文件上传结果", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RFileUpload" } } } }, "VerificationRequireResult": { "description": "验证需求查询结果", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RVerificationRequire" } } } }, "VerificationChallengeResult": { "description": "验证挑战生成结果", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RVerificationChallenge" } } } }, "VerificationCheckResult": { "description": "验证校验结果", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RVerificationCheck" } } } }, "LegacyCaptchaResult": { "description": "兼容旧图形验证码结果", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RLegacyCaptcha" } } } }, "GenerationPoemResult": { "description": "字辈详情响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RGenerationPoem" } } } }, "GenerationPoemListResult": { "description": "字辈列表响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RGenerationPoemList" } } } }, "GenerationPoemBatchPreviewResult": { "description": "字辈批量预览响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RGenerationPoemBatchPreview" } } } }, "LineagePersonResult": { "description": "世系人物详情响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RLineagePerson" } } } }, "LineagePersonListResult": { "description": "世系人物列表或选项响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RLineagePersonList" } } } }, "LineagePersonTreeResult": { "description": "世系树响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RLineagePersonTreeList" } } } }, "LineagePersonPageResult": { "description": "世系人物分页响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LineagePersonPageResult" } } } }, "FamilyFeedCommentResult": { "description": "家族圈评论对象响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RFamilyFeedComment" } } } }, "FamilyFeedCommentListResult": { "description": "家族圈评论列表响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RFamilyFeedCommentList" } } } }, "FamilyFeedCommentPageResult": { "description": "家族圈评论分页响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FamilyFeedCommentPageResult" } } } } }, "securitySchemes": { "SaToken": { "type": "apiKey", "in": "header", "name": "Authorization", "description": "登录后返回的 token。若本地配置使用 sa-token 名称,请按项目实际 token-name 调整。" } } }, "servers": [], "security": [ { "SaToken": [] } ] }