{ "openapi": "3.1.0", "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": "视频" }, { "name": "贺礼邀约" }, { "name": "官网内容" } ], "paths": { "/genealogy/app/auth/verification/{operationCode}/require": { "get": { "summary": "查询 APP 认证动作是否需要验证", "deprecated": false, "description": "服务端按 operationCode 对应 APP 路由的当前激活绑定解析验证场景,前端不得提交 sceneCode。", "tags": [ "验证中心" ], "parameters": [ { "name": "operationCode", "in": "path", "description": "APP 认证业务动作", "required": true, "example": "", "schema": { "type": "string", "enum": [ "password-login", "sms-login", "register", "forgot-password", "phone-change", "account-deactivate" ] } }, { "name": "tenantId", "in": "query", "description": "租户ID,用于区分不同租户的数据和验证策略", "required": true, "example": "000000", "schema": { "type": "string" } }, { "name": "subject", "in": "query", "description": "验证主体,通常为手机号、用户ID或登录账号", "required": false, "example": "13800000000", "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/VerificationRequireResult", "description": "验证需求查询结果" } }, "security": [ { "SaToken": [] } ] } }, "/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_LOGIN,短信登录验证码使用 APP_SMS_LOGIN", "required": true, "example": "APP_LOGIN", "schema": { "type": "string", "enum": [ "APP_LOGIN", "APP_SMS_LOGIN", "APP_REGISTER", "APP_FORGOT_PASSWORD", "APP_PHONE_CHANGE", "APP_ACCOUNT_DEACTIVATE" ] } }, { "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": [] } ] } }, "/genealogy/app/auth/verification/{operationCode}/challenge": { "post": { "summary": "生成 APP 认证动作验证挑战", "deprecated": false, "description": "服务端按 operationCode 的激活绑定解析场景。tenantId、subject 必须完整提交;clientid 仅从 Header 读取,前端不得提交 clientId 或 sceneCode。", "tags": [ "验证中心" ], "parameters": [ { "name": "operationCode", "in": "path", "description": "APP 认证业务动作", "required": true, "example": "", "schema": { "type": "string", "enum": [ "password-login", "sms-login", "register", "forgot-password", "phone-change", "account-deactivate" ] } }, { "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/VerificationChallengeBody" }, "example": { "tenantId": "000000", "subject": "13800000000" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VerificationChallengeResult", "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": [] } ] } }, "/genealogy/app/auth/verification/{operationCode}/verify": { "post": { "summary": "校验 APP 认证动作验证结果并换取 validToken", "deprecated": false, "description": "必须使用生成挑战时相同的 operationCode、tenantId、subject 和 challengeId。clientid 仅从 Header 读取;服务端重新解析同一路由的激活场景,前端不得提交 clientId 或 sceneCode。", "tags": [ "验证中心" ], "parameters": [ { "name": "operationCode", "in": "path", "description": "APP 认证业务动作", "required": true, "example": "", "schema": { "type": "string", "enum": [ "password-login", "sms-login", "register", "forgot-password", "phone-change", "account-deactivate" ] } }, { "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/VerificationCheckBody" }, "examples": { "tianai_behavior": { "value": { "tenantId": "000000", "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", "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": [] } ] } }, "/captcha/verify": { "post": { "summary": "校验验证结果并换取 validToken", "deprecated": false, "description": "必须提交生成挑战时相同的 tenantId、clientId、sceneCode、subject 和 challengeId。验证通过后返回 validToken;该票据只能由租户、客户端、场景、主体和 IP 完全一致的目标业务入口单次消费。APP_LOGIN 由密码登录接口消费,短信业务场景由短信验证码发送接口消费。", "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", "validToken": "valid-token-from-captcha-verify" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/LoginResult", "description": "登录结果" }, "400": { "$ref": "#/components/responses/LoginResult", "description": "后端按 APP_PASSWORD_LOGIN 路由的当前激活绑定解析场景;该场景策略要求验证时必须提交匹配的 validToken,不要求验证时 validToken 可为空;请求携带已废弃的 sceneCode 或其他未知字段返回 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/{operationCode}/code": { "post": { "summary": "APP 发送短信验证码", "deprecated": false, "description": "operationCode 决定短信业务动作,服务端按对应 APP 路由的激活绑定解析验证场景。策略开启时需提交 validToken,关闭时可为空;前端不得提交 sceneCode 或短信供应商配置 ID。", "tags": [ "认证登录" ], "parameters": [ { "name": "operationCode", "in": "path", "description": "支持发送短信验证码的 APP 认证业务动作", "required": true, "example": "", "schema": { "type": "string", "enum": [ "sms-login", "register", "forgot-password", "phone-change", "account-deactivate" ] } }, { "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", "validToken": "captcha-ticket" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/VoidResult", "description": "通用成功响应" }, "400": { "description": "拒绝原因:票据缺失;票据与租户不匹配(错租户);票据与客户端不匹配(错客户端);票据与场景不匹配(错场景);票据过期;票据已被使用(重复使用);手机号主体不匹配;请求携带供应商配置或历史字段。", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RVoid" } } }, "headers": {} } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/auth/sms/code": { "post": { "summary": "APP 发送短信验证码", "deprecated": false, "description": "按后台验证策略发送短信验证码。策略开启时需先完成验证中心校验并提交 validToken;策略关闭时 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": "张三", "realName": "张三", "avatar": "2060000000000000000", "sex": "0", "birthday": "1990-01-01", "email": "zhangsan@example.com" } } }, "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": { "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": { "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/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": { "uploadId": "UPLOAD202607090001", "fileName": "cover.jpg", "fileMd5": "d41d8cd98f00b204e9800998ecf8427e", "totalSize": 9532, "totalChunks": 1, "chunkSize": 4194304, "contentType": "image/jpeg" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/files/resumable/chunk": { "post": { "summary": "APP 上传分片", "deprecated": false, "description": "uploadId 已绑定初始化契约。除最后一片外,分片实际大小必须等于 chunkSize;最后一片必须等于剩余字节数。", "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", "examples": [ 0 ], "example": 0 }, "chunkMd5": { "type": "string", "examples": [ "d41d8cd98f00b204e9800998ecf8427e" ], "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", "fileName": "cover.jpg", "fileMd5": "d41d8cd98f00b204e9800998ecf8427e", "totalSize": 9532, "totalChunks": 1 } } }, "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/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/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/app/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/app/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/app/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": "2060000000000000001", "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/quota": { "get": { "summary": "APP 查询当前用户家谱配额", "deprecated": false, "description": "查询已创建和已加入的家谱数量、上限、剩余额度及是否还能继续操作。加入总数包含自己创建的家谱;limit 和 remaining 为 -1 时表示不限。", "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/GenealogyQuotaResult", "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": "2060000000000000001", "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/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/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/{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": "2060000000000000001", "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": "2060000000000000001", "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": "2060000000000000001", "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": "2060000000000000001", "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": "2060000000000000001", "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": "2060000000000000001", "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/FamilyFeedListResult", "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/FamilyFeedResult", "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/FamilyFeedPageResult", "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/FamilyFeedResult", "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/FamilyFeedResult", "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/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}/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/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": "2060000000000000001", "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": "2060000000000000001", "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": "2060000000000000001", "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": "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": "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": "2060000000000000001", "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": "祠堂", "locationAddress": "四川省成都市示例路1号", "longitude": 104.066541, "latitude": 30.572269, "coverOssId": "2060000000000000001", "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": [] } ] }, "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": [] } ] }, "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": "祠堂", "locationAddress": "四川省成都市示例路1号", "longitude": 104.066541, "latitude": 30.572269, "coverOssId": "2060000000000000001", "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "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": [] } ] }, "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": [] } ] }, "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": [] } ] } }, "/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": [] } ] }, "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": [] } ] }, "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": [] } ] } }, "/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": [] } ] }, "get": { "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/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": "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" } } ], "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/notifications": { "get": { "summary": "APP 消息通知列表", "deprecated": false, "description": "", "tags": [ "消息通知" ], "parameters": [ { "name": "readStatus", "in": "query", "description": "阅读状态,0未读,1已读;不传则查询全部", "required": false, "schema": { "type": "string", "enum": [ "0", "1" ] } }, { "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/unread-count": { "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/LongResult", "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/notifications/{notificationId}": { "get": { "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/NotificationResult", "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": [] } ] }, "get": { "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/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": "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" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VideoBody" }, "example": { "videoTitle": "家族活动记录", "videoDesc": "2026 年清明祭祖活动", "coverOssId": "2060000000000000001", "videoOssId": "2060000000000000002", "durationSeconds": 180, "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/videos": { "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/VideoBody" }, "example": { "videoTitle": "家族活动记录", "videoDesc": "2026 年清明祭祖活动", "coverOssId": "2060000000000000001", "videoOssId": "2060000000000000002", "durationSeconds": 180, "sortOrder": 1, "status": "0" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/ObjectResult", "description": "通用对象响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/ceremonies/{ceremonyId}/invitees": { "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/CeremonyInviteesBody" }, "example": { "inviteeUserIds": [ 900000001, 900000002 ] } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/CeremonyInvitationListResult", "description": "贺礼邀约列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/ceremonies/{ceremonyId}/invitations": { "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/CeremonyInvitationListResult", "description": "贺礼邀约列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/{genealogyId}/ceremonies/{ceremonyId}/invitations/me": { "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/CeremonyInvitationResponseBody" }, "example": { "inviteStatus": "ACCEPTED" } } }, "required": true }, "responses": { "200": { "$ref": "#/components/responses/CeremonyInvitationResult", "description": "贺礼邀约详情响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/genealogies/ceremony-invitations/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/CeremonyInvitationListResult", "description": "贺礼邀约列表响应" } }, "security": [ { "SaToken": [] } ] } }, "/genealogy/app/site/articles": { "get": { "summary": "APP 查询官网文章", "deprecated": false, "description": "", "tags": [ "官网内容" ], "parameters": [ { "name": "articleType", "in": "query", "description": "文章类型,不传则查询全部已发布文章", "required": false, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "description": "返回数量上限", "required": false, "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/app/site/pages/{pageKey}": { "get": { "summary": "APP 查询官网单页", "deprecated": false, "description": "", "tags": [ "官网内容" ], "parameters": [ { "name": "pageKey", "in": "path", "description": "单页唯一标识", "required": true, "example": "", "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": [] } ] } } }, "webhooks": {}, "components": { "schemas": { "RVoid": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "data": { "description": "响应数据主体", "type": "null" } } }, "PasswordRegisterBody": { "type": "object", "additionalProperties": false, "required": [ "grantType", "tenantId", "phone", "password", "smsCode" ], "properties": { "grantType": { "description": "授权类型,例如password、sms、wechat、apple", "type": "string", "examples": [ "password" ] }, "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string", "examples": [ "000000" ] }, "phone": { "description": "手机号", "type": "string", "examples": [ "13800000000" ] }, "password": { "type": "string", "description": "32 位 MD5", "examples": [ "e10adc3949ba59abbe56e057f20f883e" ] }, "nickName": { "description": "用户昵称", "type": "string" }, "registerSource": { "description": "注册来源,例如APP、PC、H5、MINI_PROGRAM", "type": "string" }, "smsCode": { "description": "4 位短信验证码", "type": "string", "pattern": "^\\d{4}$", "examples": [ "1234" ] } } }, "PasswordLoginBody": { "description": "APP 用户密码登录请求;验证场景由后端按 APP_PASSWORD_LOGIN 路由的当前激活绑定解析,前端不得提交 sceneCode;validToken 是否需要由解析后场景的策略决定。", "type": "object", "additionalProperties": false, "required": [ "grantType", "tenantId", "phone", "password" ], "properties": { "grantType": { "description": "授权类型,例如password、sms、wechat、apple", "type": "string", "examples": [ "password" ] }, "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string", "examples": [ "000000" ] }, "phone": { "description": "登录手机号,也是行为验证票据绑定的验证主体。", "type": "string", "examples": [ "13800000000" ] }, "password": { "type": "string", "description": "32 位 MD5", "examples": [ "e10adc3949ba59abbe56e057f20f883e" ] }, "validToken": { "description": "验证中心通过后返回的一次性票据;后台验证策略关闭时可为空,开启时必须提交。", "type": "string" } } }, "SmsLoginBody": { "type": "object", "additionalProperties": false, "required": [ "grantType", "tenantId", "phone", "smsCode" ], "properties": { "grantType": { "description": "授权类型,例如password、sms、wechat、apple", "type": "string", "examples": [ "sms" ] }, "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string", "examples": [ "000000" ] }, "phone": { "description": "手机号", "type": "string", "examples": [ "13800000000" ] }, "smsCode": { "description": "4 位短信验证码", "type": "string", "pattern": "^\\d{4}$", "examples": [ "1234" ] } } }, "SmsCodeBody": { "type": "object", "additionalProperties": false, "required": [ "grantType", "tenantId", "phone" ], "properties": { "grantType": { "description": "授权类型,例如password、sms、wechat、apple", "type": "string", "examples": [ "sms" ] }, "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string", "examples": [ "000000" ] }, "phone": { "description": "手机号", "type": "string", "examples": [ "13800000000" ] }, "validToken": { "description": "验证中心通过后返回的票据,仅用于发送短信验证码;后台验证策略关闭时可为空,开启时必填。", "type": "string" } } }, "ProfileUpdateBody": { "type": "object", "additionalProperties": false, "properties": { "nickName": { "description": "用户昵称", "type": "string", "maxLength": 30 }, "realName": { "description": "真实姓名", "type": "string", "maxLength": 30 }, "avatar": { "description": "头像文件OSS ID", "type": "integer", "format": "int64" }, "sex": { "description": "性别,建议使用系统字典值", "type": "string" }, "birthday": { "description": "生日,格式 yyyy-MM-dd", "type": "string", "format": "date" }, "email": { "description": "邮箱", "type": "string", "format": "email", "maxLength": 100 } } }, "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": [ "grantType", "tenantId", "phone", "smsCode", "newPassword" ], "properties": { "grantType": { "description": "授权类型", "type": "string", "examples": [ "password" ] }, "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string", "examples": [ "000000" ] }, "phone": { "description": "手机号", "type": "string" }, "smsCode": { "description": "4 位短信验证码", "type": "string", "pattern": "^\\d{4}$", "examples": [ "1234" ] }, "newPassword": { "type": "string", "description": "32 位 MD5" } } }, "PhoneChangeBody": { "type": "object", "additionalProperties": false, "required": [ "phone", "smsCode" ], "properties": { "phone": { "description": "新手机号", "type": "string" }, "smsCode": { "description": "4 位短信验证码", "type": "string", "pattern": "^\\d{4}$", "examples": [ "1234" ] } } }, "AccountDeactivateBody": { "type": "object", "additionalProperties": false, "required": [ "smsCode" ], "properties": { "smsCode": { "description": "4 位短信验证码", "type": "string", "pattern": "^\\d{4}$", "examples": [ "1234" ] } } }, "ResumableInitBody": { "type": "object", "additionalProperties": false, "required": [ "uploadId", "fileName", "fileMd5", "totalSize", "totalChunks", "chunkSize" ], "properties": { "uploadId": { "description": "客户端生成并在整个上传过程保持不变的上传任务ID", "type": "string" }, "fileName": { "description": "原始文件名", "type": "string" }, "fileMd5": { "description": "完整文件MD5,用于秒传和完整性校验", "type": "string", "pattern": "^[a-fA-F0-9]{32}$" }, "totalSize": { "description": "完整文件大小,单位字节", "type": "integer", "format": "int64", "minimum": 1 }, "totalChunks": { "description": "总分片数", "type": "integer", "minimum": 1 }, "chunkSize": { "description": "单个分片大小,单位字节;除最后一片外每片必须严格等于该值", "type": "integer", "format": "int64", "minimum": 1, "examples": [ 4194304 ] }, "contentType": { "description": "文件MIME类型,例如 image/jpeg、video/mp4", "type": "string" } } }, "ResumableCompleteBody": { "type": "object", "additionalProperties": false, "required": [ "uploadId", "fileName", "fileMd5", "totalSize", "totalChunks" ], "properties": { "uploadId": { "description": "分片上传任务ID", "type": "string" }, "fileName": { "description": "原始文件名,必须与初始化请求一致", "type": "string" }, "fileMd5": { "description": "完整文件MD5,用于秒传和完整性校验", "type": "string", "pattern": "^[a-fA-F0-9]{32}$" }, "totalSize": { "description": "完整文件大小,单位字节", "type": "integer", "format": "int64", "minimum": 1 }, "totalChunks": { "description": "总分片数,必须与初始化请求一致", "type": "integer", "minimum": 1 } } }, "FileReferenceBody": { "type": "object", "required": [ "bizType", "bizTable", "bizId", "bizField" ], "properties": { "bizType": { "description": "业务类型,例如avatar、cover、feed_image", "type": "string", "examples": [ "family_feed" ] }, "bizName": { "description": "业务名称,用于后台展示文件引用来源", "type": "string", "examples": [ "家族圈动态" ] }, "bizTable": { "description": "业务表名,用于文件引用绑定", "type": "string", "examples": [ "gen_family_feed" ] }, "bizId": { "description": "业务数据ID,用于文件引用绑定", "type": "integer", "format": "int64" }, "bizField": { "description": "业务字段名,例如avatar_oss_id、cover_oss_id", "type": "string", "examples": [ "media_ids" ] }, "ossId": { "description": "OSS文件ID,表单内部使用,用户侧应通过上传组件获取", "type": "integer", "format": "int64" }, "ossIds": { "type": "string", "examples": [ "2060001,2060002" ] }, "usageScene": { "description": "文件使用场景,便于后续引用统计和清理", "type": "string" }, "usageName": { "type": "string" } } }, "GenerationPoemBatchBody": { "type": "object", "required": [ "poemText" ], "properties": { "poemText": { "description": "字辈文本。无分隔符时按单个字拆分;可用空格、逗号、分号、顿号、斜杠或竖线分隔多个字辈。单个字辈最多50个字符,一次最多500个世代。", "type": "string", "maxLength": 26000, "examples": [ "德承家亦\n忠厚传芳" ] }, "disableMissing": { "description": "保存时是否停用未出现在新文本中的后续世代;不会删除历史记录。", "type": "boolean", "examples": [ 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", "examples": [ "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": [ "string", "null" ], "pattern": "^[1-9][0-9]*$" }, "birthDate": { "type": [ "string", "null" ], "format": "date-time" }, "birthLunar": { "description": "生日是否农历,使用项目字典值", "type": "string" }, "birthPlace": { "description": "出生地", "type": "string" }, "deathDate": { "type": [ "string", "null" ], "format": "date-time" }, "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", "examples": [ "text" ] }, "feedContent": { "description": "动态内容,不能为空", "type": "string", "examples": [ "今天上传一张老照片。" ] }, "mediaOssIds": { "description": "媒体文件 OSS ID 列表,多个 ID 使用英文逗号分隔", "type": "string", "examples": [ "2060000000000000001,2060000000000000002" ] }, "sortOrder": { "description": "排序值,未传时默认为 0", "type": "integer", "format": "int64", "examples": [ 0 ] }, "status": { "description": "动态状态,未传时默认为正常状态", "type": "string", "examples": [ "0" ] } } }, "FamilyFeedCommentBody": { "type": "object", "required": [ "commentContent" ], "properties": { "parentCommentId": { "description": "父评论 ID;不传或传 null 表示发布一级评论", "type": [ "integer", "null" ], "format": "int64" }, "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": "string", "pattern": "^[1-9][0-9]*$" }, "intro": { "description": "简介", "type": "string" }, "visibility": { "description": "可见范围,例如0私密、1公开、2成员可见", "type": "string" }, "joinMode": { "description": "加入方式,例如0关闭、1审核、2邀请码", "type": "string" } }, "examples": [ { "genealogyName": "彭氏家谱", "surname": "彭", "ancestralHall": "陇西堂", "originPlace": "江西吉安", "regionCode": "360800", "addressDetail": "江西省吉安市", "coverOssId": "2060000000000000001", "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": "string", "pattern": "^[1-9][0-9]*$" }, "intro": { "description": "简介", "type": "string" }, "visibility": { "description": "可见范围,例如0私密、1公开、2成员可见", "type": "string" }, "joinMode": { "description": "加入方式,例如0关闭、1审核、2邀请码", "type": "string" } }, "examples": [ { "genealogyName": "彭氏家谱", "surname": "彭", "ancestralHall": "陇西堂", "originPlace": "江西吉安", "regionCode": "360800", "addressDetail": "江西省吉安市", "coverOssId": "2060000000000000001", "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" } }, "examples": [ { "applicantName": "彭小明", "phone": "13800000000", "relationDesc": "本族成员", "applyReason": "申请加入家谱维护", "inviterUserId": 900000001 } ] }, "GenealogyJoinAuditBody": { "type": "object", "required": [ "status" ], "properties": { "status": { "description": "状态,建议使用对应字典值", "type": "string" }, "auditRemark": { "description": "审核备注", "type": "string" } }, "examples": [ { "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" } }, "examples": [ { "memberName": "彭小明", "relationName": "族亲", "roleType": "member", "lineagePersonId": 900020001 } ] }, "GenealogyOwnerTransferBody": { "type": "object", "required": [ "targetMemberId" ], "properties": { "targetMemberId": { "description": "目标成员ID", "type": "integer", "format": "int64" } }, "examples": [ { "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" } }, "examples": [ { "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": "string", "pattern": "^[1-9][0-9]*$" }, "articleContent": { "description": "文章内容", "type": "string" }, "authorName": { "description": "作者名称", "type": "string" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "status": { "description": "状态,建议使用对应字典值", "type": "string" } }, "examples": [ { "categoryId": 900040001, "articleTitle": "族谱源流", "articleSummary": "介绍本支源流", "coverOssId": "2060000000000000001", "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": "string", "pattern": "^[1-9][0-9]*$" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "status": { "description": "状态,建议使用对应字典值", "type": "string" } }, "examples": [ { "albumName": "老照片", "albumDesc": "family old photos", "coverOssId": "2060000000000000001", "sortOrder": 1, "status": "0" } ] }, "AlbumPhotoBody": { "type": "object", "required": [ "ossId" ], "properties": { "ossId": { "description": "OSS文件ID,表单内部使用,用户侧应通过上传组件获取", "type": "string", "pattern": "^[1-9][0-9]*$" }, "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" } }, "examples": [ { "ossId": "2060000000000000001", "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" }, "locationAddress": { "description": "详细地址", "type": "string", "maxLength": 300 }, "longitude": { "description": "经度,必须与纬度同时提供", "type": "number", "minimum": -180, "maximum": 180 }, "latitude": { "description": "纬度,必须与经度同时提供", "type": "number", "minimum": -90, "maximum": 90 }, "coverOssId": { "description": "封面图片OSS ID", "type": "string", "pattern": "^[1-9][0-9]*$" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "status": { "description": "状态,建议使用对应字典值", "type": "string" } }, "examples": [ { "ceremonyType": "ancestor", "ceremonyTitle": "清明祭祖", "ceremonyDesc": "online ancestor ceremony", "ceremonyTime": "2026-04-04 09:00:00", "location": "祠堂", "locationAddress": "四川省成都市示例路1号", "longitude": 104.066541, "latitude": 30.572269, "coverOssId": "2060000000000000001", "sortOrder": 1, "status": "0" } ] }, "CeremonyGiftBody": { "type": "object", "required": [ "giftAmount" ], "properties": { "giverName": { "description": "赠送人/献礼人姓名", "type": "string" }, "giftAmount": { "description": "礼物金额", "type": "number", "format": "double" }, "giftMessage": { "description": "礼物留言", "type": "string" } }, "examples": [ { "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" } }, "examples": [ { "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" } }, "examples": [ { "memoTitle": "修谱事项", "memoContent": "contact family members", "remindTime": "2026-08-01 09:00:00", "completed": "0", "mediaOssIds": "2060000000000000001", "sortOrder": 1, "status": "0" } ] }, "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" } }, "examples": [ { "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" } }, "examples": [ { "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" } }, "examples": [ { "packageId": 900060001, "genealogyId": 900001001, "payType": "wechat" } ] }, "VerificationChallengeBody": { "type": "object", "additionalProperties": false, "required": [ "tenantId", "subject" ], "properties": { "tenantId": { "type": "string", "description": "租户 ID" }, "subject": { "type": "string", "description": "验证主体,如手机号/用户名/IP" } }, "examples": [ { "tenantId": "000000", "subject": "13800000000" } ] }, "VerificationCheckBody": { "type": "object", "additionalProperties": false, "required": [ "tenantId", "subject", "challengeId" ], "properties": { "tenantId": { "description": "租户ID,用于区分不同租户的数据和验证策略", "type": "string" }, "subject": { "description": "验证主体,通常为手机号、用户ID或登录账号", "type": "string" }, "challengeId": { "description": "验证挑战ID,由验证挑战接口返回", "type": "string" }, "providerCode": { "type": "string", "description": "验证服务,tianai 或 ruoyi_image" }, "captchaType": { "type": "string", "description": "SLIDER/ROTATE/CONCAT/WORD_IMAGE_CLICK/math/char" }, "payload": { "description": "验证结果载荷。天爱行为验证码提交 payload.track;系统图形验证码提交 payload.uuid 和 payload.code", "oneOf": [ { "$ref": "#/components/schemas/TianaiVerificationPayload" }, { "$ref": "#/components/schemas/SystemImageVerificationPayload" } ] } } }, "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" } } }, "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", "null" ], "additionalProperties": true, "description": "不同验证码类型附带的扩展数据,由天爱前端控件原样提交", "properties": {} } } }, "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": "用户填写的图形验证码答案" } } }, "CeremonyInviteesBody": { "type": "object", "required": [ "inviteeUserIds" ], "properties": { "inviteeUserIds": { "description": "完整受邀业务用户ID列表;空数组表示取消全部尚未响应的邀请", "type": "array", "uniqueItems": true, "items": { "type": "integer", "format": "int64" } } }, "examples": [ { "inviteeUserIds": [ 900000001, 900000002 ] } ] }, "CeremonyInvitationResponseBody": { "type": "object", "required": [ "inviteStatus" ], "properties": { "inviteStatus": { "description": "当前用户的邀约响应,只允许接受或拒绝", "type": "string", "enum": [ "ACCEPTED", "DECLINED" ] } }, "examples": [ { "inviteStatus": "ACCEPTED" } ] }, "VideoBody": { "type": "object", "additionalProperties": false, "required": [ "videoTitle", "videoOssId" ], "properties": { "videoTitle": { "description": "视频标题", "type": "string" }, "videoDesc": { "description": "视频说明", "type": "string" }, "coverOssId": { "description": "视频封面文件 OSS ID", "type": "string", "pattern": "^[1-9][0-9]*$" }, "videoOssId": { "description": "视频文件 OSS ID", "type": "string", "pattern": "^[1-9][0-9]*$" }, "durationSeconds": { "description": "视频时长,单位秒", "type": "integer", "format": "int64" }, "sortOrder": { "description": "排序值,数值越小越靠前", "type": "integer", "format": "int64" }, "status": { "description": "状态,建议使用对应字典值", "type": "string" } } }, "RObject": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "data": { "description": "响应数据主体", "type": "object", "additionalProperties": true, "properties": {} } } }, "RList": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "data": { "description": "响应数据主体", "type": "array", "items": { "type": "object", "additionalProperties": true, "properties": {} } } } }, "RLogin": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "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", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/FileUploadVo" } } }, "FileUploadVo": { "type": "object", "properties": { "ossId": { "description": "OSS文件ID,表单内部使用,用户侧应通过上传组件获取", "type": "string", "pattern": "^[1-9][0-9]*$" }, "url": { "type": "string" }, "thumbnailUrl": { "type": [ "string", "null" ] }, "fileName": { "description": "原始文件名", "type": "string" }, "originalName": { "type": "string" } } }, "RVerificationRequire": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "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": "服务端按当前业务动作和激活绑定解析出的实际验证场景编码", "type": "string" }, "ttlSeconds": { "description": "验证或票据有效秒数", "type": "integer" } }, "examples": [ { "required": true, "providerCode": "tianai", "captchaType": "SLIDER", "sceneCode": "APP_LOGIN_ACTIVE_SCENE", "ttlSeconds": 300 } ] }, "RVerificationChallenge": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "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" } }, "examples": [ { "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", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "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" } }, "examples": [ { "passed": true, "validToken": "captcha-ticket", "expireSeconds": 300, "message": "验证通过" } ] }, "RLegacyCaptcha": { "type": "object", "properties": { "code": { "description": "系统图形验证码或响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "data": { "description": "响应数据主体", "$ref": "#/components/schemas/LegacyCaptchaVo" } } }, "LegacyCaptchaVo": { "type": "object", "properties": { "captchaEnabled": { "type": "boolean" }, "uuid": { "description": "系统图形验证码UUID", "type": "string" }, "img": { "type": "string", "description": "base64 图形验证码" } }, "examples": [ { "captchaEnabled": true, "uuid": "captcha-uuid", "img": "data:image/png;base64,..." } ] }, "RGenerationPoem": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 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", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/GenerationPoemView" } } } }, "RGenerationPoemBatchPreview": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 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", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "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", "null" ], "format": "int64" }, "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", "null" ], "format": "int64" }, "fatherName": { "description": "父亲姓名", "type": "string" }, "motherId": { "description": "母亲人物ID", "type": [ "integer", "null" ], "format": "int64" }, "motherName": { "description": "母亲姓名", "type": "string" }, "spouseNames": { "description": "配偶姓名,多个使用顿号分隔", "type": "string" }, "avatarOssId": { "description": "头像文件OSS ID", "type": [ "string", "null" ], "pattern": "^[1-9][0-9]*$" }, "birthDate": { "description": "出生日期", "type": [ "string", "null" ], "format": "date-time" }, "birthLunar": { "description": "生日是否农历字典值", "type": "string" }, "birthPlace": { "description": "出生地", "type": "string" }, "deathDate": { "description": "逝世日期", "type": [ "string", "null" ], "format": "date-time" }, "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", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/LineagePersonView" } } } }, "RLineagePersonTreeList": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "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", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "rows": { "description": "当前页世系人物", "type": "array", "items": { "$ref": "#/components/schemas/LineagePersonView" } }, "total": { "description": "总记录数", "type": "integer", "format": "int64", "examples": [ 0 ] } } }, "RFamilyFeedComment": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 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", "null" ], "format": "int64" }, "appUserId": { "description": "评论业务用户 ID", "type": "integer", "format": "int64" }, "appUserNickName": { "description": "评论人昵称", "type": "string" }, "appUserAvatar": { "description": "评论人头像文件 ID", "type": [ "integer", "null" ], "format": "int64" }, "parentAppUserId": { "description": "被直接回复的业务用户 ID", "type": [ "integer", "null" ], "format": "int64" }, "parentAppUserNickName": { "description": "被直接回复的用户昵称", "type": [ "string", "null" ] }, "commentContent": { "description": "评论内容;作者删除后为 null", "type": [ "string", "null" ] }, "userDeleted": { "description": "作者删除状态,0 未删除,1 已删除并保留占位", "type": "string", "enum": [ "0", "1" ], "examples": [ "0" ] }, "replyCount": { "description": "正常展示的直接回复数量", "type": "integer", "format": "int64" }, "commentLevel": { "description": "评论层级,root 为一级评论,reply 为回复", "type": "string", "enum": [ "root", "reply" ] }, "status": { "description": "可见状态;会员接口仅返回 0(正常展示)", "type": "string", "examples": [ "0" ] }, "createTime": { "description": "评论发布时间", "type": "string", "format": "date-time" } } }, "RFamilyFeedCommentList": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/FamilyFeedCommentView" } } } }, "FamilyFeedCommentPageResult": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string" }, "rows": { "description": "评论分页数据", "type": "array", "items": { "$ref": "#/components/schemas/FamilyFeedCommentView" } }, "total": { "description": "评论总数", "type": "integer", "format": "int64" } } }, "RGenealogyQuota": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "data": { "$ref": "#/components/schemas/GenealogyQuota" } } }, "GenealogyQuota": { "type": "object", "required": [ "createUsed", "createLimit", "createRemaining", "canCreate", "joinUsed", "joinLimit", "joinRemaining", "canJoin" ], "properties": { "createUsed": { "description": "当前用户已创建的家谱数量", "type": "integer", "format": "int64", "minimum": 0, "examples": [ 1 ] }, "createLimit": { "description": "每用户可创建家谱上限,-1 表示不限,0 表示禁止,正数表示上限", "type": "integer", "format": "int64", "minimum": -1, "examples": [ 3 ] }, "createRemaining": { "description": "还可创建的家谱数量,-1 表示不限", "type": "integer", "format": "int64", "minimum": -1, "examples": [ 2 ] }, "canCreate": { "description": "当前用户是否还能创建家谱", "type": "boolean", "examples": [ true ] }, "joinUsed": { "description": "已加入的家谱总数,包含自己创建的家谱", "type": "integer", "format": "int64", "minimum": 0, "examples": [ 2 ] }, "joinLimit": { "description": "每用户可加入家谱总数上限,-1 表示不限,0 表示禁止,正数表示上限", "type": "integer", "format": "int64", "minimum": -1, "examples": [ 10 ] }, "joinRemaining": { "description": "还可加入的家谱数量,-1 表示不限", "type": "integer", "format": "int64", "minimum": -1, "examples": [ 8 ] }, "canJoin": { "description": "当前用户是否还能加入其他家谱", "type": "boolean", "examples": [ true ] } } }, "RLong": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "data": { "description": "当前业务用户未读通知数量", "type": "integer", "format": "int64", "examples": [ 3 ] } } }, "RCeremonyInvitation": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "data": { "$ref": "#/components/schemas/CeremonyInvitationVo" } } }, "CeremonyInvitationVo": { "type": "object", "properties": { "invitationId": { "description": "邀约ID", "type": "integer", "format": "int64" }, "genealogyId": { "description": "家谱ID", "type": "integer", "format": "int64" }, "ceremonyId": { "description": "贺礼活动ID", "type": "integer", "format": "int64" }, "inviteeUserId": { "description": "受邀业务用户ID", "type": "integer", "format": "int64" }, "inviteStatus": { "description": "邀约状态", "type": "string", "enum": [ "PENDING", "ACCEPTED", "DECLINED", "CANCELED" ] }, "inviteVersion": { "description": "邀请版本,取消后重新邀请时递增", "type": "integer" }, "deliveredTime": { "description": "邀请投递时间", "type": "string", "format": "date-time" }, "readTime": { "description": "邀请阅读时间", "type": "string", "format": "date-time" }, "responseTime": { "description": "接受或拒绝时间", "type": "string", "format": "date-time" }, "ceremonyTitle": { "description": "贺礼活动标题", "type": "string" }, "ceremonyTime": { "description": "贺礼活动时间", "type": "string", "format": "date-time" }, "location": { "description": "地点名称", "type": "string" }, "locationAddress": { "description": "详细地址", "type": "string" }, "longitude": { "description": "经度", "type": "number" }, "latitude": { "description": "纬度", "type": "number" } } }, "RCeremonyInvitationList": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "data": { "description": "贺礼邀约列表", "type": "array", "items": { "$ref": "#/components/schemas/CeremonyInvitationVo" } } } }, "RFamilyFeed": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "data": { "$ref": "#/components/schemas/FamilyFeedView" } } }, "FamilyFeedView": { "type": "object", "properties": { "feedId": { "description": "动态ID", "type": "integer", "format": "int64" }, "genealogyId": { "description": "所属家谱ID", "type": "integer", "format": "int64" }, "genealogyNo": { "description": "家谱编号", "type": "string" }, "genealogyName": { "description": "家谱名称", "type": "string" }, "publisherUserId": { "description": "发布业务用户ID", "type": "integer", "format": "int64" }, "publisherNickName": { "description": "发布用户昵称", "type": "string" }, "publisherStatus": { "description": "发布用户状态", "type": "string" }, "feedType": { "description": "动态类型", "type": "string" }, "feedContent": { "description": "动态内容", "type": "string" }, "mediaOssIds": { "description": "媒体文件OSS ID列表,多个ID使用英文逗号分隔", "type": "string" }, "likedByMe": { "description": "当前登录用户是否已点赞", "type": "boolean", "examples": [ false ] }, "likeCount": { "description": "点赞数量", "type": "integer", "format": "int64" }, "commentCount": { "description": "评论数量", "type": "integer", "format": "int64" }, "pinned": { "description": "是否置顶字典值", "type": "string" }, "pinnedTime": { "description": "置顶时间", "type": [ "string", "null" ], "format": "date-time" }, "sortOrder": { "description": "排序值", "type": "integer", "format": "int64" }, "status": { "description": "状态字典值", "type": "string" }, "remark": { "description": "备注", "type": "string" }, "createTime": { "description": "发布时间", "type": "string", "format": "date-time" }, "updateTime": { "description": "更新时间", "type": "string", "format": "date-time" } } }, "RFamilyFeedList": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/FamilyFeedView" } } } }, "FamilyFeedPageResult": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "rows": { "type": "array", "items": { "$ref": "#/components/schemas/FamilyFeedView" } }, "total": { "description": "总记录数", "type": "integer", "format": "int64", "examples": [ 0 ] } } }, "RNotification": { "type": "object", "properties": { "code": { "description": "响应状态码", "type": "integer", "examples": [ 200 ] }, "msg": { "description": "响应消息", "type": "string", "examples": [ "操作成功" ] }, "data": { "$ref": "#/components/schemas/NotificationView" } } }, "NotificationView": { "type": "object", "properties": { "notificationId": { "description": "通知ID", "type": "integer", "format": "int64" }, "genealogyId": { "description": "所属家谱ID", "type": [ "integer", "null" ], "format": "int64" }, "genealogyNo": { "description": "家谱编号", "type": "string" }, "genealogyName": { "description": "家谱名称", "type": "string" }, "senderUserId": { "description": "发送业务用户ID", "type": [ "integer", "null" ], "format": "int64" }, "senderNickName": { "description": "发送用户昵称", "type": "string" }, "senderPhone": { "description": "脱敏后的发送用户手机号", "type": "string" }, "noticeType": { "description": "通知类型", "type": "string" }, "noticeTitle": { "description": "通知标题", "type": "string" }, "noticeContent": { "description": "通知正文", "type": "string" }, "bizType": { "description": "关联业务类型", "type": "string" }, "bizId": { "description": "关联业务ID", "type": [ "integer", "null" ], "format": "int64" }, "bizSummary": { "description": "关联业务摘要", "type": "string" }, "publishTime": { "description": "发布时间", "type": "string", "format": "date-time" }, "readStatus": { "description": "阅读状态,0未读、1已读", "type": "string" }, "readTime": { "description": "阅读时间", "type": [ "string", "null" ], "format": "date-time" }, "status": { "description": "通知状态", "type": "string" }, "remark": { "description": "备注", "type": "string" } } } }, "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" } } } }, "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" } } } }, "GenealogyQuotaResult": { "description": "当前业务用户家谱配额响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RGenealogyQuota" } } } }, "LongResult": { "description": "长整型数据响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RLong" } } } }, "CeremonyInvitationResult": { "description": "贺礼邀约详情响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RCeremonyInvitation" } } } }, "CeremonyInvitationListResult": { "description": "贺礼邀约列表响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RCeremonyInvitationList" } } } }, "FamilyFeedResult": { "description": "家族圈动态对象响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RFamilyFeed" } } } }, "FamilyFeedListResult": { "description": "家族圈动态列表响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RFamilyFeedList" } } } }, "FamilyFeedPageResult": { "description": "家族圈动态分页响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FamilyFeedPageResult" } } } }, "NotificationResult": { "description": "消息通知详情响应", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RNotification" } } } } }, "securitySchemes": { "SaToken": { "type": "apiKey", "in": "header", "name": "Authorization", "description": "登录后返回的 token。若本地配置使用 sa-token 名称,请按项目实际 token-name 调整。" } } }, "servers": [], "security": [ { "SaToken": [] } ] }