|
|
@@ -1,11 +1,11 @@
|
|
|
<?php
|
|
|
|
|
|
- namespace App\Controllers;
|
|
|
+namespace App\Controllers;
|
|
|
|
|
|
- use CodeIgniter\RESTful\ResourceController;
|
|
|
+use CodeIgniter\RESTful\ResourceController;
|
|
|
|
|
|
- class Item extends ResourceController
|
|
|
- {
|
|
|
+class Item extends ResourceController
|
|
|
+{
|
|
|
//이벤트 리스트
|
|
|
public function itemlist()
|
|
|
{
|
|
|
@@ -63,7 +63,7 @@
|
|
|
$keyword = isset($request['keyword']) ? $request['keyword'] : null;
|
|
|
$startDate = $request['startDate'] ?? null;
|
|
|
$endDate = $request['endDate'] ?? null;
|
|
|
- $showYN = $request['showYN'] ?? null;
|
|
|
+ $showYN = $request['showYN'] ?? null;
|
|
|
$itemType = isset($request['TYPE']) ? $request['TYPE'] : null;
|
|
|
$memberType = isset($request['MEMBER_TYPE']) ? $request['MEMBER_TYPE'] : null;
|
|
|
$companyNumber = isset($request['COMPANY_NUMBER']) ? $request['COMPANY_NUMBER'] : null;
|
|
|
@@ -75,7 +75,7 @@
|
|
|
|
|
|
// 평문 검색 (LIKE 연산 사용)
|
|
|
$builder = $db->table('ITEM_LIST');
|
|
|
-
|
|
|
+
|
|
|
// 사용자 타입별 필터링
|
|
|
if ($memberType === 'VENDOR' && !empty($companyNumber)) {
|
|
|
// 벤더사의 경우: 자사 제품만 검색
|
|
|
@@ -89,7 +89,7 @@
|
|
|
$builder->where('VIP.STATUS', 'APPROVED');
|
|
|
$builder->where('VIP.IS_ACTIVE', 'Y');
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (!empty($keyword)) {
|
|
|
if (empty($filter)) {
|
|
|
// 필터를 선택 안했으면 전체 검색
|
|
|
@@ -130,123 +130,128 @@
|
|
|
//아이템 등록
|
|
|
public function itemRegister()
|
|
|
{
|
|
|
- $db = \Config\Database::connect();
|
|
|
- $request = \Config\Services::request();
|
|
|
- $regdate = date('Y-m-d H:i:s');
|
|
|
- $thumb = $request->getFile('thumb_file');
|
|
|
- $zip = $request->getFile('zip_file');
|
|
|
- $zipOrigin = $zip ? $zip->getClientName() : null;
|
|
|
-
|
|
|
- // 기본 유효성 검사
|
|
|
- if (
|
|
|
- !$request->getPost('name') ||
|
|
|
- !$request->getPost('price1') ||
|
|
|
- !$request->getPost('price2') ||
|
|
|
- !$request->getPost('deli_fee') ||
|
|
|
- !$request->getPost('sub_title') ||
|
|
|
- !$request->getPost('detail') ||
|
|
|
- !$request->getPost('company_number')
|
|
|
- ) {
|
|
|
- return $this->respond([
|
|
|
- 'status' => 'fail',
|
|
|
- 'message' => '필수 값이 누락됐습니다.'
|
|
|
- ], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $db->transBegin(); // 트랜잭션 시작
|
|
|
-
|
|
|
- try {
|
|
|
- // 썸네일 파일 처리
|
|
|
- $thumbFileName = null;
|
|
|
- if ($thumb && $thumb->isValid() && !$thumb->hasMoved()) {
|
|
|
- $thumbFileName = $thumb->getRandomName(); // 랜덤파일명 생성
|
|
|
- $thumb->move(WRITEPATH . 'uploads/item/thumb/', $thumbFileName); // 저장
|
|
|
- }
|
|
|
- // 상세 zip 파일 처리
|
|
|
- $zipFileName = null;
|
|
|
- if ($zip && $zip->isValid() && !$zip->hasMoved()) {
|
|
|
- $zipFileName = $zip->getRandomName();
|
|
|
- $zip->move(WRITEPATH . 'uploads/item/detail/', $zipFileName);
|
|
|
+ $db = \Config\Database::connect();
|
|
|
+ $request = \Config\Services::request();
|
|
|
+ $regdate = date('Y-m-d H:i:s');
|
|
|
+ $thumb = $request->getFile('thumb_file');
|
|
|
+ $zip = $request->getFile('zip_file');
|
|
|
+ $zipOrigin = $zip ? $zip->getClientName() : null;
|
|
|
+
|
|
|
+ // 기본 유효성 검사
|
|
|
+ if (
|
|
|
+ !$request->getPost('name') ||
|
|
|
+ !$request->getPost('price1') ||
|
|
|
+ !$request->getPost('price2') ||
|
|
|
+ !$request->getPost('deli_fee') ||
|
|
|
+ !$request->getPost('sub_title') ||
|
|
|
+ !$request->getPost('detail') ||
|
|
|
+ !$request->getPost('company_number')
|
|
|
+ ) {
|
|
|
+ return $this->respond([
|
|
|
+ 'status' => 'fail',
|
|
|
+ 'message' => '필수 값이 누락됐습니다.'
|
|
|
+ ], 400);
|
|
|
}
|
|
|
- // 1. ITEM_LIST에 아이템 정보 등록
|
|
|
- $itemData = [
|
|
|
- 'NAME' => $request->getPost('name'),
|
|
|
- 'PRICE1' => $request->getPost('price1'),
|
|
|
- 'PRICE2' => $request->getPost('price2'),
|
|
|
- 'DELI_FEE' => $request->getPost('deli_fee'),
|
|
|
- 'SUB_TITLE' => $request->getPost('sub_title'),
|
|
|
- 'DETAIL' => $request->getPost('detail'),
|
|
|
- 'STATUS' => $request->getPost('status'),
|
|
|
- 'SHOW_YN' => $request->getPost('show_yn'),
|
|
|
- 'ADD_INFO' => $request->getPost('add_info') ?? 0,
|
|
|
- 'COMPANY_NUMBER' => $request->getPost('company_number'),
|
|
|
- 'REGDATE' => $regdate,
|
|
|
- 'UDPDATE' => $regdate,
|
|
|
- 'THUMB_FILE' => $thumbFileName, // 파일명 저장
|
|
|
- 'ZIP_FILE' => $zipFileName, // 파일명 저장
|
|
|
- 'ZIP_FILE_ORIGIN' => $zipOrigin, // 원본 파일명 저장
|
|
|
- ];
|
|
|
|
|
|
- $insertResult = $db->table('ITEM_LIST')->insert($itemData);
|
|
|
- if (!$insertResult) {
|
|
|
- $error = $db->error();
|
|
|
- return $this->respond([
|
|
|
- 'status' => 'fail',
|
|
|
- 'message' => 'Insert 실패: ' . $error['message']
|
|
|
- ], 500);
|
|
|
- }
|
|
|
- $itemSeq = $db->insertID(); // 생성된 이벤트 SEQ값
|
|
|
+ $db->transBegin(); // 트랜잭션 시작
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 썸네일 파일 처리
|
|
|
+ $thumbFileName = null;
|
|
|
+ if ($thumb && $thumb->isValid() && !$thumb->hasMoved()) {
|
|
|
+ $thumbFileName = $thumb->getRandomName(); // 랜덤파일명 생성
|
|
|
+ $thumb->move(WRITEPATH . 'uploads/item/thumb/', $thumbFileName); // 저장
|
|
|
+ }
|
|
|
+ // 상세 zip 파일 처리
|
|
|
+ $zipFileName = null;
|
|
|
+ if ($zip && $zip->isValid() && !$zip->hasMoved()) {
|
|
|
+ $zipFileName = $zip->getRandomName();
|
|
|
+ $zip->move(WRITEPATH . 'uploads/item/detail/', $zipFileName);
|
|
|
+ }
|
|
|
+ // 1. ITEM_LIST에 아이템 정보 등록
|
|
|
+ $itemData = [
|
|
|
+ 'NAME' => $request->getPost('name'),
|
|
|
+ 'PRICE1' => $request->getPost('price1'),
|
|
|
+ 'PRICE2' => $request->getPost('price2'),
|
|
|
+ 'DELI_FEE' => $request->getPost('deli_fee'),
|
|
|
+ 'SUB_TITLE' => $request->getPost('sub_title'),
|
|
|
+ 'DETAIL' => $request->getPost('detail'),
|
|
|
+ 'STATUS' => $request->getPost('status'),
|
|
|
+ 'SHOW_YN' => $request->getPost('show_yn'),
|
|
|
+ 'ADD_INFO' => $request->getPost('add_info') ?? 0,
|
|
|
+ 'CONTACT_INF' => $request->getPost('contact_inf') ?? 0,
|
|
|
+ 'ORDER_LINK' => $request->getPost('order_link') ?? 0,
|
|
|
+ 'ORDER_START_DATE' => $request->getPost('order_start_date') ?? 0,
|
|
|
+ 'ORDER_END_DATE' => $request->getPost('order_end_date') ?? 0,
|
|
|
+ 'COMPANY_NUMBER' => $request->getPost('company_number'),
|
|
|
+ 'REGDATE' => $regdate,
|
|
|
+ 'UDPDATE' => $regdate,
|
|
|
+ 'TYPE' => $request->getPost('item_type'),
|
|
|
+ 'THUMB_FILE' => $thumbFileName, // 파일명 저장
|
|
|
+ 'ZIP_FILE' => $zipFileName, // 파일명 저장
|
|
|
+ 'ZIP_FILE_ORIGIN' => $zipOrigin, // 원본 파일명 저장
|
|
|
+ ];
|
|
|
+
|
|
|
+ $insertResult = $db->table('ITEM_LIST')->insert($itemData);
|
|
|
+ if (!$insertResult) {
|
|
|
+ $error = $db->error();
|
|
|
+ return $this->respond([
|
|
|
+ 'status' => 'fail',
|
|
|
+ 'message' => 'Insert 실패: ' . $error['message']
|
|
|
+ ], 500);
|
|
|
+ }
|
|
|
+ $itemSeq = $db->insertID(); // 생성된 이벤트 SEQ값
|
|
|
|
|
|
|
|
|
|
|
|
- $db->transCommit();
|
|
|
- return $this->respond([
|
|
|
- 'status' => 'success',
|
|
|
- 'item_seq' => $itemSeq
|
|
|
- ], 201);
|
|
|
- } catch (\Exception $e) {
|
|
|
- $db->transRollback();
|
|
|
- return $this->respond([
|
|
|
- 'status' => 'fail',
|
|
|
- 'message' => 'DB 오류: ' . $e->getMessage()
|
|
|
- ], 500);
|
|
|
- }
|
|
|
+ $db->transCommit();
|
|
|
+ return $this->respond([
|
|
|
+ 'status' => 'success',
|
|
|
+ 'item_seq' => $itemSeq
|
|
|
+ ], 201);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ $db->transRollback();
|
|
|
+ return $this->respond([
|
|
|
+ 'status' => 'fail',
|
|
|
+ 'message' => 'DB 오류: ' . $e->getMessage()
|
|
|
+ ], 500);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//아이템 상세
|
|
|
public function itemDetail($seq)
|
|
|
{
|
|
|
- // DB 객체 얻기
|
|
|
- $db = \Config\Database::connect();
|
|
|
-
|
|
|
- $builder = $db->table('ITEM_LIST');
|
|
|
- $item = $builder->where('seq', $seq)->get()->getRowArray();
|
|
|
-
|
|
|
- if($item){
|
|
|
- return $this->respond($item, 200);
|
|
|
- } else {
|
|
|
- return $this->respond([
|
|
|
- 'status' => 'fail',
|
|
|
- 'message' => '유효하지 않은 seq입니다.'
|
|
|
- ], 404);
|
|
|
- }
|
|
|
+ // DB 객체 얻기
|
|
|
+ $db = \Config\Database::connect();
|
|
|
+
|
|
|
+ $builder = $db->table('ITEM_LIST');
|
|
|
+ $item = $builder->where('seq', $seq)->get()->getRowArray();
|
|
|
+
|
|
|
+ if($item){
|
|
|
+ return $this->respond($item, 200);
|
|
|
+ } else {
|
|
|
+ return $this->respond([
|
|
|
+ 'status' => 'fail',
|
|
|
+ 'message' => '유효하지 않은 seq입니다.'
|
|
|
+ ], 404);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//상세 다운로드
|
|
|
public function file($fileName)
|
|
|
- {
|
|
|
- helper('filesystem');
|
|
|
+ {
|
|
|
+ helper('filesystem');
|
|
|
|
|
|
- $path = WRITEPATH . 'uploads/item/detail/' . $fileName;
|
|
|
+ $path = WRITEPATH . 'uploads/item/detail/' . $fileName;
|
|
|
|
|
|
- if (!file_exists($path)) {
|
|
|
- return $this->failNotFound('파일을 찾을 수 없습니다.');
|
|
|
- }
|
|
|
+ if (!file_exists($path)) {
|
|
|
+ return $this->failNotFound('파일을 찾을 수 없습니다.');
|
|
|
+ }
|
|
|
|
|
|
- return $this->response
|
|
|
- ->download($path, null)
|
|
|
- ->setFileName($fileName);
|
|
|
- }
|
|
|
+ return $this->response
|
|
|
+ ->download($path, null)
|
|
|
+ ->setFileName($fileName);
|
|
|
+ }
|
|
|
|
|
|
//아이템 수정
|
|
|
public function ItemUpdate($seq)
|
|
|
@@ -337,19 +342,19 @@
|
|
|
//아이템 삭제
|
|
|
public function itemDelete($seq)
|
|
|
{
|
|
|
- $db = \Config\Database::connect();
|
|
|
- $db->transBegin();
|
|
|
+ $db = \Config\Database::connect();
|
|
|
+ $db->transBegin();
|
|
|
|
|
|
- //아이템 삭제
|
|
|
- $deleted = $db->table('ITEM_LIST')
|
|
|
+ //아이템 삭제
|
|
|
+ $deleted = $db->table('ITEM_LIST')
|
|
|
->where('SEQ', $seq)
|
|
|
->update(['DEL_YN' => 'Y']);
|
|
|
|
|
|
- if ($db->transStatus() === false || !$deleted) {
|
|
|
- $db->transRollback();
|
|
|
- return $this->respond(['status' => 'fail', 'message' => '이벤트 삭제 중 오류가 발생했습니다.']);
|
|
|
- }
|
|
|
- $db->transCommit();
|
|
|
- return $this->respond(['status' => 'success', 'message' => '이벤트가 삭제되었습니다.'], 200);
|
|
|
+ if ($db->transStatus() === false || !$deleted) {
|
|
|
+ $db->transRollback();
|
|
|
+ return $this->respond(['status' => 'fail', 'message' => '이벤트 삭제 중 오류가 발생했습니다.']);
|
|
|
+ }
|
|
|
+ $db->transCommit();
|
|
|
+ return $this->respond(['status' => 'success', 'message' => '이벤트가 삭제되었습니다.'], 200);
|
|
|
}
|
|
|
- }
|
|
|
+}
|