Files
jiapuapp/services/api/life-record-service.js
T
2026-09-13 17:45:52 +08:00

312 lines
15 KiB
JavaScript

import { normalizeGenealogyPathId } from './genealogy-contract.js'
import {
normalizeAppGrowthRecord,
normalizeAppGrowthRecords,
normalizeAppLifeEvent,
normalizeAppLifeEvents,
normalizeAppMemo,
normalizeAppMemos,
normalizeAppMeritRecord,
normalizeAppMeritRecords,
normalizeAppRelativeRecord,
normalizeAppRelativeRecords,
normalizeGrowthRecordCreatePayload,
normalizeLifeEventPayload,
normalizeMemoCreatePayload,
normalizeMeritRecordCreatePayload,
normalizeRelativeRecordCreatePayload
} from './life-record-contract.js'
import { normalizeResourcePathId } from './request-normalizers.js'
import {
contentAccessHeader,
normalizeContentAccessGrant,
normalizeContentPasswordPayload
} from './protected-content-contract.js'
import { requestStrict } from './request-client.js'
const writeLifeRecord = (url, method, data, requestOptions) => {
return requestStrict({ url, method, data }, {
requestController: requestOptions.requestController ?? null
})
}
const deleteLifeRecord = async (url, requestOptions) => {
await requestStrict({ url, method: 'DELETE' }, {
requireData: false,
requestController: requestOptions.requestController ?? null
})
return null
}
export const lifeRecordApi = {
async createRelativeRecord(genealogyId, payload, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
return requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/relative-records`,
method: 'POST',
data: normalizeRelativeRecordCreatePayload(payload)
}, { requestController: requestOptions.requestController ?? null })
},
async updateRelativeRecord(genealogyId, relativeId, payload, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedRelativeId = normalizeResourcePathId(relativeId, '亲友记录标识')
const relativeRecord = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/relative-records/${normalizedRelativeId}`,
method: 'PUT',
data: normalizeRelativeRecordCreatePayload(payload)
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppRelativeRecord(relativeRecord, normalizedGenealogyId, normalizedRelativeId)
},
async deleteRelativeRecord(genealogyId, relativeId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedRelativeId = normalizeResourcePathId(relativeId, '亲友记录标识')
return deleteLifeRecord(
`/genealogy/app/genealogies/${normalizedGenealogyId}/relative-records/${normalizedRelativeId}`,
requestOptions
)
},
async getRelativeRecords(genealogyId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const relativeRecords = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/relative-records`,
method: 'GET'
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppRelativeRecords(relativeRecords, normalizedGenealogyId)
},
async getRelativeRecordDetail(genealogyId, relativeId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedRelativeId = normalizeResourcePathId(relativeId, '亲友记录标识')
const relativeRecord = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/relative-records/${normalizedRelativeId}`,
method: 'GET'
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppRelativeRecord(relativeRecord, normalizedGenealogyId, normalizedRelativeId)
},
async createGrowthRecord(genealogyId, payload, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const growthRecord = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records`,
method: 'POST',
data: normalizeGrowthRecordCreatePayload(payload)
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppGrowthRecord(growthRecord, normalizedGenealogyId)
},
async updateGrowthRecord(genealogyId, recordId, payload, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedRecordId = normalizeResourcePathId(recordId, '成长记录标识')
const growthRecord = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records/${normalizedRecordId}`,
method: 'PUT',
data: normalizeGrowthRecordCreatePayload(payload)
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppGrowthRecord(growthRecord, normalizedGenealogyId, normalizedRecordId)
},
async deleteGrowthRecord(genealogyId, recordId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedRecordId = normalizeResourcePathId(recordId, '成长记录标识')
return deleteLifeRecord(
`/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records/${normalizedRecordId}`,
requestOptions
)
},
async getGrowthRecords(genealogyId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const growthRecords = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records`,
method: 'GET'
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppGrowthRecords(growthRecords, normalizedGenealogyId)
},
async getGrowthRecordDetail(genealogyId, recordId, accessToken = '', requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedRecordId = normalizeResourcePathId(recordId, '成长记录标识')
const growthRecord = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records/${normalizedRecordId}`,
method: 'GET',
header: contentAccessHeader(accessToken)
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppGrowthRecord(growthRecord, normalizedGenealogyId, normalizedRecordId)
},
async setGrowthRecordPassword(genealogyId, recordId, password, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedRecordId = normalizeResourcePathId(recordId, '成长记录标识')
const passwordPayload = normalizeContentPasswordPayload(password)
await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records/${normalizedRecordId}/content-protection`,
method: 'PUT',
data: passwordPayload
}, {
requireData: false,
requestController: requestOptions.requestController ?? null
})
return null
},
async unlockGrowthRecord(genealogyId, recordId, password, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedRecordId = normalizeResourcePathId(recordId, '成长记录标识')
const passwordPayload = normalizeContentPasswordPayload(password)
const accessGrant = await writeLifeRecord(
`/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records/${normalizedRecordId}/content-unlock`,
'POST',
passwordPayload,
requestOptions
)
return normalizeContentAccessGrant(accessGrant)
},
async disableGrowthRecordPassword(genealogyId, recordId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedRecordId = normalizeResourcePathId(recordId, '成长记录标识')
return deleteLifeRecord(
`/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records/${normalizedRecordId}/content-protection`,
requestOptions
)
},
async createLifeEvent(genealogyId, lineagePersonId, payload, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedLineagePersonId = normalizeResourcePathId(lineagePersonId, '人物标识')
const lifeEvent = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/lineage-persons/${normalizedLineagePersonId}/life-events`,
method: 'POST',
data: normalizeLifeEventPayload(payload)
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppLifeEvent(lifeEvent, normalizedGenealogyId, normalizedLineagePersonId)
},
async updateLifeEvent(genealogyId, lineagePersonId, eventId, payload, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedLineagePersonId = normalizeResourcePathId(lineagePersonId, '人物标识')
const normalizedEventId = normalizeResourcePathId(eventId, '人生大事标识')
const lifeEventChanges = normalizeLifeEventPayload(payload)
const lifeEvent = await writeLifeRecord(
`/genealogy/app/genealogies/${normalizedGenealogyId}/lineage-persons/${normalizedLineagePersonId}/life-events/${normalizedEventId}`,
'PUT',
lifeEventChanges,
requestOptions
)
return normalizeAppLifeEvent(lifeEvent, normalizedGenealogyId, normalizedLineagePersonId, normalizedEventId)
},
async deleteLifeEvent(genealogyId, lineagePersonId, eventId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedLineagePersonId = normalizeResourcePathId(lineagePersonId, '人物标识')
const normalizedEventId = normalizeResourcePathId(eventId, '人生大事标识')
return deleteLifeRecord(
`/genealogy/app/genealogies/${normalizedGenealogyId}/lineage-persons/${normalizedLineagePersonId}/life-events/${normalizedEventId}`,
requestOptions
)
},
async getLifeEvents(genealogyId, lineagePersonId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedLineagePersonId = normalizeResourcePathId(lineagePersonId, '人物标识')
const lifeEvents = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/lineage-persons/${normalizedLineagePersonId}/life-events`,
method: 'GET'
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppLifeEvents(lifeEvents, normalizedGenealogyId, normalizedLineagePersonId)
},
async createMemo(genealogyId, payload, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
return requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/memos`,
method: 'POST',
data: normalizeMemoCreatePayload(payload)
}, { requestController: requestOptions.requestController ?? null })
},
async updateMemo(genealogyId, memoId, payload, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedMemoId = normalizeResourcePathId(memoId, '备忘标识')
const memo = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/memos/${normalizedMemoId}`,
method: 'PUT',
data: normalizeMemoCreatePayload(payload)
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppMemo(memo, normalizedGenealogyId, normalizedMemoId)
},
async deleteMemo(genealogyId, memoId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedMemoId = normalizeResourcePathId(memoId, '备忘标识')
return deleteLifeRecord(`/genealogy/app/genealogies/${normalizedGenealogyId}/memos/${normalizedMemoId}`, requestOptions)
},
async getMemos(genealogyId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const memos = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/memos`,
method: 'GET'
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppMemos(memos, normalizedGenealogyId)
},
async getMemoDetail(genealogyId, memoId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedMemoId = normalizeResourcePathId(memoId, '备忘标识')
const memo = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/memos/${normalizedMemoId}`,
method: 'GET'
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppMemo(memo, normalizedGenealogyId, normalizedMemoId)
},
async createMeritRecord(genealogyId, payload, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
return requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/merit-records`,
method: 'POST',
data: normalizeMeritRecordCreatePayload(payload)
}, { requestController: requestOptions.requestController ?? null })
},
async updateMeritRecord(genealogyId, meritId, payload, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedMeritId = normalizeResourcePathId(meritId, '功德记录标识')
const meritRecord = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/merit-records/${normalizedMeritId}`,
method: 'PUT',
data: normalizeMeritRecordCreatePayload(payload)
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppMeritRecord(meritRecord, normalizedGenealogyId, normalizedMeritId)
},
async deleteMeritRecord(genealogyId, meritId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedMeritId = normalizeResourcePathId(meritId, '功德记录标识')
return deleteLifeRecord(`/genealogy/app/genealogies/${normalizedGenealogyId}/merit-records/${normalizedMeritId}`, requestOptions)
},
async getMeritRecords(genealogyId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const meritRecords = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/merit-records`,
method: 'GET'
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppMeritRecords(meritRecords, normalizedGenealogyId)
},
async getMeritRecordDetail(genealogyId, meritId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedMeritId = normalizeResourcePathId(meritId, '功德记录标识')
const meritRecord = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/merit-records/${normalizedMeritId}`,
method: 'GET'
}, { requestController: requestOptions.requestController ?? null })
return normalizeAppMeritRecord(meritRecord, normalizedGenealogyId, normalizedMeritId)
}
}