캠페인 실시간 랭킹 후원자 이름 · 위치 핀 도로명 주소
This commit is contained in:
@@ -1150,7 +1150,7 @@ export async function fundCampaign(input: {
|
||||
// 귀속 팬덤은 바뀌지 않는 값이라 트랜잭션 밖에서 한 번 읽는다. 상태 · 목표 · 모금액은
|
||||
// 아래 precheck 가 **차감과 같은 트랜잭션에서** 다시 읽는다 — 밖에서 판정하면 동시
|
||||
// 후원 둘이 같은 잔여분을 보고 함께 통과해 목표를 넘긴다(B-34).
|
||||
const campaign = await campaignRef.get();
|
||||
const [campaign, donor] = await Promise.all([campaignRef.get(), db.doc(`users/${uid}`).get()]);
|
||||
if (!campaign.exists) fail(ERR.campaignNotApproved, '캠페인을 찾을 수 없습니다.');
|
||||
const fandomId = campaign.get('fandomId');
|
||||
let goal = 0;
|
||||
@@ -1189,6 +1189,8 @@ export async function fundCampaign(input: {
|
||||
uid,
|
||||
// 「기여중」 목록의 collectionGroup 인덱스 키(firestore.indexes.json)와 같은 이름.
|
||||
donorUid: uid,
|
||||
// 실시간 랭킹의 이름 — 공개 닉네임(M-7). 다른 후원자의 사용자 문서는 규칙상 읽을 수 없다.
|
||||
donorName: publicNameOf(donor),
|
||||
amount,
|
||||
popType,
|
||||
txId: txIdOf(`fund:${uid}:${campaignId}:${clientSeq}`),
|
||||
|
||||
Reference in New Issue
Block a user