Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Main branch update from Dev branch #546

Merged
merged 6 commits into from
Sep 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 25 additions & 21 deletions src/lottery/modules/contracts.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,23 @@ const quests = buildQuests({
description:
"이벤트 참여만 해도 송편코인을 얻을 수 있다고?? 이벤트 참여에 동의하고 송편코인을 받아 보세요.",
imageUrl:
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_firstLogin.png",
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_firstLogin.png",
reward: 200,
},
firstRoomCreation: {
name: "첫 방 개설",
description:
"원하는 택시팟을 찾을 수 없다면? 원하는 조건으로 <b>방 개설 페이지</b>에서 방을 직접 개설해보세요.",
"원하는 택시팟을 찾을 수 없다면? 원하는 조건으로 <b>방 개설 페이지</b>에서 방을 직접 개설해 보세요.",
imageUrl:
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_firstRoomCreation.png",
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_firstRoomCreation.png",
reward: 500,
},
roomSharing: {
name: "이 택시팟은 진짜 유명한 택시팟임",
description:
"방을 공유해 친구들을 택시팟에 초대해 보세요. 채팅창 상단의 햄버거(☰) 버튼을 누르면 <b>공유하기 버튼</b>을 찾을 수 있어요.",
imageUrl:
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_roomSharing.png",
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_roomSharing.png",
reward: 500,
isApiRequired: true,
},
Expand All @@ -40,64 +40,68 @@ const quests = buildQuests({
description:
"2명 이상과 함께 택시를 타고 택시비를 결제한 후 정산을 요청해 보세요. 정산하기 버튼은 채팅 페이지 좌측 하단의 <b>+ 버튼</b>을 눌러 찾을 수 있어요.",
imageUrl:
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_paying.png",
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_fareSettlement.png",
reward: 2000,
maxCount: 0,
},
farePayment: {
name: "송금 완료면 I am 신뢰에요",
description:
"2명 이상과 함께 택시를 타고 택시비를 결제한 분께 송금해주세요. 송금하기 버튼은 채팅 페이지 좌측 하단의 <b>+버튼</b>을 눌러 확인할 수 있어요.",
"2명 이상과 함께 택시를 타고 택시비를 결제한 분께 송금해 주세요. 송금하기 버튼은 채팅 페이지 좌측 하단의 <b>+ 버튼</b>을 눌러 찾을 수 있어요.",
imageUrl:
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_sending.png",
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_farePayment.png",
reward: 2000,
maxCount: 0,
},
nicknameChanging: {
name: "닉네임 폼 미쳤다",
description:
"닉네임을 변경하여 자신을 표현하세요. <b>마이페이지</b>의 <b>수정하기</b> 버튼을 눌러 닉네임을 수정할 수 있어요.",
"닉네임을 변경하여 자신을 표현하세요. <b>마이 페이지</b>의 <b>수정하기</b> 버튼을 눌러 닉네임을 수정할 수 있어요.",
imageUrl:
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_nicknameChanging.png",
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_nicknameChanging.png",
reward: 500,
},
accountChanging: {
name: "계좌 등록을 해야 능률이 올라갑니다",
description:
"정산하기 기능을 더욱 빠르고 이용할 수 있다고? 계좌번호를 등록하면 정산하기를 할 때 계좌가 자동으로 입력돼요. <b>마이페이지</b>의 <b>수정하기</b> 버튼을 눌러 계좌번호를 등록 또는 수정할 수 있어요.",
"정산하기 기능을 더욱 빠르게 이용할 수 있다고? 계좌 번호를 등록하면 정산하기를 할 때 계좌가 자동으로 입력돼요. <b>마이 페이지</b>의 <b>수정하기</b> 버튼을 눌러 계좌 번호를 등록 또는 수정할 수 있어요.",
imageUrl:
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_accountChanging.png",
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_accountChanging.png",
reward: 500,
},
adPushAgreement: {
name: "Taxi의 소울메이트",
description:
"Taxi 서비스를 잊지 않도록 가끔 찾아갈게요! 광고성 푸시 알림 수신 동의를 해주시면 방이 많이 모이는 시즌, 주변에 택시앱 사용자가 있을 때 알려드릴 수 있어요.",
"Taxi 서비스를 잊지 않도록 가끔 찾아갈게요! 광고성 푸시 알림 수신 동의를 해주시면 방이 많이 모이는 시즌, 주변에 Taxi 앱 사용자가 있을 때 알려드릴 수 있어요.",
imageUrl:
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_adPushAgreement.png",
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_adPushAgreement.png",
reward: 500,
},
eventSharing: {
name: "Taxi를 아십니까",
description: "내가 초대한 사람이 이벤트에 참여하면 송편코인을 드려요.",
description:
"내가 초대한 사람이 이벤트에 참여하면 송편코인을 드려요. 다른 사람의 초대를 받아 이벤트에 참여한 경우에도 이 퀘스트가 달성돼요.",
imageUrl:
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_eventSharing.png",
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_eventSharing.png",
reward: 700,
maxCount: 0,
},
dailyAttendance: {
name: "하루 한 번 Taxi!",
name: "매일매일 출석 췤!",
description:
"매일 Taxi에 접속하여 출석 체크를 하면 송편코인을 드려요! 하루에 한 번, 택시팟도 둘러보고 송편코인도 받아 가세요. 송편코인을 얻으려면 출석 체크 페이지에서 <b>출석 버튼</b>을 눌러야 해요.",
imageUrl: "",
"매일 Taxi에 접속하면 하루 한 번 송편코인을 드려요! 하루에 한 번, 택시팟도 둘러보고 송편코인도 받아 가세요.",
imageUrl:
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_dailyAttendance.png",
reward: 700,
maxCount: 17,
isApiRequired: true,
},
itemPurchase: {
name: "itemPurchase",
description: "itemPurchase",
imageUrl: "",
name: "Taxi에서 산 응모권",
description:
"응모권 교환소에서 아무 경품 응모권이나 구매해 보세요. Taxi에서 판매하는 응모권은 모두 정품이니 안심해도 좋아요.",
imageUrl:
"https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_itemPurchase.png",
reward: 500,
},
});
Expand Down
2 changes: 1 addition & 1 deletion src/lottery/modules/quests.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ const completeQuest = async (userId, timestamp, quest) => {
// 3단계: 유저의 퀘스트 완료 횟수를 확인합니다.
// maxCount가 0인 경우, 무제한으로 퀘스트를 완료할 수 있습니다.
const questCount = eventStatus.completedQuests.filter(
(completedQuestId) => completedQuestId === quest.id
({ questId }) => questId === quest.id
).length;
if (quest.maxCount > 0 && questCount >= quest.maxCount) {
logger.info(
Expand Down
4 changes: 2 additions & 2 deletions src/lottery/routes/docs/globalState.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,9 @@ globalStateDocs[`${apiPrefix}/`] = {
"유저가 완료한 퀘스트의 배열. 여러 번 완료한 퀘스트의 경우 배열 내에 같은 퀘스트가 여러 번 포함됩니다.",
items: {
type: "object",
required: ["id", "completedAt"],
required: ["questId", "completedAt"],
properties: {
id: {
questId: {
type: "string",
description: "퀘스트의 Id",
example: "QUEST ID",
Expand Down
24 changes: 13 additions & 11 deletions src/lottery/routes/docs/items.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ itemsDocs[`${apiPrefix}/`] = {
"price",
"isDisabled",
"itemType",
"realStock",
],
properties: {
_id: {
Expand All @@ -50,11 +51,6 @@ itemsDocs[`${apiPrefix}/`] = {
description: "상품의 썸네일 이미지 URL",
example: "THUMBNAIL URL",
},
instagramStoryStickerImageUrl: {
type: "string",
description: "인스타그램 스토리 스티커 이미지 URL",
example: "STICKER URL",
},
price: {
type: "number",
description: "상품의 가격. 0 이상의 정수입니다.",
Expand All @@ -71,6 +67,11 @@ itemsDocs[`${apiPrefix}/`] = {
"상품의 유형. 0: 일반 상품, 1: 일반 티켓, 2: 고급 티켓, 3: 랜덤박스입니다.",
example: 0,
},
realStock: {
type: "number",
description: "상품의 실제 재고",
example: 30,
},
},
},
},
Expand All @@ -92,7 +93,7 @@ itemsDocs[`${apiPrefix}/{itemId}`] = {
in: "path",
name: "itemId",
required: true,
description: "상품 정보를 조회할 ObjectId",
description: "정보를 조회할 상품의 ObjectId",
example: "ITEM ID",
},
],
Expand All @@ -114,6 +115,7 @@ itemsDocs[`${apiPrefix}/{itemId}`] = {
"price",
"isDisabled",
"itemType",
"realStock",
],
description: "상품의 정보",
properties: {
Expand All @@ -137,11 +139,6 @@ itemsDocs[`${apiPrefix}/{itemId}`] = {
description: "상품의 썸네일 이미지 URL",
example: "THUMBNAIL URL",
},
instagramStoryStickerImageUrl: {
type: "string",
description: "인스타그램 스토리 스티커 이미지 URL",
example: "STICKER URL",
},
price: {
type: "number",
description: "상품의 가격. 0 이상의 정수입니다.",
Expand All @@ -158,6 +155,11 @@ itemsDocs[`${apiPrefix}/{itemId}`] = {
"상품의 유형. 0: 일반 상품, 1: 일반 티켓, 2: 고급 티켓, 3: 랜덤박스입니다.",
example: 0,
},
realStock: {
type: "number",
description: "상품의 실제 재고",
example: 30,
},
},
},
},
Expand Down
6 changes: 3 additions & 3 deletions src/lottery/services/items.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const getItemsHandler = async (req, res) => {
const items = await itemModel
.find(
{},
"_id name description imageUrl instagramStoryStickerImageUrl price isDisabled itemType"
"_id name description imageUrl price isDisabled itemType realStock"
)
.lean();
res.json({ items });
Expand All @@ -31,7 +31,7 @@ const getItemHandler = async (req, res) => {
const item = await itemModel
.findById(
itemId,
"_id name description imageUrl instagramStoryStickerImageUrl price isDisabled itemType"
"_id name description imageUrl price isDisabled itemType realStock"
)
.lean();
if (!item) return res.status(400).json({ error: "Items/ : invalid item" });
Expand Down Expand Up @@ -337,7 +337,7 @@ const purchaseItemHandler = async (req, res) => {
} else {
const transaction = new transactionModel({
type: "use",
amount: creditDelta,
amount: -creditDelta,
userId: req.userOid,
itemId: item._id,
itemAmount: amount,
Expand Down
Loading