diff --git a/genealogy-app-openapi.yaml b/genealogy-app-openapi.yaml index af7c050..ff795fd 100644 --- a/genealogy-app-openapi.yaml +++ b/genealogy-app-openapi.yaml @@ -18,6 +18,8 @@ servers: - url: http://127.0.0.1:9527/dev-api description: Local frontend proxy tags: + - name: 业务字典 + description: APP/PC 当前租户可公开的业务选项 - name: 验证中心 description: 统一验证码、天爱行为验证码和系统图形验证码 - name: 认证登录 @@ -34,6 +36,8 @@ tags: description: 字辈谱 - name: 世系人物 description: 世系人物与世系树 + - name: 人生大事 + description: 世系人物的人生事件时间轴 - name: 家族圈 description: 家族圈动态、点赞、评论 - name: 内容文章 @@ -55,6 +59,45 @@ tags: security: - SaToken: [] paths: + /genealogy/app/dictionaries/{dictType}: + get: + tags: [业务字典] + summary: 查询当前租户业务字典 + description: 仅允许公开白名单类型;tenantId 查询参数不会改变登录租户。 + parameters: + - name: dictType + in: path + required: true + schema: + type: string + example: gen_feedback_type + responses: + '200': + description: 当前登录租户的业务字典选项 + content: + application/json: + schema: + $ref: '#/components/schemas/RBusinessDictionaryOptions' + '400': + description: 业务字典类型不支持 + content: + application/json: + schema: + $ref: '#/components/schemas/RBusinessDictionaryError' + example: + code: 400 + msg: 业务字典类型不支持 + data: null + '401': + description: 未登录或登录已失效 + content: + application/json: + schema: + $ref: '#/components/schemas/RBusinessDictionaryError' + example: + code: 401 + msg: 认证失败,无法访问系统资源 + data: null /genealogy/app/auth/verification/{operationCode}/require: get: tags: [验证中心] @@ -214,7 +257,7 @@ paths: - $ref: '#/components/parameters/ClientIdHeader' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppProfileResult' put: tags: [认证登录] summary: APP 修改用户资料 @@ -224,7 +267,7 @@ paths: $ref: '#/components/requestBodies/ProfileUpdate' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppProfileResult' /genealogy/app/auth/password: put: tags: [认证登录] @@ -416,7 +459,7 @@ paths: required: false schema: { type: integer } responses: - '200': { $ref: '#/components/responses/ListResult' } + '200': { $ref: '#/components/responses/AppArticleListResult' } /genealogy/app/site/pages/{pageKey}: get: tags: [官网内容] @@ -441,7 +484,7 @@ paths: $ref: '#/components/requestBodies/GenealogyCreate' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppGenealogyResult' /genealogy/app/genealogies/mine: get: tags: [家谱] @@ -450,7 +493,19 @@ paths: - $ref: '#/components/parameters/ClientIdHeader' responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppGenealogyListResult' + /genealogy/app/genealogies/mine/order: + put: + tags: [家谱] + summary: APP 保存我的家谱排序 + description: 必须提交当前可见家谱的完整、无重复编号集合;保存后返回后端确认的精确顺序。 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + requestBody: + $ref: '#/components/requestBodies/GenealogyUserOrder' + responses: + '200': + $ref: '#/components/responses/AppGenealogyListResult' /genealogy/app/genealogies/quota: get: tags: [家谱] @@ -469,7 +524,7 @@ paths: - $ref: '#/components/parameters/ClientIdHeader' responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppGenealogyListResult' /genealogy/app/genealogies/options: get: tags: [家谱] @@ -488,7 +543,7 @@ paths: - $ref: '#/components/parameters/GenealogyId' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppGenealogyResult' put: tags: [家谱] summary: APP 修改家谱 @@ -499,7 +554,7 @@ paths: $ref: '#/components/requestBodies/GenealogyUpdate' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppGenealogyResult' /genealogy/app/genealogies/{genealogyId}/overview: get: tags: [家谱] @@ -510,6 +565,38 @@ paths: responses: '200': $ref: '#/components/responses/ObjectResult' + /genealogy/app/genealogies/{genealogyId}/completeness: + get: + tags: [家谱] + summary: APP 查询家谱资料完整度 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + responses: + '200': + $ref: '#/components/responses/GenealogyCompletenessResult' + /genealogy/app/genealogies/{genealogyId}/archive: + put: + tags: [家谱] + summary: APP 归档家谱 + description: 仅谱主可操作;归档后家谱保持可读,内容写入被拒绝。 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + responses: + '200': + $ref: '#/components/responses/AppGenealogyResult' + /genealogy/app/genealogies/{genealogyId}/restore: + put: + tags: [家谱] + summary: APP 恢复已归档家谱 + description: 仅谱主可恢复;处于物理删除任务中的家谱不能恢复。 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + responses: + '200': + $ref: '#/components/responses/AppGenealogyResult' /genealogy/app/genealogies/{genealogyId}/join-applies: post: tags: [家谱] @@ -522,6 +609,68 @@ paths: responses: '200': $ref: '#/components/responses/ObjectResult' + /genealogy/app/genealogies/{genealogyId}/invitations: + post: + tags: [家谱邀请] + summary: APP 签发一次性家谱邀请 + description: 仅当前家谱有效成员可签发;原始 token 只在本次响应返回,有效期默认 7 天。 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + responses: + '200': + $ref: '#/components/responses/GenealogyInvitationResult' + /genealogy/app/genealogies/invitations/preview: + get: + tags: [家谱邀请] + summary: APP 预览家谱邀请 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - name: token + in: query + required: true + schema: { type: string, maxLength: 128 } + responses: + '200': + $ref: '#/components/responses/GenealogyInvitationResult' + /genealogy/app/genealogies/invitations/redeem: + post: + tags: [家谱邀请] + summary: APP 兑换家谱邀请 + description: 邀请只可成功兑换一次;结果服从家谱加入模式,服务端从 token 推导邀请人。 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GenealogyInvitationRedeemBody' + responses: + '200': + $ref: '#/components/responses/GenealogyInvitationResult' + /genealogy/app/genealogies/invitations/mine: + get: + tags: [家谱邀请] + summary: APP 我的家谱邀请记录 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + responses: + '200': + $ref: '#/components/responses/GenealogyInvitationListResult' + /genealogy/app/genealogies/invitations/{inviteId}: + delete: + tags: [家谱邀请] + summary: APP 撤销本人发出的未使用邀请 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - name: inviteId + in: path + required: true + schema: { type: integer, format: int64 } + responses: + '200': + $ref: '#/components/responses/VoidResult' /genealogy/app/genealogies/join-applies/mine: get: tags: [家谱] @@ -586,7 +735,7 @@ paths: - $ref: '#/components/parameters/GenealogyId' responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppGenealogyMemberListResult' /genealogy/app/genealogies/{genealogyId}/members/options: get: tags: [家谱成员] @@ -596,7 +745,7 @@ paths: - $ref: '#/components/parameters/GenealogyId' responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/GenealogyMemberOptionListResult' /genealogy/app/genealogies/{genealogyId}/members/{memberId}: put: tags: [家谱成员] @@ -609,7 +758,7 @@ paths: $ref: '#/components/requestBodies/GenealogyMemberUpdate' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppGenealogyMemberResult' delete: tags: [家谱成员] summary: APP 移除成员 @@ -620,6 +769,16 @@ paths: responses: '200': $ref: '#/components/responses/VoidResult' + /genealogy/app/genealogies/{genealogyId}/members/{memberId}/lineage-person: + delete: + tags: [家谱成员] + summary: APP 解除成员与世系人物绑定 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + - $ref: '#/components/parameters/MemberId' + responses: + '200': { $ref: '#/components/responses/VoidResult' } /genealogy/app/genealogies/{genealogyId}/members/me: delete: tags: [家谱成员] @@ -792,6 +951,27 @@ paths: responses: '200': $ref: '#/components/responses/LineagePersonListResult' + /genealogy/app/genealogies/{genealogyId}/lineage/ranks: + get: + tags: [世系人物] + summary: APP 世系人物排行选项 + description: 按当前家谱、世代和性别返回可用排行。第一世可返回“始祖”,其他世代返回“长子、次子、长女、次女”等配置。 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + - name: generation + description: 世代序号 + in: query + required: true + schema: { type: integer, format: int64, minimum: 1, example: 2 } + - name: sex + description: "字典 sys_user_sex:0=男,1=女,2=未知" + in: query + required: true + schema: { type: string, enum: ["0", "1", "2"], example: "0", x-dict-type: sys_user_sex } + responses: + '200': + $ref: '#/components/responses/LineageRankOptionListResult' /genealogy/app/genealogies/{genealogyId}/lineage/tree: get: tags: [世系人物] @@ -836,6 +1016,29 @@ paths: responses: '200': $ref: '#/components/responses/VoidResult' + /genealogy/app/genealogies/{genealogyId}/lineage/persons/{personId}/relations: + delete: + tags: [世系人物] + summary: APP 删除指定世系关系 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + - $ref: '#/components/parameters/PersonId' + requestBody: { $ref: '#/components/requestBodies/LineageRelationRemove' } + responses: + '200': { $ref: '#/components/responses/VoidResult' } + /genealogy/app/genealogies/{genealogyId}/lineage/persons/{personId}/sort-order: + put: + tags: [世系人物] + summary: APP 调整世系人物排行 + description: 仅家谱所有者或管理员可调用,只更新 sortOrder。 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + - $ref: '#/components/parameters/PersonId' + requestBody: { $ref: '#/components/requestBodies/LineagePersonSortOrder' } + responses: + '200': { $ref: '#/components/responses/LineagePersonResult' } /genealogy/app/genealogies/{genealogyId}/lineage/persons/{personId}/children: post: tags: [世系人物] @@ -1081,7 +1284,46 @@ paths: - $ref: '#/components/parameters/GenealogyId' responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppArticleCategoryOptionListResult' + post: + tags: [内容文章] + summary: APP 新增谱文分类 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + requestBody: + $ref: '#/components/requestBodies/ArticleCategory' + responses: + '200': + description: APP 微信支付下单参数 + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/RVoid' + - type: object + properties: + data: + $ref: '#/components/schemas/PaymentOrderVo' + /genealogy/app/genealogies/{genealogyId}/article-categories/{categoryId}: + put: + tags: [内容文章] + summary: APP 修改谱文分类 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + - name: categoryId + description: 谱文分类ID + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + $ref: '#/components/requestBodies/ArticleCategory' + responses: + '200': + $ref: '#/components/responses/ObjectResult' /genealogy/app/genealogies/{genealogyId}/articles: get: tags: [内容文章] @@ -1091,7 +1333,7 @@ paths: - $ref: '#/components/parameters/GenealogyId' responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppArticleListResult' post: tags: [内容文章] summary: APP 新增谱文 @@ -1102,7 +1344,7 @@ paths: $ref: '#/components/requestBodies/Article' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppArticleResult' /genealogy/app/genealogies/{genealogyId}/articles/{articleId}: get: tags: [内容文章] @@ -1110,6 +1352,7 @@ paths: parameters: - $ref: '#/components/parameters/ClientIdHeader' - $ref: '#/components/parameters/GenealogyId' + - { name: X-Content-Access-Token, in: header, required: false, schema: { type: string }, description: 内容密码解锁后获得的短时访问令牌 } - name: articleId description: 谱文/官网文章ID in: path @@ -1119,7 +1362,7 @@ paths: format: int64 responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppArticleResult' put: tags: [内容文章] summary: APP 修改谱文 @@ -1137,7 +1380,7 @@ paths: $ref: '#/components/requestBodies/Article' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppArticleResult' delete: tags: [内容文章] summary: APP 删除谱文 @@ -1158,7 +1401,7 @@ paths: security: [] responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/HelpArticleListResult' /genealogy/app/help-articles/{helpId}: get: tags: [内容文章] @@ -1174,15 +1417,49 @@ paths: format: int64 responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/HelpArticleResult' /genealogy/app/promotions: get: tags: [内容文章] summary: APP 应用推广列表 security: [] + parameters: + - name: platform + in: query + required: true + description: 客户端平台;all 仅供后台投放配置,客户端请求应传自身平台 + schema: { type: string, enum: [app, pc, wechat] } + - name: placement + in: query + required: true + description: 推广位稳定编码 + schema: { type: string, enum: [home_banner, home_bottom, message_bottom, profile_bottom] } responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppPromotionListResult' + + /genealogy/app/genealogies/{genealogyId}/content-lifecycle/{resourceType}/{resourceId}: + get: + tags: [内容生命周期] + summary: APP 查询内容生命周期状态 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + - { name: resourceType, in: path, required: true, schema: { type: string, enum: [family_feed, video, growth_record, relative_record, memo, merit_record, article, album, album_photo, ceremony] } } + - { name: resourceId, in: path, required: true, schema: { type: integer, format: int64 } } + responses: + '200': { $ref: '#/components/responses/ContentLifecycleStatusResult' } + /genealogy/app/genealogies/{genealogyId}/content-lifecycle/{resourceType}/{resourceId}/restore: + put: + tags: [内容生命周期] + summary: APP 恢复停用内容 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + - { name: resourceType, in: path, required: true, schema: { type: string, enum: [family_feed, video, growth_record, relative_record, memo, merit_record, article, album, album_photo, ceremony] } } + - { name: resourceId, in: path, required: true, schema: { type: integer, format: int64 } } + responses: + '200': { $ref: '#/components/responses/ContentLifecycleStatusResult' } /genealogy/app/genealogies/{genealogyId}/albums: get: @@ -1193,7 +1470,7 @@ paths: - $ref: '#/components/parameters/GenealogyId' responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppAlbumListResult' post: tags: [相册] summary: APP 创建相册 @@ -1204,7 +1481,7 @@ paths: $ref: '#/components/requestBodies/Album' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppAlbumResult' /genealogy/app/genealogies/{genealogyId}/albums/{albumId}: put: tags: [相册] @@ -1223,7 +1500,7 @@ paths: $ref: '#/components/requestBodies/Album' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppAlbumResult' delete: tags: [相册] summary: APP 删除相册 @@ -1254,7 +1531,7 @@ paths: format: int64 responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppAlbumPhotoListResult' post: tags: [相册] summary: APP 上传相册图片记录 @@ -1272,7 +1549,7 @@ paths: $ref: '#/components/requestBodies/AlbumPhoto' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppAlbumPhotoResult' /genealogy/app/genealogies/{genealogyId}/albums/{albumId}/photos/{photoId}: delete: tags: [相册] @@ -1301,7 +1578,7 @@ paths: - $ref: '#/components/parameters/ClientIdHeader' - $ref: '#/components/parameters/GenealogyId' responses: - '200': { $ref: '#/components/responses/ListResult' } + '200': { $ref: '#/components/responses/AppVideoListResult' } post: tags: [视频] summary: APP 新增视频 @@ -1311,7 +1588,7 @@ paths: requestBody: $ref: '#/components/requestBodies/Video' responses: - '200': { $ref: '#/components/responses/ObjectResult' } + '200': { $ref: '#/components/responses/AppVideoResult' } /genealogy/app/genealogies/{genealogyId}/videos/{videoId}: get: tags: [视频] @@ -1325,7 +1602,7 @@ paths: required: true schema: { type: integer, format: int64 } responses: - '200': { $ref: '#/components/responses/ObjectResult' } + '200': { $ref: '#/components/responses/AppVideoResult' } put: tags: [视频] summary: APP 修改视频 @@ -1340,7 +1617,7 @@ paths: requestBody: $ref: '#/components/requestBodies/Video' responses: - '200': { $ref: '#/components/responses/ObjectResult' } + '200': { $ref: '#/components/responses/AppVideoResult' } delete: tags: [视频] summary: APP 删除视频 @@ -1365,7 +1642,7 @@ paths: - $ref: '#/components/parameters/GenealogyId' responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppCeremonyListResult' post: tags: [祭祀] summary: APP 创建祭祀 @@ -1376,7 +1653,7 @@ paths: $ref: '#/components/requestBodies/Ceremony' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppCeremonyResult' /genealogy/app/genealogies/{genealogyId}/ceremonies/{ceremonyId}: get: tags: [祭祀] @@ -1393,7 +1670,7 @@ paths: format: int64 responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppCeremonyResult' delete: tags: [祭祀] summary: APP 删除祭祀活动 @@ -1425,7 +1702,7 @@ paths: $ref: '#/components/requestBodies/Ceremony' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppCeremonyResult' /genealogy/app/genealogies/{genealogyId}/ceremonies/{ceremonyId}/gifts: get: tags: [祭祀] @@ -1442,7 +1719,7 @@ paths: format: int64 responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppCeremonyGiftListResult' post: tags: [祭祀] summary: APP 新增祭祀献礼 @@ -1460,7 +1737,7 @@ paths: $ref: '#/components/requestBodies/CeremonyGift' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppCeremonyGiftResult' /genealogy/app/genealogies/{genealogyId}/ceremonies/{ceremonyId}/gifts/{giftId}: delete: tags: [祭祀] @@ -1481,6 +1758,17 @@ paths: responses: '200': { $ref: '#/components/responses/VoidResult' } + /genealogy/app/genealogies/{genealogyId}/ceremonies/{ceremonyId}/invitee-options: + get: + tags: [贺礼邀约] + summary: APP 查询可邀请成员候选 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + - { name: ceremonyId, in: path, required: true, schema: { type: integer, format: int64 } } + - { name: keyword, in: query, required: false, schema: { type: string } } + responses: + '200': { $ref: '#/components/responses/CeremonyInviteeOptionListResult' } /genealogy/app/genealogies/{genealogyId}/ceremonies/{ceremonyId}/invitees: put: tags: [贺礼邀约] @@ -1537,7 +1825,7 @@ paths: - $ref: '#/components/parameters/GenealogyId' responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppGrowthRecordListResult' post: tags: [族务记录] summary: APP 新增成长记录 @@ -1548,7 +1836,7 @@ paths: $ref: '#/components/requestBodies/GrowthRecord' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppGrowthRecordResult' /genealogy/app/genealogies/{genealogyId}/growth-records/{recordId}: get: tags: [族务记录] @@ -1556,6 +1844,7 @@ paths: parameters: - $ref: '#/components/parameters/ClientIdHeader' - $ref: '#/components/parameters/GenealogyId' + - { name: X-Content-Access-Token, in: header, required: false, schema: { type: string }, description: 内容密码解锁后获得的短时访问令牌 } - name: recordId description: 记录ID in: path @@ -1565,7 +1854,7 @@ paths: format: int64 responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppGrowthRecordResult' delete: tags: [族务记录] summary: APP 删除成长记录 @@ -1596,7 +1885,61 @@ paths: $ref: '#/components/requestBodies/GrowthRecord' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppGrowthRecordResult' + /genealogy/app/genealogies/{genealogyId}/lineage-persons/{lineagePersonId}/life-events: + get: + tags: [人生大事] + summary: APP 查询世系人物人生大事 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + - { name: lineagePersonId, description: 世系人物ID, in: path, required: true, schema: { type: integer, format: int64 } } + responses: + '200': { $ref: '#/components/responses/LifeEventListResult' } + post: + tags: [人生大事] + summary: APP 新增世系人物人生大事 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + - { name: lineagePersonId, description: 世系人物ID, in: path, required: true, schema: { type: integer, format: int64 } } + requestBody: + $ref: '#/components/requestBodies/LifeEvent' + responses: + '200': { $ref: '#/components/responses/LifeEventResult' } + /genealogy/app/genealogies/{genealogyId}/lineage-persons/{lineagePersonId}/life-events/{eventId}: + get: + tags: [人生大事] + summary: APP 查询人生大事详情 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + - { name: lineagePersonId, description: 世系人物ID, in: path, required: true, schema: { type: integer, format: int64 } } + - { name: eventId, description: 人生大事ID, in: path, required: true, schema: { type: integer, format: int64 } } + responses: + '200': { $ref: '#/components/responses/LifeEventResult' } + put: + tags: [人生大事] + summary: APP 修改世系人物人生大事 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + - { name: lineagePersonId, description: 世系人物ID, in: path, required: true, schema: { type: integer, format: int64 } } + - { name: eventId, description: 人生大事ID, in: path, required: true, schema: { type: integer, format: int64 } } + requestBody: + $ref: '#/components/requestBodies/LifeEvent' + responses: + '200': { $ref: '#/components/responses/LifeEventResult' } + delete: + tags: [人生大事] + summary: APP 删除世系人物人生大事 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - $ref: '#/components/parameters/GenealogyId' + - { name: lineagePersonId, description: 世系人物ID, in: path, required: true, schema: { type: integer, format: int64 } } + - { name: eventId, description: 人生大事ID, in: path, required: true, schema: { type: integer, format: int64 } } + responses: + '200': { $ref: '#/components/responses/VoidResult' } /genealogy/app/genealogies/{genealogyId}/memos: get: tags: [族务记录] @@ -1606,7 +1949,7 @@ paths: - $ref: '#/components/parameters/GenealogyId' responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppMemoListResult' post: tags: [族务记录] summary: APP 新增备忘录 @@ -1617,7 +1960,7 @@ paths: $ref: '#/components/requestBodies/Memo' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppMemoResult' /genealogy/app/genealogies/{genealogyId}/memos/{memoId}: get: tags: [族务记录] @@ -1633,7 +1976,7 @@ paths: format: int64 responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppMemoResult' delete: tags: [族务记录] summary: APP 删除备忘录 @@ -1663,7 +2006,7 @@ paths: $ref: '#/components/requestBodies/Memo' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppMemoResult' /genealogy/app/genealogies/{genealogyId}/relative-records: get: @@ -1673,7 +2016,7 @@ paths: - $ref: '#/components/parameters/ClientIdHeader' - $ref: '#/components/parameters/GenealogyId' responses: - '200': { $ref: '#/components/responses/ListResult' } + '200': { $ref: '#/components/responses/AppRelativeRecordListResult' } post: tags: [族务记录] summary: APP 新增亲友记录 @@ -1683,7 +2026,7 @@ paths: requestBody: $ref: '#/components/requestBodies/RelativeRecord' responses: - '200': { $ref: '#/components/responses/ObjectResult' } + '200': { $ref: '#/components/responses/AppRelativeRecordResult' } /genealogy/app/genealogies/{genealogyId}/relative-records/{relativeId}: get: tags: [族务记录] @@ -1693,7 +2036,7 @@ paths: - $ref: '#/components/parameters/GenealogyId' - { name: relativeId, description: 亲友记录ID, in: path, required: true, schema: { type: integer, format: int64 } } responses: - '200': { $ref: '#/components/responses/ObjectResult' } + '200': { $ref: '#/components/responses/AppRelativeRecordResult' } put: tags: [族务记录] summary: APP 修改亲友记录 @@ -1704,7 +2047,7 @@ paths: requestBody: $ref: '#/components/requestBodies/RelativeRecord' responses: - '200': { $ref: '#/components/responses/ObjectResult' } + '200': { $ref: '#/components/responses/AppRelativeRecordResult' } delete: tags: [族务记录] summary: APP 删除亲友记录 @@ -1727,7 +2070,7 @@ paths: - $ref: '#/components/parameters/GenealogyId' responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppMeritRecordListResult' post: tags: [族务记录] summary: APP 新增功德记录 @@ -1738,7 +2081,7 @@ paths: $ref: '#/components/requestBodies/MeritRecord' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/AppMeritRecordResult' /genealogy/app/genealogies/{genealogyId}/merit-records/{meritId}: get: tags: [族务记录] @@ -1752,7 +2095,7 @@ paths: required: true schema: { type: integer, format: int64 } responses: - '200': { $ref: '#/components/responses/ObjectResult' } + '200': { $ref: '#/components/responses/AppMeritRecordResult' } put: tags: [族务记录] summary: APP 修改功德记录 @@ -1767,7 +2110,7 @@ paths: requestBody: $ref: '#/components/requestBodies/MeritRecord' responses: - '200': { $ref: '#/components/responses/ObjectResult' } + '200': { $ref: '#/components/responses/AppMeritRecordResult' } delete: tags: [族务记录] summary: APP 删除功德记录 @@ -1799,7 +2142,7 @@ paths: x-dict-type: gen_notification_read_status responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/AppNotificationListResult' /genealogy/app/notifications/{notificationId}: get: tags: [消息通知] @@ -1815,7 +2158,7 @@ paths: format: int64 responses: '200': - $ref: '#/components/responses/NotificationResult' + $ref: '#/components/responses/AppNotificationResult' /genealogy/app/notifications/{notificationId}/read: post: tags: [消息通知] @@ -1870,6 +2213,15 @@ paths: '200': $ref: '#/components/responses/ObjectResult' + /genealogy/app/vip/capability: + get: + tags: [VIP] + summary: 查询 APP VIP 购买能力 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + responses: + '200': + $ref: '#/components/responses/VipPurchaseCapabilityResult' /genealogy/app/vip/packages: get: tags: [VIP] @@ -1878,7 +2230,7 @@ paths: - $ref: '#/components/parameters/ClientIdHeader' responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/VipPackageListResult' /genealogy/app/vip/orders: get: tags: [VIP] @@ -1887,7 +2239,7 @@ paths: - $ref: '#/components/parameters/ClientIdHeader' responses: '200': - $ref: '#/components/responses/ListResult' + $ref: '#/components/responses/VipOrderListResult' post: tags: [VIP] summary: APP 创建 VIP 订单 @@ -1897,8 +2249,222 @@ paths: $ref: '#/components/requestBodies/VipOrder' responses: '200': - $ref: '#/components/responses/ObjectResult' + $ref: '#/components/responses/PaymentOrderResult' + /genealogy/app/vip/orders/{transactionId}/payment: + get: + operationId: appGetVipOrderPayment + tags: [VIP] + summary: APP 查询 VIP 订单支付状态 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - name: transactionId + description: 支付流水ID + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + $ref: '#/components/responses/PaymentTransactionStatusResult' + /genealogy/app/vip/orders/{transactionId}/close: + post: + tags: [VIP] + summary: APP 关闭未支付 VIP 订单 + description: 用户主动取消当前未支付订单。超过支付有效期仍为 CREATED/PAYING 的订单由内部 SnailJob 任务 paymentAutoCloseJob 自动关闭,不需要客户端调用本接口。 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - name: transactionId + description: 支付流水ID + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + $ref: '#/components/responses/PaymentTransactionStatusResult' + /genealogy/app/earnings/summary: + get: + tags: [收益与提现] + summary: 查询当前用户收益汇总 + responses: + '200': { description: 收益汇总, content: { application/json: { schema: { $ref: '#/components/schemas/REarningSummary' } } } } + /genealogy/app/earnings/ledger: + get: + tags: [收益与提现] + summary: 查询当前用户不可变收益流水 + parameters: + - { name: pageNum, in: query, schema: { type: integer, minimum: 1 } } + - { name: pageSize, in: query, schema: { type: integer, minimum: 1 } } + responses: + '200': { description: 收益流水分页, content: { application/json: { schema: { $ref: '#/components/schemas/EarningLedgerPage' } } } } + /genealogy/app/earnings/withdrawals: + get: + tags: [收益与提现] + summary: 查询当前用户提现记录 + parameters: + - { name: pageNum, in: query, schema: { type: integer, minimum: 1 } } + - { name: pageSize, in: query, schema: { type: integer, minimum: 1 } } + responses: + '200': { description: 提现分页, content: { application/json: { schema: { $ref: '#/components/schemas/EarningWithdrawalPage' } } } } + post: + tags: [收益与提现] + summary: 申请提现并冻结可用收益 + requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/EarningWithdrawalBody' } } } } + responses: + '200': { description: 提现申请, content: { application/json: { schema: { $ref: '#/components/schemas/REarningWithdrawal' } } } } + /genealogy/app/earnings/withdrawals/{withdrawalId}/cancel: + post: + tags: [收益与提现] + summary: 取消待审核提现并解冻余额 + parameters: + - { name: withdrawalId, in: path, required: true, schema: { type: integer, format: int64 } } + responses: + '200': { description: 已取消提现, content: { application/json: { schema: { $ref: '#/components/schemas/REarningWithdrawal' } } } } + + /genealogy/app/genealogies/{genealogyId}/person-documents: + get: + tags: [重要证件档案] + summary: 查询人物证件档案 + parameters: + - $ref: '#/components/parameters/GenealogyId' + - { name: lineagePersonId, in: query, required: false, schema: { type: integer, format: int64 } } + responses: + '200': { description: 档案列表, content: { application/json: { schema: { $ref: '#/components/schemas/RPersonDocumentList' } } } } + post: + tags: [重要证件档案] + summary: 创建人物证件档案 + parameters: [ { $ref: '#/components/parameters/GenealogyId' } ] + requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/PersonDocumentBody' } } } } + responses: + '200': { description: 已创建档案, content: { application/json: { schema: { $ref: '#/components/schemas/RPersonDocument' } } } } + /genealogy/app/genealogies/{genealogyId}/person-documents/{documentId}: + parameters: + - $ref: '#/components/parameters/GenealogyId' + - { name: documentId, in: path, required: true, schema: { type: integer, format: int64 } } + get: + tags: [重要证件档案] + summary: 查询证件档案详情 + parameters: [ { $ref: '#/components/parameters/ContentAccessToken' } ] + responses: + '200': { description: 档案详情;未解锁时资源脱敏, content: { application/json: { schema: { $ref: '#/components/schemas/RPersonDocument' } } } } + put: + tags: [重要证件档案] + summary: 更新证件档案元数据 + requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/PersonDocumentBody' } } } } + responses: { '200': { description: 已更新, content: { application/json: { schema: { $ref: '#/components/schemas/RPersonDocument' } } } } } + delete: + tags: [重要证件档案] + summary: 删除证件档案并释放文件引用 + responses: { '200': { description: 已删除, content: { application/json: { schema: { $ref: '#/components/schemas/RVoid' } } } } } + /genealogy/app/genealogies/{genealogyId}/person-documents/{documentId}/resources: + post: + tags: [重要证件档案] + summary: 添加证件文件引用 + parameters: + - $ref: '#/components/parameters/GenealogyId' + - { name: documentId, in: path, required: true, schema: { type: integer, format: int64 } } + requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/PersonDocumentResourceBody' } } } } + responses: { '200': { description: 已添加, content: { application/json: { schema: { $ref: '#/components/schemas/RPersonDocumentResource' } } } } } + /genealogy/app/genealogies/{genealogyId}/person-documents/{documentId}/resources/{resourceId}: + parameters: + - $ref: '#/components/parameters/GenealogyId' + - { name: documentId, in: path, required: true, schema: { type: integer, format: int64 } } + - { name: resourceId, in: path, required: true, schema: { type: integer, format: int64 } } + put: + tags: [重要证件档案] + summary: 替换证件文件并释放旧引用 + requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/PersonDocumentResourceBody' } } } } + responses: { '200': { description: 已替换, content: { application/json: { schema: { $ref: '#/components/schemas/RPersonDocumentResource' } } } } } + delete: + tags: [重要证件档案] + summary: 删除证件文件引用 + responses: { '200': { description: 已删除, content: { application/json: { schema: { $ref: '#/components/schemas/RVoid' } } } } } + /genealogy/app/genealogies/{genealogyId}/person-documents/{documentId}/resources/{resourceId}/access: + get: + tags: [重要证件档案] + summary: 获取证件文件短时访问地址 + parameters: + - $ref: '#/components/parameters/GenealogyId' + - { name: documentId, in: path, required: true, schema: { type: integer, format: int64 } } + - { name: resourceId, in: path, required: true, schema: { type: integer, format: int64 } } + - $ref: '#/components/parameters/ContentAccessToken' + responses: { '200': { description: 短时文件访问对象, content: { application/json: { schema: { $ref: '#/components/schemas/RBusinessFileAccess' } } } } } + /genealogy/app/genealogies/{genealogyId}/person-documents/{documentId}/content-protection: + parameters: + - $ref: '#/components/parameters/GenealogyId' + - { name: documentId, in: path, required: true, schema: { type: integer, format: int64 } } + put: + tags: [内容密码保护] + summary: 设置或重置证件档案内容密码 + requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/ContentPasswordBody' } } } } + responses: { '200': { description: 已设置, content: { application/json: { schema: { $ref: '#/components/schemas/RVoid' } } } } } + delete: + tags: [内容密码保护] + summary: 关闭证件档案内容密码 + responses: { '200': { description: 已关闭, content: { application/json: { schema: { $ref: '#/components/schemas/RVoid' } } } } } + /genealogy/app/genealogies/{genealogyId}/person-documents/{documentId}/content-unlock: + post: + tags: [内容密码保护] + summary: 解锁证件档案内容 + parameters: + - $ref: '#/components/parameters/GenealogyId' + - { name: documentId, in: path, required: true, schema: { type: integer, format: int64 } } + requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/ContentPasswordBody' } } } } + responses: { '200': { description: 15 分钟访问授权, content: { application/json: { schema: { $ref: '#/components/schemas/RContentAccessGrant' } } } } } + /genealogy/app/genealogies/{genealogyId}/articles/{articleId}/content-protection: + parameters: + - $ref: '#/components/parameters/GenealogyId' + - { name: articleId, in: path, required: true, schema: { type: integer, format: int64 } } + put: { tags: [内容密码保护], summary: 设置或重置谱文内容密码, requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/ContentPasswordBody' } } } }, responses: { '200': { description: 已设置 } } } + delete: { tags: [内容密码保护], summary: 关闭谱文内容密码, responses: { '200': { description: 已关闭 } } } + /genealogy/app/genealogies/{genealogyId}/articles/{articleId}/content-unlock: + post: { tags: [内容密码保护], summary: 解锁谱文内容, parameters: [ { $ref: '#/components/parameters/GenealogyId' }, { name: articleId, in: path, required: true, schema: { type: integer, format: int64 } } ], requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/ContentPasswordBody' } } } }, responses: { '200': { description: 15 分钟访问授权, content: { application/json: { schema: { $ref: '#/components/schemas/RContentAccessGrant' } } } } } } + /genealogy/app/genealogies/{genealogyId}/growth-records/{recordId}/content-protection: + parameters: + - $ref: '#/components/parameters/GenealogyId' + - { name: recordId, in: path, required: true, schema: { type: integer, format: int64 } } + put: { tags: [内容密码保护], summary: 设置或重置成长记录内容密码, requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/ContentPasswordBody' } } } }, responses: { '200': { description: 已设置 } } } + delete: { tags: [内容密码保护], summary: 关闭成长记录内容密码, responses: { '200': { description: 已关闭 } } } + /genealogy/app/genealogies/{genealogyId}/growth-records/{recordId}/content-unlock: + post: { tags: [内容密码保护], summary: 解锁成长记录内容, parameters: [ { $ref: '#/components/parameters/GenealogyId' }, { name: recordId, in: path, required: true, schema: { type: integer, format: int64 } } ], requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/ContentPasswordBody' } } } }, responses: { '200': { description: 15 分钟访问授权, content: { application/json: { schema: { $ref: '#/components/schemas/RContentAccessGrant' } } } } } } + /genealogy/app/recommendation-preference: + get: { tags: [个性化推荐], summary: 读取当前用户推荐偏好, responses: { '200': { description: 当前偏好, content: { application/json: { schema: { $ref: '#/components/schemas/RRecommendationPreference' } } } } } } + put: { tags: [个性化推荐], summary: 显式开启或关闭个性化推荐, requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/RecommendationPreferenceBody' } } } }, responses: { '200': { description: 已保存, content: { application/json: { schema: { $ref: '#/components/schemas/RRecommendationPreference' } } } } } } + /genealogy/app/genealogies/{genealogyId}/recommendation-events: + post: { tags: [个性化推荐], summary: 记录允许列表内的家族圈行为事件, description: 仅在用户显式开启且租户策略启用时记录;tenantId、appUserId 和目标类型由服务端确定。, parameters: [{ $ref: '#/components/parameters/GenealogyId' }], requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/RecommendationEventBody' } } } }, responses: { '200': { description: 幂等事件, content: { application/json: { schema: { $ref: '#/components/schemas/RRecommendationEvent' } } } } } } + /genealogy/app/genealogies/{genealogyId}/feed-recommendations: + get: { tags: [个性化推荐], summary: 获取授权且可解释的家族圈推荐, description: 候选集先鉴权;关闭个性化或无信号时回退人工排序和时间排序。, parameters: [{ $ref: '#/components/parameters/GenealogyId' }], responses: { '200': { description: 推荐结果, content: { application/json: { schema: { $ref: '#/components/schemas/RFamilyFeedRecommendationList' } } } } } } + /genealogy/app/compliance/documents/{documentKey}: + get: + tags: [合规文档] + summary: APP 查询当前生效的合规文档 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - name: documentKey + in: path + required: true + schema: { type: string, enum: [user_agreement, privacy_policy] } + responses: + '200': { $ref: '#/components/responses/ComplianceDocumentContentResult' } + /genealogy/app/compliance/documents/{documentKey}/versions/{versionNo}: + get: + tags: [合规文档] + summary: APP 查询合规文档历史版本 + parameters: + - $ref: '#/components/parameters/ClientIdHeader' + - name: documentKey + in: path + required: true + schema: { type: string, enum: [user_agreement, privacy_policy] } + - name: versionNo + in: path + required: true + schema: { type: string } + responses: + '200': { $ref: '#/components/responses/ComplianceDocumentContentResult' } components: securitySchemes: SaToken: @@ -1907,6 +2473,12 @@ components: name: Authorization description: 登录后返回的 token。若本地配置使用 sa-token 名称,请按项目实际 token-name 调整。 parameters: + ContentAccessToken: + name: X-Content-Access-Token + in: header + required: false + description: 内容密码校验成功后返回的短时授权令牌 + schema: { type: string } ClientIdHeader: name: clientid description: APP 认证业务请求的 clientid Header 必填;是业务客户端唯一来源;请求体不得提交 clientId,且客户端 clientKey 必须为 app 并与 APP 路由一致。 @@ -2154,6 +2726,20 @@ components: personStatus: "0" biography: "第一世人物简介" sortOrder: 1 + LineagePersonSortOrder: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LineagePersonSortOrderBody' + example: + sortOrder: 100 + LineageRelationRemove: + required: true + content: + application/json: + schema: { $ref: '#/components/schemas/LineageRelationRemoveBody' } + example: { relativePersonId: 900020002, relationType: spouse } FamilyFeed: required: true content: @@ -2209,6 +2795,14 @@ components: intro: "更新后的家谱简介" visibility: "1" joinMode: "1" + GenealogyUserOrder: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GenealogyUserOrderBody' + example: + genealogyIds: ["2060000000000000001", "2060000000000000002"] GenealogyJoinApply: required: true content: @@ -2220,7 +2814,6 @@ components: phone: "13800000000" relationDesc: "本族成员" applyReason: "申请加入家谱维护" - inviterUserId: 900000001 GenealogyJoinAudit: required: true content: @@ -2276,6 +2869,17 @@ components: authorName: "族谱管理员" sortOrder: 1 status: "0" + ArticleCategory: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ArticleCategoryBody' + example: + categoryName: "姓氏源流" + categoryDesc: "记录本支姓氏与迁徙源流" + sortOrder: 10 + status: "0" Album: required: true content: @@ -2362,6 +2966,23 @@ components: mediaOssIds: "2060000000000000001" sortOrder: 1 status: "0" + LifeEvent: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LifeEventBody' + example: + eventType: EDUCATION + eventTitle: 进入县立小学 + eventContent: 在县立小学完成启蒙教育 + eventDate: "1936-09-01" + datePrecision: DAY + eventPlace: 四川省成都市 + sourceDescription: 家谱手稿 + mediaOssIds: ["2060000000000000001"] + sortOrder: 1 + status: "0" Memo: required: true content: @@ -2440,7 +3061,6 @@ components: example: packageId: 900060001 genealogyId: 900001001 - payType: "wechat" VerificationChallenge: required: true content: @@ -2500,6 +3120,11 @@ components: uuid: "captcha-uuid" code: "6" responses: + ComplianceDocumentContentResult: + description: 合规文档正文响应 + content: + application/json: + schema: { $ref: '#/components/schemas/RComplianceDocumentContent' } VoidResult: description: 通用成功响应 content: @@ -2530,6 +3155,238 @@ components: application/json: schema: $ref: '#/components/schemas/RList' + HelpArticleResult: + description: 帮助文章详情响应 + content: { application/json: { schema: { $ref: '#/components/schemas/RHelpArticle' } } } + HelpArticleListResult: + description: 帮助文章列表响应 + content: { application/json: { schema: { $ref: '#/components/schemas/RHelpArticleList' } } } + VipPurchaseCapabilityResult: + description: VIP 购买能力响应 + content: { application/json: { schema: { $ref: '#/components/schemas/RVipPurchaseCapability' } } } + VipPackageListResult: + description: VIP 套餐列表响应 + content: { application/json: { schema: { $ref: '#/components/schemas/RVipPackageList' } } } + VipOrderResult: + description: VIP 订单详情响应 + content: { application/json: { schema: { $ref: '#/components/schemas/RVipOrder' } } } + VipOrderListResult: + description: VIP 订单列表响应 + content: { application/json: { schema: { $ref: '#/components/schemas/RVipOrderList' } } } + PaymentOrderResult: + description: 支付下单响应 + content: { application/json: { schema: { $ref: '#/components/schemas/RPaymentOrder' } } } + PaymentTransactionStatusResult: + description: 支付状态响应 + content: { application/json: { schema: { $ref: '#/components/schemas/RPaymentTransactionStatus' } } } + GenealogyInvitationResult: + description: 家谱邀请详情响应 + content: { application/json: { schema: { $ref: '#/components/schemas/RGenealogyInvitation' } } } + GenealogyInvitationListResult: + description: 家谱邀请列表响应 + content: { application/json: { schema: { $ref: '#/components/schemas/RGenealogyInvitationList' } } } + AppPromotionListResult: + description: 当前有效推广列表 + content: + application/json: + schema: { $ref: '#/components/schemas/RAppPromotionList' } + ContentLifecycleStatusResult: + description: 内容生命周期状态响应 + content: + application/json: + schema: { $ref: '#/components/schemas/RContentLifecycleStatus' } + AppProfileResult: + description: AppProfileResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppProfile' + AppGenealogyResult: + description: AppGenealogyResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppGenealogy' + AppGenealogyListResult: + description: AppGenealogyListResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppGenealogyList' + GenealogyCompletenessResult: + description: 家谱资料完整度响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RGenealogyCompleteness' + AppGenealogyMemberResult: + description: AppGenealogyMemberResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppGenealogyMember' + AppGenealogyMemberListResult: + description: AppGenealogyMemberListResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppGenealogyMemberList' + GenealogyMemberOptionListResult: + description: GenealogyMemberOptionListResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RGenealogyMemberOptionList' + AppNotificationResult: + description: AppNotificationResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppNotification' + AppNotificationListResult: + description: AppNotificationListResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppNotificationList' + AppGrowthRecordResult: + description: AppGrowthRecordResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppGrowthRecord' + AppGrowthRecordListResult: + description: AppGrowthRecordListResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppGrowthRecordList' + AppAlbumResult: + description: AppAlbumResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppAlbum' + AppAlbumListResult: + description: AppAlbumListResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppAlbumList' + AppAlbumPhotoResult: + description: AppAlbumPhotoResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppAlbumPhoto' + AppAlbumPhotoListResult: + description: AppAlbumPhotoListResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppAlbumPhotoList' + AppVideoResult: + description: AppVideoResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppVideo' + AppVideoListResult: + description: AppVideoListResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppVideoList' + AppArticleResult: + description: AppArticleResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppArticle' + AppArticleListResult: + description: AppArticleListResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppArticleList' + AppArticleCategoryOptionListResult: + description: 谱文分类选项列表 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppArticleCategoryOptionList' + AppCeremonyResult: + description: AppCeremonyResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppCeremony' + AppCeremonyListResult: + description: AppCeremonyListResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppCeremonyList' + AppCeremonyGiftResult: + description: APP/PC 典礼礼金详情响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppCeremonyGift' + AppCeremonyGiftListResult: + description: APP/PC 典礼礼金列表响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppCeremonyGiftList' + AppRelativeRecordResult: + description: AppRelativeRecordResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppRelativeRecord' + AppRelativeRecordListResult: + description: AppRelativeRecordListResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppRelativeRecordList' + AppMemoResult: + description: AppMemoResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppMemo' + AppMemoListResult: + description: AppMemoListResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppMemoList' + AppMeritRecordResult: + description: AppMeritRecordResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppMeritRecord' + AppMeritRecordListResult: + description: AppMeritRecordListResult 专用响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RAppMeritRecordList' + LifeEventResult: + description: 人生大事详情响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RLifeEvent' + LifeEventListResult: + description: 人生大事列表响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RLifeEventList' CeremonyInvitationResult: description: 贺礼邀约详情响应 content: @@ -2542,6 +3399,11 @@ components: application/json: schema: $ref: '#/components/schemas/RCeremonyInvitationList' + CeremonyInviteeOptionListResult: + description: 贺礼受邀候选列表响应 + content: + application/json: + schema: { $ref: '#/components/schemas/RCeremonyInviteeOptionList' } GenerationPoemResult: description: 字辈详情响应 content: @@ -2566,6 +3428,12 @@ components: application/json: schema: $ref: '#/components/schemas/RLineagePerson' + LineageRankOptionListResult: + description: 世系人物排行选项响应 + content: + application/json: + schema: + $ref: '#/components/schemas/RLineageRankOptionList' LineagePersonListResult: description: 世系人物列表或选项响应 content: @@ -2669,6 +3537,211 @@ components: schema: $ref: '#/components/schemas/RNotification' schemas: + ComplianceDocumentContent: + type: object + additionalProperties: false + properties: + documentKey: { type: string, enum: [user_agreement, privacy_policy] } + documentTitle: { type: string } + versionNo: { type: string } + documentContent: { type: string } + contentHash: { type: string } + effectiveAt: { type: string, format: date-time, nullable: true } + publishedAt: { type: string, format: date-time } + RComplianceDocumentContent: + type: object + properties: + code: { type: integer, example: 200 } + msg: { type: string, example: 操作成功 } + data: { $ref: '#/components/schemas/ComplianceDocumentContent' } + EarningWithdrawalBody: + type: object + additionalProperties: false + required: [requestId, amount, payoutQrOssId, payoutAccountName] + properties: + requestId: { type: string, maxLength: 64, description: 客户端生成且重试保持不变的幂等请求号 } + amount: { type: number, format: double, minimum: 0.01, multipleOf: 0.01 } + payoutQrOssId: { type: integer, format: int64, description: 统一续传上传接口返回的私有 OSS ID } + payoutAccountName: { type: string, maxLength: 64 } + EarningSummary: + type: object + properties: + availableAmount: { type: string, format: decimal, description: 人民币金额(元),精确到分 } + frozenAmount: { type: string, format: decimal, description: 人民币金额(元),精确到分 } + minimumWithdrawal: { type: string, format: decimal, nullable: true, description: 人民币金额(元),精确到分 } + rewardRateBps: { type: integer, nullable: true, description: 基点,10000=100% } + currency: { type: string, enum: [CNY] } + withdrawalEnabled: { type: boolean } + EarningLedger: + type: object + properties: + ledgerId: { type: integer, format: int64 } + entryType: { type: string } + businessId: { type: integer, format: int64, nullable: true } + availableDelta: { type: string, format: decimal, description: 人民币金额变动(元),可为负数 } + frozenDelta: { type: string, format: decimal, description: 人民币冻结金额变动(元),可为负数 } + availableAfter: { type: string, format: decimal, description: 变动后人民币可用金额(元) } + frozenAfter: { type: string, format: decimal, description: 变动后人民币冻结金额(元) } + currency: { type: string, enum: [CNY] } + remark: { type: string } + createTime: { type: string, format: date-time } + EarningWithdrawal: + type: object + properties: + withdrawalId: { type: integer, format: int64 } + withdrawalNo: { type: string } + amount: { type: string, format: decimal, description: 人民币提现金额(元),精确到分 } + currency: { type: string, enum: [CNY] } + payoutQrOssId: { type: integer, format: int64 } + payoutAccountName: { type: string } + withdrawalStatus: { type: string, enum: [PENDING, APPROVED, PAYING, PAID, REJECTED, FAILED, CANCELLED], x-dict-type: gen_earning_withdrawal_status } + auditRemark: { type: string, nullable: true } + payoutReference: { type: string, nullable: true } + paidAt: { type: string, format: date-time, nullable: true } + failureReason: { type: string, nullable: true } + createTime: { type: string, format: date-time } + REarningSummary: + allOf: + - $ref: '#/components/schemas/RVoid' + - type: object + properties: { data: { $ref: '#/components/schemas/EarningSummary' } } + REarningWithdrawal: + allOf: + - $ref: '#/components/schemas/RVoid' + - type: object + properties: { data: { $ref: '#/components/schemas/EarningWithdrawal' } } + EarningLedgerPage: + type: object + properties: + code: { type: integer } + msg: { type: string } + rows: { type: array, items: { $ref: '#/components/schemas/EarningLedger' } } + total: { type: integer, format: int64 } + EarningWithdrawalPage: + type: object + properties: + code: { type: integer } + msg: { type: string } + rows: { type: array, items: { $ref: '#/components/schemas/EarningWithdrawal' } } + total: { type: integer, format: int64 } + ContentPasswordBody: + type: object + additionalProperties: false + required: [password] + properties: + password: { type: string, format: password, minLength: 8, maxLength: 128 } + PersonDocumentBody: + type: object + additionalProperties: false + required: [lineagePersonId, documentType, documentTitle] + properties: + lineagePersonId: { type: integer, format: int64 } + documentType: { type: string, enum: [id_card, household_register, birth_certificate, marriage_certificate, other], x-dict-type: gen_person_document_type } + documentTitle: { type: string, maxLength: 100 } + maskedIdentifier: { type: string, maxLength: 100 } + description: { type: string, maxLength: 1000 } + sortOrder: { type: integer, format: int64 } + status: { type: string, enum: ['0', '1'] } + PersonDocumentResourceBody: + type: object + additionalProperties: false + required: [ossId, usageType] + properties: + ossId: { type: integer, format: int64, description: 统一上传接口返回的 OSS ID } + usageType: { type: string, enum: [FRONT, BACK, ATTACHMENT] } + sortOrder: { type: integer, format: int64 } + PersonDocumentResource: + type: object + properties: + resourceId: { type: integer, format: int64 } + usageType: { type: string, enum: [FRONT, BACK, ATTACHMENT] } + sortOrder: { type: integer, format: int64 } + status: { type: string } + PersonDocument: + type: object + properties: + documentId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64 } + lineagePersonId: { type: integer, format: int64 } + lineagePersonName: { type: string } + documentType: { type: string, x-dict-type: gen_person_document_type } + documentTitle: { type: string } + maskedIdentifier: { type: string } + description: { type: string } + uploaderUserId: { type: integer, format: int64 } + sortOrder: { type: integer, format: int64 } + status: { type: string } + contentProtected: { type: boolean } + contentUnlocked: { type: boolean } + canEdit: { type: boolean } + canDelete: { type: boolean } + resources: { type: array, items: { $ref: '#/components/schemas/PersonDocumentResource' } } + ContentAccessGrant: + type: object + required: [accessToken, expiresAt] + properties: + accessToken: { type: string, description: 仅本次响应返回,不持久化原文 } + expiresAt: { type: string, format: date-time } + RPersonDocument: + type: object + properties: { code: { type: integer }, msg: { type: string }, data: { $ref: '#/components/schemas/PersonDocument' } } + RPersonDocumentList: + type: object + properties: { code: { type: integer }, msg: { type: string }, data: { type: array, items: { $ref: '#/components/schemas/PersonDocument' } } } + RPersonDocumentResource: + type: object + properties: { code: { type: integer }, msg: { type: string }, data: { $ref: '#/components/schemas/PersonDocumentResource' } } + RContentAccessGrant: + type: object + properties: { code: { type: integer }, msg: { type: string }, data: { $ref: '#/components/schemas/ContentAccessGrant' } } + RBusinessFileAccess: + type: object + properties: { code: { type: integer }, msg: { type: string }, data: { $ref: '#/components/schemas/BusinessFileAccess' } } + BusinessDictionaryOption: + type: object + required: [code, label, value, sort, default] + properties: + code: + type: integer + format: int64 + label: + type: string + value: + type: string + sort: + type: integer + cssClass: + type: string + nullable: true + listClass: + type: string + nullable: true + default: + type: boolean + RBusinessDictionaryOptions: + type: object + required: [code, msg, data] + properties: + code: + type: integer + example: 200 + msg: + type: string + example: 操作成功 + data: + type: array + items: + $ref: '#/components/schemas/BusinessDictionaryOption' + RBusinessDictionaryError: + type: object + required: [code, msg] + properties: + code: + type: integer + msg: + type: string + data: + nullable: true RVoid: type: object properties: @@ -3215,6 +4288,716 @@ components: description: 保存时是否停用未出现在新文本中的后续世代;不会删除历史记录。 type: boolean example: false + BusinessFileAccess: + type: object + description: 已完成业务资源授权校验的临时文件访问对象 + additionalProperties: false + properties: + fileId: { description: 文件业务ID, type: integer, format: int64 } + ossId: { description: OSS对象ID, type: integer, format: int64 } + fileName: { description: 文件名, type: string } + mediaType: { description: 媒体类型, type: string } + fileSize: { description: 文件大小(字节), type: integer, format: int64 } + accessUrl: { description: 有时效的授权访问地址, type: string } + expiresAt: { description: 访问地址过期时间, type: string, format: date-time } + GenealogyMemberCapabilities: + type: object + additionalProperties: false + properties: + canEdit: { description: 是否可编辑成员, type: boolean } + canRemove: { description: 是否可移除成员, type: boolean } + canLeave: { description: 是否可退出家谱, type: boolean } + canTransferOwner: { description: 是否可转让家主, type: boolean } + AppGenealogyMember: + type: object + additionalProperties: false + properties: + memberId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64 } + genealogyNo: { type: string } + genealogyName: { type: string } + surname: { type: string } + appUserId: { type: integer, format: int64 } + appUserNickName: { type: string } + lineagePersonId: { type: integer, format: int64, nullable: true } + lineagePersonNo: { type: string } + lineagePersonName: { type: string } + memberName: { type: string } + roleType: { type: string } + relationName: { type: string } + joinSource: { type: string } + inviterUserId: { type: integer, format: int64, nullable: true } + inviterNickName: { type: string } + joinTime: { type: string, format: date-time } + status: { type: string } + capabilities: { $ref: '#/components/schemas/GenealogyMemberCapabilities' } + GenealogyMemberOption: + type: object + additionalProperties: false + properties: + memberId: { type: integer, format: int64 } + appUserId: { type: integer, format: int64 } + memberName: { type: string } + relationName: { type: string } + roleType: { type: string } + lineagePersonId: { type: integer, format: int64, nullable: true } + eligible: { type: boolean } + disabledReason: { type: string, nullable: true } + capabilities: { $ref: '#/components/schemas/GenealogyMemberCapabilities' } + AppNotification: + type: object + additionalProperties: false + properties: + notificationId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64, nullable: true } + genealogyNo: { type: string } + genealogyName: { type: string } + senderUserId: { type: integer, format: int64, nullable: true } + senderNickName: { type: string } + noticeType: { type: string, enum: [join_apply, memo_reminder, family_feed, CEREMONY_INVITE] } + noticeTypeLabel: { type: string, nullable: true, description: 通知类型中文标签 } + noticeTitle: { type: string } + noticeContent: { type: string } + bizType: { type: string } + bizId: { type: integer, format: int64, nullable: true } + bizSummary: { type: string } + publishTime: { type: string, format: date-time } + readStatus: { description: "字典 gen_notification_read_status:0=未读,1=已读", type: string, enum: ["0", "1"], example: "0", x-dict-type: gen_notification_read_status } + readTime: { type: string, format: date-time, nullable: true } + status: { description: "字典 sys_normal_disable:0=正常,1=停用", type: string, enum: ["0", "1"], example: "0", x-dict-type: sys_normal_disable } + remark: { type: string } + AppProfile: + type: object + additionalProperties: false + properties: + userId: { type: integer, format: int64 } + tenantId: { type: string } + userNo: { type: string } + phone: { description: 当前登录用户本人的手机号, type: string } + nickName: { type: string } + realName: { type: string } + avatarFile: { $ref: '#/components/schemas/BusinessFileAccess' } + sex: { type: string } + birthday: { type: string, format: date-time, nullable: true } + email: { type: string } + registerSource: { type: string } + loginIp: { type: string } + loginDate: { type: string, format: date-time, nullable: true } + status: { type: string } + clientKey: { type: string } + deviceType: { type: string } + AppGenealogy: + type: object + additionalProperties: false + properties: + genealogyId: { type: integer, format: int64 } + genealogyNo: { type: string } + genealogyName: { type: string } + surname: { type: string } + ancestralHall: { type: string } + originPlace: { type: string } + regionCode: { type: string } + regionName: { type: string } + regionFullName: { type: string } + addressDetail: { type: string } + coverFile: { $ref: '#/components/schemas/BusinessFileAccess' } + intro: { type: string } + ownerUserId: { type: integer, format: int64 } + visibility: { type: string } + joinMode: { type: string } + memberCount: { type: integer, format: int64 } + personCount: { type: integer, format: int64 } + status: { type: string } + roleType: { type: string } + canManage: { type: boolean } + canEditContent: { type: boolean } + lifecycleStatus: { type: string, enum: [normal, archived, delete_pending] } + archivedAt: { type: string, format: date-time, nullable: true } + archivedBy: { type: string, pattern: '^[1-9][0-9]*$', nullable: true } + canArchive: { type: boolean } + canRestore: { type: boolean } + memberStatus: { type: string } + joinTime: { type: string, format: date-time, nullable: true } + AppGrowthRecord: + type: object + additionalProperties: false + properties: + canEdit: { type: boolean, description: 当前用户是否可编辑该资源 } + canDelete: { type: boolean, description: 当前用户是否可删除该资源 } + contentProtected: { type: boolean, description: 是否启用内容密码保护 } + contentUnlocked: { type: boolean, description: 当前请求是否已通过短时令牌解锁 } + canManageProtection: { type: boolean, description: 当前用户是否可设置或关闭内容密码 } + recordId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64 } + genealogyNo: { type: string } + genealogyName: { type: string } + surname: { type: string } + appUserId: { type: integer, format: int64 } + appUserNickName: { type: string } + lineagePersonId: { type: integer, format: int64, nullable: true } + lineagePersonNo: { type: string } + lineagePersonName: { type: string } + recordType: { type: string, description: 字典 gen_growth_record_type, x-dict-type: gen_growth_record_type } + recordTitle: { type: string } + recordContent: { type: string } + recordDate: { type: string, format: date-time, nullable: true } + remindTime: { type: string, format: date-time, nullable: true } + mediaFiles: + type: array + items: { $ref: '#/components/schemas/BusinessFileAccess' } + sortOrder: { type: integer, format: int64 } + status: { type: string } + remark: { type: string } + AppAlbum: + type: object + additionalProperties: false + properties: + canEdit: { type: boolean, description: 当前用户是否可编辑该资源 } + canDelete: { type: boolean, description: 当前用户是否可删除该资源 } + albumId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64 } + genealogyNo: { type: string } + genealogyName: { type: string } + surname: { type: string } + albumName: { type: string } + albumDesc: { type: string } + coverFile: { $ref: '#/components/schemas/BusinessFileAccess' } + photoCount: { type: integer, format: int64 } + sortOrder: { type: integer, format: int64 } + status: { type: string } + remark: { type: string } + AppAlbumPhoto: + type: object + additionalProperties: false + properties: + canEdit: { type: boolean, description: 当前用户是否可编辑该资源 } + canDelete: { type: boolean, description: 当前用户是否可删除该资源 } + photoId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64 } + genealogyNo: { type: string } + genealogyName: { type: string } + surname: { type: string } + albumId: { type: integer, format: int64 } + albumName: { type: string } + photoFile: { $ref: '#/components/schemas/BusinessFileAccess' } + photoTitle: { type: string } + photoDesc: { type: string } + photographer: { type: string } + shootTime: { type: string, format: date-time, nullable: true } + sortOrder: { type: integer, format: int64 } + status: { type: string } + remark: { type: string } + AppVideo: + type: object + additionalProperties: false + properties: + videoId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64 } + genealogyNo: { type: string } + genealogyName: { type: string } + surname: { type: string } + videoTitle: { type: string } + videoDesc: { type: string } + coverFile: { $ref: '#/components/schemas/BusinessFileAccess' } + videoFile: { $ref: '#/components/schemas/BusinessFileAccess' } + durationSeconds: { type: integer, format: int64 } + publisherUserId: { type: integer, format: int64 } + publisherNickName: { type: string } + publishTime: { type: string, format: date-time, nullable: true } + viewCount: { type: integer, format: int64 } + sortOrder: { type: integer, format: int64 } + status: { type: string } + remark: { type: string } + canEdit: { description: 当前用户是否可编辑, type: boolean } + canDelete: { description: 当前用户是否可删除, type: boolean } + AppArticleCategoryOption: + type: object + additionalProperties: false + properties: + categoryId: { type: integer, format: int64 } + categoryName: { type: string } + enabled: { type: boolean } + sortOrder: { type: integer, format: int64 } + AppArticle: + type: object + additionalProperties: false + properties: + canEdit: { type: boolean, description: 当前用户是否可编辑该资源 } + canDelete: { type: boolean, description: 当前用户是否可删除该资源 } + contentProtected: { type: boolean, description: 是否启用内容密码保护 } + contentUnlocked: { type: boolean, description: 当前请求是否已通过短时令牌解锁 } + canManageProtection: { type: boolean, description: 当前用户是否可设置或关闭内容密码 } + articleId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64 } + genealogyNo: { type: string } + genealogyName: { type: string } + surname: { type: string } + categoryId: { type: integer, format: int64 } + categoryName: { type: string } + categoryCode: { type: string } + articleTitle: { type: string } + articleSummary: { type: string } + coverFile: { $ref: '#/components/schemas/BusinessFileAccess' } + articleContent: { type: string } + authorName: { type: string } + publishTime: { type: string, format: date-time, nullable: true } + viewCount: { type: integer, format: int64 } + sortOrder: { type: integer, format: int64 } + status: { type: string } + remark: { type: string } + AppCeremony: + type: object + additionalProperties: false + properties: + canEdit: { type: boolean, description: 当前用户是否可编辑该资源 } + canDelete: { type: boolean, description: 当前用户是否可删除该资源 } + ceremonyId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64 } + genealogyNo: { type: string } + genealogyName: { type: string } + surname: { type: string } + sponsorUserId: { type: integer, format: int64 } + sponsorNickName: { type: string } + ceremonyType: { type: string, enum: [ancestor, memorial, funeral, wedding, birth, birthday, banquet, other], description: 字典 gen_ceremony_type;返回稳定英文编码,中文名称由字典标签提供, x-dict-type: gen_ceremony_type } + ceremonyTitle: { type: string } + ceremonyDesc: { type: string } + ceremonyTime: { type: string, format: date-time, nullable: true } + location: { type: string } + locationAddress: { type: string } + longitude: { type: number } + latitude: { type: number } + coverFile: { $ref: '#/components/schemas/BusinessFileAccess' } + giftCount: { type: integer, format: int64 } + giftAmount: { description: 人民币累计金额(元),0 至 9999999999.99, type: string, format: decimal } + sortOrder: { type: integer, format: int64 } + status: { type: string } + remark: { type: string } + AppCeremonyGift: + type: object + additionalProperties: false + properties: + canEdit: { type: boolean, description: 当前用户是否可编辑该资源 } + canDelete: { type: boolean, description: 当前用户是否可删除该资源 } + giftId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64 } + genealogyNo: { type: string } + genealogyName: { type: string } + surname: { type: string } + ceremonyId: { type: integer, format: int64 } + ceremonyTitle: { type: string } + giverUserId: { type: integer, format: int64 } + giverNickName: { type: string } + giverName: { type: string } + giftAmount: { description: 人民币金额(元),0 至 9999999999.99, type: string, format: decimal } + giftMessage: { type: string } + giftTime: { type: string, format: date-time, nullable: true } + status: { type: string } + remark: { type: string } + AppLifeEvent: + type: object + additionalProperties: false + properties: + eventId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64 } + lineagePersonId: { type: integer, format: int64 } + creatorUserId: { type: integer, format: int64 } + eventType: { type: string } + eventTitle: { type: string } + eventContent: { type: string } + eventDate: { type: string, format: date } + datePrecision: { type: string } + eventPlace: { type: string } + sourceDescription: { type: string } + mediaFiles: + type: array + items: { $ref: '#/components/schemas/BusinessFileAccess' } + sortOrder: { type: integer, format: int64 } + status: { type: string } + remark: { type: string } + canEdit: { type: boolean, description: 当前用户是否可编辑 } + canDelete: { type: boolean, description: 当前用户是否可删除 } + AppRelativeRecord: + type: object + additionalProperties: false + properties: + canEdit: { type: boolean, description: 当前用户是否可编辑该资源 } + canDelete: { type: boolean, description: 当前用户是否可删除该资源 } + relativeId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64 } + genealogyNo: { type: string } + genealogyName: { type: string } + surname: { type: string } + appUserId: { type: integer, format: int64 } + appUserNickName: { type: string } + relativeName: { type: string } + relationName: { type: string } + eventName: { type: string } + eventTime: { type: string, format: date-time, nullable: true } + giftAmount: { description: 人民币金额(元),0 至 9999999999.99, type: string, format: decimal } + recordContent: { type: string } + mediaFiles: + type: array + items: { $ref: '#/components/schemas/BusinessFileAccess' } + sortOrder: { type: integer, format: int64 } + status: { type: string } + remark: { type: string } + AppMemo: + type: object + additionalProperties: false + properties: + canEdit: { type: boolean, description: 当前用户是否可编辑该资源 } + canDelete: { type: boolean, description: 当前用户是否可删除该资源 } + memoId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64 } + genealogyNo: { type: string } + genealogyName: { type: string } + surname: { type: string } + appUserId: { type: integer, format: int64 } + appUserNickName: { type: string } + memoTitle: { type: string } + memoContent: { type: string } + remindTime: { type: string, format: date-time, nullable: true } + completed: { type: string } + mediaFiles: + type: array + items: { $ref: '#/components/schemas/BusinessFileAccess' } + sortOrder: { type: integer, format: int64 } + status: { type: string } + remark: { type: string } + AppMeritRecord: + type: object + additionalProperties: false + properties: + canEdit: { type: boolean, description: 当前用户是否可编辑该资源 } + canDelete: { type: boolean, description: 当前用户是否可删除该资源 } + meritId: { type: integer, format: int64 } + genealogyId: { type: integer, format: int64 } + genealogyNo: { type: string } + genealogyName: { type: string } + surname: { type: string } + appUserId: { type: integer, format: int64 } + appUserNickName: { type: string } + donorName: { type: string } + meritType: { type: string } + meritTitle: { type: string } + meritContent: { type: string } + amount: { description: 人民币金额(元),0 至 9999999999.99, type: string, format: decimal } + meritTime: { type: string, format: date-time } + sortOrder: { type: integer, format: int64 } + status: { type: string } + remark: { type: string } + LineageRelationRemoveBody: + type: object + additionalProperties: false + required: [relativePersonId, relationType] + properties: + relativePersonId: { type: integer, format: int64 } + relationType: { type: string, enum: [spouse, father, mother, child, sibling] } + AppPromotionVo: + type: object + additionalProperties: false + properties: + promotionId: { type: integer, format: int64 } + promotionKey: { type: string } + promotionTitle: { type: string } + promotionDesc: { type: string } + coverFile: + allOf: [{ $ref: '#/components/schemas/BusinessFileAccess' }] + nullable: true + targetUrl: { type: string } + platform: { type: string, enum: [app, pc, wechat, all] } + placement: { type: string, enum: [home_banner, home_bottom, message_bottom, profile_bottom] } + startAt: { type: string, format: date-time, nullable: true } + endAt: { type: string, format: date-time, nullable: true } + sortOrder: { type: integer, format: int64 } + status: { type: string } + remark: { type: string } + ContentLifecycleStatusVo: + type: object + additionalProperties: false + required: [genealogyId, resourceType, resourceId, status, canRestore] + properties: + genealogyId: { type: integer, format: int64 } + resourceType: { type: string, enum: [family_feed, video, growth_record, relative_record, memo, merit_record, article, album, album_photo, ceremony] } + resourceId: { type: integer, format: int64 } + status: { type: string, enum: ['0', '1'] } + canRestore: { type: boolean } + RAppPromotionList: + type: object + properties: + code: { type: integer, example: 200 } + msg: { type: string } + data: { type: array, items: { $ref: '#/components/schemas/AppPromotionVo' } } + RContentLifecycleStatus: + type: object + properties: + code: { type: integer, example: 200 } + msg: { type: string } + data: { $ref: '#/components/schemas/ContentLifecycleStatusVo' } + + RAppProfile: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppProfile' + RAppGenealogy: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppGenealogy' + RAppGenealogyList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppGenealogy' } + GenealogyUserOrderBody: + type: object + additionalProperties: false + required: [genealogyIds] + properties: + genealogyIds: + type: array + uniqueItems: true + items: { type: string, pattern: '^[1-9][0-9]*$' } + GenealogyCompletenessItem: + type: object + additionalProperties: false + required: [code, displayText, targetPage] + properties: + code: { type: string, example: genealogy_name } + displayText: { type: string, example: 请完善家谱名称 } + targetPage: { type: string, enum: [genealogy-profile], example: genealogy-profile } + GenealogyCompleteness: + type: object + additionalProperties: false + required: [ruleVersion, totalCount, completedCount, completionRate, missingItems] + properties: + ruleVersion: { type: string, example: v1 } + totalCount: { type: integer, example: 10 } + completedCount: { type: integer, example: 8 } + completionRate: { type: integer, minimum: 0, maximum: 100, example: 80 } + missingItems: + type: array + items: { $ref: '#/components/schemas/GenealogyCompletenessItem' } + RGenealogyCompleteness: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: { $ref: '#/components/schemas/GenealogyCompleteness' } + RAppGenealogyMember: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppGenealogyMember' + RAppGenealogyMemberList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppGenealogyMember' } + RGenealogyMemberOptionList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/GenealogyMemberOption' } + RAppNotification: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppNotification' + RAppNotificationList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppNotification' } + RAppGrowthRecord: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppGrowthRecord' + RAppGrowthRecordList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppGrowthRecord' } + RAppAlbum: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppAlbum' + RAppAlbumList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppAlbum' } + RAppAlbumPhoto: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppAlbumPhoto' + RAppAlbumPhotoList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppAlbumPhoto' } + RAppVideo: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppVideo' + RAppVideoList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppVideo' } + RAppArticle: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppArticle' + RAppArticleList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppArticle' } + RAppArticleCategoryOptionList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppArticleCategoryOption' } + RAppCeremony: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppCeremony' + RAppCeremonyList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppCeremony' } + RAppCeremonyGift: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppCeremonyGift' + RAppCeremonyGiftList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppCeremonyGift' } + RAppRelativeRecord: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppRelativeRecord' + RAppRelativeRecordList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppRelativeRecord' } + RAppMemo: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppMemo' + RAppMemoList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppMemo' } + RAppMeritRecord: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + $ref: '#/components/schemas/AppMeritRecord' + RAppMeritRecordList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/AppMeritRecord' } + LineagePersonSortOrderBody: + type: object + additionalProperties: false + required: [sortOrder] + properties: + sortOrder: + description: 人物在当前家谱中的排行值 + type: integer + format: int64 + example: 100 LineagePersonBody: type: object additionalProperties: false @@ -3251,6 +5034,11 @@ components: generationName: description: 字辈或辈分 type: string + rankId: + description: 世系排行配置ID;从当前家谱的排行选项接口选择,留空表示不设置排行 + type: integer + format: int64 + nullable: true fatherId: description: 父亲人物ID,必须属于当前家谱 type: integer @@ -3327,12 +5115,14 @@ components: sex: { description: "字典 sys_user_sex:0=男,1=女,2=未知", type: string, enum: ["0", "1", "2"], example: "2", x-dict-type: sys_user_sex } generation: { description: 世代序号, type: integer, format: int64 } generationName: { description: 字辈或辈分, type: string } + rankId: { description: 世系排行配置ID, type: integer, format: int64, nullable: true } + rankName: { description: 世系排行名称,例如始祖、长子、次女, type: string, nullable: true } fatherId: { description: 父亲人物ID, type: integer, format: int64, nullable: true } fatherName: { description: 父亲姓名, type: string } motherId: { description: 母亲人物ID, type: integer, format: int64, nullable: true } motherName: { description: 母亲姓名, type: string } spouseNames: { description: 配偶姓名,多个使用顿号分隔, type: string } - avatarOssId: { description: 头像文件OSS ID, type: string, pattern: '^[1-9][0-9]*$', nullable: true } + avatarFile: { $ref: '#/components/schemas/BusinessFileAccess' } birthDate: { description: 出生日期, type: string, format: date-time, nullable: true } birthLunar: { description: "字典 gen_number_yes_no:0=否,1=是", type: string, enum: ["0", "1"], example: "0", x-dict-type: gen_number_yes_no } birthPlace: { description: 出生地, type: string } @@ -3344,6 +5134,10 @@ components: biography: { description: 人物简介, type: string } sortOrder: { description: 排序值, type: integer, format: int64 } status: { description: "字典 sys_normal_disable:0=正常,1=停用", type: string, enum: ["0", "1"], example: "0", x-dict-type: sys_normal_disable } + canDisable: { type: boolean, description: 当前用户是否可停用该人物 } + disabledReason: { type: string, nullable: true, description: 不可停用时的稳定原因 } + canCreateDocument: { type: boolean, description: 当前用户是否可为该人物创建证件档案 } + canManageDocuments: { type: boolean, description: 当前用户是否可管理该人物证件档案 } remark: { description: 备注, type: string } LineagePersonTreeView: allOf: @@ -3366,6 +5160,23 @@ components: code: { description: 响应状态码, type: integer, example: 200 } msg: { description: 响应消息, type: string, example: 操作成功 } data: { $ref: '#/components/schemas/LineagePersonView' } + LineageRankOption: + type: object + properties: + rankId: { description: 世系排行配置ID, type: integer, format: int64 } + rankCode: { description: 排行编码,例如 ANCESTOR、SON_01、DAUGHTER_01, type: string } + rankName: { description: 排行名称,例如始祖、长子、长女, type: string } + rankType: { description: "排行类型:ANCESTOR=始祖,GENERATION=世代排行", type: string, enum: [ANCESTOR, GENERATION] } + genderScope: { description: "适用性别:0=男,1=女,2=通用", type: string, enum: ["0", "1", "2"] } + rankOrder: { description: 同性别同世代内的排行序号, type: integer, format: int64 } + RLineageRankOptionList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + type: array + items: { $ref: '#/components/schemas/LineageRankOption' } RLineagePersonList: type: object properties: @@ -3422,6 +5233,8 @@ components: FamilyFeedView: type: object properties: + canEdit: { type: boolean, description: 当前用户是否可编辑该资源 } + canDelete: { type: boolean, description: 当前用户是否可删除该资源 } feedId: { description: 动态ID, type: integer, format: int64 } genealogyId: { description: 所属家谱ID, type: integer, format: int64 } genealogyNo: { description: 家谱编号, type: string } @@ -3431,7 +5244,9 @@ components: publisherStatus: { description: 发布用户状态, type: string } feedType: { description: 动态类型, type: string } feedContent: { description: 动态内容, type: string } - mediaOssIds: { description: 媒体文件OSS ID列表,多个ID使用英文逗号分隔, type: string } + mediaFiles: + type: array + items: { $ref: '#/components/schemas/BusinessFileAccess' } likedByMe: { description: 当前登录用户是否已点赞, type: boolean, example: false } likeCount: { description: 点赞数量, type: integer, format: int64 } commentCount: { description: 评论数量, type: integer, format: int64 } @@ -3474,7 +5289,6 @@ components: genealogyName: { description: 家谱名称, type: string } senderUserId: { description: 发送业务用户ID, type: integer, format: int64, nullable: true } senderNickName: { description: 发送用户昵称, type: string } - senderPhone: { description: 脱敏后的发送用户手机号, type: string } noticeType: { description: 通知类型, type: string } noticeTitle: { description: 通知标题, type: string } noticeContent: { description: 通知正文, type: string } @@ -3491,7 +5305,7 @@ components: properties: code: { description: 响应状态码, type: integer, example: 200 } msg: { description: 响应消息, type: string, example: 操作成功 } - data: { $ref: '#/components/schemas/NotificationView' } + data: { $ref: '#/components/schemas/AppNotification' } FamilyFeedCommentBody: type: object required: [commentContent] @@ -3554,6 +5368,9 @@ components: type: string enum: ["0", "1"] example: "0" + canDelete: + description: 当前登录用户是否可删除该评论 + type: boolean replyCount: description: 正常展示的直接回复数量 type: integer @@ -3735,16 +5552,20 @@ components: applyReason: description: 申请理由 type: string - inviterUserId: - description: 邀请人业务用户ID - type: integer - format: int64 example: applicantName: "彭小明" phone: "13800000000" relationDesc: "本族成员" applyReason: "申请加入家谱维护" - inviterUserId: 900000001 + GenealogyInvitationRedeemBody: + type: object + required: [token] + properties: + token: { type: string, maxLength: 128, description: 一次性原始邀请码 } + applicantName: { type: string, maxLength: 50 } + phone: { type: string, maxLength: 30 } + relationDesc: { type: string, maxLength: 100 } + applyReason: { type: string, maxLength: 500 } GenealogyJoinAuditBody: type: object required: [status] @@ -3874,6 +5695,33 @@ components: authorName: "族谱管理员" sortOrder: 1 status: "0" + ArticleCategoryBody: + type: object + required: [categoryName] + properties: + categoryName: + description: 谱文分类名称 + type: string + maxLength: 100 + categoryDesc: + description: 谱文分类说明 + type: string + maxLength: 500 + sortOrder: + description: 排序值,数值越小越靠前 + type: integer + format: int64 + status: + description: "字典 sys_normal_disable:0=正常,1=停用" + type: string + enum: ["0", "1"] + example: "0" + x-dict-type: sys_normal_disable + example: + categoryName: "姓氏源流" + categoryDesc: "记录本支姓氏与迁徙源流" + sortOrder: 10 + status: "0" AlbumBody: type: object required: [albumName] @@ -3949,6 +5797,8 @@ components: ceremonyType: description: 祭祀/活动类型 type: string + enum: [ancestor, memorial, funeral, wedding, birth, birthday, banquet, other] + x-dict-type: gen_ceremony_type ceremonyTitle: description: 祭祀/活动标题 type: string @@ -4012,6 +5862,23 @@ components: items: { type: integer, format: int64 } example: inviteeUserIds: [900000001, 900000002] + CeremonyInviteeOptionVo: + type: object + additionalProperties: false + properties: + memberId: { type: integer, format: int64 } + appUserId: { type: integer, format: int64 } + displayName: { type: string } + memberRole: { type: string } + eligible: { type: boolean } + disabledReason: { type: string, nullable: true } + sortOrder: { type: integer, format: int64 } + RCeremonyInviteeOptionList: + type: object + properties: + code: { type: integer, example: 200 } + msg: { type: string } + data: { type: array, items: { $ref: '#/components/schemas/CeremonyInviteeOptionVo' } } CeremonyInvitationResponseBody: type: object required: [inviteStatus] @@ -4065,9 +5932,12 @@ components: description: 赠送人/献礼人姓名 type: string giftAmount: - description: 礼物金额 + description: 人民币金额(元) type: number format: double + minimum: 0 + maximum: 9999999999.99 + multipleOf: 0.01 giftMessage: description: 礼物留言 type: string @@ -4086,6 +5956,7 @@ components: recordType: description: 记录类型 type: string + x-dict-type: gen_growth_record_type recordTitle: description: 记录标题 type: string @@ -4122,6 +5993,67 @@ components: mediaOssIds: "2060000000000000001" sortOrder: 1 status: "0" + LifeEventBody: + type: object + required: [eventType, eventTitle, eventDate, datePrecision] + properties: + eventType: + description: "字典 gen_life_event_type:BIRTH=出生,EDUCATION=求学,CAREER=事业,MARRIAGE=婚姻,MIGRATION=迁居,HONOR=荣誉,MAJOR_ACHIEVEMENT=重要成就,DEATH=逝世,OTHER=其他" + type: string + enum: [BIRTH, EDUCATION, CAREER, MARRIAGE, MIGRATION, HONOR, MAJOR_ACHIEVEMENT, DEATH, OTHER] + example: EDUCATION + x-dict-type: gen_life_event_type + eventTitle: { description: 事件标题, type: string, example: 进入县立小学 } + eventContent: { description: 事件详细内容, type: string, example: 在县立小学完成启蒙教育 } + eventDate: + description: 事件日期;精度为 YEAR 时传当年 01-01,MONTH 时传当月 01 日 + type: string + format: date + example: "1936-09-01" + datePrecision: + description: "日期精度:YEAR=年,MONTH=月,DAY=日" + type: string + enum: [YEAR, MONTH, DAY] + example: DAY + eventPlace: { description: 事件地点, type: string, example: 四川省成都市 } + sourceDescription: { description: 资料来源说明, type: string, example: 家谱手稿 } + mediaOssIds: + description: 媒体文件 OSS ID 数组;使用统一 APP 文件上传接口取得字符串 ID + type: array + items: { type: string, pattern: '^[1-9][0-9]*$' } + example: ["2060000000000000001"] + sortOrder: { description: 排序值,数值越小越靠前, type: integer, format: int64, example: 1 } + status: + description: "字典 sys_normal_disable:0=正常,1=停用" + type: string + enum: ["0", "1"] + example: "0" + x-dict-type: sys_normal_disable + remark: { description: 备注, type: string } + LifeEventView: + allOf: + - $ref: '#/components/schemas/LifeEventBody' + - type: object + properties: + eventId: { description: 人生大事ID, type: integer, format: int64, example: 2072800000000000100 } + genealogyId: { description: 家谱ID, type: integer, format: int64, example: 900001001 } + lineagePersonId: { description: 世系人物ID, type: integer, format: int64, example: 900020001 } + creatorUserId: { description: 创建人的业务用户ID, type: integer, format: int64, example: 900000001 } + RLifeEvent: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: { $ref: '#/components/schemas/AppLifeEvent' } + RLifeEventList: + type: object + properties: + code: { description: 响应状态码, type: integer, example: 200 } + msg: { description: 响应消息, type: string, example: 操作成功 } + data: + description: 人生大事列表 + type: array + items: { $ref: '#/components/schemas/AppLifeEvent' } MemoBody: type: object required: [memoTitle] @@ -4168,7 +6100,7 @@ components: relationName: { description: 关系名称, type: string } eventName: { description: 事件名称, type: string } eventTime: { description: 事件时间, type: string } - giftAmount: { description: 礼金金额, type: number } + giftAmount: { description: 人民币金额(元), type: number, format: double, minimum: 0, maximum: 9999999999.99, multipleOf: 0.01 } recordContent: { description: 记录内容, type: string } mediaOssIds: description: 媒体文件 OSS ID 列表;多个正整数 ID 使用英文逗号分隔,禁止空项和其他字符 @@ -4196,9 +6128,12 @@ components: description: 功德内容 type: string amount: - description: 金额 + description: 人民币金额(元) type: number format: double + minimum: 0 + maximum: 9999999999.99 + multipleOf: 0.01 meritTime: description: 功德时间 type: string @@ -4276,6 +6211,7 @@ components: contactInfo: "13800000000" VipOrderBody: type: object + additionalProperties: false required: [packageId] properties: packageId: @@ -4283,16 +6219,167 @@ components: type: integer format: int64 genealogyId: - description: 家谱ID + description: 家谱ID;购买家谱维度套餐时填写 type: integer format: int64 - payType: - description: 支付方式 - type: string example: packageId: 900060001 genealogyId: 900001001 - payType: "wechat" + HelpArticleVo: + type: object + properties: + helpId: { type: integer, format: int64, description: 帮助文章ID } + helpCategory: { type: string, enum: [common, member, lineage], description: 稳定帮助分类码 } + helpCategoryLabel: { type: string, nullable: true, description: 帮助分类中文标签 } + helpTitle: { type: string, description: 标题 } + helpContent: { type: string, description: 内容 } + coverOssId: { type: integer, format: int64, description: 封面文件ID } + sortOrder: { type: integer, format: int64, description: 排序 } + viewCount: { type: integer, format: int64, description: 浏览量 } + status: { type: string, description: 状态 } + remark: { type: string, description: 备注 } + GenealogyInvitationVo: + type: object + properties: + inviteId: { type: integer, format: int64, description: 邀请ID } + genealogyId: { type: integer, format: int64, description: 家谱ID } + genealogyNo: { type: string, description: 家谱编号 } + genealogyName: { type: string, description: 家谱名称 } + inviterUserId: { type: integer, format: int64, description: 服务端确定的邀请人ID,只读 } + status: { type: string, description: 邀请状态 } + expiresAt: { type: string, format: date-time, description: 过期时间 } + redeemedBy: { type: integer, format: int64, description: 兑换用户ID } + redeemedAt: { type: string, format: date-time, description: 兑换时间 } + revokedAt: { type: string, format: date-time, description: 撤销时间 } + createTime: { type: string, format: date-time, description: 创建时间 } + token: { type: string, description: 仅签发成功的本次响应返回原始一次性 token } + redemptionResult: { type: string, description: 兑换结果 } + applyId: { type: integer, format: int64, description: 审核模式生成的申请ID } + RHelpArticle: { type: object, properties: { code: { type: integer }, msg: { type: string }, data: { $ref: '#/components/schemas/HelpArticleVo' } } } + RHelpArticleList: { type: object, properties: { code: { type: integer }, msg: { type: string }, data: { type: array, items: { $ref: '#/components/schemas/HelpArticleVo' } } } } + VipPurchaseCapability: + type: object + required: [enabled] + properties: + enabled: { type: boolean, description: 当前租户和支付渠道是否允许购买 } + disabledReason: { type: string, nullable: true, description: 不可购买时的可展示原因 } + RVipPurchaseCapability: { type: object, properties: { code: { type: integer }, msg: { type: string }, data: { $ref: '#/components/schemas/VipPurchaseCapability' } } } + RVipPackageList: { type: object, properties: { code: { type: integer }, msg: { type: string }, data: { type: array, items: { $ref: '#/components/schemas/VipPackageVo' } } } } + RVipOrder: { type: object, properties: { code: { type: integer }, msg: { type: string }, data: { $ref: '#/components/schemas/VipOrderVo' } } } + RVipOrderList: { type: object, properties: { code: { type: integer }, msg: { type: string }, data: { type: array, items: { $ref: '#/components/schemas/VipOrderVo' } } } } + RPaymentOrder: { type: object, properties: { code: { type: integer }, msg: { type: string }, data: { $ref: '#/components/schemas/PaymentOrderVo' } } } + RPaymentTransactionStatus: { type: object, properties: { code: { type: integer }, msg: { type: string }, data: { $ref: '#/components/schemas/PaymentTransactionStatusVo' } } } + RGenealogyInvitation: { type: object, properties: { code: { type: integer }, msg: { type: string }, data: { $ref: '#/components/schemas/GenealogyInvitationVo' } } } + RGenealogyInvitationList: { type: object, properties: { code: { type: integer }, msg: { type: string }, data: { type: array, items: { $ref: '#/components/schemas/GenealogyInvitationVo' } } } } + VipPackageVo: + type: object + properties: + packageId: { type: integer, format: int64, description: 套餐ID } + packageName: { type: string, description: 套餐名称 } + packageType: { type: string, description: 套餐类型 } + packageDesc: { type: string, description: 套餐说明 } + price: { type: number, description: 当前售价 } + originalPrice: { type: number, description: 原价 } + durationValue: { type: integer, format: int64, description: 有效期数值 } + durationUnit: { type: string, description: 有效期单位 } + genealogyLimit: { type: integer, format: int64, description: 可用家谱数量限制 } + memberLimit: { type: integer, format: int64, description: 成员数量限制 } + storageLimitMb: { type: integer, format: int64, description: 存储空间限制,单位MB } + featureJson: { type: string, description: 套餐功能JSON } + sortOrder: { type: integer, format: int64, description: 排序 } + status: { type: string, description: 状态,0正常、1停用 } + remark: { type: string, description: 备注 } + VipOrderVo: + type: object + properties: + orderId: { type: integer, format: int64, description: VIP订单ID } + orderNo: { type: string, description: VIP业务订单号 } + packageId: { type: integer, format: int64, description: 套餐ID } + packageName: { type: string, description: 套餐名称 } + appUserId: { type: integer, format: int64, description: 业务用户ID } + appUserNickName: { type: string, description: 会员昵称 } + appUserPhone: { type: string, description: 会员手机号 } + genealogyId: { type: integer, format: int64, description: 家谱ID } + genealogyNo: { type: string, description: 家谱编号 } + genealogyName: { type: string, description: 家谱名称 } + orderAmount: { type: number, description: 订单金额 } + payAmount: { type: number, description: 实付金额 } + payType: { type: string, description: 支付方式,由后端确定 } + payStatus: { type: string, description: VIP订单支付状态 } + payTime: { type: string, format: date-time, description: 支付时间 } + expireTime: { type: string, format: date-time, description: 订单过期时间 } + status: { type: string, description: 业务状态 } + remark: { type: string, description: 备注 } + PaymentOrderVo: + type: object + description: APP 微信支付下单结果;交易类型固定为 APP + properties: + order: + $ref: '#/components/schemas/VipOrderVo' + transactionId: + type: integer + format: int64 + description: 支付流水ID + outTradeNo: + type: string + description: 商户支付单号 + tradeType: + type: string + enum: [APP] + description: 微信支付交易类型 + expiresAt: + type: string + format: date-time + description: 支付单过期时间 + appId: + type: string + description: 微信开放平台应用ID + partnerId: + type: string + description: 微信支付商户号 + packageValue: + type: string + description: 调起微信支付使用的 package 值 + nonceStr: + type: string + description: 随机字符串 + timestamp: + type: string + description: 支付签名时间戳 + sign: + type: string + description: 调起微信支付使用的签名 + PaymentTransactionStatusVo: + type: object + properties: + transactionId: + type: integer + format: int64 + description: 支付流水ID + orderNo: + type: string + description: VIP业务订单号 + outTradeNo: + type: string + description: 商户支付单号 + status: + type: string + enum: [CREATED, PAYING, SUCCESS, CLOSED, REFUNDING, REFUNDED] + description: 支付状态 + providerTradeState: + type: string + description: 微信支付侧交易状态 + providerTransactionId: + type: string + description: 微信支付订单号 + paidAt: + type: string + format: date-time + description: 支付成功时间 + closedAt: + type: string + format: date-time + description: 支付关闭时间 VerificationChallengeBody: type: object additionalProperties: false @@ -4563,3 +6650,49 @@ components: data: description: 响应数据主体 $ref: '#/components/schemas/LegacyCaptchaVo' + RecommendationPreferenceBody: + type: object + additionalProperties: false + required: [enabled] + properties: { enabled: { type: boolean } } + RecommendationEventBody: + type: object + additionalProperties: false + required: [eventKey, eventType, source, feedId] + properties: + eventKey: { type: string, maxLength: 64 } + eventType: { type: string, enum: [VIEW, CLICK, HIDE, SHARE] } + source: { type: string, enum: [FEED_LIST, FEED_DETAIL] } + feedId: { type: integer, format: int64 } + RecommendationPreferenceView: + type: object + required: [enabled, version] + properties: { enabled: { type: boolean }, version: { type: integer, minimum: 0 }, updatedAt: { type: string, format: date-time, nullable: true } } + RecommendationEventView: + type: object + properties: + eventId: { type: integer, format: int64 } + eventKey: { type: string } + genealogyId: { type: integer, format: int64 } + targetType: { type: string, enum: [FAMILY_FEED] } + targetId: { type: integer, format: int64 } + eventType: { type: string, enum: [VIEW, CLICK, HIDE, SHARE] } + source: { type: string, enum: [FEED_LIST, FEED_DETAIL] } + occurredAt: { type: string, format: date-time } + expiresAt: { type: string, format: date-time } + FamilyFeedRecommendationView: + type: object + required: [feed, reasonCode, reasonText] + properties: + feed: { $ref: '#/components/schemas/FamilyFeedView' } + reasonCode: { type: string, enum: [MANUAL_PRIORITY, FOLLOWED_INTERACTION, POPULAR_IN_GENEALOGY, RECENT_IN_GENEALOGY] } + reasonText: { type: string } + RRecommendationPreference: + type: object + properties: { code: { type: integer }, msg: { type: string }, data: { $ref: '#/components/schemas/RecommendationPreferenceView' } } + RRecommendationEvent: + type: object + properties: { code: { type: integer }, msg: { type: string }, data: { $ref: '#/components/schemas/RecommendationEventView' } } + RFamilyFeedRecommendationList: + type: object + properties: { code: { type: integer }, msg: { type: string }, data: { type: array, items: { $ref: '#/components/schemas/FamilyFeedRecommendationView' } } } diff --git a/家谱.openapi.json b/家谱.openapi.json deleted file mode 100644 index d1e4fab..0000000 --- a/家谱.openapi.json +++ /dev/null @@ -1,12318 +0,0 @@ -{ - "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": { - "bindingMode": "NONE", - "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": "字典 gen_lineage_person_status:0=健在,1=已故,2=未知", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1", - "2" - ], - "x-dict-type": "gen_lineage_person_status", - "examples": [ - "0" - ] - } - }, - { - "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": { - "bindingMode": "NONE", - "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": { - "bindingMode": "NONE", - "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": { - "bindingMode": "NONE", - "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": { - "bindingMode": "NONE", - "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": { - "bindingMode": "NONE", - "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": "字典 gen_notification_read_status:0=未读,1=已读;不传则查询全部", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "gen_notification_read_status", - "examples": [ - "0" - ] - } - }, - { - "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": "字典 sys_user_sex:0=男,1=女,2=未知", - "type": "string", - "enum": [ - "0", - "1", - "2" - ], - "x-dict-type": "sys_user_sex", - "examples": [ - "2" - ] - }, - "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": [ - "bindingMode", - "name" - ], - "properties": { - "bindingMode": { - "description": "账号绑定方式:NONE=不绑定账号;SELF=绑定当前登录业务用户;SPECIFIED=由有管理权限的操作者指定 appUserId", - "type": "string", - "enum": [ - "NONE", - "SELF", - "SPECIFIED" - ], - "examples": [ - "NONE" - ] - }, - "appUserId": { - "description": "仅 bindingMode=SPECIFIED 时必填;NONE/SELF 时必须不传。指定用户必须属于当前租户、状态正常,且未绑定当前家谱的其他有效世系人物", - "type": "integer", - "format": "int64" - }, - "personNo": { - "description": "人物编号;不传时由服务端生成", - "type": "string" - }, - "name": { - "description": "姓名", - "type": "string" - }, - "aliasName": { - "description": "别名或曾用名", - "type": "string" - }, - "sex": { - "description": "字典 sys_user_sex:0=男,1=女,2=未知", - "type": "string", - "enum": [ - "0", - "1", - "2" - ], - "x-dict-type": "sys_user_sex", - "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": "字典 gen_number_yes_no:0=否,1=是", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "gen_number_yes_no", - "examples": [ - "0" - ] - }, - "birthPlace": { - "description": "出生地", - "type": "string" - }, - "deathDate": { - "type": [ - "string", - "null" - ], - "format": "date-time" - }, - "deathLunar": { - "description": "字典 gen_number_yes_no:0=否,1=是", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "gen_number_yes_no", - "examples": [ - "0" - ] - }, - "deathPlace": { - "description": "逝世地", - "type": "string" - }, - "burialPlace": { - "description": "安葬地", - "type": "string" - }, - "personStatus": { - "description": "字典 gen_lineage_person_status:0=健在,1=已故,2=未知", - "type": "string", - "enum": [ - "0", - "1", - "2" - ], - "x-dict-type": "gen_lineage_person_status", - "examples": [ - "0" - ] - }, - "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": "字典 sys_normal_disable:0=正常,1=停用;未传时默认为0", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "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": "字典 gen_genealogy_visibility:0=私密,1=公开,2=成员可见", - "type": "string", - "enum": [ - "0", - "1", - "2" - ], - "x-dict-type": "gen_genealogy_visibility", - "examples": [ - "1" - ] - }, - "joinMode": { - "description": "字典 gen_genealogy_join_mode:0=关闭加入,1=申请审核,2=邀请码加入", - "type": "string", - "enum": [ - "0", - "1", - "2" - ], - "x-dict-type": "gen_genealogy_join_mode", - "examples": [ - "1" - ] - } - }, - "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": "字典 gen_genealogy_visibility:0=私密,1=公开,2=成员可见", - "type": "string", - "enum": [ - "0", - "1", - "2" - ], - "x-dict-type": "gen_genealogy_visibility", - "examples": [ - "1" - ] - }, - "joinMode": { - "description": "字典 gen_genealogy_join_mode:0=关闭加入,1=申请审核,2=邀请码加入", - "type": "string", - "enum": [ - "0", - "1", - "2" - ], - "x-dict-type": "gen_genealogy_join_mode", - "examples": [ - "1" - ] - } - }, - "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": "字典 gen_genealogy_join_apply_status:0=待审核,1=通过,2=拒绝,3=取消", - "type": "string", - "enum": [ - "0", - "1", - "2", - "3" - ], - "x-dict-type": "gen_genealogy_join_apply_status", - "examples": [ - "1" - ] - }, - "auditRemark": { - "description": "审核备注", - "type": "string" - } - }, - "examples": [ - { - "status": "1", - "auditRemark": "信息核验通过" - } - ] - }, - "GenealogyMemberUpdateBody": { - "type": "object", - "properties": { - "memberName": { - "description": "成员姓名", - "type": "string" - }, - "relationName": { - "description": "成员关系名称", - "type": "string" - }, - "roleType": { - "description": "字典 gen_genealogy_member_role:owner=谱主,admin=管理员,editor=编辑,member=成员,visitor=访客", - "type": "string", - "enum": [ - "owner", - "admin", - "editor", - "member", - "visitor" - ], - "x-dict-type": "gen_genealogy_member_role", - "examples": [ - "member" - ] - }, - "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": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - } - }, - "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": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - } - }, - "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": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - } - }, - "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": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - } - }, - "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": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - } - }, - "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": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - } - }, - "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": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - } - }, - "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": "字典 gen_merit_type:donation=捐赠,repair=修祠,public=公益,other=其他", - "type": "string", - "enum": [ - "donation", - "repair", - "public", - "other" - ], - "x-dict-type": "gen_merit_type", - "examples": [ - "donation" - ] - }, - "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": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - } - }, - "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": "字典 gen_feedback_type:advice=建议,bug=故障,complaint=投诉,other=其他", - "type": "string", - "enum": [ - "advice", - "bug", - "complaint", - "other" - ], - "x-dict-type": "gen_feedback_type", - "examples": [ - "bug" - ] - }, - "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": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - } - } - }, - "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": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - } - } - }, - "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": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - } - } - }, - "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": "字典 sys_user_sex:0=男,1=女,2=未知", - "type": "string", - "enum": [ - "0", - "1", - "2" - ], - "x-dict-type": "sys_user_sex", - "examples": [ - "2" - ] - }, - "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": "字典 gen_number_yes_no:0=否,1=是", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "gen_number_yes_no", - "examples": [ - "0" - ] - }, - "birthPlace": { - "description": "出生地", - "type": "string" - }, - "deathDate": { - "description": "逝世日期", - "type": [ - "string", - "null" - ], - "format": "date-time" - }, - "deathLunar": { - "description": "字典 gen_number_yes_no:0=否,1=是", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "gen_number_yes_no", - "examples": [ - "0" - ] - }, - "deathPlace": { - "description": "逝世地", - "type": "string" - }, - "burialPlace": { - "description": "安葬地", - "type": "string" - }, - "personStatus": { - "description": "字典 gen_lineage_person_status:0=健在,1=已故,2=未知", - "type": "string", - "enum": [ - "0", - "1", - "2" - ], - "x-dict-type": "gen_lineage_person_status", - "examples": [ - "0" - ] - }, - "biography": { - "description": "人物简介", - "type": "string" - }, - "sortOrder": { - "description": "排序值", - "type": "integer", - "format": "int64" - }, - "status": { - "description": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - }, - "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": "字典 gen_lineage_relation_type:father=父亲,mother=母亲,spouse=配偶,child=子女,adoptive=收养", - "type": "string", - "enum": [ - "father", - "mother", - "spouse", - "child", - "adoptive" - ], - "x-dict-type": "gen_lineage_relation_type", - "examples": [ - "spouse" - ] - }, - "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": "字典 sys_normal_disable:0=正常展示,1=停用;会员接口仅返回0", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "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": "字典 gen_number_yes_no:0=否,1=是", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "gen_number_yes_no", - "examples": [ - "0" - ] - }, - "pinnedTime": { - "description": "置顶时间", - "type": [ - "string", - "null" - ], - "format": "date-time" - }, - "sortOrder": { - "description": "排序值", - "type": "integer", - "format": "int64" - }, - "status": { - "description": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - }, - "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": "字典 gen_notification_read_status:0=未读,1=已读", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "gen_notification_read_status", - "examples": [ - "0" - ] - }, - "readTime": { - "description": "阅读时间", - "type": [ - "string", - "null" - ], - "format": "date-time" - }, - "status": { - "description": "字典 sys_normal_disable:0=正常,1=停用", - "type": "string", - "enum": [ - "0", - "1" - ], - "x-dict-type": "sys_normal_disable", - "examples": [ - "0" - ] - }, - "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": [] - } - ] -} \ No newline at end of file