| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- <?php
- namespace App\Controllers;
- use CodeIgniter\RESTful\ResourceController;
- use App\Libraries\JwtLib\JWT;
- use App\Libraries\JwtLib\Key;
- use App\Models\LoginModel;
- class Mypage extends ResourceController
- {
- // 사용자 상세 정보 조회
- public function myDetail()
- {
- // 한국 시간으로 설정
- 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':
- $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['NAME'])) {
- $data['NAME'] = $request['NAME'];
- }
- if (isset($request['EMAIL'])) {
- $data['EMAIL'] = $request['EMAIL'];
- }
- if (isset($request['PHONE'])) {
- $data['PHONE'] = $request['PHONE'];
- }
- 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 (isset($request['PASSWORD']) && !empty($request['PASSWORD'])) {
- $data['PASSWORD'] = password_hash($request['PASSWORD'], PASSWORD_DEFAULT);
- }
-
- // 인플루언서 전용 필드
- if (($memberType === 'INFLUENCER' || $memberType === 'I') && isset($request['NICK_NAME'])) {
- $data['NICK_NAME'] = $request['NICK_NAME'];
- }
-
- // 벤더/브랜드 전용 필드
- if (($memberType !== 'INFLUENCER' && $memberType !== 'I') && isset($request['COMPANY_NAME'])) {
- $data['COMPANY_NAME'] = $request['COMPANY_NAME'];
- }
- 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);
- }
- }
- }
|