115 lines
4.7 KiB
Python
115 lines
4.7 KiB
Python
from rest_framework import serializers
|
|
from gvsds.common.Serializer import PascalCaseSerializer, PascalCaseModelSerializer
|
|
from gvsds.apps.commission.models import (
|
|
CommissionEvent,
|
|
CommissionRule,
|
|
CommissionRecord,
|
|
RateTable,
|
|
RateEntry,
|
|
PreSettlement,
|
|
)
|
|
|
|
|
|
class RateEntrySerializer(PascalCaseModelSerializer):
|
|
class Meta:
|
|
model = RateEntry
|
|
fields = ['RateKey', 'RateLabel', 'RateValue', 'EntryStatus', 'CreateTime']
|
|
read_only_fields = ['CreateTime']
|
|
|
|
|
|
class RateTableSerializer(PascalCaseModelSerializer):
|
|
Entries = RateEntrySerializer(many=True, read_only=True)
|
|
|
|
class Meta:
|
|
model = RateTable
|
|
fields = ['RateTableUUID', 'TableCode', 'TableName', 'TableDescription', 'TableStatus', 'Entries', 'CreateTime']
|
|
read_only_fields = ['RateTableUUID', 'CreateTime']
|
|
|
|
|
|
class CommissionRuleSerializer(PascalCaseModelSerializer):
|
|
class Meta:
|
|
model = CommissionRule
|
|
fields = ['RuleUUID', 'EventType', 'RuleName', 'RuleDescription', 'ParticipantRules', 'MaxInviteLevel', 'RulePriority', 'RuleStatus', 'CreateTime']
|
|
read_only_fields = ['RuleUUID', 'CreateTime']
|
|
|
|
|
|
class CommissionEventSerializer(PascalCaseModelSerializer):
|
|
class Meta:
|
|
model = CommissionEvent
|
|
fields = ['EventUUID', 'EventType', 'EventKey', 'TotalAmount', 'SourceUserUUID', 'EventPayload', 'Participants', 'EventStatus', 'EventTime', 'CreateTime']
|
|
read_only_fields = ['EventUUID', 'CreateTime', 'EventTime']
|
|
|
|
|
|
class CommissionRecordSerializer(PascalCaseModelSerializer):
|
|
class Meta:
|
|
model = CommissionRecord
|
|
fields = ['RecordUUID', 'ParticipantID', 'ParticipantRole', 'SplitType', 'Amount', 'Status', 'TierIndex', 'RuleSnapshot', 'SettleTime', 'CreateTime']
|
|
read_only_fields = ['RecordUUID', 'CreateTime', 'SettleTime']
|
|
|
|
|
|
class DispatchRequestSerializer(PascalCaseSerializer):
|
|
EventType = serializers.CharField()
|
|
EventKey = serializers.CharField()
|
|
TotalAmount = serializers.DecimalField(max_digits=18, decimal_places=4)
|
|
SourceUserUUID = serializers.CharField(required=False, default='')
|
|
Participants = serializers.DictField(required=False, default=dict)
|
|
TierIndex = serializers.IntegerField(default=0)
|
|
Payload = serializers.DictField(required=False, default=dict)
|
|
AutoSettle = serializers.BooleanField(default=True)
|
|
|
|
|
|
class RuleCreateSerializer(PascalCaseSerializer):
|
|
EventType = serializers.CharField()
|
|
RuleName = serializers.CharField()
|
|
ParticipantRules = serializers.ListField()
|
|
RuleDescription = serializers.CharField(required=False, default='')
|
|
MaxInviteLevel = serializers.IntegerField(default=2)
|
|
RateTableUUID = serializers.CharField(required=False, default='')
|
|
RulePriority = serializers.IntegerField(default=0)
|
|
|
|
|
|
class RateTableCreateSerializer(PascalCaseSerializer):
|
|
TableCode = serializers.CharField()
|
|
TableName = serializers.CharField()
|
|
Entries = serializers.DictField()
|
|
TableDescription = serializers.CharField(required=False, default='')
|
|
|
|
|
|
class PreSettlementSerializer(PascalCaseModelSerializer):
|
|
class Meta:
|
|
model = PreSettlement
|
|
fields = ['SettlementUUID', 'EventKey', 'ExternalPlatform', 'ExternalOrderID', 'ParticipantID', 'ParticipantRole', 'Amount', 'OrderAmount', 'Status', 'ConfirmedBy', 'ConfirmDeadline', 'ConfirmedAt', 'CreateTime']
|
|
read_only_fields = ['SettlementUUID', 'CreateTime', 'ConfirmedAt']
|
|
|
|
|
|
class PreSettleRequestSerializer(PascalCaseSerializer):
|
|
EventKey = serializers.CharField()
|
|
ExternalPlatform = serializers.CharField()
|
|
ExternalOrderID = serializers.CharField()
|
|
ParticipantID = serializers.CharField()
|
|
Amount = serializers.DecimalField(max_digits=18, decimal_places=4)
|
|
OrderAmount = serializers.DecimalField(max_digits=18, decimal_places=4, default=0)
|
|
ParticipantRole = serializers.CharField(default='worker')
|
|
ConfirmDeadline = serializers.DateTimeField(required=False)
|
|
|
|
|
|
class PreSettleConfirmSerializer(PascalCaseSerializer):
|
|
EventKey = serializers.CharField()
|
|
ParticipantID = serializers.CharField(required=False, default='')
|
|
ConfirmedBy = serializers.CharField(required=False, default='')
|
|
|
|
|
|
class FeeCalcSerializer(PascalCaseSerializer):
|
|
TotalAmount = serializers.DecimalField(max_digits=18, decimal_places=4)
|
|
RateTableCode = serializers.CharField()
|
|
RateKey = serializers.CharField()
|
|
|
|
|
|
class InviteChainDispatchSerializer(PascalCaseSerializer):
|
|
EventType = serializers.CharField()
|
|
EventKey = serializers.CharField()
|
|
TotalAmount = serializers.DecimalField(max_digits=18, decimal_places=4)
|
|
SourceUserUUID = serializers.CharField()
|
|
InviteChain = serializers.ListField()
|
|
RuleName = serializers.CharField()
|
|
ParticipantRules = serializers.ListField() |