Parcourir la source

배송관리 숫자 형태 변경

DESKTOP-T61HUSC\user il y a 4 mois
Parent
commit
ed87b4b643
2 fichiers modifiés avec 130 ajouts et 2 suppressions
  1. 113 0
      backend/app/Controllers/Deli.php
  2. 17 2
      pages/view/common/deli/detail.vue

+ 113 - 0
backend/app/Controllers/Deli.php

@@ -0,0 +1,113 @@
+<?php
+
+namespace App\Controllers;
+
+use CodeIgniter\RESTful\ResourceController;
+
+class Deli extends ResourceController
+{
+    //구매자 리스트
+    public function delilist()
+    {
+        $db = \Config\Database::connect();
+        $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->orderBy('ORDER_DATE', 'DESC');
+        $lists = $builder->get()->getResultArray();
+
+        return $this->respond($lists, 200);
+    }
+
+    //구매자 등록
+    public function deliRegister()
+    {
+        $db = \Config\Database::connect();
+        $request = $this->request->getJSON(true);
+
+        $itemSeq = isset($request['item_seq']) ? $request['item_seq'] : null;
+        $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) {
+                if (!isset($delivery[$field]) || $delivery[$field] === '') {
+                    return $this->fail("deliveryList[$index] 항목의 '{$field}' 값이 누락되었습니다.", 400);
+                }
+            }
+
+            // 삽입
+            $data = [
+                'ITEM_SEQ' => $itemSeq,
+                'INF_SEQ' => $infSeq,
+                'BUYER_NAME' => $delivery['buyerName'],
+                'ADDRESS' => $delivery['address'],
+                'PHONE' => $delivery['phone'],
+                'EMAIL' => $delivery['email'],
+                'QTY' => $delivery['qty'],
+                'TOTAL' => $delivery['total'],
+                'DELI_COMP' => $delivery['deliComp'] ?? null,
+                'DELI_NUMB' => $delivery['deliNumb'] ?? null,
+                'ORDER_DATE' => date('Y-m-d H:i:s', strtotime($delivery['orderDate'])),
+                'REG_DATE' => date('Y-m-d'),
+            ];
+
+            $db->table('ITEM_ORDER_LIST')->insert($data);
+        }
+
+        return $this->respond(['message' => '배송 데이터가 성공적으로 저장되었습니다.'], 200);
+    }
+
+    //아이템 상세
+    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);
+        }
+    }
+
+    //아이템 삭제
+    public function itemDelete($seq)
+    {
+        $db = \Config\Database::connect();
+        $db->transBegin();
+
+        //아이템 삭제
+        $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);
+    }
+}

+ 17 - 2
pages/view/common/deli/detail.vue

@@ -29,8 +29,8 @@
         </div>
         <div class="item--info">
           <h2>{{ form.formValue1 }}</h2>
-          <p>공급가: {{ form.formValue2 }}원</p>
-          <p>판매가: {{ form.formValue3 }}원</p>
+          <p>공급가: {{ Number(form.formValue2).toLocaleString() }}원</p>
+          <p>판매가: {{ Number(form.formValue3).toLocaleString() }}원</p>
         </div>
       </div>
       <div class="btn--actions--wrap">
@@ -126,9 +126,11 @@ import pagination from "../components/common/pagination.vue";
 |    스토어
  ************************************************************************/
   const useDtStore = useDetailStore();
+  const useAtStore = useAuthStore();
   /************************************************************************
 |    전역
  ************************************************************************/
+  const memberType = useAtStore.auth.memberType;
   const { $toast, $log, $dayjs, $eventBus } = useNuxtApp();
   const router = useRouter();
   const pageId = ref("배송 관리");
@@ -181,6 +183,12 @@ import pagination from "../components/common/pagination.vue";
         sortable: false,
         width: 70,
       },
+      {
+        headerName: "인플루언서",
+        field: "INF_NAME",
+        width: 150,
+        //hide: true,
+      },
       {
         headerName: "구매자명",
         field: "BUYER_NAME",
@@ -208,11 +216,18 @@ import pagination from "../components/common/pagination.vue";
         field: "QTY",
         width: 120,
         editable: true,
+        cellRenderer: (params) => {
+          return Number(params.value).toLocaleString();
+        },
       },
       {
         headerName: "총구매금액",
         field: "TOTAL",
         editable: true,
+        width: 120,
+        cellRenderer: (params) => {
+          return Number(params.value).toLocaleString();
+        },
       },
       {
         headerName: "배송업체",