From 8716a68fdbae528d4e434dccf7235ce1a841063a Mon Sep 17 00:00:00 2001 From: rain Date: Fri, 24 Jul 2026 11:49:14 +0800 Subject: [PATCH] 1 --- .gitignore | 53 + PC.openapi.yaml | 883 ----------- PC.openapi2.json | 3580 -------------------------------------------- config.js | 4 +- ticket-detail.html | 58 - 5 files changed, 55 insertions(+), 4523 deletions(-) create mode 100644 .gitignore delete mode 100644 PC.openapi.yaml delete mode 100644 PC.openapi2.json delete mode 100644 ticket-detail.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4328ac1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,53 @@ +###################################################################### +# Build Tools + +.gradle +/build/ +!gradle/wrapper/gradle-wrapper.jar + +target/ +!.mvn/wrapper/maven-wrapper.jar + +###################################################################### +# IDE + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### JRebel ### +rebel.xml + +### NetBeans ### +nbproject/private/ +build/* +nbbuild/ +nbdist/ +.nb-gradle/ + +###################################################################### +# Others +*.log +*.log.gz +*.xml.versionsBackup +*.swp + +!*/build/*.java +!*/build/*.html +!*/build/*.xml + +.flattened-pom.xml +/.maven-home/.msp/incrementMark + +robots.txt +sitemap.xml diff --git a/PC.openapi.yaml b/PC.openapi.yaml deleted file mode 100644 index 47117db..0000000 --- a/PC.openapi.yaml +++ /dev/null @@ -1,883 +0,0 @@ -# 已废弃:本文件保留仅用于追溯此前的账号闭环方案。 -# 正式接口源为 PC.openapi2.json;代码、测试和后续开发不得再以本文件为依据。 -openapi: 3.0.3 -info: - title: 代代相传 PC 用户端 API - version: 1.1.0 - description: | - 本文档是当前 PC 用户端唯一接口契约。 - 范围仅包含账号认证、个人资料、安全设置、头像上传、验证码与行政区划。 - 家谱、社区、内容、会员、支付及平台运营能力不在本期范围内。 -servers: - - url: https://{host} - variables: - host: - default: api.example.com - description: 由部署环境配置的 HTTPS API 域名 -tags: - - name: 认证登录 - - name: 验证中心 - - name: 文件上传 - - name: 行政区划 -paths: - /genealogy/pc/auth/register: - post: - tags: [认证登录] - summary: PC 用户注册 - security: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/RegisterRequest' - responses: - '200': - description: 注册结果;客户端不保存注册响应中的令牌 - content: - application/json: - schema: - $ref: '#/components/schemas/LoginResponse' - /genealogy/pc/auth/login: - post: - tags: [认证登录] - summary: PC 密码登录 - security: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/PasswordLoginRequest' - responses: - '200': - description: 登录成功并返回令牌 - content: - application/json: - schema: - $ref: '#/components/schemas/LoginResponse' - /genealogy/pc/auth/login/sms: - post: - tags: [认证登录] - summary: PC 短信登录 - security: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/SmsLoginRequest' - responses: - '200': - description: 登录成功并返回令牌 - content: - application/json: - schema: - $ref: '#/components/schemas/LoginResponse' - /genealogy/pc/auth/sms/code: - post: - tags: [认证登录] - summary: 发送短信验证码 - security: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/SmsCodeRequest' - responses: - '200': - description: 短信已受理 - content: - application/json: - schema: - $ref: '#/components/schemas/VoidResponse' - /genealogy/pc/auth/profile: - get: - tags: [认证登录] - summary: 获取当前用户资料 - security: - - BearerAuth: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - responses: - '200': - description: 当前登录用户资料 - content: - application/json: - schema: - $ref: '#/components/schemas/ProfileResponse' - put: - tags: [认证登录] - summary: 更新当前用户资料 - security: - - BearerAuth: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ProfileUpdateRequest' - responses: - '200': - description: 更新后的用户资料 - content: - application/json: - schema: - $ref: '#/components/schemas/ProfileResponse' - /genealogy/pc/auth/password: - put: - tags: [认证登录] - summary: 修改当前用户密码 - security: - - BearerAuth: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/PasswordChangeRequest' - responses: - '200': - description: 密码修改成功 - content: - application/json: - schema: - $ref: '#/components/schemas/VoidResponse' - /genealogy/pc/auth/password/reset: - put: - tags: [认证登录] - summary: 找回密码 - security: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/PasswordResetRequest' - responses: - '200': - description: 密码重置成功 - content: - application/json: - schema: - $ref: '#/components/schemas/VoidResponse' - /genealogy/pc/auth/phone: - put: - tags: [认证登录] - summary: 换绑手机号 - security: - - BearerAuth: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/PhoneChangeRequest' - responses: - '200': - description: 换绑后的用户资料 - content: - application/json: - schema: - $ref: '#/components/schemas/ProfileResponse' - /genealogy/pc/auth/account/deactivate: - post: - tags: [认证登录] - summary: 注销当前账号 - security: - - BearerAuth: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/AccountDeactivateRequest' - responses: - '200': - description: 注销申请已受理 - content: - application/json: - schema: - $ref: '#/components/schemas/VoidResponse' - /genealogy/pc/auth/logout: - delete: - tags: [认证登录] - summary: 退出登录 - security: - - BearerAuth: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - responses: - '200': - description: 服务端会话已退出 - content: - application/json: - schema: - $ref: '#/components/schemas/VoidResponse' - /captcha/require: - get: - tags: [验证中心] - summary: 查询场景是否需要验证码 - security: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - - name: tenantId - in: query - schema: - type: string - default: '000000' - - name: clientId - in: query - schema: - type: string - - $ref: '#/components/parameters/SceneCode' - - name: subject - in: query - description: 手机号或其他待验证主体 - schema: - type: string - responses: - '200': - description: 当前场景验证码策略 - content: - application/json: - schema: - $ref: '#/components/schemas/CaptchaRequirementResponse' - /captcha/challenge: - post: - tags: [验证中心] - summary: 创建验证码挑战 - security: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/CaptchaChallengeRequest' - responses: - '200': - description: 验证码挑战 - content: - application/json: - schema: - $ref: '#/components/schemas/CaptchaChallengeResponse' - /captcha/verify: - post: - tags: [验证中心] - summary: 校验验证码并换取业务票据 - security: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/CaptchaVerifyRequest' - responses: - '200': - description: 返回可提交给后续业务接口的 validToken - content: - application/json: - schema: - $ref: '#/components/schemas/CaptchaVerifyResponse' - /genealogy/pc/files/upload: - post: - tags: [文件上传] - summary: 上传个人头像文件 - security: - - BearerAuth: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - requestBody: - required: true - content: - multipart/form-data: - schema: - type: object - required: [file] - properties: - file: - type: string - format: binary - responses: - '200': - description: 上传结果 - content: - application/json: - schema: - $ref: '#/components/schemas/FileUploadResponse' - /genealogy/region/children: - get: - tags: [行政区划] - summary: 查询下级行政区划 - security: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - - name: parentCode - in: query - schema: - type: string - responses: - '200': - description: 下级地区列表 - content: - application/json: - schema: - $ref: '#/components/schemas/RegionListResponse' - /genealogy/region/path/{regionCode}: - get: - tags: [行政区划] - summary: 查询地区完整路径 - security: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - - $ref: '#/components/parameters/RegionCode' - responses: - '200': - description: 根节点到目标地区的路径 - content: - application/json: - schema: - $ref: '#/components/schemas/RegionListResponse' - /genealogy/region/search: - get: - tags: [行政区划] - summary: 搜索行政区划 - security: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - - name: keyword - in: query - required: true - schema: - type: string - - name: limit - in: query - schema: - type: integer - default: 20 - maximum: 50 - responses: - '200': - description: 匹配的地区列表 - content: - application/json: - schema: - $ref: '#/components/schemas/RegionListResponse' - /genealogy/region/{regionCode}: - get: - tags: [行政区划] - summary: 查询行政区划详情 - security: [] - parameters: - - $ref: '#/components/parameters/ClientIdHeader' - - $ref: '#/components/parameters/RegionCode' - responses: - '200': - description: 地区详情 - content: - application/json: - schema: - $ref: '#/components/schemas/RegionResponse' -components: - parameters: - ClientIdHeader: - name: clientid - in: header - required: true - description: PC 客户端标识 - schema: - type: string - example: ced7e5f0498645c6ec642dcf450b036f - RegionCode: - name: regionCode - in: path - required: true - schema: - type: string - example: '110101' - SceneCode: - name: sceneCode - in: query - required: true - schema: - $ref: '#/components/schemas/CaptchaSceneCode' - schemas: - CaptchaSceneCode: - type: string - enum: - - WEB_H5_LOGIN - - WEB_H5_REGISTER - - WEB_H5_FORGOT_PASSWORD - - WEB_H5_CHANGE_PASSWORD - - WEB_H5_CHANGE_PHONE - RegisterRequest: - type: object - required: [grantType, tenantId, phone, password] - properties: - grantType: - type: string - enum: [password] - tenantId: - type: string - example: '000000' - clientId: - type: string - phone: - type: string - pattern: '^1[3-9]\\d{9}$' - password: - type: string - description: 32 位 MD5 值;传输层必须使用 HTTPS - pattern: '^[a-fA-F0-9]{32}$' - nickName: - type: string - maxLength: 32 - registerSource: - type: string - enum: [PC] - validToken: - type: string - PasswordLoginRequest: - type: object - required: [grantType, tenantId, phone, password] - properties: - grantType: - type: string - enum: [password] - tenantId: - type: string - clientId: - type: string - phone: - type: string - pattern: '^1[3-9]\\d{9}$' - password: - type: string - pattern: '^[a-fA-F0-9]{32}$' - validToken: - type: string - SmsLoginRequest: - type: object - required: [grantType, tenantId, phone, smsCode] - properties: - grantType: - type: string - enum: [sms] - tenantId: - type: string - clientId: - type: string - phone: - type: string - pattern: '^1[3-9]\\d{9}$' - smsCode: - type: string - pattern: '^\\d{4,8}$' - validToken: - type: string - SmsCodeRequest: - type: object - required: [tenantId, phone, sceneCode] - properties: - tenantId: - type: string - clientId: - type: string - phone: - type: string - pattern: '^1[3-9]\\d{9}$' - sceneCode: - $ref: '#/components/schemas/CaptchaSceneCode' - validToken: - type: string - PasswordChangeRequest: - type: object - required: [oldPassword, newPassword] - properties: - oldPassword: - type: string - pattern: '^[a-fA-F0-9]{32}$' - newPassword: - type: string - pattern: '^[a-fA-F0-9]{32}$' - validToken: - type: string - PasswordResetRequest: - type: object - required: [tenantId, phone, smsCode, newPassword] - properties: - tenantId: - type: string - phone: - type: string - pattern: '^1[3-9]\\d{9}$' - smsCode: - type: string - pattern: '^\\d{4,8}$' - newPassword: - type: string - pattern: '^[a-fA-F0-9]{32}$' - validToken: - type: string - PhoneChangeRequest: - type: object - required: [newPhone, smsCode] - properties: - newPhone: - type: string - pattern: '^1[3-9]\\d{9}$' - smsCode: - type: string - pattern: '^\\d{4,8}$' - validToken: - type: string - AccountDeactivateRequest: - type: object - required: [password] - properties: - password: - type: string - pattern: '^[a-fA-F0-9]{32}$' - reason: - type: string - maxLength: 200 - ProfileUpdateRequest: - type: object - properties: - nickName: - type: string - maxLength: 32 - avatarOssId: - type: integer - format: int64 - sex: - type: string - enum: ['0', '1', '2'] - birthday: - type: string - format: date - provinceCode: - type: string - cityCode: - type: string - districtCode: - type: string - addressDetail: - type: string - maxLength: 100 - Profile: - type: object - required: [userId, phone] - properties: - userId: - type: integer - format: int64 - phone: - type: string - nickName: - type: string - avatarOssId: - type: integer - format: int64 - nullable: true - avatarUrl: - type: string - format: uri - nullable: true - sex: - type: string - nullable: true - birthday: - type: string - format: date - nullable: true - provinceCode: - type: string - nullable: true - cityCode: - type: string - nullable: true - districtCode: - type: string - nullable: true - addressDetail: - type: string - nullable: true - LoginData: - type: object - required: [accessToken, userId, tenantId, clientId] - properties: - accessToken: - type: string - userId: - type: integer - format: int64 - tenantId: - type: string - clientId: - type: string - FileUpload: - type: object - required: [ossId, url, fileName, originalName] - properties: - ossId: - type: integer - format: int64 - url: - type: string - format: uri - thumbnailUrl: - type: string - format: uri - nullable: true - fileName: - type: string - originalName: - type: string - Region: - type: object - required: [regionCode, regionName] - properties: - regionCode: - type: string - regionName: - type: string - parentCode: - type: string - nullable: true - level: - type: integer - minimum: 0 - CaptchaRequirement: - type: object - required: [required, sceneCode] - properties: - required: - type: boolean - sceneCode: - $ref: '#/components/schemas/CaptchaSceneCode' - providerCode: - type: string - nullable: true - captchaType: - type: string - nullable: true - CaptchaChallengeRequest: - type: object - required: [tenantId, clientId, sceneCode] - properties: - tenantId: - type: string - clientId: - type: string - sceneCode: - $ref: '#/components/schemas/CaptchaSceneCode' - subject: - type: string - CaptchaChallenge: - type: object - required: [challengeId, providerCode, captchaType] - properties: - challengeId: - type: string - providerCode: - type: string - captchaType: - type: string - backgroundImage: - type: string - format: uri - nullable: true - templateImage: - type: string - format: uri - nullable: true - uuid: - type: string - nullable: true - image: - type: string - nullable: true - CaptchaVerifyRequest: - type: object - required: [tenantId, clientId, sceneCode, challengeId, providerCode, captchaType, payload] - properties: - tenantId: - type: string - clientId: - type: string - sceneCode: - $ref: '#/components/schemas/CaptchaSceneCode' - subject: - type: string - challengeId: - type: string - providerCode: - type: string - captchaType: - type: string - payload: - oneOf: - - $ref: '#/components/schemas/TianaiCaptchaPayload' - - $ref: '#/components/schemas/SystemImageCaptchaPayload' - TianaiCaptchaPayload: - type: object - required: [track] - properties: - track: - type: object - required: [trackList] - properties: - trackList: - type: array - items: - type: object - required: [x, y, t, type] - properties: - x: - type: integer - y: - type: integer - t: - type: integer - type: - type: string - SystemImageCaptchaPayload: - type: object - required: [uuid, code] - properties: - uuid: - type: string - code: - type: string - CaptchaVerify: - type: object - required: [validToken] - properties: - validToken: - type: string - expireAt: - type: string - format: date-time - nullable: true - VoidResponse: - type: object - required: [code, msg] - properties: - code: - type: integer - example: 200 - msg: - type: string - data: - nullable: true - LoginResponse: - type: object - required: [code, msg, data] - properties: - code: - type: integer - msg: - type: string - data: - $ref: '#/components/schemas/LoginData' - ProfileResponse: - type: object - required: [code, msg, data] - properties: - code: - type: integer - msg: - type: string - data: - $ref: '#/components/schemas/Profile' - FileUploadResponse: - type: object - required: [code, msg, data] - properties: - code: - type: integer - msg: - type: string - data: - $ref: '#/components/schemas/FileUpload' - RegionResponse: - type: object - required: [code, msg, data] - properties: - code: - type: integer - msg: - type: string - data: - $ref: '#/components/schemas/Region' - RegionListResponse: - type: object - required: [code, msg, data] - properties: - code: - type: integer - msg: - type: string - data: - type: array - items: - $ref: '#/components/schemas/Region' - CaptchaRequirementResponse: - type: object - required: [code, msg, data] - properties: - code: - type: integer - msg: - type: string - data: - $ref: '#/components/schemas/CaptchaRequirement' - CaptchaChallengeResponse: - type: object - required: [code, msg, data] - properties: - code: - type: integer - msg: - type: string - data: - $ref: '#/components/schemas/CaptchaChallenge' - CaptchaVerifyResponse: - type: object - required: [code, msg, data] - properties: - code: - type: integer - msg: - type: string - data: - $ref: '#/components/schemas/CaptchaVerify' - securitySchemes: - BearerAuth: - type: http - scheme: bearer - bearerFormat: JWT diff --git a/PC.openapi2.json b/PC.openapi2.json deleted file mode 100644 index b6604c2..0000000 --- a/PC.openapi2.json +++ /dev/null @@ -1,3580 +0,0 @@ -{ - "openapi": "3.0.1", - "info": { - "title": "PC", - "description": "家谱业务 APP/PC 用户侧接口文档,用于 Apifox 导入。\n\n导入方式:Apifox -> 导入 API 数据 -> OpenAPI/Swagger -> 选择本文件。\n\n约定:\n- APP 路径前缀为 `/genealogy/app`\n- PC/H5 路径前缀为 `/genealogy/pc`\n- 后台管理接口不包含在本文件内\n- 登录后接口需要携带 token,且请求 Header 需携带 `clientid`\n", - "version": "1.0.0" - }, - "tags": [ - { - "name": "认证登录" - }, - { - "name": "验证中心" - }, - { - "name": "文件上传" - }, - { - "name": "行政区划" - }, - { - "name": "家族圈" - } - ], - "paths": { - "/genealogy/pc/auth/register": { - "post": { - "summary": "PC 用户注册", - "deprecated": false, - "description": "", - "tags": [ - "认证登录" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PasswordRegisterBody" - }, - "example": { - "grantType": "password", - "tenantId": "000000", - "phone": "13800000000", - "password": "e10adc3949ba59abbe56e057f20f883e", - "nickName": "测试用户", - "registerSource": "app", - "validToken": "captcha-ticket-or-sms-token" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/LoginResult", - "description": "登录结果" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/auth/login": { - "post": { - "summary": "PC 密码登录", - "deprecated": false, - "description": "", - "tags": [ - "认证登录" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PasswordLoginBody" - }, - "example": { - "grantType": "password", - "tenantId": "000000", - "phone": "13800000000", - "password": "e10adc3949ba59abbe56e057f20f883e", - "validToken": "captcha-ticket" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/LoginResult", - "description": "登录结果" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/auth/login/sms": { - "post": { - "summary": "PC 短信登录", - "deprecated": false, - "description": "", - "tags": [ - "认证登录" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SmsLoginBody" - }, - "example": { - "grantType": "sms", - "tenantId": "000000", - "phone": "13800000000", - "smsCode": "123456", - "validToken": "captcha-ticket" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/LoginResult", - "description": "登录结果" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/auth/sms/code": { - "post": { - "summary": "PC 发送短信验证码", - "deprecated": false, - "description": "", - "tags": [ - "认证登录" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SmsCodeBody" - }, - "example": { - "tenantId": "000000", - "phone": "13800000000", - "sceneCode": "WEB_H5_LOGIN", - "validToken": "captcha-ticket" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/VoidResult", - "description": "通用成功响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/auth/profile": { - "get": { - "summary": "PC 当前用户资料", - "deprecated": false, - "description": "", - "tags": [ - "认证登录" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/ObjectResult", - "description": "通用对象响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - }, - "put": { - "summary": "PC 修改用户资料", - "deprecated": false, - "description": "", - "tags": [ - "认证登录" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProfileUpdateBody" - }, - "example": { - "nickName": "张三", - "avatarOssId": "2060000000000000000", - "sex": "0", - "birthday": "1990-01-01", - "regionCode": "110101", - "addressDetail": "北京市东城区" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/ObjectResult", - "description": "通用对象响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/auth/password": { - "put": { - "summary": "PC 修改密码", - "deprecated": false, - "description": "", - "tags": [ - "认证登录" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PasswordChangeBody" - }, - "example": { - "oldPassword": "e10adc3949ba59abbe56e057f20f883e", - "newPassword": "25d55ad283aa400af464c76d713c07ad", - "validToken": "captcha-ticket" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/VoidResult", - "description": "通用成功响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/auth/password/reset": { - "put": { - "summary": "PC 找回密码", - "deprecated": false, - "description": "", - "tags": [ - "认证登录" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PasswordResetBody" - }, - "example": { - "tenantId": "000000", - "phone": "13800000000", - "smsCode": "123456", - "newPassword": "25d55ad283aa400af464c76d713c07ad", - "validToken": "captcha-ticket" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/VoidResult", - "description": "通用成功响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/auth/phone": { - "put": { - "summary": "PC 换绑手机号", - "deprecated": false, - "description": "", - "tags": [ - "认证登录" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PhoneChangeBody" - }, - "example": { - "newPhone": "13900000000", - "smsCode": "123456", - "validToken": "captcha-ticket" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/ObjectResult", - "description": "通用对象响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/auth/account/deactivate": { - "post": { - "summary": "PC 注销账号", - "deprecated": false, - "description": "", - "tags": [ - "认证登录" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AccountDeactivateBody" - }, - "example": { - "password": "e10adc3949ba59abbe56e057f20f883e", - "reason": "user request" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/VoidResult", - "description": "通用成功响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/auth/logout": { - "delete": { - "summary": "PC 退出登录", - "deprecated": false, - "description": "", - "tags": [ - "认证登录" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/VoidResult", - "description": "通用成功响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/captcha/require": { - "get": { - "summary": "查询当前场景是否需要验证", - "deprecated": false, - "description": "用于登录、注册、换绑手机等场景。按租户、客户端和场景编码匹配后台验证策略。", - "tags": [ - "验证中心" - ], - "parameters": [ - { - "name": "tenantId", - "in": "query", - "description": "租户ID,用于区分不同租户的数据和验证策略", - "required": false, - "example": "000000", - "schema": { - "type": "string" - } - }, - { - "name": "clientId", - "in": "query", - "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", - "required": false, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - }, - { - "name": "sceneCode", - "in": "query", - "description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER", - "required": true, - "example": "WEB_H5_LOGIN", - "schema": { - "type": "string" - } - }, - { - "name": "subject", - "in": "query", - "description": "验证主体,通常为手机号、用户ID或登录账号", - "required": false, - "example": "13800000000", - "schema": { - "type": "string" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID", - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string", - "default": "ced7e5f0498645c6ec642dcf450b036f" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/VerificationRequireResult", - "description": "验证需求查询结果" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/captcha/challenge": { - "post": { - "summary": "生成验证挑战", - "deprecated": false, - "description": "统一生成验证码。策略为天爱时返回行为验证数据;策略为系统图形时返回 uuid 和 img。", - "tags": [ - "验证中心" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID", - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string", - "default": "ced7e5f0498645c6ec642dcf450b036f" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/VerificationChallengeBody" - }, - "example": { - "tenantId": "000000", - "clientId": "ced7e5f0498645c6ec642dcf450b036f", - "sceneCode": "WEB_H5_LOGIN", - "subject": "13800000000" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/VerificationChallengeResult", - "description": "验证挑战生成结果" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/captcha/verify": { - "post": { - "summary": "校验验证结果并换取 validToken", - "deprecated": false, - "description": "验证通过后返回 validToken,登录、注册、发短信等业务接口将 validToken 随请求体一起提交。", - "tags": [ - "验证中心" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID", - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string", - "default": "ced7e5f0498645c6ec642dcf450b036f" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/VerificationCheckBody" - }, - "examples": { - "tianai_behavior": { - "value": { - "tenantId": "000000", - "clientId": "ced7e5f0498645c6ec642dcf450b036f", - "sceneCode": "WEB_H5_LOGIN", - "subject": "13800000000", - "challengeId": "CAPTCHA_CHALLENGE_ID", - "providerCode": "tianai", - "captchaType": "SLIDER", - "payload": { - "track": { - "bgImageWidth": 340, - "bgImageHeight": 180, - "templateImageWidth": 50, - "templateImageHeight": 50, - "startTime": 1720000000000, - "stopTime": 1720000001500, - "left": 120, - "top": 0, - "trackList": [ - { - "x": 0, - "y": 0, - "t": 0, - "type": "down" - }, - { - "x": 120, - "y": 0, - "t": 650, - "type": "move" - }, - { - "x": 120, - "y": 0, - "t": 700, - "type": "up" - } - ] - } - } - }, - "summary": "天爱滑块/旋转/滑动还原/文字点选验证" - }, - "system_image": { - "value": { - "tenantId": "000000", - "clientId": "ced7e5f0498645c6ec642dcf450b036f", - "sceneCode": "WEB_H5_LOGIN", - "subject": "13800000000", - "challengeId": "CAPTCHA_CHALLENGE_ID", - "providerCode": "ruoyi_image", - "captchaType": "math", - "payload": { - "uuid": "captcha-uuid", - "code": "6" - } - }, - "summary": "系统图形验证码" - } - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/VerificationCheckResult", - "description": "验证校验结果" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/auth/code": { - "get": { - "summary": "兼容旧系统图形验证码", - "deprecated": false, - "description": "老版后台登录图形验证码入口。新的 APP/PC 业务优先使用 /captcha/require + /captcha/challenge + /captcha/verify。", - "tags": [ - "验证中心" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID", - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string", - "default": "ced7e5f0498645c6ec642dcf450b036f" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/LegacyCaptchaResult", - "description": "兼容旧图形验证码结果" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/files/upload": { - "post": { - "summary": "PC 单文件上传", - "deprecated": false, - "description": "", - "tags": [ - "文件上传" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary", - "example": "" - } - }, - "required": [ - "file" - ] - }, - "example": { - "file": "" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/FileUploadResult", - "description": "文件上传结果" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/files/resumable/init": { - "post": { - "summary": "PC 分片上传初始化", - "deprecated": false, - "description": "", - "tags": [ - "文件上传" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResumableInitBody" - }, - "example": { - "fileName": "cover.jpg", - "fileSize": 9532, - "fileMd5": "d41d8cd98f00b204e9800998ecf8427e", - "contentType": "image/jpeg", - "chunkSize": 4194304, - "totalChunks": 1, - "bizType": "genealogy", - "usageScene": "cover" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/ObjectResult", - "description": "通用对象响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/files/resumable/chunk": { - "post": { - "summary": "PC 上传分片", - "deprecated": false, - "description": "", - "tags": [ - "文件上传" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "uploadId": { - "type": "string", - "example": "" - }, - "chunkIndex": { - "type": "integer", - "example": 0 - }, - "chunkMd5": { - "type": "string", - "example": "d41d8cd98f00b204e9800998ecf8427e" - }, - "file": { - "type": "string", - "format": "binary", - "example": "" - } - }, - "required": [ - "uploadId", - "chunkIndex", - "chunkMd5", - "file" - ] - }, - "example": { - "uploadId": "", - "chunkIndex": 0, - "chunkMd5": "d41d8cd98f00b204e9800998ecf8427e", - "file": "" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/VoidResult", - "description": "通用成功响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/files/resumable/complete": { - "post": { - "summary": "PC 完成分片上传", - "deprecated": false, - "description": "", - "tags": [ - "文件上传" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResumableCompleteBody" - }, - "example": { - "uploadId": "UPLOAD202607090001", - "fileMd5": "d41d8cd98f00b204e9800998ecf8427e", - "fileSize": 9532 - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/FileUploadResult", - "description": "文件上传结果" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/files/reference": { - "post": { - "summary": "PC 绑定文件业务引用", - "deprecated": false, - "description": "", - "tags": [ - "文件上传" - ], - "parameters": [ - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "428a8310cd442757ae699df5d894f051", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FileReferenceBody" - }, - "example": { - "bizType": "family_feed", - "bizName": "family feed image", - "bizTable": "gen_family_feed", - "bizId": 900013001, - "bizField": "media_oss_ids", - "ossId": "2060000000000000000", - "usageScene": "feed_image" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/VoidResult", - "description": "通用成功响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - }, - "delete": { - "summary": "PC 释放文件业务引用", - "deprecated": false, - "description": "", - "tags": [ - "文件上传" - ], - "parameters": [ - { - "name": "bizTable", - "in": "query", - "description": "业务表名,用于文件引用绑定", - "required": true, - "example": "gen_family_feed", - "schema": { - "type": "string" - } - }, - { - "name": "bizId", - "in": "query", - "description": "业务数据ID,用于文件引用绑定", - "required": true, - "example": 900013001, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "bizField", - "in": "query", - "description": "业务字段名,例如avatar_oss_id、cover_oss_id", - "required": true, - "example": "media_ids", - "schema": { - "type": "string" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "428a8310cd442757ae699df5d894f051", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/VoidResult", - "description": "通用成功响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/region/children": { - "get": { - "summary": "查询下级行政区划", - "deprecated": false, - "description": "", - "tags": [ - "行政区划" - ], - "parameters": [ - { - "name": "parentCode", - "in": "query", - "description": "父级行政区划编码,不传或传0查省级", - "required": false, - "example": "51", - "schema": { - "type": "string" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID", - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string", - "default": "ced7e5f0498645c6ec642dcf450b036f" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/ListResult", - "description": "通用列表响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/region/path/{regionCode}": { - "get": { - "summary": "查询行政区划路径", - "deprecated": false, - "description": "", - "tags": [ - "行政区划" - ], - "parameters": [ - { - "name": "regionCode", - "in": "path", - "description": "行政区划编码", - "required": true, - "example": "510000", - "schema": { - "type": "string" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID", - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string", - "default": "ced7e5f0498645c6ec642dcf450b036f" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/ListResult", - "description": "通用列表响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/region/search": { - "get": { - "summary": "搜索行政区划", - "deprecated": false, - "description": "", - "tags": [ - "行政区划" - ], - "parameters": [ - { - "name": "keyword", - "in": "query", - "description": "搜索关键词,支持地区名称或编码模糊查询", - "required": true, - "example": "北京", - "schema": { - "type": "string" - } - }, - { - "name": "level", - "in": "query", - "description": "行政区划级别,1省、2市、3区县、4乡镇街道、5村社区", - "required": false, - "example": 3, - "schema": { - "type": "integer" - } - }, - { - "name": "limit", - "in": "query", - "description": "返回数量上限", - "required": false, - "example": 20, - "schema": { - "type": "integer" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID", - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string", - "default": "ced7e5f0498645c6ec642dcf450b036f" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/ListResult", - "description": "通用列表响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/region/{regionCode}": { - "get": { - "summary": "查询行政区划详情", - "deprecated": false, - "description": "", - "tags": [ - "行政区划" - ], - "parameters": [ - { - "name": "regionCode", - "in": "path", - "description": "行政区划编码", - "required": true, - "example": "510000", - "schema": { - "type": "string" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID", - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string", - "default": "ced7e5f0498645c6ec642dcf450b036f" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/ObjectResult", - "description": "通用对象响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/genealogies/{genealogyId}/feeds": { - "get": { - "summary": "PC 家族圈动态列表", - "deprecated": false, - "description": "", - "tags": [ - "家族圈" - ], - "parameters": [ - { - "name": "genealogyId", - "in": "path", - "description": "家谱ID", - "required": true, - "example": 900001001, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/ListResult", - "description": "通用列表响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - }, - "post": { - "summary": "PC 发布家族圈动态", - "deprecated": false, - "description": "", - "tags": [ - "家族圈" - ], - "parameters": [ - { - "name": "genealogyId", - "in": "path", - "description": "家谱ID", - "required": true, - "example": 900001001, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FamilyFeedBody" - }, - "example": { - "feedType": "text", - "feedContent": "今天上传一张老照片。", - "mediaOssIds": "2060000000000000001,2060000000000000002", - "sortOrder": 0, - "status": "0" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/ObjectResult", - "description": "通用对象响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/genealogies/{genealogyId}/feeds/page": { - "get": { - "summary": "PC 家族圈动态分页", - "deprecated": false, - "description": "", - "tags": [ - "家族圈" - ], - "parameters": [ - { - "name": "genealogyId", - "in": "path", - "description": "家谱ID", - "required": true, - "example": 900001001, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "pageNum", - "in": "query", - "description": "页码,从1开始", - "required": false, - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "pageSize", - "in": "query", - "description": "每页条数", - "required": false, - "schema": { - "type": "integer", - "default": 10 - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/PageResult", - "description": "通用分页响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}": { - "get": { - "summary": "PC 家族圈动态详情", - "deprecated": false, - "description": "", - "tags": [ - "家族圈" - ], - "parameters": [ - { - "name": "genealogyId", - "in": "path", - "description": "家谱ID", - "required": true, - "example": 900001001, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "feedId", - "in": "path", - "description": "家族动态ID", - "required": true, - "example": "", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/ObjectResult", - "description": "通用对象响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - }, - "put": { - "summary": "PC 修改家族圈动态", - "deprecated": false, - "description": "", - "tags": [ - "家族圈" - ], - "parameters": [ - { - "name": "genealogyId", - "in": "path", - "description": "家谱ID", - "required": true, - "example": 900001001, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "feedId", - "in": "path", - "description": "家族动态ID", - "required": true, - "example": "", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FamilyFeedBody" - }, - "example": { - "feedType": "text", - "feedContent": "今天上传一张老照片。", - "mediaOssIds": "2060000000000000001,2060000000000000002", - "sortOrder": 0, - "status": "0" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/ObjectResult", - "description": "通用对象响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - }, - "delete": { - "summary": "PC 删除家族圈动态", - "deprecated": false, - "description": "", - "tags": [ - "家族圈" - ], - "parameters": [ - { - "name": "genealogyId", - "in": "path", - "description": "家谱ID", - "required": true, - "example": 900001001, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "feedId", - "in": "path", - "description": "家族动态ID", - "required": true, - "example": "", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/VoidResult", - "description": "通用成功响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/likes": { - "post": { - "summary": "PC 点赞动态", - "deprecated": false, - "description": "", - "tags": [ - "家族圈" - ], - "parameters": [ - { - "name": "genealogyId", - "in": "path", - "description": "家谱ID", - "required": true, - "example": 900001001, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "feedId", - "in": "path", - "description": "家族动态ID", - "required": true, - "example": "", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/VoidResult", - "description": "通用成功响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - }, - "delete": { - "summary": "PC 取消点赞动态", - "deprecated": false, - "description": "", - "tags": [ - "家族圈" - ], - "parameters": [ - { - "name": "genealogyId", - "in": "path", - "description": "家谱ID", - "required": true, - "example": 900001001, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "feedId", - "in": "path", - "description": "家族动态ID", - "required": true, - "example": "", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/VoidResult", - "description": "通用成功响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/comments": { - "get": { - "summary": "PC 动态评论列表", - "deprecated": false, - "description": "", - "tags": [ - "家族圈" - ], - "parameters": [ - { - "name": "genealogyId", - "in": "path", - "description": "家谱ID", - "required": true, - "example": 900001001, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "feedId", - "in": "path", - "description": "家族动态ID", - "required": true, - "example": "", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/ListResult", - "description": "通用列表响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - }, - "post": { - "summary": "PC 评论动态", - "deprecated": false, - "description": "", - "tags": [ - "家族圈" - ], - "parameters": [ - { - "name": "genealogyId", - "in": "path", - "description": "家谱ID", - "required": true, - "example": 900001001, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "feedId", - "in": "path", - "description": "家族动态ID", - "required": true, - "example": "", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FamilyFeedCommentBody" - }, - "example": { - "parentCommentId": null, - "replyUserId": null, - "content": "这张照片很有年代感。" - } - } - }, - "required": true - }, - "responses": { - "200": { - "$ref": "#/components/responses/ObjectResult", - "description": "通用对象响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/comments/page": { - "get": { - "summary": "PC 动态评论分页", - "deprecated": false, - "description": "", - "tags": [ - "家族圈" - ], - "parameters": [ - { - "name": "genealogyId", - "in": "path", - "description": "家谱ID", - "required": true, - "example": 900001001, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "feedId", - "in": "path", - "description": "家族动态ID", - "required": true, - "example": "", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "pageNum", - "in": "query", - "description": "页码,从1开始", - "required": false, - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "pageSize", - "in": "query", - "description": "每页条数", - "required": false, - "schema": { - "type": "integer", - "default": 10 - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/PageResult", - "description": "通用分页响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - }, - "/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/comments/{commentId}": { - "delete": { - "summary": "PC 删除动态评论", - "deprecated": false, - "description": "", - "tags": [ - "家族圈" - ], - "parameters": [ - { - "name": "genealogyId", - "in": "path", - "description": "家谱ID", - "required": true, - "example": 900001001, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "feedId", - "in": "path", - "description": "家族动态ID", - "required": true, - "example": "", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "commentId", - "in": "path", - "description": "评论ID", - "required": true, - "example": "", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "clientid", - "in": "header", - "description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端", - "required": true, - "example": "ced7e5f0498645c6ec642dcf450b036f", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/VoidResult", - "description": "通用成功响应" - } - }, - "security": [ - { - "SaToken1": [] - } - ] - } - } - }, - "components": { - "schemas": { - "PasswordRegisterBody": { - "type": "object", - "required": [ - "grantType", - "tenantId", - "phone", - "password" - ], - "properties": { - "clientId": { - "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", - "type": "string" - }, - "grantType": { - "description": "授权类型,例如password、sms、wechat、apple", - "type": "string", - "example": "password" - }, - "tenantId": { - "description": "租户ID,用于区分不同租户的数据和验证策略", - "type": "string", - "example": "000000" - }, - "phone": { - "description": "手机号", - "type": "string", - "example": "13800000000" - }, - "password": { - "type": "string", - "description": "32 位 MD5", - "example": "e10adc3949ba59abbe56e057f20f883e" - }, - "nickName": { - "description": "用户昵称", - "type": "string" - }, - "registerSource": { - "description": "注册来源,例如APP、PC、H5、MINI_PROGRAM", - "type": "string" - }, - "validToken": { - "description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验", - "type": "string" - } - } - }, - "PasswordLoginBody": { - "type": "object", - "required": [ - "grantType", - "tenantId", - "phone", - "password" - ], - "properties": { - "clientId": { - "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", - "type": "string" - }, - "grantType": { - "description": "授权类型,例如password、sms、wechat、apple", - "type": "string", - "example": "password" - }, - "tenantId": { - "description": "租户ID,用于区分不同租户的数据和验证策略", - "type": "string", - "example": "000000" - }, - "phone": { - "description": "手机号", - "type": "string", - "example": "13800000000" - }, - "password": { - "type": "string", - "description": "32 位 MD5", - "example": "e10adc3949ba59abbe56e057f20f883e" - }, - "validToken": { - "description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验", - "type": "string" - } - } - }, - "SmsLoginBody": { - "type": "object", - "required": [ - "grantType", - "tenantId", - "phone", - "smsCode" - ], - "properties": { - "clientId": { - "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", - "type": "string" - }, - "grantType": { - "description": "授权类型,例如password、sms、wechat、apple", - "type": "string", - "example": "sms" - }, - "tenantId": { - "description": "租户ID,用于区分不同租户的数据和验证策略", - "type": "string", - "example": "000000" - }, - "phone": { - "description": "手机号", - "type": "string", - "example": "13800000000" - }, - "smsCode": { - "description": "短信验证码", - "type": "string", - "example": "1234" - } - } - }, - "SmsCodeBody": { - "type": "object", - "required": [ - "grantType", - "tenantId", - "sceneCode", - "phone", - "validToken" - ], - "properties": { - "clientId": { - "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", - "type": "string" - }, - "grantType": { - "description": "授权类型,例如password、sms、wechat、apple", - "type": "string", - "example": "sms" - }, - "tenantId": { - "description": "租户ID,用于区分不同租户的数据和验证策略", - "type": "string", - "example": "000000" - }, - "sceneCode": { - "description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER", - "type": "string", - "example": "WEB_H5_LOGIN" - }, - "phone": { - "description": "手机号", - "type": "string", - "example": "13800000000" - }, - "validToken": { - "description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验", - "type": "string" - } - } - }, - "ProfileUpdateBody": { - "type": "object", - "properties": { - "nickName": { - "description": "用户昵称", - "type": "string" - }, - "avatarOssId": { - "description": "头像文件OSS ID", - "type": "integer", - "format": "int64" - }, - "sex": { - "description": "性别,建议使用系统字典值", - "type": "string" - }, - "birthday": { - "description": "生日,格式 yyyy-MM-dd", - "type": "string", - "format": "date" - }, - "provinceCode": { - "type": "string" - }, - "cityCode": { - "type": "string" - }, - "districtCode": { - "type": "string" - } - } - }, - "PasswordChangeBody": { - "type": "object", - "required": [ - "oldPassword", - "newPassword" - ], - "properties": { - "oldPassword": { - "type": "string", - "description": "32 位 MD5" - }, - "newPassword": { - "type": "string", - "description": "32 位 MD5" - } - } - }, - "PasswordResetBody": { - "type": "object", - "required": [ - "tenantId", - "phone", - "smsCode", - "newPassword" - ], - "properties": { - "tenantId": { - "description": "租户ID,用于区分不同租户的数据和验证策略", - "type": "string", - "example": "000000" - }, - "phone": { - "description": "手机号", - "type": "string" - }, - "smsCode": { - "description": "短信验证码", - "type": "string" - }, - "newPassword": { - "type": "string", - "description": "32 位 MD5" - }, - "validToken": { - "description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验", - "type": "string" - } - } - }, - "PhoneChangeBody": { - "type": "object", - "required": [ - "newPhone", - "smsCode" - ], - "properties": { - "newPhone": { - "type": "string" - }, - "smsCode": { - "description": "短信验证码", - "type": "string" - }, - "validToken": { - "description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验", - "type": "string" - } - } - }, - "AccountDeactivateBody": { - "type": "object", - "required": [ - "password" - ], - "properties": { - "password": { - "type": "string", - "description": "32 位 MD5" - }, - "reason": { - "description": "操作原因或说明", - "type": "string" - } - } - }, - "ResumableInitBody": { - "type": "object", - "required": [ - "fileName", - "fileSize", - "fileMd5", - "chunkSize", - "totalChunks" - ], - "properties": { - "fileName": { - "description": "原始文件名", - "type": "string" - }, - "fileSize": { - "description": "文件大小,单位字节", - "type": "integer", - "format": "int64" - }, - "fileMd5": { - "description": "完整文件MD5,用于秒传和完整性校验", - "type": "string" - }, - "contentType": { - "description": "文件MIME类型,例如 image/jpeg、video/mp4", - "type": "string" - }, - "chunkSize": { - "description": "单个分片大小,单位字节", - "type": "integer", - "example": 4194304 - }, - "totalChunks": { - "description": "总分片数", - "type": "integer" - }, - "bizType": { - "description": "业务类型,例如avatar、cover、feed_image", - "type": "string" - }, - "usageScene": { - "description": "文件使用场景,便于后续引用统计和清理", - "type": "string" - } - } - }, - "ResumableCompleteBody": { - "type": "object", - "required": [ - "uploadId", - "fileMd5", - "fileSize" - ], - "properties": { - "uploadId": { - "description": "分片上传任务ID", - "type": "string" - }, - "fileMd5": { - "description": "完整文件MD5,用于秒传和完整性校验", - "type": "string" - }, - "fileSize": { - "description": "文件大小,单位字节", - "type": "integer", - "format": "int64" - } - } - }, - "FileReferenceBody": { - "type": "object", - "required": [ - "bizType", - "bizTable", - "bizId", - "bizField" - ], - "properties": { - "bizType": { - "description": "业务类型,例如avatar、cover、feed_image", - "type": "string", - "example": "family_feed" - }, - "bizName": { - "description": "业务名称,用于后台展示文件引用来源", - "type": "string", - "example": "家族圈动态" - }, - "bizTable": { - "description": "业务表名,用于文件引用绑定", - "type": "string", - "example": "gen_family_feed" - }, - "bizId": { - "description": "业务数据ID,用于文件引用绑定", - "type": "integer", - "format": "int64" - }, - "bizField": { - "description": "业务字段名,例如avatar_oss_id、cover_oss_id", - "type": "string", - "example": "media_ids" - }, - "ossId": { - "description": "OSS文件ID,表单内部使用,用户侧应通过上传组件获取", - "type": "integer", - "format": "int64" - }, - "ossIds": { - "type": "string", - "example": "2060001,2060002" - }, - "usageScene": { - "description": "文件使用场景,便于后续引用统计和清理", - "type": "string" - }, - "usageName": { - "type": "string" - } - } - }, - "FamilyFeedBody": { - "type": "object", - "required": [ - "feedContent" - ], - "properties": { - "feedType": { - "description": "动态类型,未传时默认为 text", - "type": "string", - "example": "text" - }, - "feedContent": { - "description": "动态内容,不能为空", - "type": "string", - "example": "今天上传一张老照片。" - }, - "mediaOssIds": { - "description": "媒体文件 OSS ID 列表,多个 ID 使用英文逗号分隔", - "type": "string", - "example": "2060000000000000001,2060000000000000002" - }, - "sortOrder": { - "description": "排序值,未传时默认为 0", - "type": "integer", - "format": "int64", - "example": 0 - }, - "status": { - "description": "动态状态,未传时默认为正常状态", - "type": "string", - "example": "0" - } - } - }, - "FamilyFeedCommentBody": { - "type": "object", - "required": [ - "content" - ], - "properties": { - "parentCommentId": { - "type": "integer", - "format": "int64", - "nullable": true - }, - "replyUserId": { - "type": "integer", - "format": "int64", - "nullable": true - }, - "content": { - "type": "string" - } - } - }, - "VerificationChallengeBody": { - "type": "object", - "required": [ - "sceneCode" - ], - "properties": { - "tenantId": { - "type": "string", - "description": "租户 ID" - }, - "clientId": { - "type": "string", - "description": "客户端 ID" - }, - "sceneCode": { - "type": "string", - "description": "验证场景编码,如 ADMIN_LOGIN/APP_LOGIN/APP_REGISTER" - }, - "subject": { - "type": "string", - "description": "验证主体,如手机号/用户名/IP" - } - }, - "example": { - "tenantId": "000000", - "clientId": "ced7e5f0498645c6ec642dcf450b036f", - "sceneCode": "WEB_H5_LOGIN", - "subject": "13800000000" - } - }, - "VerificationCheckBody": { - "type": "object", - "required": [ - "sceneCode" - ], - "properties": { - "tenantId": { - "description": "租户ID,用于区分不同租户的数据和验证策略", - "type": "string" - }, - "clientId": { - "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", - "type": "string" - }, - "sceneCode": { - "description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER", - "type": "string" - }, - "subject": { - "description": "验证主体,通常为手机号、用户ID或登录账号", - "type": "string" - }, - "challengeId": { - "description": "验证挑战ID,由验证挑战接口返回", - "type": "string" - }, - "providerCode": { - "type": "string", - "description": "验证服务,tianai 或 ruoyi_image" - }, - "captchaType": { - "type": "string", - "description": "SLIDER/ROTATE/CONCAT/WORD_IMAGE_CLICK/math/char" - }, - "payload": { - "description": "验证结果载荷。天爱行为验证码提交 payload.track;系统图形验证码提交 payload.uuid 和 payload.code", - "oneOf": [ - { - "$ref": "#/components/schemas/TianaiVerificationPayload" - }, - { - "$ref": "#/components/schemas/SystemImageVerificationPayload" - } - ] - } - } - }, - "TianaiVerificationPayload": { - "type": "object", - "required": [ - "track" - ], - "properties": { - "track": { - "$ref": "#/components/schemas/TianaiCaptchaTrack" - } - } - }, - "TianaiCaptchaTrack": { - "type": "object", - "required": [ - "bgImageWidth", - "bgImageHeight", - "startTime", - "stopTime", - "trackList" - ], - "properties": { - "bgImageWidth": { - "type": "integer", - "description": "验证码背景图片在前端实际显示的宽度,单位像素" - }, - "bgImageHeight": { - "type": "integer", - "description": "验证码背景图片在前端实际显示的高度,单位像素" - }, - "templateImageWidth": { - "type": "integer", - "description": "滑块或旋转模板图片在前端实际显示的宽度,单位像素" - }, - "templateImageHeight": { - "type": "integer", - "description": "滑块或旋转模板图片在前端实际显示的高度,单位像素" - }, - "startTime": { - "type": "integer", - "format": "int64", - "description": "用户开始操作的时间戳,单位毫秒" - }, - "stopTime": { - "type": "integer", - "format": "int64", - "description": "用户结束操作的时间戳,单位毫秒" - }, - "left": { - "type": "integer", - "description": "滑块最终水平偏移量,单位像素;由天爱前端控件生成" - }, - "top": { - "type": "integer", - "description": "点选或模板最终垂直偏移量,单位像素;由天爱前端控件生成" - }, - "trackList": { - "type": "array", - "minItems": 1, - "description": "用户操作轨迹,不能为空,必须直接使用天爱前端控件产生的数据", - "items": { - "$ref": "#/components/schemas/TianaiCaptchaTrackPoint" - } - }, - "data": { - "type": "object", - "additionalProperties": true, - "description": "不同验证码类型附带的扩展数据,由天爱前端控件原样提交", - "properties": {}, - "nullable": true - } - } - }, - "TianaiCaptchaTrackPoint": { - "type": "object", - "required": [ - "x", - "y", - "t", - "type" - ], - "properties": { - "x": { - "type": "number", - "format": "float", - "description": "当前轨迹点的水平坐标" - }, - "y": { - "type": "number", - "format": "float", - "description": "当前轨迹点的垂直坐标" - }, - "t": { - "type": "number", - "format": "float", - "description": "当前轨迹点相对操作开始时的时间,单位毫秒" - }, - "type": { - "type": "string", - "description": "轨迹事件类型,例如 down、move、up" - } - } - }, - "SystemImageVerificationPayload": { - "type": "object", - "required": [ - "uuid", - "code" - ], - "properties": { - "uuid": { - "type": "string", - "description": "系统图形验证码接口返回的唯一标识" - }, - "code": { - "type": "string", - "description": "用户填写的图形验证码答案" - } - } - }, - "RVoid": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "example": 200 - }, - "msg": { - "type": "string", - "example": "操作成功" - }, - "data": { - "type": "null" - } - } - }, - "RObject": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "example": 200 - }, - "msg": { - "type": "string", - "example": "操作成功" - }, - "data": { - "type": "object", - "additionalProperties": true, - "properties": {} - } - } - }, - "RList": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "example": 200 - }, - "msg": { - "type": "string", - "example": "操作成功" - }, - "data": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true, - "properties": {} - } - } - } - }, - "PageResult": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "example": 200 - }, - "msg": { - "type": "string", - "example": "操作成功" - }, - "rows": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true, - "properties": {} - } - }, - "total": { - "type": "integer", - "example": 0 - } - } - }, - "RLogin": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "example": 200 - }, - "msg": { - "type": "string", - "example": "操作成功" - }, - "data": { - "$ref": "#/components/schemas/LoginVo" - } - } - }, - "LoginVo": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "accessToken": { - "type": "string" - }, - "tokenValue": { - "type": "string" - }, - "userId": { - "type": "integer", - "format": "int64" - }, - "tenantId": { - "type": "string" - }, - "clientId": { - "type": "string" - }, - "clientKey": { - "type": "string" - } - } - }, - "RFileUpload": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "example": 200 - }, - "msg": { - "type": "string", - "example": "操作成功" - }, - "data": { - "$ref": "#/components/schemas/FileUploadVo" - } - } - }, - "FileUploadVo": { - "type": "object", - "properties": { - "ossId": { - "type": "integer", - "format": "int64" - }, - "url": { - "type": "string" - }, - "thumbnailUrl": { - "type": "string", - "nullable": true - }, - "fileName": { - "type": "string" - }, - "originalName": { - "type": "string" - } - } - }, - "RVoid1": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "data": { - "description": "响应数据主体", - "type": "null" - } - } - }, - "RObject2": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "data": { - "description": "响应数据主体", - "type": "object", - "additionalProperties": true, - "properties": {} - } - } - }, - "RList3": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "data": { - "description": "响应数据主体", - "type": "array", - "items": { - "type": "object", - "additionalProperties": true, - "properties": {} - } - } - } - }, - "PageResult4": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "rows": { - "description": "分页数据列表", - "type": "array", - "items": { - "type": "object", - "additionalProperties": true, - "properties": {} - } - }, - "total": { - "type": "integer", - "example": 0 - } - } - }, - "RLogin5": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "data": { - "description": "响应数据主体", - "$ref": "#/components/schemas/LoginVo6" - } - } - }, - "LoginVo6": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "accessToken": { - "type": "string" - }, - "tokenValue": { - "type": "string" - }, - "userId": { - "type": "integer", - "format": "int64" - }, - "tenantId": { - "description": "租户ID,用于区分不同租户的数据和验证策略", - "type": "string" - }, - "clientId": { - "description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端", - "type": "string" - }, - "clientKey": { - "type": "string" - } - } - }, - "RFileUpload7": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "data": { - "description": "响应数据主体", - "$ref": "#/components/schemas/FileUploadVo8" - } - } - }, - "FileUploadVo8": { - "type": "object", - "properties": { - "ossId": { - "description": "OSS文件ID,表单内部使用,用户侧应通过上传组件获取", - "type": "integer", - "format": "int64" - }, - "url": { - "type": "string" - }, - "thumbnailUrl": { - "type": "string", - "nullable": true - }, - "fileName": { - "description": "原始文件名", - "type": "string" - }, - "originalName": { - "type": "string" - } - } - }, - "RVerificationRequire": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "data": { - "description": "响应数据主体", - "$ref": "#/components/schemas/VerificationRequireVo" - } - } - }, - "VerificationRequireVo": { - "type": "object", - "properties": { - "required": { - "description": "当前场景是否需要验证", - "type": "boolean" - }, - "providerCode": { - "description": "第三方服务商编码", - "type": "string" - }, - "captchaType": { - "description": "验证码类型,例如SLIDER、ROTATE、CONCAT、WORD_IMAGE_CLICK", - "type": "string" - }, - "sceneCode": { - "description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER", - "type": "string" - }, - "ttlSeconds": { - "description": "验证或票据有效秒数", - "type": "integer" - } - }, - "example": { - "required": true, - "providerCode": "tianai", - "captchaType": "SLIDER", - "sceneCode": "APP_LOGIN", - "ttlSeconds": 300 - } - }, - "RVerificationChallenge": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "data": { - "description": "响应数据主体", - "$ref": "#/components/schemas/VerificationChallengeVo" - } - } - }, - "VerificationChallengeVo": { - "type": "object", - "properties": { - "required": { - "description": "当前场景是否需要验证", - "type": "boolean" - }, - "providerCode": { - "description": "第三方服务商编码", - "type": "string" - }, - "captchaType": { - "description": "验证码类型,例如SLIDER、ROTATE、CONCAT、WORD_IMAGE_CLICK", - "type": "string" - }, - "challengeId": { - "description": "验证挑战ID,由验证挑战接口返回", - "type": "string" - }, - "uuid": { - "type": "string", - "description": "系统图形验证码 uuid" - }, - "img": { - "type": "string", - "description": "系统图形验证码 base64 图片" - }, - "payload": { - "type": "object", - "additionalProperties": true, - "description": "天爱验证码数据,包括背景图、模板图、尺寸等", - "properties": {} - }, - "expireSeconds": { - "description": "验证挑战过期秒数", - "type": "integer" - } - }, - "example": { - "required": true, - "providerCode": "tianai", - "captchaType": "SLIDER", - "challengeId": "CAPTCHA_CHALLENGE_ID", - "payload": { - "backgroundImage": "data:image/png;base64,...", - "templateImage": "data:image/png;base64,...", - "backgroundImageWidth": 340, - "backgroundImageHeight": 180 - }, - "expireSeconds": 300 - } - }, - "RVerificationCheck": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "data": { - "description": "响应数据主体", - "$ref": "#/components/schemas/VerificationCheckVo" - } - } - }, - "VerificationCheckVo": { - "type": "object", - "properties": { - "passed": { - "description": "验证是否通过", - "type": "boolean" - }, - "validToken": { - "type": "string", - "description": "验证通过后交给业务接口的票据" - }, - "expireSeconds": { - "description": "验证挑战过期秒数", - "type": "integer" - }, - "message": { - "description": "返回消息", - "type": "string" - } - }, - "example": { - "passed": true, - "validToken": "captcha-ticket", - "expireSeconds": 300, - "message": "验证通过" - } - }, - "RLegacyCaptcha": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "data": { - "description": "响应数据主体", - "$ref": "#/components/schemas/LegacyCaptchaVo" - } - } - }, - "LegacyCaptchaVo": { - "type": "object", - "properties": { - "captchaEnabled": { - "type": "boolean" - }, - "uuid": { - "description": "系统图形验证码UUID", - "type": "string" - }, - "img": { - "type": "string", - "description": "base64 图形验证码" - } - }, - "example": { - "captchaEnabled": true, - "uuid": "captcha-uuid", - "img": "data:image/png;base64,..." - } - }, - "RVerificationRequire9": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "data": { - "description": "响应数据主体", - "$ref": "#/components/schemas/VerificationRequireVo10" - } - } - }, - "VerificationRequireVo10": { - "type": "object", - "properties": { - "required": { - "description": "当前场景是否需要验证", - "type": "boolean" - }, - "providerCode": { - "description": "第三方服务商编码", - "type": "string" - }, - "captchaType": { - "description": "验证码类型,例如SLIDER、ROTATE、CONCAT、WORD_IMAGE_CLICK", - "type": "string" - }, - "sceneCode": { - "description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER", - "type": "string" - }, - "ttlSeconds": { - "description": "验证或票据有效秒数", - "type": "integer" - } - }, - "example": { - "required": true, - "providerCode": "tianai", - "captchaType": "SLIDER", - "sceneCode": "WEB_H5_LOGIN", - "ttlSeconds": 300 - } - }, - "RVerificationChallenge11": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "data": { - "description": "响应数据主体", - "$ref": "#/components/schemas/VerificationChallengeVo12" - } - } - }, - "VerificationChallengeVo12": { - "type": "object", - "properties": { - "required": { - "description": "当前场景是否需要验证", - "type": "boolean" - }, - "providerCode": { - "description": "第三方服务商编码", - "type": "string" - }, - "captchaType": { - "description": "验证码类型,例如SLIDER、ROTATE、CONCAT、WORD_IMAGE_CLICK", - "type": "string" - }, - "challengeId": { - "description": "验证挑战ID,由验证挑战接口返回", - "type": "string" - }, - "uuid": { - "type": "string", - "description": "系统图形验证码 uuid" - }, - "img": { - "type": "string", - "description": "系统图形验证码 base64 图片" - }, - "payload": { - "type": "object", - "additionalProperties": true, - "description": "天爱验证码数据,包括背景图、模板图、尺寸等", - "properties": {} - }, - "expireSeconds": { - "description": "验证挑战过期秒数", - "type": "integer" - } - }, - "example": { - "required": true, - "providerCode": "tianai", - "captchaType": "SLIDER", - "challengeId": "CAPTCHA_CHALLENGE_ID", - "payload": { - "backgroundImage": "data:image/png;base64,...", - "templateImage": "data:image/png;base64,...", - "backgroundImageWidth": 340, - "backgroundImageHeight": 180 - }, - "expireSeconds": 300 - } - }, - "RVerificationCheck13": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "data": { - "description": "响应数据主体", - "$ref": "#/components/schemas/VerificationCheckVo14" - } - } - }, - "VerificationCheckVo14": { - "type": "object", - "properties": { - "passed": { - "description": "验证是否通过", - "type": "boolean" - }, - "validToken": { - "type": "string", - "description": "验证通过后交给业务接口的票据" - }, - "expireSeconds": { - "description": "验证挑战过期秒数", - "type": "integer" - }, - "message": { - "description": "返回消息", - "type": "string" - } - }, - "example": { - "passed": true, - "validToken": "captcha-ticket", - "expireSeconds": 300, - "message": "验证通过" - } - }, - "RLegacyCaptcha15": { - "type": "object", - "properties": { - "code": { - "description": "系统图形验证码或响应状态码", - "type": "integer", - "example": 200 - }, - "msg": { - "description": "响应消息", - "type": "string", - "example": "操作成功" - }, - "data": { - "description": "响应数据主体", - "$ref": "#/components/schemas/LegacyCaptchaVo16" - } - } - }, - "LegacyCaptchaVo16": { - "type": "object", - "properties": { - "captchaEnabled": { - "type": "boolean" - }, - "uuid": { - "description": "系统图形验证码UUID", - "type": "string" - }, - "img": { - "type": "string", - "description": "base64 图形验证码" - } - }, - "example": { - "captchaEnabled": true, - "uuid": "captcha-uuid", - "img": "data:image/png;base64,..." - } - } - }, - "responses": { - "VoidResult": { - "description": "通用成功响应", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RVoid1" - } - } - } - }, - "ObjectResult": { - "description": "通用对象响应", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RObject2" - } - } - } - }, - "ListResult": { - "description": "通用列表响应", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RList3" - } - } - } - }, - "PageResult": { - "description": "通用分页响应", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageResult4" - } - } - } - }, - "LoginResult": { - "description": "登录结果", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RLogin5" - } - } - } - }, - "FileUploadResult": { - "description": "文件上传结果", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RFileUpload7" - } - } - } - }, - "VerificationRequireResult": { - "description": "验证需求查询结果", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RVerificationRequire9" - } - } - } - }, - "VerificationChallengeResult": { - "description": "验证挑战生成结果", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RVerificationChallenge11" - } - } - } - }, - "VerificationCheckResult": { - "description": "验证校验结果", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RVerificationCheck13" - } - } - } - }, - "LegacyCaptchaResult": { - "description": "兼容旧图形验证码结果", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RLegacyCaptcha15" - } - } - } - } - }, - "securitySchemes": { - "SaToken1": { - "type": "apiKey", - "in": "header", - "name": "Authorization", - "description": "登录后返回的 token。若本地配置使用 sa-token 名称,请按项目实际 token-name 调整。" - } - } - }, - "servers": [], - "security": [ - { - "SaToken1": [] - } - ] -} \ No newline at end of file diff --git a/config.js b/config.js index 9d68be2..61ad97e 100644 --- a/config.js +++ b/config.js @@ -12,10 +12,10 @@ // 这里只维护运行环境和后端基础地址,具体接口路径统一放在 ApiClient 中。 var ENVIRONMENTS = { development: { - apiBaseUrl: 'http://182.61.18.23:8080' + apiBaseUrl: 'https://backend-api.ddxcjp.cn/' }, production: { - apiBaseUrl: 'http://182.61.18.23:8080' + apiBaseUrl: 'https://backend-api.ddxcjp.cn/' } }; diff --git a/ticket-detail.html b/ticket-detail.html deleted file mode 100644 index 63afe04..0000000 --- a/ticket-detail.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - 工单详情 - 代代相传 - - - - - -
-
-
-
-
Ticket Detail
-

工单详情

-

问题记录、处理状态和客服回复会在工单详情接口交付后显示。

-
-
-
-
-
-
-
-

暂未开放详情查询

-

当前不能读取工单编号或展示处理内容。

- -
-
-
-
- - - - -