Skip to content

Commit

Permalink
Merge branch 'dev' of https://github.com/sparcs-kaist/taxi-back into #…
Browse files Browse the repository at this point in the history
…541-24-chuseok-event-ban-middleware
  • Loading branch information
TaehyeonPark committed Sep 24, 2024
2 parents 793157c + ce4b85c commit cc87bc3
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 38 deletions.
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 @@ -93,7 +93,7 @@ const completeQuest = async (sid, timestamp, url, userId, 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 @@ -340,7 +340,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

0 comments on commit cc87bc3

Please sign in to comment.