1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- # coding=utf-8
- from rest_framework import serializers
- from utils.exceptions import CustomError
- from utils.serializersfield import BooleanCharField
- from apps.base import Formater
- from apps.coupon.models import Coupon, CouponItem
- class CouponSerializer(serializers.ModelSerializer):
- show_amount = serializers.SerializerMethodField()
- create_user_text = serializers.CharField(source='create_user.employee.name', read_only=True)
- date_type_text = serializers.CharField(source="get_date_type_display", read_only=True)
- create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
- def get_show_amount(self, obj):
- return Formater.formatAmountShow(obj.amount)
- class Meta:
- model = Coupon
- fields = '__all__'
- def validate(self, attrs):
- if 'amount' in attrs:
- attrs['amount'] = Formater.formatAmount(attrs['amount'])
- if attrs['validity_begin_time'] and attrs['validity_end_time'] and attrs['validity_begin_time'] > attrs['validity_end_time']:
- raise CustomError(u'无效的有效期开始/结束时间')
- if attrs['receive_begin_time'] and attrs['receive_end_time'] and attrs['receive_begin_time'] > attrs['receive_end_time']:
- raise CustomError(u'无效的领取开始/结束时间')
- return attrs
- def create(self, validated_data):
- user = self.context['request'].user
- validated_data['tenant'] = user.employee.tenant
- validated_data['create_user'] = user
- instance = super(CouponSerializer, self).create(validated_data)
- return instance
- def update(self, instance, validated_data):
- if instance.tenant != self.context['request'].user.employee.tenant:
- raise CustomError(u'禁止跨租户操作!')
- if instance.delete:
- raise CustomError(u'优惠券[%s]已经被删除,禁止操作' % instance.name)
- if instance.left_count > validated_data['total_count']:
- raise CustomError(u'总数量不能小于已领取数量!')
- instance = super(CouponSerializer, self).update(instance, validated_data)
- return instance
- class CouponItemSerializer(serializers.ModelSerializer):
- write_off_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
- write_off_user_text = serializers.CharField(source='write_off_user.employee.name', read_only=True)
- is_used_text = BooleanCharField(source='is_used', read_only=True)
- validity_begin_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
- validity_end_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
- create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
- customer_name = serializers.CharField(source='customer.name', read_only=True)
- customer_tel = serializers.CharField(source='customer.tel', read_only=True)
- coupon_name = serializers.CharField(source='coupon.name', read_only=True)
- amount = serializers.SerializerMethodField()
- def get_amount(self, obj):
- return Formater.formatAmountShow(obj.amount)
- class Meta:
- model = CouponItem
- fields = '__all__'
|