diff --git a/gvsds/apps/commission/views.py b/gvsds/apps/commission/views.py index 32ba9926..bbaebaf5 100644 --- a/gvsds/apps/commission/views.py +++ b/gvsds/apps/commission/views.py @@ -15,13 +15,7 @@ from gvsds.apps.commission.serializers import ( FeeCalcSerializer, InviteChainDispatchSerializer, ) -from gvsdsdk.commission.models import ( - CommissionEvent, - CommissionRule, - CommissionRecord, - RateTable, - PreSettlement, -) +from gvsdsdk.commission.models import CommissionEvent logger = logging.getLogger(__name__) @@ -45,10 +39,9 @@ class RuleConfigView(APIView): if not tenant: return Response(_err('缺少租户标识', 401), status=401) EventType = request.query_params.get('EventType', '') - qs = CommissionRule.objects.filter(TenantUUID=tenant, RuleStatus=1) - if EventType: - qs = qs.filter(EventType=EventType) - return Response(_ok(CommissionRuleSerializer(qs.order_by('-RulePriority'), many=True).data)) + engine = CommissionEngine(tenant) + qs = engine.ListRules(EventType or None) + return Response(_ok(CommissionRuleSerializer(qs, many=True).data)) def post(self, request): tenant = _get_tenant(request) @@ -74,9 +67,8 @@ class RuleConfigView(APIView): rule_uuid = request.data.get('RuleUUID') if not tenant or not rule_uuid: return Response(_err('缺少参数', 400), status=400) - CommissionRule.objects.filter( - TenantUUID=tenant, RuleUUID=rule_uuid, - ).update(RuleStatus=0) + engine = CommissionEngine(tenant) + engine.DisableRule(rule_uuid) return Response(_ok(msg='规则已禁用')) @@ -86,7 +78,8 @@ class RateTableView(APIView): tenant = _get_tenant(request) if not tenant: return Response(_err('缺少租户标识', 401), status=401) - tables = RateTable.objects.filter(TenantUUID=tenant, TableStatus=1) + engine = CommissionEngine(tenant) + tables = engine.ListRateTables() return Response(_ok(RateTableSerializer(tables, many=True).data)) def post(self, request): @@ -259,10 +252,9 @@ class EventListView(APIView): tenant = _get_tenant(request) if not tenant: return Response(_err('缺少租户标识', 401), status=401) - qs = CommissionEvent.objects.filter(TenantUUID=tenant) - EventType = request.query_params.get('EventType', '') - if EventType: - qs = qs.filter(EventType=EventType) - return Response(_ok(CommissionEventSerializer( - qs.order_by('-CreateTime')[:int(request.query_params.get('Limit', 50))], many=True, - ).data)) \ No newline at end of file + engine = CommissionEngine(tenant) + qs = engine.ListEvents( + event_type=request.query_params.get('EventType', '') or None, + limit=int(request.query_params.get('Limit', 50)), + ) + return Response(_ok(CommissionEventSerializer(qs, many=True).data)) \ No newline at end of file diff --git a/gvsds/apps/gerp/views/payment_config.py b/gvsds/apps/gerp/views/payment_config.py index 687793b3..fcbec7a7 100644 --- a/gvsds/apps/gerp/views/payment_config.py +++ b/gvsds/apps/gerp/views/payment_config.py @@ -16,7 +16,6 @@ from rest_framework.response import Response from . import ELTAuthenticatedAPIView from gvsds.apps.gerp.views.form_api import _is_admin, _get_current_context -from gvsdsdk.payment.models import PaymentGatewayConfig from gvsdsdk.payment.manager import PaymentManager logger = logging.getLogger(__name__) @@ -90,8 +89,8 @@ class PaymentConfigListView(ELTAuthenticatedAPIView): if not current_tenant_uuid: return Response({'code': 1, 'msg': '缺少租户上下文'}, status=400) - tenant_bytes = _to_uuid_bytes(current_tenant_uuid) - qs = PaymentGatewayConfig.objects.filter(TenantUUID=tenant_bytes).order_by('-ConfigDefault', 'Platform') + manager = PaymentManager(tenant_uuid=current_tenant_uuid) + qs = manager.ListConfigs() configs = [_mask_config(c) for c in qs] return Response({'code': 0, 'data': configs, 'total': len(configs)}) @@ -108,13 +107,9 @@ class PaymentConfigDetailView(ELTAuthenticatedAPIView): return Response({'code': 1, 'msg': 'ConfigUUID 格式无效'}, status=400) _, _, current_tenant_uuid = _get_current_context(request) - tenant_bytes = _to_uuid_bytes(current_tenant_uuid) - try: - config = PaymentGatewayConfig.objects.get( - ConfigUUID=config_uuid_bytes, - TenantUUID=tenant_bytes, - ) - except PaymentGatewayConfig.DoesNotExist: + manager = PaymentManager(tenant_uuid=current_tenant_uuid) + config = manager.GetConfigByUUID(config_uuid_bytes) + if config is None: return Response({'code': 404, 'msg': '配置不存在或无权访问'}, status=404) return Response({'code': 0, 'data': _mask_config(config)}) @@ -155,7 +150,6 @@ class PaymentConfigSaveView(ELTAuthenticatedAPIView): if not platform: return Response({'code': 1, 'msg': '缺少 Platform 参数'}, status=400) - tenant_bytes = _to_uuid_bytes(current_tenant_uuid) manager = PaymentManager(tenant_uuid=current_tenant_uuid) # 提取明文密钥('***' 或空表示保留原值) @@ -174,10 +168,7 @@ class PaymentConfigSaveView(ELTAuthenticatedAPIView): if config_uuid_str: config_uuid_bytes = _to_uuid_bytes(config_uuid_str) if config_uuid_bytes: - existing = PaymentGatewayConfig.objects.filter( - ConfigUUID=config_uuid_bytes, - TenantUUID=tenant_bytes, - ).first() + existing = manager.GetConfigByUUID(config_uuid_bytes) if existing: # 更新模式:使用 PaymentManager.ConfigureGateway 更新(保留原密钥若传入 None) @@ -205,8 +196,7 @@ class PaymentConfigSaveView(ELTAuthenticatedAPIView): ) # 更新状态 if 'ConfigStatus' in data: - config.ConfigStatus = int(data.get('ConfigStatus')) - config.save(update_fields=['ConfigStatus']) + manager.SetConfigStatus(config.ConfigUUID, int(data.get('ConfigStatus'))) msg = '更新成功' else: # 新增模式 @@ -225,8 +215,7 @@ class PaymentConfigSaveView(ELTAuthenticatedAPIView): set_default=bool(data.get('ConfigDefault')), ) if 'ConfigStatus' in data: - config.ConfigStatus = int(data.get('ConfigStatus')) - config.save(update_fields=['ConfigStatus']) + manager.SetConfigStatus(config.ConfigUUID, int(data.get('ConfigStatus'))) msg = '创建成功' except Exception as e: logger.exception('[PaymentConfigSave] 保存支付网关配置失败') @@ -251,17 +240,13 @@ class PaymentConfigDeleteView(ELTAuthenticatedAPIView): return Response({'code': 1, 'msg': 'ConfigUUID 格式无效'}, status=400) _, _, current_tenant_uuid = _get_current_context(request) - tenant_bytes = _to_uuid_bytes(current_tenant_uuid) - - try: - config = PaymentGatewayConfig.objects.get( - ConfigUUID=config_uuid_bytes, - TenantUUID=tenant_bytes, - ) - platform = config.Platform - config.delete() - except PaymentGatewayConfig.DoesNotExist: + manager = PaymentManager(tenant_uuid=current_tenant_uuid) + config = manager.GetConfigByUUID(config_uuid_bytes) + if config is None: return Response({'code': 404, 'msg': '配置不存在或无权访问'}, status=404) + platform = config.Platform + manager.DeleteConfig(config.ConfigUUID) + logger.info('[PaymentConfigDelete] 删除支付网关配置: platform=%s tenant=%s', platform, current_tenant_uuid) return Response({'code': 0, 'msg': f'已删除 {platform} 网关配置'}) diff --git a/gvsds/apps/payment/views.py b/gvsds/apps/payment/views.py index 16f7f454..ed47e3dd 100644 --- a/gvsds/apps/payment/views.py +++ b/gvsds/apps/payment/views.py @@ -67,10 +67,8 @@ class GatewayConfigView(APIView): platform = request.data.get('Platform') if not tenant or not platform: return Response(_err('缺少租户或平台', 400), status=400) - from gvsds.apps.payment.models import PaymentGatewayConfig - PaymentGatewayConfig.objects.filter( - TenantUUID=tenant, Platform=platform, - ).update(ConfigStatus=0, UpdateTime=None) + manager = PaymentManager(tenant) + manager.DisableConfig(platform) return Response(_ok(msg='配置已禁用'))