1+ import { Request , Response } from 'express' ;
2+ import { registerIndividualSeller , registerBusinessSeller } from '../services/settlement.seller.service' ;
3+ import multer from 'multer' ;
4+ import { uploadBusinessLicense } from '../../middlewares/upload' ;
5+ import { uploadBusinessLicenseFile } from '../services/settlement.seller.service' ;
6+ import { AppError } from '../../errors/AppError' ;
7+
8+ export const registerIndividual = async ( req : Request , res : Response ) => {
9+ try {
10+ const user = req . user ;
11+
12+ if ( ! user ) {
13+ return res . status ( 401 ) . json ( {
14+ error : 'Unauthorized' ,
15+ message : '로그인이 필요합니다.' ,
16+ statusCode : 401 ,
17+ } ) ;
18+ }
19+
20+ const userId = ( req . user as { user_id : number } ) . user_id ;
21+ const result = await registerIndividualSeller ( userId , req . body ) ;
22+
23+ return res . status ( 200 ) . json ( {
24+ message : result . message ,
25+ statusCode : 200 ,
26+ } ) ;
27+
28+ } catch ( error : any ) {
29+ if ( error . name === 'ValidationError' ) {
30+ return res . status ( 400 ) . json ( {
31+ error : 'ValidationError' ,
32+ message : error . message ,
33+ statusCode : 400 ,
34+ } ) ;
35+ }
36+
37+ if ( error . name === 'AlreadyRegistered' ) {
38+ return res . status ( 409 ) . json ( {
39+ error : 'AlreadyRegistered' ,
40+ message : error . message ,
41+ statusCode : 409 ,
42+ } ) ;
43+ }
44+
45+ return res . status ( 500 ) . json ( {
46+ error : 'InternalServerError' ,
47+ message : '서버 오류가 발생했습니다.' ,
48+ statusCode : 500 ,
49+ } ) ;
50+ }
51+ } ;
52+
53+ export const uploadLicense = async ( req : Request , res : Response ) => {
54+ const uploadSingle = uploadBusinessLicense . single ( 'file' ) ;
55+
56+ uploadSingle ( req , res , async ( err : any ) => {
57+ try {
58+ if ( err instanceof multer . MulterError ) {
59+ if ( err . code === 'LIMIT_FILE_SIZE' ) {
60+ return res . status ( 413 ) . json ( {
61+ error : 'FileTooLarge' ,
62+ message : '파일 크기는 최대 20MB까지만 허용됩니다.' ,
63+ statusCode : 413 ,
64+ } ) ;
65+ }
66+ }
67+
68+ if ( err instanceof AppError && err . statusCode === 415 ) {
69+ return res . status ( 415 ) . json ( {
70+ error : err . name ,
71+ message : err . message ,
72+ statusCode : 415 ,
73+ } ) ;
74+ } else if ( err ) {
75+ throw err ;
76+ }
77+
78+ const user = req . user as { user_id : number } | undefined ;
79+ if ( ! user ) {
80+ return res . status ( 401 ) . json ( {
81+ error : 'Unauthorized' ,
82+ message : '로그인이 필요합니다.' ,
83+ statusCode : 401 ,
84+ } ) ;
85+ }
86+
87+ if ( ! req . file ) {
88+ return res . status ( 400 ) . json ( {
89+ error : 'ValidationError' ,
90+ message : '업로드할 파일이 첨부되지 않았습니다.' ,
91+ statusCode : 400 ,
92+ } ) ;
93+ }
94+
95+ const result = await uploadBusinessLicenseFile ( user . user_id , req . file ) ;
96+
97+ return res . status ( 200 ) . json ( {
98+ message : result . message ,
99+ fileUrl : result . fileUrl ,
100+ statusCode : 200 ,
101+ } ) ;
102+
103+ } catch ( error : any ) {
104+ console . error ( '사업자등록증 업로드 중 에러 발생:' , error ) ;
105+ return res . status ( 500 ) . json ( {
106+ error : 'InternalServerError' ,
107+ message : '알 수 없는 오류가 발생했습니다.' ,
108+ statusCode : 500 ,
109+ } ) ;
110+ }
111+ } ) ;
112+ } ;
113+
114+ export const registerBusiness = async ( req : Request , res : Response ) => {
115+ try {
116+ const user = req . user as { user_id : number } | undefined ;
117+
118+ if ( ! user ) {
119+ return res . status ( 401 ) . json ( {
120+ error : 'Unauthorized' ,
121+ message : '로그인이 필요합니다.' ,
122+ statusCode : 401 ,
123+ } ) ;
124+ }
125+
126+ const userId = user . user_id ;
127+ const result = await registerBusinessSeller ( userId , req . body ) ;
128+
129+ return res . status ( 200 ) . json ( {
130+ message : result . message ,
131+ statusCode : 200 ,
132+ } ) ;
133+
134+ } catch ( error : any ) {
135+ if ( error . name === 'ValidationError' ) {
136+ return res . status ( 400 ) . json ( {
137+ error : 'ValidationError' ,
138+ message : error . message ,
139+ statusCode : 400 ,
140+ } ) ;
141+ }
142+
143+ if ( error . name === 'AlreadyRegistered' ) {
144+ return res . status ( 409 ) . json ( {
145+ error : 'AlreadyRegistered' ,
146+ message : error . message ,
147+ statusCode : 409 ,
148+ } ) ;
149+ }
150+
151+ if ( error . name === 'DuplicateBusinessNumber' ) {
152+ return res . status ( 409 ) . json ( {
153+ error : 'DuplicateBusinessNumber' ,
154+ message : error . message ,
155+ statusCode : 409 ,
156+ } ) ;
157+ }
158+
159+ console . error ( '사업자 판매자 등록 중 에러 발생:' , error ) ;
160+ return res . status ( 500 ) . json ( {
161+ error : 'InternalServerError' ,
162+ message : '서버 오류가 발생했습니다.' ,
163+ statusCode : 500 ,
164+ } ) ;
165+ }
166+ } ;
0 commit comments