Routes2.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. <?php
  2. use CodeIgniter\Router\RouteCollection;
  3. /**
  4. * @var RouteCollection $routes
  5. */
  6. // =============================================================================
  7. // Routes2.php - 파트너십 전용 라우팅 시스템 (완전 독립)
  8. // 기존 Routes.php와 별개로 동작하는 파트너십 전용 라우팅
  9. // =============================================================================
  10. $routes->group('api', function($routes) {
  11. // =============================================================================
  12. // 벤더사-인플루언서 파트너십 관리 API (완전 재설계)
  13. // =============================================================================
  14. $routes->group('vendor-influencer', function($routes) {
  15. // 벤더사용 API
  16. $routes->post('requests', 'PartnershipController::getInfluencerRequests', [
  17. 'as' => 'partnership.requests',
  18. 'filter' => 'cors'
  19. ]);
  20. $routes->post('approve', 'PartnershipController::processInfluencerRequest', [
  21. 'as' => 'partnership.approve',
  22. 'filter' => 'cors'
  23. ]);
  24. $routes->post('terminate', 'PartnershipController::terminatePartnership', [
  25. 'as' => 'partnership.terminate',
  26. 'filter' => 'cors'
  27. ]);
  28. // 인플루언서용 API
  29. $routes->post('search-vendors', 'PartnershipController::searchVendorsForInfluencer', [
  30. 'as' => 'partnership.search_vendors',
  31. 'filter' => 'cors'
  32. ]);
  33. $routes->post('create-request', 'PartnershipController::createPartnershipRequest', [
  34. 'as' => 'partnership.create_request',
  35. 'filter' => 'cors'
  36. ]);
  37. $routes->post('reapply-request', 'PartnershipController::createReapplyRequest', [
  38. 'as' => 'partnership.reapply_request',
  39. 'filter' => 'cors'
  40. ]);
  41. // 공용 API
  42. $routes->post('list', 'PartnershipController::getPartnershipList', [
  43. 'as' => 'partnership.list',
  44. 'filter' => 'cors'
  45. ]);
  46. $routes->post('detail/(:num)', 'PartnershipController::getPartnershipDetail/$1', [
  47. 'as' => 'partnership.detail',
  48. 'filter' => 'cors'
  49. ]);
  50. $routes->post('history/(:num)', 'PartnershipController::getPartnershipHistory/$1', [
  51. 'as' => 'partnership.history',
  52. 'filter' => 'cors'
  53. ]);
  54. $routes->post('stats/(:num)', 'PartnershipController::getPartnershipStats/$1', [
  55. 'as' => 'partnership.stats',
  56. 'filter' => 'cors'
  57. ]);
  58. // 관리용 API (개발/디버깅)
  59. $routes->get('debug/partnership/(:num)', 'PartnershipController::debugPartnership/$1', [
  60. 'as' => 'partnership.debug',
  61. 'filter' => 'cors'
  62. ]);
  63. $routes->get('debug/stats/(:num)', 'PartnershipController::getPartnershipStats/$1', [
  64. 'as' => 'partnership.debug_stats',
  65. 'filter' => 'cors'
  66. ]);
  67. $routes->get('debug/all', 'PartnershipController::debugAllPartnerships', [
  68. 'as' => 'partnership.debug_all',
  69. 'filter' => 'cors'
  70. ]);
  71. });
  72. // =============================================================================
  73. // 파트너십 대시보드 API (향후 확장)
  74. // =============================================================================
  75. $routes->group('partnership-dashboard', function($routes) {
  76. $routes->post('vendor/(:num)', 'PartnershipDashboardController::getVendorDashboard/$1', [
  77. 'as' => 'partnership_dashboard.vendor',
  78. 'filter' => 'cors'
  79. ]);
  80. $routes->post('influencer/(:num)', 'PartnershipDashboardController::getInfluencerDashboard/$1', [
  81. 'as' => 'partnership_dashboard.influencer',
  82. 'filter' => 'cors'
  83. ]);
  84. $routes->post('analytics', 'PartnershipDashboardController::getAnalytics', [
  85. 'as' => 'partnership_dashboard.analytics',
  86. 'filter' => 'cors'
  87. ]);
  88. });
  89. // =============================================================================
  90. // 파트너십 알림 API (향후 확장)
  91. // =============================================================================
  92. $routes->group('partnership-notifications', function($routes) {
  93. $routes->post('send', 'PartnershipNotificationController::sendNotification', [
  94. 'as' => 'partnership_notifications.send',
  95. 'filter' => 'cors'
  96. ]);
  97. $routes->post('list/(:num)', 'PartnershipNotificationController::getNotifications/$1', [
  98. 'as' => 'partnership_notifications.list',
  99. 'filter' => 'cors'
  100. ]);
  101. $routes->post('mark-read', 'PartnershipNotificationController::markAsRead', [
  102. 'as' => 'partnership_notifications.mark_read',
  103. 'filter' => 'cors'
  104. ]);
  105. });
  106. });
  107. // =============================================================================
  108. // 배송 관리 라우트 (api 그룹 외부)
  109. // =============================================================================
  110. $routes->post('deli/updateDeliveryInfo', 'Deli::updateDeliveryInfo');
  111. $routes->post('deli/shipping', 'Deli::getShippingList');
  112. $routes->post('deli/delivered', 'Deli::getDeliveredList');
  113. $routes->post('deli/markDelivered', 'Deli::markAsDelivered');
  114. $routes->post('deli/markSettled', 'Deli::markAsSettled');
  115. $routes->post('deli/settlement', 'Deli::getSettlementList');
  116. $routes->post('deli/pendingOrdersForVendor', 'Deli::getPendingOrdersForVendor');
  117. $routes->post('deli/updateStatus', 'Deli::updateStatus');
  118. $routes->post('deli/debugOrderData', 'Deli::debugOrderData');
  119. $routes->post('deli/shippingDebug', 'Deli::getShippingListDebug');
  120. // =============================================================================
  121. // 파트너십 전용 웹 라우팅 (향후 확장)
  122. // =============================================================================
  123. $routes->group('partnership', function($routes) {
  124. // 파트너십 전용 대시보드 페이지 (향후 구현)
  125. $routes->get('dashboard/vendor/(:num)', 'PartnershipWebController::vendorDashboard/$1', [
  126. 'as' => 'partnership_web.vendor_dashboard'
  127. ]);
  128. $routes->get('dashboard/influencer/(:num)', 'PartnershipWebController::influencerDashboard/$1', [
  129. 'as' => 'partnership_web.influencer_dashboard'
  130. ]);
  131. $routes->get('analytics', 'PartnershipWebController::analytics', [
  132. 'as' => 'partnership_web.analytics'
  133. ]);
  134. // 파트너십 관리 페이지
  135. $routes->get('manage', 'PartnershipWebController::manage', [
  136. 'as' => 'partnership_web.manage'
  137. ]);
  138. $routes->get('settings', 'PartnershipWebController::settings', [
  139. 'as' => 'partnership_web.settings'
  140. ]);
  141. });
  142. // =============================================================================
  143. // 파트너십 시스템 헬스체크 및 문서
  144. // =============================================================================
  145. $routes->group('health', function($routes) {
  146. // 파트너십 시스템 헬스체크
  147. $routes->get('partnership', function() {
  148. return service('response')->setJSON([
  149. 'status' => 'OK',
  150. 'message' => 'Partnership System (Routes2.php) is healthy',
  151. 'timestamp' => date('Y-m-d H:i:s'),
  152. 'version' => '2.0',
  153. 'system' => 'Routes2.php - Independent Partnership System',
  154. 'api_endpoints' => [
  155. 'vendor_apis' => [
  156. 'POST /api/vendor-influencer/requests',
  157. 'POST /api/vendor-influencer/approve',
  158. 'POST /api/vendor-influencer/terminate'
  159. ],
  160. 'influencer_apis' => [
  161. 'POST /api/vendor-influencer/search-vendors',
  162. 'POST /api/vendor-influencer/create-request',
  163. 'POST /api/vendor-influencer/reapply-request'
  164. ],
  165. 'common_apis' => [
  166. 'POST /api/vendor-influencer/list',
  167. 'POST /api/vendor-influencer/detail/{id}',
  168. 'POST /api/vendor-influencer/history/{id}',
  169. 'POST /api/vendor-influencer/stats/{id}'
  170. ],
  171. 'debug_apis' => [
  172. 'GET /api/vendor-influencer/debug/partnership/{id}',
  173. 'GET /api/vendor-influencer/debug/stats/{id}',
  174. 'GET /api/vendor-influencer/debug/all'
  175. ]
  176. ],
  177. 'database' => [
  178. 'table' => 'VENDOR_INFLUENCER_PARTNERSHIP',
  179. 'model' => 'VendorInfluencerPartnershipModel',
  180. 'controller' => 'PartnershipController'
  181. ]
  182. ]);
  183. }, ['as' => 'health.partnership']);
  184. // 파트너십 API 문서
  185. $routes->get('partnership/docs', function() {
  186. return service('response')->setJSON([
  187. 'title' => 'Partnership API Documentation (Routes2.php)',
  188. 'description' => '벤더사-인플루언서 파트너십 관리 API 문서',
  189. 'version' => '2.0',
  190. 'base_url' => base_url('api/vendor-influencer'),
  191. 'authentication' => 'Bearer Token (JWT)',
  192. 'endpoints' => [
  193. [
  194. 'method' => 'POST',
  195. 'path' => '/requests',
  196. 'description' => '벤더사의 인플루언서 요청 목록 조회',
  197. 'parameters' => [
  198. 'vendorSeq' => 'integer (required)',
  199. 'status' => 'string (optional)',
  200. 'keyword' => 'string (optional)',
  201. 'page' => 'integer (optional)',
  202. 'size' => 'integer (optional)'
  203. ]
  204. ],
  205. [
  206. 'method' => 'POST',
  207. 'path' => '/approve',
  208. 'description' => '파트너십 승인/거부 처리',
  209. 'parameters' => [
  210. 'mappingSeq' => 'integer (required)',
  211. 'action' => 'string (required) - APPROVE|REJECT',
  212. 'processedBy' => 'integer (required)',
  213. 'responseMessage' => 'string (optional)'
  214. ]
  215. ],
  216. [
  217. 'method' => 'POST',
  218. 'path' => '/terminate',
  219. 'description' => '파트너십 해지 처리',
  220. 'parameters' => [
  221. 'mappingSeq' => 'integer (required)',
  222. 'terminatedBy' => 'integer (required)',
  223. 'terminateReason' => 'string (optional)'
  224. ]
  225. ],
  226. [
  227. 'method' => 'POST',
  228. 'path' => '/search-vendors',
  229. 'description' => '인플루언서의 벤더사 검색',
  230. 'parameters' => [
  231. 'influencerSeq' => 'integer (required)',
  232. 'keyword' => 'string (optional)',
  233. 'category' => 'string (optional)',
  234. 'page' => 'integer (optional)',
  235. 'size' => 'integer (optional)'
  236. ]
  237. ],
  238. [
  239. 'method' => 'POST',
  240. 'path' => '/create-request',
  241. 'description' => '파트너십 요청 생성',
  242. 'parameters' => [
  243. 'vendorSeq' => 'integer (required)',
  244. 'influencerSeq' => 'integer (required)',
  245. 'requestMessage' => 'string (optional)',
  246. 'commissionRate' => 'decimal (optional)',
  247. 'specialConditions' => 'string (optional)'
  248. ]
  249. ],
  250. [
  251. 'method' => 'POST',
  252. 'path' => '/reapply-request',
  253. 'description' => '재승인 요청 생성',
  254. 'parameters' => [
  255. 'vendorSeq' => 'integer (required)',
  256. 'influencerSeq' => 'integer (required)',
  257. 'requestMessage' => 'string (optional)',
  258. 'commissionRate' => 'decimal (optional)',
  259. 'specialConditions' => 'string (optional)'
  260. ]
  261. ]
  262. ]
  263. ]);
  264. }, ['as' => 'health.partnership_docs']);
  265. });
  266. // =============================================================================
  267. // Routes2.php 정보 및 관리
  268. // =============================================================================
  269. $routes->get('routes2', function() {
  270. return service('response')->setJSON([
  271. 'title' => 'Routes2.php - Independent Partnership Routing System',
  272. 'description' => '기존 Routes.php와 독립적으로 운영되는 파트너십 전용 라우팅 시스템',
  273. 'version' => '2.0',
  274. 'created' => '2024-12-22',
  275. 'features' => [
  276. '완전 독립적인 파트너십 라우팅',
  277. '기존 시스템과 충돌 없음',
  278. '확장 가능한 구조',
  279. '개발자 친화적 디버깅 도구',
  280. '자동 API 문서화'
  281. ],
  282. 'routes_count' => [
  283. 'api_routes' => 12,
  284. 'web_routes' => 5,
  285. 'health_routes' => 2,
  286. 'debug_routes' => 3
  287. ],
  288. 'health_check' => base_url('health/partnership'),
  289. 'api_docs' => base_url('health/partnership/docs'),
  290. 'status' => 'Active and Independent'
  291. ]);
  292. }, ['as' => 'routes2.info']);