|
@@ -22,13 +22,13 @@ class Dashboard extends ResourceController
|
|
|
try {
|
|
try {
|
|
|
$limit = isset($request['LIMIT']) ? $request['LIMIT'] : null;
|
|
$limit = isset($request['LIMIT']) ? $request['LIMIT'] : null;
|
|
|
|
|
|
|
|
- $builder = $db->table('ITEM_ORDER_LIST D')
|
|
|
|
|
|
|
+ $builder = $db->table('ORDER_LIST D')
|
|
|
->select('D.*, I.NAME as ITEM_NAME, I.COMPANY_NUMBER, I.CONTACT_INF, U.NICK_NAME as INF_NICK_NAME, U.NAME as INF_NAME')
|
|
->select('D.*, I.NAME as ITEM_NAME, I.COMPANY_NUMBER, I.CONTACT_INF, U.NICK_NAME as INF_NICK_NAME, U.NAME as INF_NAME')
|
|
|
->join('ITEM_LIST I', 'D.ITEM_SEQ = I.SEQ', 'left')
|
|
->join('ITEM_LIST I', 'D.ITEM_SEQ = I.SEQ', 'left')
|
|
|
->join('USER_LIST U', 'I.CONTACT_INF = U.SEQ', 'left')
|
|
->join('USER_LIST U', 'I.CONTACT_INF = U.SEQ', 'left')
|
|
|
- ->where('D.DELI_COMP', '') // 배송 정보가 등록되지 않은 정보만 신규 주문으로 판단
|
|
|
|
|
|
|
+ //->where('D.DELI_COMP', '') // 배송 정보가 등록되지 않은 정보만 신규 주문으로 판단
|
|
|
->where('I.DEL_YN', 'N')
|
|
->where('I.DEL_YN', 'N')
|
|
|
- ->orderBy('D.REG_DATE', 'DESC');
|
|
|
|
|
|
|
+ ->orderBy('D.CONTENT_REGDATE', 'DESC');
|
|
|
|
|
|
|
|
// 사용자 타입별 필터링
|
|
// 사용자 타입별 필터링
|
|
|
if ($memberType === 'VENDOR' && !empty($companyNumber)) {
|
|
if ($memberType === 'VENDOR' && !empty($companyNumber)) {
|
|
@@ -143,7 +143,7 @@ class Dashboard extends ResourceController
|
|
|
$limit = isset($request['LIMIT']) ? $request['LIMIT'] : 10;
|
|
$limit = isset($request['LIMIT']) ? $request['LIMIT'] : 10;
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
- $builder = $db->table('ITEM_ORDER_LIST D')
|
|
|
|
|
|
|
+ $builder = $db->table('ORDER_LIST D')
|
|
|
->select('I.CONTACT_INF as INF_SEQ, INF.NICK_NAME as INF_NAME, INF.NAME as INF_REAL_NAME, INF.PHONE, COUNT(D.SEQ) as ORDER_COUNT')
|
|
->select('I.CONTACT_INF as INF_SEQ, INF.NICK_NAME as INF_NAME, INF.NAME as INF_REAL_NAME, INF.PHONE, COUNT(D.SEQ) as ORDER_COUNT')
|
|
|
->join('ITEM_LIST I', 'D.ITEM_SEQ = I.SEQ', 'inner')
|
|
->join('ITEM_LIST I', 'D.ITEM_SEQ = I.SEQ', 'inner')
|
|
|
->join('USER_LIST INF', 'I.CONTACT_INF = INF.SEQ', 'left')
|
|
->join('USER_LIST INF', 'I.CONTACT_INF = INF.SEQ', 'left')
|
|
@@ -189,25 +189,25 @@ class Dashboard extends ResourceController
|
|
|
|
|
|
|
|
$db = \Config\Database::connect();
|
|
$db = \Config\Database::connect();
|
|
|
$request = $this->request->getJSON(true);
|
|
$request = $this->request->getJSON(true);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
$contactInf = isset($request['CONTACT_INF']) ? $request['CONTACT_INF'] : null;
|
|
$contactInf = isset($request['CONTACT_INF']) ? $request['CONTACT_INF'] : null;
|
|
|
$companyNumber = isset($request['COMPANY_NUMBER']) ? $request['COMPANY_NUMBER'] : null;
|
|
$companyNumber = isset($request['COMPANY_NUMBER']) ? $request['COMPANY_NUMBER'] : null;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
try {
|
|
try {
|
|
|
$builder = $db->table('ITEM_LIST I')
|
|
$builder = $db->table('ITEM_LIST I')
|
|
|
- ->select('I.*, COALESCE(SUM(D.QTY), 0) as QTY, COALESCE(COUNT(D.SEQ), 0) as ORDER_COUNT')
|
|
|
|
|
- ->join('ITEM_ORDER_LIST D', 'I.SEQ = D.ITEM_SEQ', 'left')
|
|
|
|
|
|
|
+ ->select('I.*, COALESCE(COUNT(D.SEQ), 0) as ORDER_COUNT')
|
|
|
|
|
+ ->join('ORDER_LIST D', 'I.SEQ = D.ITEM_SEQ', 'left')
|
|
|
->where('I.DEL_YN', 'N')
|
|
->where('I.DEL_YN', 'N')
|
|
|
->groupBy('I.SEQ')
|
|
->groupBy('I.SEQ')
|
|
|
->orderBy('I.ORDER_END_DATE', 'DESC');
|
|
->orderBy('I.ORDER_END_DATE', 'DESC');
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if (!empty($contactInf) && !empty($companyNumber)) {
|
|
if (!empty($contactInf) && !empty($companyNumber)) {
|
|
|
$builder->where('I.CONTACT_INF', $contactInf)
|
|
$builder->where('I.CONTACT_INF', $contactInf)
|
|
|
- ->where('I.COMPANY_NUMBER', $companyNumber);
|
|
|
|
|
|
|
+ ->where('I.COMPANY_NUMBER', $companyNumber);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
$items = $builder->get()->getResultArray();
|
|
$items = $builder->get()->getResultArray();
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
return $this->respond([
|
|
return $this->respond([
|
|
|
'data' => $items,
|
|
'data' => $items,
|
|
|
'total' => count($items)
|
|
'total' => count($items)
|
|
@@ -219,84 +219,4 @@ class Dashboard extends ResourceController
|
|
|
], 500);
|
|
], 500);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- // 대시보드 전체 통계 요약
|
|
|
|
|
- public function summary()
|
|
|
|
|
- {
|
|
|
|
|
- // 한국 시간으로 설정
|
|
|
|
|
- date_default_timezone_set('Asia/Seoul');
|
|
|
|
|
-
|
|
|
|
|
- $db = \Config\Database::connect();
|
|
|
|
|
- $request = $this->request->getJSON(true);
|
|
|
|
|
-
|
|
|
|
|
- $companyNumber = isset($request['COMPANY_NUMBER']) ? $request['COMPANY_NUMBER'] : null;
|
|
|
|
|
- $memberType = isset($request['MEMBER_TYPE']) ? $request['MEMBER_TYPE'] : null;
|
|
|
|
|
- $memberSeq = isset($request['MEMBER_SEQ']) ? $request['MEMBER_SEQ'] : null;
|
|
|
|
|
-
|
|
|
|
|
- try {
|
|
|
|
|
- $today = date('Y-m-d');
|
|
|
|
|
- $weekAgo = date('Y-m-d', strtotime('-7 days'));
|
|
|
|
|
-
|
|
|
|
|
- // 기본 조건 설정
|
|
|
|
|
- $whereConditions = ['I.DEL_YN' => 'N'];
|
|
|
|
|
-
|
|
|
|
|
- if ($memberType === 'VENDOR' && !empty($companyNumber)) {
|
|
|
|
|
- $whereConditions['I.COMPANY_NUMBER'] = $companyNumber;
|
|
|
|
|
- } elseif ($memberType === 'BRAND' && !empty($memberSeq)) {
|
|
|
|
|
- $whereConditions['I.CONTACT_BRD'] = $memberSeq;
|
|
|
|
|
- } elseif ($memberType === 'INFLUENCER' && !empty($memberSeq)) {
|
|
|
|
|
- $whereConditions['I.CONTACT_INF'] = $memberSeq;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 최근 7일 주문 수
|
|
|
|
|
- $recentOrdersCount = $db->table('ITEM_ORDER_LIST D')
|
|
|
|
|
- ->join('ITEM_LIST I', 'D.ITEM_SEQ = I.SEQ', 'inner')
|
|
|
|
|
- ->where('I.DEL_YN', 'N')
|
|
|
|
|
- ->where('D.REGDATE >=', $weekAgo . ' 00:00:00')
|
|
|
|
|
- ->where($whereConditions)
|
|
|
|
|
- ->countAllResults();
|
|
|
|
|
-
|
|
|
|
|
- // 진행중인 공동구매 수
|
|
|
|
|
- $activeItemsCount = $db->table('ITEM_LIST I')
|
|
|
|
|
- ->where('I.STATUS', 0)
|
|
|
|
|
- ->where('I.SHOW_YN', 'Y')
|
|
|
|
|
- ->where('I.TYPE', 'GROUP_BUY')
|
|
|
|
|
- ->where('I.ORDER_END_DATE >=', $today)
|
|
|
|
|
- ->where($whereConditions)
|
|
|
|
|
- ->countAllResults();
|
|
|
|
|
-
|
|
|
|
|
- // 총 주문 건수
|
|
|
|
|
- $totalSalesCount = $db->table('ITEM_ORDER_LIST D')
|
|
|
|
|
- ->join('ITEM_LIST I', 'D.ITEM_SEQ = I.SEQ', 'inner')
|
|
|
|
|
- ->where('I.DEL_YN', 'N')
|
|
|
|
|
- ->where($whereConditions)
|
|
|
|
|
- ->countAllResults();
|
|
|
|
|
-
|
|
|
|
|
- // 활성 인플루언서 수 (주문이 있는 인플루언서)
|
|
|
|
|
- $activeInfluencersCount = $db->table('ITEM_ORDER_LIST D')
|
|
|
|
|
- ->select('I.CONTACT_INF')
|
|
|
|
|
- ->join('ITEM_LIST I', 'D.ITEM_SEQ = I.SEQ', 'inner')
|
|
|
|
|
- ->where('I.DEL_YN', 'N')
|
|
|
|
|
- ->where('I.CONTACT_INF >', 0)
|
|
|
|
|
- ->where($whereConditions)
|
|
|
|
|
- ->distinct()
|
|
|
|
|
- ->countAllResults();
|
|
|
|
|
-
|
|
|
|
|
- $summary = [
|
|
|
|
|
- 'recent_orders_count' => $recentOrdersCount,
|
|
|
|
|
- 'active_items_count' => $activeItemsCount,
|
|
|
|
|
- 'total_sales_count' => $totalSalesCount,
|
|
|
|
|
- 'active_influencers_count' => $activeInfluencersCount
|
|
|
|
|
- ];
|
|
|
|
|
-
|
|
|
|
|
- return $this->respond($summary, 200);
|
|
|
|
|
- } catch (\Exception $e) {
|
|
|
|
|
- return $this->respond([
|
|
|
|
|
- 'status' => 'fail',
|
|
|
|
|
- 'message' => 'DB 오류: ' . $e->getMessage()
|
|
|
|
|
- ], 500);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
}
|
|
}
|