|
|
@@ -6,6 +6,45 @@ use CodeIgniter\RESTful\ResourceController;
|
|
|
|
|
|
class Deli extends ResourceController
|
|
|
{
|
|
|
+ //아이템 리스트
|
|
|
+ public function itemlist()
|
|
|
+ {
|
|
|
+ $db = \Config\Database::connect();
|
|
|
+
|
|
|
+ // POST JSON 파라미터 받기
|
|
|
+ $request = $this->request->getJSON(true);
|
|
|
+
|
|
|
+ $showYn = isset($request['SHOW_YN']) ? $request['SHOW_YN'] : null;
|
|
|
+ $infSeq = isset($request['INF_SEQ']) ? $request['INF_SEQ'] : null;
|
|
|
+
|
|
|
+ // 서브쿼리: INF_SEQ 기준으로 QTY, TOTAL 합계와 최신 REG_DATE 구하기
|
|
|
+ $subQuery = $db->table('ITEM_ORDER_LIST')
|
|
|
+ ->select('ITEM_SEQ, SUM(QTY) AS sum_qty, SUM(TOTAL) AS sum_total, MAX(REG_DATE) AS latest_reg_date');
|
|
|
+
|
|
|
+ if (!is_null($infSeq)) {
|
|
|
+ $subQuery->where('INF_SEQ', $infSeq);
|
|
|
+ }
|
|
|
+
|
|
|
+ $subQuery->groupBy('ITEM_SEQ');
|
|
|
+
|
|
|
+ // 메인 쿼리: ITEM_LIST와 위 서브쿼리 조인
|
|
|
+ $builder = $db->table('ITEM_LIST I')
|
|
|
+ ->select('I.*, O.sum_qty, O.sum_total, O.latest_reg_date')
|
|
|
+ ->join("(" . $subQuery->getCompiledSelect() . ") O", 'I.SEQ = O.ITEM_SEQ', 'left')
|
|
|
+ ->where('I.DEL_YN', 'N');
|
|
|
+
|
|
|
+ if (!is_null($showYn) && $showYn !== '') {
|
|
|
+ $builder->where('I.SHOW_YN', $showYn);
|
|
|
+ }
|
|
|
+
|
|
|
+ $builder->orderBy('I.UDPDATE', 'DESC');
|
|
|
+
|
|
|
+ $lists = $builder->get()->getResultArray();
|
|
|
+
|
|
|
+ return $this->respond($lists, 200);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
//구매자 리스트
|
|
|
public function delilist()
|
|
|
{
|
|
|
@@ -13,16 +52,19 @@ class Deli extends ResourceController
|
|
|
$request = $this->request->getJSON(true);
|
|
|
$itemSeq = isset($request['item_seq']) ? $request['item_seq'] : null;
|
|
|
$infSeq = isset($request['inf_seq']) ? $request['inf_seq'] : null;
|
|
|
+
|
|
|
// 쿼리 빌더
|
|
|
- // 인플루언서 시퀀스가 들어올 경우 해당 정보만 노출, 들어오지 않으면 전체 노출
|
|
|
- if($infSeq){
|
|
|
- $builder = $db->table('ITEM_ORDER_LIST')->where('ITEM_SEQ', $itemSeq )->where('INF_SEQ', $infSeq);
|
|
|
- } else {
|
|
|
- $builder = $db->table('ITEM_ORDER_LIST')->where('ITEM_SEQ', $itemSeq );
|
|
|
+ $builder = $db->table('ITEM_ORDER_LIST I');
|
|
|
+ $builder->select('I.*, U.NICK_NAME');
|
|
|
+ $builder->join('USER_LIST U', 'I.INF_SEQ = U.SEQ', 'left');
|
|
|
+
|
|
|
+ $builder->where('I.ITEM_SEQ', $itemSeq);
|
|
|
+ if ($infSeq) {
|
|
|
+ $builder->where('I.INF_SEQ', $infSeq);
|
|
|
}
|
|
|
|
|
|
// 주문일 기준으로 정렬
|
|
|
- $builder->orderBy('ORDER_DATE', 'DESC');
|
|
|
+ $builder->orderBy('I.ORDER_DATE', 'DESC');
|
|
|
$lists = $builder->get()->getResultArray();
|
|
|
|
|
|
return $this->respond($lists, 200);
|
|
|
@@ -38,11 +80,7 @@ class Deli extends ResourceController
|
|
|
$infSeq = isset($request['inf_seq']) ? $request['inf_seq'] : null;
|
|
|
$deliveryList = $request['deliveryList'] ?? [];
|
|
|
|
|
|
- $db->table('ITEM_ORDER_LIST')
|
|
|
- ->where('ITEM_SEQ', $itemSeq)
|
|
|
- ->where('INF_SEQ', $infSeq)
|
|
|
- ->delete();
|
|
|
-
|
|
|
+ // 🔍 먼저 전체 유효성 검사
|
|
|
foreach ($deliveryList as $index => $delivery) {
|
|
|
$requiredFields = ['buyerName', 'address', 'phone', 'qty', 'total', 'orderDate'];
|
|
|
foreach ($requiredFields as $field) {
|
|
|
@@ -50,8 +88,15 @@ class Deli extends ResourceController
|
|
|
return $this->fail("deliveryList[$index] 항목의 '{$field}' 값이 누락되었습니다.", 400);
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ // ✅ 유효성 통과 후 삭제 + 삽입
|
|
|
+ $db->table('ITEM_ORDER_LIST')
|
|
|
+ ->where('ITEM_SEQ', $itemSeq)
|
|
|
+ ->where('INF_SEQ', $infSeq)
|
|
|
+ ->delete();
|
|
|
|
|
|
- // 삽입
|
|
|
+ foreach ($deliveryList as $delivery) {
|
|
|
$data = [
|
|
|
'ITEM_SEQ' => $itemSeq,
|
|
|
'INF_SEQ' => $infSeq,
|