refactor(services): 重构服务模块结构,按功能分类移动文件

将服务文件按功能分类移动到对应子目录,包括财务、营销、订单等模块
更新相关路由和导入路径,修复文件引用错误
归档旧版任务文档,更新README和任务统计信息
This commit is contained in:
2026-03-23 15:41:50 +08:00
parent 2b86715c09
commit e59d7c6620
156 changed files with 14658 additions and 7774 deletions

View File

@@ -0,0 +1,28 @@
import { Router } from 'express';
import { AfterSalesController } from '../controllers/AfterSalesController';
import { requireTraceContext } from '../../core/guards/trace-context.guard';
import { requirePermission } from '../../core/guards/rbac.guard';
const router = Router();
router.post('/init-tables', requireTraceContext, requirePermission('admin'), AfterSalesController.initTables);
router.post('/', requireTraceContext, requirePermission('after_sales:write'), AfterSalesController.createRequest);
router.get('/', requireTraceContext, requirePermission('after_sales:read'), AfterSalesController.getRequests);
router.get('/:id', requireTraceContext, requirePermission('after_sales:read'), AfterSalesController.getRequestById);
router.post('/:id/approve', requireTraceContext, requirePermission('after_sales:write'), AfterSalesController.approveRequest);
router.post('/:id/close', requireTraceContext, requirePermission('after_sales:write'), AfterSalesController.closeRequest);
router.post('/refunds/:refundId/process', requireTraceContext, requirePermission('after_sales:write'), AfterSalesController.processRefund);
router.get('/refunds/:refundId', requireTraceContext, requirePermission('after_sales:read'), AfterSalesController.getRefundById);
router.post('/returns/:returnId/process', requireTraceContext, requirePermission('after_sales:write'), AfterSalesController.processReturn);
router.get('/returns/:returnId', requireTraceContext, requirePermission('after_sales:read'), AfterSalesController.getReturnById);
export default router;

View File

@@ -7,6 +7,7 @@ import { SovereignCreditPoolService } from '../../services/SovereignCreditPoolSe
import { SovereigntySettlementService } from '../../services/SovereigntySettlementService';
import { PricingController } from '../controllers/PricingController';
import { SettlementController } from '../controllers/SettlementController';
import { ReconciliationController } from '../controllers/ReconciliationController';
const router = Router();
@@ -131,4 +132,17 @@ router.get('/pool/active', requireTraceContext, requirePermission('finance:read'
}
});
/**
* [BE-F101] 资金对账闭环
*/
router.post('/reconciliation', requireTraceContext, requirePermission('finance:write'), ReconciliationController.createReconciliation);
router.get('/reconciliation', requireTraceContext, requirePermission('finance:read'), ReconciliationController.getReconciliations);
router.get('/reconciliation/:id', requireTraceContext, requirePermission('finance:read'), ReconciliationController.getReconciliationById);
router.post('/reconciliation/:id/exception', requireTraceContext, requirePermission('finance:write'), ReconciliationController.handleException);
router.post('/reconciliation/batch', requireTraceContext, requirePermission('finance:write'), ReconciliationController.batchReconciliation);
router.get('/reconciliation/summary', requireTraceContext, requirePermission('finance:read'), ReconciliationController.getReconciliationSummary);
router.post('/reconciliation/auto', requireTraceContext, requirePermission('finance:write'), ReconciliationController.autoReconciliation);
router.get('/reconciliation/export', requireTraceContext, requirePermission('finance:read'), ReconciliationController.exportReconciliationReport);
router.post('/reconciliation/init', requireTraceContext, requirePermission('finance:admin'), ReconciliationController.initReconciliationTable);
export default router;

View File

@@ -0,0 +1,22 @@
import { Router } from 'express';
import { OrderCentralController } from '../controllers/OrderCentralController';
import { requireTraceContext } from '../../core/guards/trace-context.guard';
import { requirePermission } from '../../core/guards/rbac.guard';
const router = Router();
router.post('/init-tables', requireTraceContext, requirePermission('admin'), OrderCentralController.initTables);
router.post('/platforms', requireTraceContext, requirePermission('order:config'), OrderCentralController.registerPlatform);
router.post('/collect', requireTraceContext, requirePermission('order:write'), OrderCentralController.collectOrders);
router.get('/orders', requireTraceContext, requirePermission('order:read'), OrderCentralController.getOrders);
router.get('/funnel-analysis', requireTraceContext, requirePermission('order:read'), OrderCentralController.getFunnelAnalysis);
router.get('/platform-stats', requireTraceContext, requirePermission('order:read'), OrderCentralController.getPlatformStats);
router.get('/collections', requireTraceContext, requirePermission('order:read'), OrderCentralController.getCollectionHistory);
export default router;

View File

@@ -0,0 +1,36 @@
import { Router } from 'express';
import { OrderFulfillmentController } from '../controllers/OrderFulfillmentController';
import { requireTraceContext } from '../../core/guards/trace-context.guard';
import { requirePermission } from '../../core/guards/rbac.guard';
const router = Router();
router.post('/init-tables', requireTraceContext, requirePermission('admin'), OrderFulfillmentController.initTables);
router.post('/pull', requireTraceContext, requirePermission('order:write'), OrderFulfillmentController.pullOrder);
router.get('/', requireTraceContext, requirePermission('order:read'), OrderFulfillmentController.getOrders);
router.get('/:id', requireTraceContext, requirePermission('order:read'), OrderFulfillmentController.getOrder);
router.post('/:id/review', requireTraceContext, requirePermission('order:write'), OrderFulfillmentController.reviewOrder);
router.post('/:id/allocate', requireTraceContext, requirePermission('order:write'), OrderFulfillmentController.allocateWarehouse);
router.post('/:id/prepare-shipment', requireTraceContext, requirePermission('order:write'), OrderFulfillmentController.prepareShipment);
router.post('/:id/ship', requireTraceContext, requirePermission('order:write'), OrderFulfillmentController.shipOrder);
router.post('/:id/confirm-delivery', requireTraceContext, requirePermission('order:write'), OrderFulfillmentController.confirmDelivery);
router.post('/:id/exception', requireTraceContext, requirePermission('order:write'), OrderFulfillmentController.markAsException);
router.post('/:id/cancel', requireTraceContext, requirePermission('order:write'), OrderFulfillmentController.cancelOrder);
router.post('/batch/review', requireTraceContext, requirePermission('order:write'), OrderFulfillmentController.batchReview);
router.post('/batch/allocate', requireTraceContext, requirePermission('order:write'), OrderFulfillmentController.batchAllocate);
router.post('/batch/ship', requireTraceContext, requirePermission('order:write'), OrderFulfillmentController.batchShip);
export default router;

View File

@@ -76,4 +76,11 @@ router.post('/batch', requireTraceContext, requirePermission('product:write'), P
router.post('/:productId/sync-inventory', requireTraceContext, requirePermission('product:write'), ProductController.syncInventory);
router.get('/:productId/sync-status', requireTraceContext, ProductController.getSyncStatus);
// [BE-P101] Product Collection APIs
router.post('/collection-tasks', requireTraceContext, requirePermission('product:write'), ProductController.createCollectionTask);
router.get('/collection-tasks', requireTraceContext, ProductController.getCollectionTasks);
router.post('/collection-tasks/batch', requireTraceContext, requirePermission('product:write'), ProductController.batchCreateCollectionTasks);
router.post('/collection-tasks/:taskId/execute', requireTraceContext, requirePermission('product:write'), ProductController.executeCollectionTask);
router.post('/collection-tasks/:taskId/retry', requireTraceContext, requirePermission('product:write'), ProductController.retryCollectionTask);
export default router;