"refactor(views): route commission/payment config views through gvsdsdk
- commission rule/rate-table/event endpoints use CommissionEngine - payment gateway config list/detail/save/delete use PaymentManager - remove unused model imports"
This commit is contained in:
1 parent
2d882d521a
commit
7d578f82a4
3 files changed
+30
-55
No files matched your search
@@ -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))
|
||||
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))
|
||||
@@ -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} 网关配置'})
|
||||
@@ -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='配置已禁用'))
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user