request->getJSON(true); $memberType = isset($request['MEMBER_TYPE']) ? $request['MEMBER_TYPE'] : null; $memberSeq = isset($request['MEMBER_SEQ']) ? $request['MEMBER_SEQ'] : null; try { // 멤버 타입에 따라 다른 테이블에서 조회 switch ($memberType) { case 'INFLUENCER': case 'I': $userInfo = $db->table('USER_LIST') ->where('SEQ', $memberSeq) ->get() ->getRowArray(); break; case 'VENDOR': case 'V': $userInfo = $db->table('VENDOR_LIST') ->where('SEQ', $memberSeq) ->get() ->getRowArray(); break; case 'BRAND': case 'B': $userInfo = $db->table('BRAND_LIST') ->where('SEQ', $memberSeq) ->get() ->getRowArray(); break; default: return $this->respond([ 'status' => 'fail', 'message' => '알 수 없는 회원 타입입니다.' ], 400); } if (!$userInfo) { return $this->respond([ 'status' => 'fail', 'message' => '사용자 정보를 찾을 수 없습니다.' ], 404); } // MEMBER_TYPE 정규화 (I -> INFLUENCER 등) if (isset($userInfo['MEMBER_TYPE'])) { switch ($userInfo['MEMBER_TYPE']) { case 'I': $userInfo['MEMBER_TYPE'] = 'INFLUENCER'; break; case 'V': $userInfo['MEMBER_TYPE'] = 'VENDOR'; break; case 'B': $userInfo['MEMBER_TYPE'] = 'BRAND'; break; } } return $this->respond($userInfo, 200); } catch (\Exception $e) { return $this->respond([ 'status' => 'fail', 'message' => 'DB 오류: ' . $e->getMessage() ], 500); } } // 사용자 정보 수정 public function myUpdate(){ // 한국 시간으로 설정 date_default_timezone_set('Asia/Seoul'); $db = \Config\Database::connect(); $request = $this->request->getJSON(true); $memberType = isset($request['MEMBER_TYPE']) ? $request['MEMBER_TYPE'] : null; $memberSeq = isset($request['MEMBER_SEQ']) ? $request['MEMBER_SEQ'] : null; try { // 멤버 타입에 따라 다른 테이블에서 업데이트 switch ($memberType) { case 'INFLUENCER': case 'I': $table = 'USER_LIST'; break; case 'VENDOR': case 'V': $table = 'VENDOR_LIST'; break; case 'BRAND': case 'B': $table = 'BRAND_LIST'; break; default: return $this->respond([ 'status' => 'fail', 'message' => '알 수 없는 회원 타입입니다.' ], 400); } // 업데이트할 데이터 $data = []; // 공통 필드 if (isset($request['EMAIL'])) { $data['EMAIL'] = $request['EMAIL']; } if (isset($request['PASSWORD']) && !empty($request['PASSWORD'])) { $data['PASSWORD'] = password_hash($request['PASSWORD'], PASSWORD_DEFAULT); } // 인플루언서 전용 필드 if (($memberType === 'INFLUENCER' || $memberType === 'I')) { if (isset($request['PHONE'])) { $data['PHONE'] = $request['PHONE']; } if (isset($request['NICK_NAME'])) { $data['NICK_NAME'] = $request['NICK_NAME']; } if (isset($request['SNS_TYPE'])) { $data['SNS_TYPE'] = $request['SNS_TYPE']; } if (isset($request['SNS_LINK_ID'])) { $data['SNS_LINK_ID'] = $request['SNS_LINK_ID']; } } // 벤더/브랜드 전용 필드 if (($memberType !== 'INFLUENCER' && $memberType !== 'I')) { if (isset($request['COMPANY_NAME'])) { $data['COMPANY_NAME'] = $request['COMPANY_NAME']; } if (isset($request['HP'])) { $data['HP'] = $request['HP']; } } if (empty($data)) { return $this->respond([ 'status' => 'fail', 'message' => '업데이트할 데이터가 없습니다.' ], 400); } // 업데이트 실행 $result = $db->table($table) ->where('SEQ', $memberSeq) ->update($data); if ($result) { return $this->respond([ 'status' => 'success', 'message' => '사용자 정보가 성공적으로 업데이트되었습니다.', 'data' => $data ], 200); } else { return $this->respond([ 'status' => 'fail', 'message' => '업데이트에 실패했습니다.' ], 500); } } catch (\Exception $e) { return $this->respond([ 'status' => 'fail', 'message' => 'DB 오류: ' . $e->getMessage() ], 500); } } }