Skip to content

Commit 7b478ec

Browse files
committed
fix(alba_application): 대타 알바 정보 조회에 storeId 추가
1 parent 1d59a7a commit 7b478ec

2 files changed

Lines changed: 94 additions & 91 deletions

File tree

src/DTO/alba_application_dto.ts

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
1-
import { user_alba_process_status, user_alba_settlement_status } from "@prisma/client"
1+
import { user_alba_process_status, user_alba_settlement_status } from '@prisma/client';
22

3-
export interface AlbaDetailResponseDto{
4-
albaId:string,
5-
storeName: string,
6-
workDate: string,
7-
dayOfWeek:string,
8-
workTime:number,
9-
startTime:string,
10-
endTime:string,
11-
hourlyRate:number, //시급
12-
totalWage:number, //예상급여
13-
storeAddress:string,
14-
totalScore:number, //신뢰지표
15-
mainTask:string,
16-
requirement:string,
17-
notification:string
3+
export interface AlbaDetailResponseDto {
4+
albaId: string;
5+
storeId: string;
6+
storeName: string;
7+
workDate: string;
8+
dayOfWeek: string;
9+
workTime: number;
10+
startTime: string;
11+
endTime: string;
12+
hourlyRate: number; //시급
13+
totalWage: number; //예상급여
14+
storeAddress: string;
15+
totalScore: number; //신뢰지표
16+
mainTask: string;
17+
requirement: string;
18+
notification: string;
1819
}
1920

20-
export interface AlbaApplyRequestDto{
21-
albaId:string
21+
export interface AlbaApplyRequestDto {
22+
albaId: string;
23+
}
24+
export interface AlbaApplyResponseDto {
25+
albaId: string;
26+
userId: string;
27+
processStatus: user_alba_process_status;
28+
settlementStatus: user_alba_settlement_status;
2229
}
23-
export interface AlbaApplyResponseDto{
24-
albaId:string,
25-
userId:string,
26-
processStatus:user_alba_process_status,
27-
settlementStatus:user_alba_settlement_status
28-
}
Lines changed: 69 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,80 @@
1-
import prisma from "../config/prisma";
1+
import prisma from '../config/prisma';
2+
import { binToUuid } from '../util/uuid';
23

34
/**
45
* 대타 아르바이트 상세 정보 조회
5-
* @param albaId
6+
* @param albaId
67
* @returns 대타 아르바이트 상세 정보
78
*/
8-
export const findAlbaDetail = async (albaId:string)=>{
9-
//albaId Buffer로 변환. Todo: 유틸 함수 사용해서 가독성 개선시키기
10-
const albaBuffer=Buffer.from(albaId.replace(/-/g,""),'hex');
11-
//albaId로 관련된 store, work_schedule 조회
12-
const result = await prisma.alba_posting.findUnique({
13-
where:{alba_id:albaBuffer},
14-
include:{
15-
work_schedule:true,
16-
store:{
17-
include:{
18-
store_review:true
19-
}
20-
}
21-
}
22-
})
23-
if (!result) {
24-
throw new Error("존재하지 않는 알바 공고입니다.");
25-
}
26-
27-
if (!result.work_schedule) {
28-
throw new Error("알바 스케줄 정보를 찾을 수 없습니다.");
29-
}
30-
const {work_schedule,store,requirement,notification,main_task,total_wage,hourly_rate} = result
31-
const {work_date,work_time,start_time,end_time,day_of_week}=work_schedule
32-
//date인 것들 string으로 변환
33-
const workDate=work_date.toISOString().split('T')[0];
34-
const startTime = start_time.toISOString().split('T')[1].substring(0, 5);
35-
const endTime = end_time.toISOString().split('T')[1].substring(0, 5);
36-
//특정 가게의 평균 지표 구하기(가게 평점의 합/가게 리뷰 개수)
37-
const reviews = store.store_review;
38-
const reviewCount=reviews.length;
39-
const totalScore = reviewCount>0
40-
?Number((reviews.reduce((acc,curr)=>acc+curr.total_score,0)/reviewCount).toFixed(1))
41-
:0;
9+
export const findAlbaDetail = async (albaId: string) => {
10+
//albaId Buffer로 변환. Todo: 유틸 함수 사용해서 가독성 개선시키기
11+
const albaBuffer = Buffer.from(albaId.replace(/-/g, ''), 'hex');
12+
//albaId로 관련된 store, work_schedule 조회
13+
const result = await prisma.alba_posting.findUnique({
14+
where: { alba_id: albaBuffer },
15+
include: {
16+
work_schedule: true,
17+
store: {
18+
include: {
19+
store_review: true,
20+
},
21+
},
22+
},
23+
});
24+
if (!result) {
25+
throw new Error('존재하지 않는 알바 공고입니다.');
26+
}
4227

43-
return {
44-
albaId,
45-
storeName:store.store_name,
46-
workDate,
47-
dayOfWeek:day_of_week,
48-
workTime:work_time,
49-
startTime,
50-
endTime,
51-
hourlyRate:hourly_rate, //시급
52-
totalWage:total_wage, //예상급여
53-
storeAddress:store.store_address,
54-
totalScore, //신뢰지표
55-
mainTask:main_task,
56-
requirement,
57-
notification
58-
}
59-
}
28+
if (!result.work_schedule) {
29+
throw new Error('알바 스케줄 정보를 찾을 수 없습니다.');
30+
}
31+
const { work_schedule, store, requirement, notification, main_task, total_wage, hourly_rate } =
32+
result;
33+
const { work_date, work_time, start_time, end_time, day_of_week } = work_schedule;
34+
//date인 것들 string으로 변환
35+
const workDate = work_date.toISOString().split('T')[0];
36+
const startTime = start_time.toISOString().split('T')[1].substring(0, 5);
37+
const endTime = end_time.toISOString().split('T')[1].substring(0, 5);
38+
//특정 가게의 평균 지표 구하기(가게 평점의 합/가게 리뷰 개수)
39+
const reviews = store.store_review;
40+
const reviewCount = reviews.length;
41+
const totalScore =
42+
reviewCount > 0
43+
? Number((reviews.reduce((acc, curr) => acc + curr.total_score, 0) / reviewCount).toFixed(1))
44+
: 0;
45+
46+
return {
47+
albaId,
48+
storeId: binToUuid(store.store_id),
49+
storeName: store.store_name,
50+
workDate,
51+
dayOfWeek: day_of_week,
52+
workTime: work_time,
53+
startTime,
54+
endTime,
55+
hourlyRate: hourly_rate, //시급
56+
totalWage: total_wage, //예상급여
57+
storeAddress: store.store_address,
58+
totalScore, //신뢰지표
59+
mainTask: main_task,
60+
requirement,
61+
notification,
62+
};
63+
};
6064

6165
/**
6266
* 대타 아르바이트 지원 기능
6367
* @param data(albaBuffer,userBuffer)
6468
*/
65-
export const applyAlba= async(userBuffer:Buffer,albaBuffer:Buffer) =>{
66-
67-
const result = await prisma.user_alba.create({
68-
data:{
69-
user_id:new Uint8Array(userBuffer),
70-
alba_id:new Uint8Array(albaBuffer),
71-
//승인이 아니므로 초기에는 waiting으로 설정
72-
process_status:'waiting',
73-
settlement_status:'waiting'
74-
}
75-
})
76-
return result
77-
}
78-
69+
export const applyAlba = async (userBuffer: Buffer, albaBuffer: Buffer) => {
70+
const result = await prisma.user_alba.create({
71+
data: {
72+
user_id: new Uint8Array(userBuffer),
73+
alba_id: new Uint8Array(albaBuffer),
74+
//승인이 아니므로 초기에는 waiting으로 설정
75+
process_status: 'waiting',
76+
settlement_status: 'waiting',
77+
},
78+
});
79+
return result;
80+
};

0 commit comments

Comments
 (0)