🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
736 lines
28 KiB
PHP
736 lines
28 KiB
PHP
<?php
|
|
header('Content-Type: application/json');
|
|
header('Access-Control-Allow-Origin: *');
|
|
|
|
// 역할 파라미터 받기
|
|
$role = isset($_GET['role']) ? $_GET['role'] : '1차영업담당';
|
|
|
|
// 역할별 Mock Data
|
|
$roleData = [
|
|
'1차영업담당' => [
|
|
'sales_records' => [
|
|
[
|
|
"id" => "sale_001",
|
|
"customer_name" => "대박 식당",
|
|
"program_id" => "prog_pro",
|
|
"contract_date" => "2024-10-15",
|
|
"duration_months" => 84,
|
|
"join_fee" => 2000000,
|
|
"subscription_fee" => 100000,
|
|
"total_amount" => 2000000,
|
|
"status" => "Active",
|
|
"dates" => [
|
|
"contract" => "2024-10-15",
|
|
"join_fee" => "2024-10-16",
|
|
"service_start" => "2024-11-01",
|
|
"subscription_fee" => "2024-11-25",
|
|
"product_modified" => "2024-10-15"
|
|
],
|
|
"history" => [
|
|
[
|
|
"date" => "2024-10-15",
|
|
"type" => "New Contract",
|
|
"program_id" => "prog_pro",
|
|
"description" => "Initial contract signed (Pro Plan)"
|
|
]
|
|
]
|
|
],
|
|
[
|
|
"id" => "sale_002",
|
|
"customer_name" => "강남 카페",
|
|
"program_id" => "prog_premium",
|
|
"contract_date" => "2024-11-05",
|
|
"duration_months" => 84,
|
|
"join_fee" => 3000000,
|
|
"subscription_fee" => 150000,
|
|
"total_amount" => 3000000,
|
|
"status" => "Active",
|
|
"dates" => [
|
|
"contract" => "2024-11-05",
|
|
"join_fee" => "2024-11-06",
|
|
"service_start" => "2024-12-01",
|
|
"subscription_fee" => "2024-12-25",
|
|
"product_modified" => "2024-11-05"
|
|
],
|
|
"history" => [
|
|
[
|
|
"date" => "2024-11-05",
|
|
"type" => "New Contract",
|
|
"program_id" => "prog_premium",
|
|
"description" => "Initial contract signed (Premium Plan)"
|
|
]
|
|
]
|
|
],
|
|
[
|
|
"id" => "sale_003",
|
|
"customer_name" => "성수 팩토리",
|
|
"program_id" => "prog_basic",
|
|
"contract_date" => "2024-11-20",
|
|
"duration_months" => 84,
|
|
"join_fee" => 1000000,
|
|
"subscription_fee" => 50000,
|
|
"total_amount" => 1000000,
|
|
"status" => "Pending",
|
|
"dates" => [
|
|
"contract" => "2024-11-20",
|
|
"join_fee" => null,
|
|
"service_start" => null,
|
|
"subscription_fee" => null,
|
|
"product_modified" => "2024-11-20"
|
|
],
|
|
"history" => [
|
|
[
|
|
"date" => "2024-11-20",
|
|
"type" => "New Contract",
|
|
"program_id" => "prog_basic",
|
|
"description" => "Contract drafted (Basic Plan)"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
'current_user' => [
|
|
"id" => "user_A",
|
|
"name" => "김관리 팀장",
|
|
"role" => "1차영업담당",
|
|
"sub_managers" => [
|
|
[
|
|
"id" => "user_B",
|
|
"name" => "이하위 대리",
|
|
"role" => "Sub-Manager",
|
|
"total_sales" => 50000000,
|
|
"active_contracts" => 5,
|
|
"performance_grade" => "A"
|
|
],
|
|
[
|
|
"id" => "user_C",
|
|
"name" => "박신입 사원",
|
|
"role" => "Seller",
|
|
"total_sales" => 12000000,
|
|
"active_contracts" => 2,
|
|
"performance_grade" => "B"
|
|
],
|
|
[
|
|
"id" => "user_D",
|
|
"name" => "최열정 인턴",
|
|
"role" => "Seller",
|
|
"total_sales" => 0,
|
|
"active_contracts" => 0,
|
|
"performance_grade" => "C"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
'운영자' => [
|
|
'sales_records' => [
|
|
[
|
|
"id" => "sale_001",
|
|
"customer_name" => "대박 식당",
|
|
"program_id" => "prog_pro",
|
|
"contract_date" => "2024-10-15",
|
|
"duration_months" => 84,
|
|
"join_fee" => 2000000,
|
|
"subscription_fee" => 100000,
|
|
"total_amount" => 2000000,
|
|
"status" => "Active",
|
|
"dates" => [
|
|
"contract" => "2024-10-15",
|
|
"join_fee" => "2024-10-16",
|
|
"service_start" => "2024-11-01",
|
|
"subscription_fee" => "2024-11-25",
|
|
"product_modified" => "2024-10-15"
|
|
],
|
|
"history" => [
|
|
[
|
|
"date" => "2024-10-15",
|
|
"type" => "New Contract",
|
|
"program_id" => "prog_pro",
|
|
"description" => "Initial contract signed (Pro Plan)"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
'current_user' => [
|
|
"id" => "user_admin",
|
|
"name" => "운영자",
|
|
"role" => "운영자",
|
|
"sub_managers" => []
|
|
]
|
|
],
|
|
'영업관리' => [
|
|
'sales_records' => [
|
|
[
|
|
"id" => "sale_201",
|
|
"customer_name" => "서초 IT센터",
|
|
"program_id" => "prog_pro",
|
|
"contract_date" => "2024-09-10",
|
|
"duration_months" => 84,
|
|
"join_fee" => 2000000,
|
|
"subscription_fee" => 100000,
|
|
"total_amount" => 2000000,
|
|
"status" => "Active",
|
|
"dates" => [
|
|
"contract" => "2024-09-10",
|
|
"join_fee" => "2024-09-11",
|
|
"service_start" => "2024-10-01",
|
|
"subscription_fee" => "2024-10-25",
|
|
"product_modified" => "2024-09-10"
|
|
],
|
|
"history" => [
|
|
[
|
|
"date" => "2024-09-10",
|
|
"type" => "New Contract",
|
|
"program_id" => "prog_pro",
|
|
"description" => "Initial contract signed (Pro Plan)"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
'current_user' => [
|
|
"id" => "user_sales_admin",
|
|
"name" => "영업파트너",
|
|
"role" => "영업관리",
|
|
"sub_managers" => [
|
|
[
|
|
"id" => "user_2B",
|
|
"name" => "한성실 대리",
|
|
"role" => "Sub-Manager",
|
|
"total_sales" => 35000000,
|
|
"active_contracts" => 4,
|
|
"performance_grade" => "A"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
'매니저' => [
|
|
'sales_records' => [
|
|
[
|
|
"id" => "sale_301",
|
|
"customer_name" => "잠실 마트",
|
|
"program_id" => "prog_basic",
|
|
"contract_date" => "2024-08-15",
|
|
"duration_months" => 84,
|
|
"join_fee" => 1000000,
|
|
"subscription_fee" => 50000,
|
|
"total_amount" => 1000000,
|
|
"status" => "Active",
|
|
"dates" => [
|
|
"contract" => "2024-08-15",
|
|
"join_fee" => "2024-08-16",
|
|
"service_start" => "2024-09-01",
|
|
"subscription_fee" => "2024-09-25",
|
|
"product_modified" => "2024-08-15"
|
|
],
|
|
"history" => [
|
|
[
|
|
"date" => "2024-08-15",
|
|
"type" => "New Contract",
|
|
"program_id" => "prog_basic",
|
|
"description" => "Initial contract signed (Basic Plan)"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
'current_user' => [
|
|
"id" => "user_manager",
|
|
"name" => "매니저",
|
|
"role" => "매니저",
|
|
"sub_managers" => []
|
|
]
|
|
],
|
|
'2차영업담당' => [
|
|
'sales_records' => [
|
|
[
|
|
"id" => "sale_201",
|
|
"customer_name" => "서초 IT센터",
|
|
"program_id" => "prog_pro",
|
|
"contract_date" => "2024-09-10",
|
|
"duration_months" => 84,
|
|
"join_fee" => 2000000,
|
|
"subscription_fee" => 100000,
|
|
"total_amount" => 2000000,
|
|
"status" => "Active",
|
|
"dates" => [
|
|
"contract" => "2024-09-10",
|
|
"join_fee" => "2024-09-11",
|
|
"service_start" => "2024-10-01",
|
|
"subscription_fee" => "2024-10-25",
|
|
"product_modified" => "2024-09-10"
|
|
],
|
|
"history" => [
|
|
[
|
|
"date" => "2024-09-10",
|
|
"type" => "New Contract",
|
|
"program_id" => "prog_pro",
|
|
"description" => "Initial contract signed (Pro Plan)"
|
|
]
|
|
]
|
|
],
|
|
[
|
|
"id" => "sale_202",
|
|
"customer_name" => "홍대 레스토랑",
|
|
"program_id" => "prog_basic",
|
|
"contract_date" => "2024-10-22",
|
|
"duration_months" => 84,
|
|
"join_fee" => 1000000,
|
|
"subscription_fee" => 50000,
|
|
"total_amount" => 1000000,
|
|
"status" => "Active",
|
|
"dates" => [
|
|
"contract" => "2024-10-22",
|
|
"join_fee" => "2024-10-23",
|
|
"service_start" => "2024-11-01",
|
|
"subscription_fee" => "2024-11-25",
|
|
"product_modified" => "2024-10-22"
|
|
],
|
|
"history" => [
|
|
[
|
|
"date" => "2024-10-22",
|
|
"type" => "New Contract",
|
|
"program_id" => "prog_basic",
|
|
"description" => "Initial contract signed (Basic Plan)"
|
|
]
|
|
]
|
|
],
|
|
[
|
|
"id" => "sale_203",
|
|
"customer_name" => "판교 스타트업",
|
|
"program_id" => "prog_premium",
|
|
"contract_date" => "2024-11-18",
|
|
"duration_months" => 84,
|
|
"join_fee" => 3000000,
|
|
"subscription_fee" => 150000,
|
|
"total_amount" => 3000000,
|
|
"status" => "Active",
|
|
"dates" => [
|
|
"contract" => "2024-11-18",
|
|
"join_fee" => "2024-11-19",
|
|
"service_start" => "2024-12-01",
|
|
"subscription_fee" => "2024-12-25",
|
|
"product_modified" => "2024-11-18"
|
|
],
|
|
"history" => [
|
|
[
|
|
"date" => "2024-11-18",
|
|
"type" => "New Contract",
|
|
"program_id" => "prog_premium",
|
|
"description" => "Initial contract signed (Premium Plan)"
|
|
]
|
|
]
|
|
],
|
|
[
|
|
"id" => "sale_204",
|
|
"customer_name" => "이태원 바",
|
|
"program_id" => "prog_basic",
|
|
"contract_date" => "2024-11-25",
|
|
"duration_months" => 84,
|
|
"join_fee" => 1000000,
|
|
"subscription_fee" => 50000,
|
|
"total_amount" => 1000000,
|
|
"status" => "Pending",
|
|
"dates" => [
|
|
"contract" => "2024-11-25",
|
|
"join_fee" => null,
|
|
"service_start" => null,
|
|
"subscription_fee" => null,
|
|
"product_modified" => "2024-11-25"
|
|
],
|
|
"history" => [
|
|
[
|
|
"date" => "2024-11-25",
|
|
"type" => "New Contract",
|
|
"program_id" => "prog_basic",
|
|
"description" => "Contract drafted (Basic Plan)"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
'current_user' => [
|
|
"id" => "user_2A",
|
|
"name" => "정영업 과장",
|
|
"role" => "2차영업담당",
|
|
"sub_managers" => [
|
|
[
|
|
"id" => "user_2B",
|
|
"name" => "한성실 대리",
|
|
"role" => "Sub-Manager",
|
|
"total_sales" => 35000000,
|
|
"active_contracts" => 4,
|
|
"performance_grade" => "A"
|
|
],
|
|
[
|
|
"id" => "user_2C",
|
|
"name" => "윤열심 주임",
|
|
"role" => "Seller",
|
|
"total_sales" => 18000000,
|
|
"active_contracts" => 3,
|
|
"performance_grade" => "B"
|
|
],
|
|
[
|
|
"id" => "user_2D",
|
|
"name" => "강신규 사원",
|
|
"role" => "Seller",
|
|
"total_sales" => 5000000,
|
|
"active_contracts" => 1,
|
|
"performance_grade" => "C"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
'3차영업담당' => [
|
|
'sales_records' => [
|
|
[
|
|
"id" => "sale_301",
|
|
"customer_name" => "잠실 마트",
|
|
"program_id" => "prog_basic",
|
|
"contract_date" => "2024-08-15",
|
|
"duration_months" => 84,
|
|
"join_fee" => 1000000,
|
|
"subscription_fee" => 50000,
|
|
"total_amount" => 1000000,
|
|
"status" => "Active",
|
|
"dates" => [
|
|
"contract" => "2024-08-15",
|
|
"join_fee" => "2024-08-16",
|
|
"service_start" => "2024-09-01",
|
|
"subscription_fee" => "2024-09-25",
|
|
"product_modified" => "2024-08-15"
|
|
],
|
|
"history" => [
|
|
[
|
|
"date" => "2024-08-15",
|
|
"type" => "New Contract",
|
|
"program_id" => "prog_basic",
|
|
"description" => "Initial contract signed (Basic Plan)"
|
|
]
|
|
]
|
|
],
|
|
[
|
|
"id" => "sale_302",
|
|
"customer_name" => "송파 병원",
|
|
"program_id" => "prog_pro",
|
|
"contract_date" => "2024-10-08",
|
|
"duration_months" => 84,
|
|
"join_fee" => 2000000,
|
|
"subscription_fee" => 100000,
|
|
"total_amount" => 2000000,
|
|
"status" => "Active",
|
|
"dates" => [
|
|
"contract" => "2024-10-08",
|
|
"join_fee" => "2024-10-09",
|
|
"service_start" => "2024-11-01",
|
|
"subscription_fee" => "2024-11-25",
|
|
"product_modified" => "2024-10-08"
|
|
],
|
|
"history" => [
|
|
[
|
|
"date" => "2024-10-08",
|
|
"type" => "New Contract",
|
|
"program_id" => "prog_pro",
|
|
"description" => "Initial contract signed (Pro Plan)"
|
|
]
|
|
]
|
|
],
|
|
[
|
|
"id" => "sale_303",
|
|
"customer_name" => "강동 학원",
|
|
"program_id" => "prog_basic",
|
|
"contract_date" => "2024-11-12",
|
|
"duration_months" => 84,
|
|
"join_fee" => 1000000,
|
|
"subscription_fee" => 50000,
|
|
"total_amount" => 1000000,
|
|
"status" => "Active",
|
|
"dates" => [
|
|
"contract" => "2024-11-12",
|
|
"join_fee" => "2024-11-13",
|
|
"service_start" => "2024-12-01",
|
|
"subscription_fee" => "2024-12-25",
|
|
"product_modified" => "2024-11-12"
|
|
],
|
|
"history" => [
|
|
[
|
|
"date" => "2024-11-12",
|
|
"type" => "New Contract",
|
|
"program_id" => "prog_basic",
|
|
"description" => "Initial contract signed (Basic Plan)"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
'current_user' => [
|
|
"id" => "user_3A",
|
|
"name" => "오영업 대리",
|
|
"role" => "3차영업담당",
|
|
"sub_managers" => [
|
|
[
|
|
"id" => "user_3B",
|
|
"name" => "신성실 주임",
|
|
"role" => "Sub-Manager",
|
|
"total_sales" => 25000000,
|
|
"active_contracts" => 3,
|
|
"performance_grade" => "A"
|
|
],
|
|
[
|
|
"id" => "user_3C",
|
|
"name" => "조근면 사원",
|
|
"role" => "Seller",
|
|
"total_sales" => 8000000,
|
|
"active_contracts" => 2,
|
|
"performance_grade" => "B"
|
|
],
|
|
[
|
|
"id" => "user_3D",
|
|
"name" => "임신입 인턴",
|
|
"role" => "Seller",
|
|
"total_sales" => 2000000,
|
|
"active_contracts" => 1,
|
|
"performance_grade" => "C"
|
|
]
|
|
]
|
|
]
|
|
]
|
|
];
|
|
|
|
// 기본 데이터 구조
|
|
$response = [
|
|
"company_info" => [
|
|
"id" => "comp_001",
|
|
"name" => "건축자재(주)",
|
|
"logo_url" => "https://via.placeholder.com/150x50?text=Company+Logo", // Placeholder
|
|
"currency" => "KRW"
|
|
],
|
|
"sales_config" => [
|
|
"programs" => [
|
|
[
|
|
"id" => "prog_basic",
|
|
"name" => "Basic Plan",
|
|
"join_fee" => 1000000,
|
|
"subscription_fee" => 50000,
|
|
"commission_rates" => [
|
|
"seller" => ["join" => 0.2, "sub" => 0.5],
|
|
"manager" => ["join" => 0.05, "sub" => 0.3],
|
|
"educator" => ["join" => 0.03, "sub" => 0.2]
|
|
]
|
|
],
|
|
[
|
|
"id" => "prog_pro",
|
|
"name" => "Pro Plan",
|
|
"join_fee" => 2000000,
|
|
"subscription_fee" => 100000,
|
|
"commission_rates" => [
|
|
"seller" => ["join" => 0.2, "sub" => 0.5],
|
|
"manager" => ["join" => 0.05, "sub" => 0.3],
|
|
"educator" => ["join" => 0.03, "sub" => 0.2]
|
|
]
|
|
],
|
|
[
|
|
"id" => "prog_premium",
|
|
"name" => "Premium Plan",
|
|
"join_fee" => 3000000,
|
|
"subscription_fee" => 150000,
|
|
"commission_rates" => [
|
|
"seller" => ["join" => 0.2, "sub" => 0.5],
|
|
"manager" => ["join" => 0.05, "sub" => 0.3],
|
|
"educator" => ["join" => 0.03, "sub" => 0.2]
|
|
]
|
|
]
|
|
],
|
|
"default_contract_period" => 84,
|
|
"package_types" => [
|
|
[
|
|
"id" => "select_models",
|
|
"name" => "선택모델",
|
|
"type" => "checkbox",
|
|
"models" => [
|
|
[
|
|
"id" => "model_qr",
|
|
"name" => "QR코드",
|
|
"sub_name" => "설비관리/장비 점검",
|
|
"join_fee" => 10200000,
|
|
"subscription_fee" => 50000,
|
|
"commission_rates" => [
|
|
"seller" => ["join" => 0.2, "sub" => 0.5],
|
|
"manager" => ["join" => 0.05, "sub" => 0.3],
|
|
"educator" => ["join" => 0.03, "sub" => 0.2]
|
|
]
|
|
],
|
|
[
|
|
"id" => "model_photo",
|
|
"name" => "사진 - 출하",
|
|
"sub_name" => "사진 관리",
|
|
"join_fee" => 19200000,
|
|
"subscription_fee" => 100000,
|
|
"commission_rates" => [
|
|
"seller" => ["join" => 0.2, "sub" => 0.5],
|
|
"manager" => ["join" => 0.05, "sub" => 0.3],
|
|
"educator" => ["join" => 0.03, "sub" => 0.2]
|
|
]
|
|
],
|
|
[
|
|
"id" => "model_inspection",
|
|
"name" => "검사 / 토큰 적용",
|
|
"sub_name" => "계산서 발행",
|
|
"join_fee" => 10200000,
|
|
"subscription_fee" => 50000,
|
|
"commission_rates" => [
|
|
"seller" => ["join" => 0.2, "sub" => 0.5],
|
|
"manager" => ["join" => 0.05, "sub" => 0.3],
|
|
"educator" => ["join" => 0.03, "sub" => 0.2]
|
|
]
|
|
],
|
|
[
|
|
"id" => "model_account",
|
|
"name" => "이카운트 / 거래처대장",
|
|
"sub_name" => "서류관리",
|
|
"join_fee" => 19200000,
|
|
"subscription_fee" => 100000,
|
|
"commission_rates" => [
|
|
"seller" => ["join" => 0.2, "sub" => 0.5],
|
|
"manager" => ["join" => 0.05, "sub" => 0.3],
|
|
"educator" => ["join" => 0.03, "sub" => 0.2]
|
|
]
|
|
],
|
|
[
|
|
"id" => "model_iso",
|
|
"name" => "ISO, 인정서류 / 토큰 적용",
|
|
"sub_name" => "서류관리",
|
|
"join_fee" => 10200000,
|
|
"subscription_fee" => 50000,
|
|
"commission_rates" => [
|
|
"seller" => ["join" => 0.2, "sub" => 0.5],
|
|
"manager" => ["join" => 0.05, "sub" => 0.3],
|
|
"educator" => ["join" => 0.03, "sub" => 0.2]
|
|
]
|
|
],
|
|
[
|
|
"id" => "model_inventory",
|
|
"name" => "적정 재고 표기",
|
|
"sub_name" => "재고 관리",
|
|
"join_fee" => 19200000,
|
|
"subscription_fee" => 100000,
|
|
"commission_rates" => [
|
|
"seller" => ["join" => 0.2, "sub" => 0.5],
|
|
"manager" => ["join" => 0.05, "sub" => 0.3],
|
|
"educator" => ["join" => 0.03, "sub" => 0.2]
|
|
]
|
|
],
|
|
[
|
|
"id" => "model_manufacturing",
|
|
"name" => "제조 관리",
|
|
"sub_name" => "제작지시, 발주",
|
|
"join_fee" => 19200000,
|
|
"subscription_fee" => 100000,
|
|
"commission_rates" => [
|
|
"seller" => ["join" => 0.2, "sub" => 0.5],
|
|
"manager" => ["join" => 0.05, "sub" => 0.3],
|
|
"educator" => ["join" => 0.03, "sub" => 0.2]
|
|
]
|
|
]
|
|
]
|
|
],
|
|
[
|
|
"id" => "construction_management",
|
|
"name" => "공사관리",
|
|
"type" => "package",
|
|
"join_fee" => 40000000,
|
|
"subscription_fee" => 200000,
|
|
"commission_rates" => [
|
|
"seller" => ["join" => 0.25, "sub" => 0.5],
|
|
"manager" => ["join" => 0.05, "sub" => 0.3],
|
|
"educator" => ["join" => 0.03, "sub" => 0.2]
|
|
]
|
|
],
|
|
[
|
|
"id" => "process_government",
|
|
"name" => "공정/정부지원사업",
|
|
"type" => "package",
|
|
"join_fee" => 80000000,
|
|
"subscription_fee" => 400000,
|
|
"commission_rates" => [
|
|
"seller" => ["join" => 0.25, "sub" => 0.5],
|
|
"manager" => ["join" => 0.05, "sub" => 0.3],
|
|
"educator" => ["join" => 0.03, "sub" => 0.2]
|
|
]
|
|
]
|
|
]
|
|
],
|
|
"sales_records" => isset($roleData[$role]['sales_records']) ? $roleData[$role]['sales_records'] : [],
|
|
"current_user" => isset($roleData[$role]['current_user']) ? $roleData[$role]['current_user'] : [
|
|
"id" => "user_default",
|
|
"name" => "기본 사용자",
|
|
"role" => $role,
|
|
"sub_managers" => []
|
|
]
|
|
];
|
|
|
|
// DB에서 동적 모델 및 패키지 데이터 로드 시도 (package_pricing 테이블 사용)
|
|
require_once __DIR__ . '/../../lib/mydb.php';
|
|
try {
|
|
$pdo = db_connect();
|
|
// 테이블 존재 확인 및 데이터 조회
|
|
$check = $pdo->query("SHOW TABLES LIKE 'package_pricing'");
|
|
if ($check->rowCount() > 0) {
|
|
$stmt = $pdo->prepare("SELECT * FROM package_pricing WHERE is_active = 1 ORDER BY id ASC");
|
|
$stmt->execute();
|
|
$dbItems = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
if (!empty($dbItems)) {
|
|
$dynamicModels = [];
|
|
$dynamicPackages = [];
|
|
|
|
foreach ($dbItems as $row) {
|
|
// commission_rates JSON 파싱
|
|
$rates = json_decode($row['commission_rates'] ?? '{}', true);
|
|
if (empty($rates)) {
|
|
$rates = [
|
|
"seller" => ["join" => 0.2, "sub" => 0.5],
|
|
"manager" => ["join" => 0.05, "sub" => 0.3],
|
|
"educator" => ["join" => 0.03, "sub" => 0.2]
|
|
];
|
|
}
|
|
|
|
$item = [
|
|
"id" => $row['item_id'],
|
|
"name" => $row['item_name'],
|
|
"sub_name" => $row['sub_name'],
|
|
"join_fee" => (int)$row['join_fee'],
|
|
"subscription_fee" => (int)$row['subscription_fee'],
|
|
"total_amount" => (int)$row['total_amount'],
|
|
"discretion_allowed" => (bool)$row['allow_flexible_pricing'],
|
|
"commission_rates" => $rates
|
|
];
|
|
|
|
if ($row['item_type'] === 'model') {
|
|
$dynamicModels[] = $item;
|
|
} else if ($row['item_type'] === 'package') {
|
|
$item['type'] = 'package';
|
|
$dynamicPackages[] = $item;
|
|
}
|
|
}
|
|
|
|
// 새로운 package_types 구성
|
|
$newPackageTypes = [];
|
|
|
|
// 1. 선택 모델 추가
|
|
$newPackageTypes[] = [
|
|
"id" => "select_models",
|
|
"name" => "선택모델",
|
|
"type" => "checkbox",
|
|
"models" => $dynamicModels
|
|
];
|
|
|
|
// 2. 패키지 항목들 추가
|
|
foreach ($dynamicPackages as $pkg) {
|
|
$newPackageTypes[] = $pkg;
|
|
}
|
|
|
|
$response['sales_config']['package_types'] = $newPackageTypes;
|
|
}
|
|
}
|
|
} catch (Exception $e) {
|
|
// DB 연결 실패 시 기본 하드코딩 데이터 사용 (무시)
|
|
}
|
|
|
|
echo json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|
|
?>
|