Files
danyang-match/h5-demo/src/api/services/activity.ts
T
WorkBuddy 69ebf33e18
CI/CD Pipeline / Backend Build & Test (push) Canceled after 0s
CI/CD Pipeline / Admin Web Build (push) Canceled after 0s
CI/CD Pipeline / Mini Program Compile Check (push) Canceled after 0s
CI/CD Pipeline / Migration Validation (push) Canceled after 0s
CI/CD Pipeline / Test Shell Guard (Phase 23 Gate) (push) Canceled after 0s
CI/CD Pipeline / UI Contracts (source-structure gates) (push) Canceled after 0s
CI/CD Pipeline / E2E (live stack) (push) Canceled after 0s
release: freeze demo v1.1.0 2026-10-19
2026-10-19 20:36:22 +08:00

75 lines
3.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { get, post, del } from '../client'
import { idempotencyKey } from '../idempotency'
/** 活动列表/详情/报名/我的活动/反馈/签到 */
export const activityService = {
getActivities(params: Record<string, any> = {}) {
return get('/activities', params)
},
getActivityDetail(activityId: string) {
return get(`/activities/${encodeURIComponent(activityId)}`)
},
register(activityId: string, payload: Record<string, any> = {}) {
return post(`/activities/${encodeURIComponent(activityId)}/register`, payload, {
idempotencyKey: idempotencyKey('activity-register', activityId),
})
},
cancelRegistration(activityId: string) {
return del(`/activities/${encodeURIComponent(activityId)}/register`)
},
getMyActivities(params: Record<string, any> = {}) {
// 后端实际路由为 GET /activities/my(原 /my-activities 无对应 handler → 404)
return get('/activities/my', params)
},
submitFeedback(activityId: string, payload: Record<string, any>) {
return post(`/activities/${encodeURIComponent(activityId)}/feedback`, payload, {
idempotencyKey: idempotencyKey('activity-feedback', activityId),
})
},
generateCheckinToken(activityId: string) {
return post(`/activities/${encodeURIComponent(activityId)}/checkin-token`, {}, {
idempotencyKey: idempotencyKey('checkin-token', activityId),
})
},
getMutualMatches(activityId: string) {
return get(`/activities/${encodeURIComponent(activityId)}/interests/mutual`)
},
checkMutualInterest(activityId: string, partnerId: string) {
return get(`/activities/${encodeURIComponent(activityId)}/interests/mutual/${encodeURIComponent(partnerId)}`)
},
}
/**
* 活动互选二阶段同意(INV-014/015):
* 互选结果 → 双方各自 confirm → 才创建 Match/沟通入口。
* 单向意向保密:结果接口只返回双相交集。
*/
export const activityMutualService = {
getResults(activityId: string) {
return get(`/activities/${encodeURIComponent(activityId)}/mutual/results`)
},
createConsent(activityId: string, partnerId: string) {
return post(`/activities/${encodeURIComponent(activityId)}/mutual/consent`, { partnerId }, {
idempotencyKey: idempotencyKey('mutual-consent', `${activityId}:${partnerId}`),
})
},
confirmConnection(activityId: string, partnerId: string) {
return post(`/activities/${encodeURIComponent(activityId)}/mutual/confirm`, { partnerId }, {
idempotencyKey: idempotencyKey('mutual-confirm', `${activityId}:${partnerId}`),
})
},
declineConnection(activityId: string, partnerId: string) {
return post(`/activities/${encodeURIComponent(activityId)}/mutual/decline`, { partnerId }, {
idempotencyKey: idempotencyKey('mutual-decline', `${activityId}:${partnerId}`),
})
},
getMyConsentStatus(activityId: string, partnerId: string) {
return get(`/activities/${encodeURIComponent(activityId)}/mutual/status/${encodeURIComponent(partnerId)}`)
},
confirmInterest(activityId: string, partnerId: string) {
return post(`/activities/${encodeURIComponent(activityId)}/interests/confirm`, { partnerId }, {
idempotencyKey: idempotencyKey('interest-confirm', `${activityId}:${partnerId}`),
})
},
}