class AdminOrderDetailSerializer(serializers.Serializer): """后台订单详情序列化器类""" product_id = serializers.IntegerField(label="商品id") product_name = serializers.CharField(label="商品名") product_cover_picture = serializers.CharField(label="商品封面图") quantity_net = FuncField(lambda value: round(float(value), 2), label="购买量") price_net = FuncField(lambda value: round(float(value), 2), label="单价") amount_net = FuncField(lambda value: round(float(value), 2), label="总价")
class MallOrderSerializer(AdminOrderSerializer): """商城端订单序列化器类""" amount_net = FuncField(lambda value: round(float(value), 2), label="货品总额") delivery_amount_net = FuncField(lambda value: round(float(value), 2), label="配送费/服务费") total_amount_net = FuncField(lambda value: round(float(value), 2), label="订单总额") groupon_attend = GrouponAttendBasicSerializer(required=False, label="拼团参与信息")
class AdminCustomerPointsSerializer(serializers.Serializer): """后台客户积分序列化器类""" create_time = serializers.DateTimeField(format=DateFormat.TIME, label="操作时间") type = FuncField(lambda value: CUSTOMER_POINT_TYPE.get(value), label="操作类型") point_change = FuncField(lambda value: round(float(value), 2), label="积分变更值") current_point = FuncField(lambda value: round(float(value), 2), label="当前积分")
class AdminProductStorageRecordsSerializer(serializers.Serializer): """后台货品库存变更记录序列化器类""" create_time = serializers.DateTimeField(format=DateFormat.TIME, label="创建时间") type = serializers.IntegerField(label="变更类型") type_text = serializers.CharField(allow_blank=True, label="变更类型文字版") operator_type = serializers.IntegerField(label="操作人类型") operator = UserSerializer(source="user", label="操作人") change_storage = FuncField(lambda value: round(float(value)), label="变更量") current_storage = FuncField(lambda value: round(float(value)), label="当前量") order_num = serializers.CharField(default="-", label="订单号")
class ProductGrouponSerializer(serializers.Serializer): """货品拼团活动序列化器类""" groupon_id = serializers.IntegerField(source="id", label="拼团id") price = FuncField(lambda value: round(float(value), 2), label="拼团价格") to_datetime = serializers.DateTimeField(format=DateFormat.TIME, label="拼团活动结束时间") groupon_type = serializers.IntegerField(label="拼团活动类型 1:普通 2:老带新") success_size = serializers.IntegerField(label="成团人数") quantity_limit = serializers.IntegerField(label="成团数量上限") succeeded_quantity = FuncField(lambda value: round(float(value), 2), label="已成团件数")
class AdminProductSaleRecordSerializer(serializers.Serializer): """后台货品销售记录序列化器类""" create_time = serializers.DateTimeField(format=DateFormat.TIME, label="创建时间") order_num = serializers.CharField(label="订单号") price_net = FuncField(lambda value: round(float(value), 2), label="单价(优惠后)") quantity_net = FuncField(lambda value: round(float(value), 2), label="量(优惠后)") amount_net = FuncField(lambda value: round(float(value), 2), label="金额(优惠后)") customer = UserSerializer(label="客户信息")
class AdminProductsSerializer(serializers.Serializer): """后台货品列表序列化器类""" product_id = serializers.IntegerField(read_only=True, source="id", label="货品名") name = serializers.CharField(required=True, label="货品名") price = FuncField(lambda value: round(float(value), 2), label="货品价格") storage = FuncField(lambda value: round(float(value), 2), label="货品库存") status = serializers.IntegerField(read_only=True, label="货品状态") cover_image_url = serializers.CharField(required=False, label="货品封面图") promotion_type = serializers.IntegerField(required=False, label="商品活动信息 1: 普通 5: 拼团")
class AdminGrouponCreateSerializer(serializers.Serializer): """后台拼团活动创建序列化器""" price = FuncField(lambda value: round(float(value), 2), label="拼团价格") from_datetime = serializers.DateTimeField(format=DateFormat.TIME, label="拼团活动开始时间") to_datetime = serializers.DateTimeField(format=DateFormat.TIME, label="拼团活动结束时间") groupon_type = serializers.IntegerField(label="拼团活动类型 1:普通 2:老带新") success_size = serializers.IntegerField(label="成团人数") quantity_limit = serializers.IntegerField(label="成团数量上限") success_limit = serializers.IntegerField(label="成团上限") attend_limit = serializers.IntegerField(label="参团上限") success_valid_hour = serializers.IntegerField(label="开团有效时间") def create(self, validated_data): shop_id = self.context["self"].current_shop.id user_id = self.context["self"].current_user.id product = self.context["product"] groupon = create_groupon(shop_id, user_id, product, validated_data) return groupon def update(self, instance, validated_data): shop_id = self.context["self"].current_shop.id user_id = self.context["self"].current_user.id product = self.context["product"] instance = update_groupon(shop_id, user_id, product, instance, validated_data) return instance
class AdminDeliveryConfigSerializer(serializers.Serializer): """后台配送配置序列化器类""" home_on = serializers.BooleanField(label="配送模式是否开启") home_minimum_order_amount = FuncField(lambda value: round(float(value), 2), label="配送模式起送金额") home_delivery_amount = FuncField(lambda value: round(float(value), 2), label="配送模式配送费") home_minimum_free_amount = FuncField(lambda value: round(float(value), 2), label="配送模式免配送费最小金额") pick_on = serializers.BooleanField(label="自提模式是否开启") pick_service_amount = FuncField(lambda value: round(float(value), 2), label="自提模式服务费") pick_minimum_free_amount = FuncField(lambda value: round(float(value), 2), label="自提模式免服务费最小金额") pick_today_on = serializers.BooleanField(label="今天自提是否开启") pick_tomorrow_on = serializers.BooleanField(label="明天自提是否开启") pick_periods = PickPeriodConfigLineSerializer(many=True, label="自提时间段")
class GrouponProductSerializer(serializers.Serializer): """拼团商品序列化器类""" product_id = serializers.IntegerField(source="id", label="货品ID") name = serializers.CharField(label="货品名称") price = FuncField(lambda value: round(float(value), 2), label="货品价格") status = serializers.IntegerField(read_only=True, label="货品状态") summary = serializers.CharField(label="货品简介") cover_image_url = serializers.CharField(label="货品封面图")
class AdminCustomerSerializer(UserSerializer): """后台客户序列化器类""" customer_id = serializers.IntegerField(source="id", label="客户id") consume_amount = FuncField(lambda value: round(float(value), 2), label="客户消费金额") consume_count = serializers.IntegerField(label="客户消费次数") point = FuncField(lambda value: round(float(value), 2), label="客户积分") remark = serializers.CharField(label="客户备注") realname = serializers.CharField(required=False, label="用户真实姓名") nickname = serializers.CharField(required=False, label="微信昵称") sex = serializers.IntegerField(required=False, label="性别") phone = serializers.CharField(required=False, label="手机号") birthday = serializers.DateField(required=False, format=DateFormat.DAY, default="", label="用户生日") head_image_url = serializers.CharField(required=False, label="头像")
class AdminGrouponsSerializer(GrouponBasicSerializer): """后台拼团活动列表序列化器类""" groupon_id = serializers.IntegerField(source="id", label="拼团id") product = GrouponProductSerializer(label="拼团商品信息") price = FuncField(lambda value: round(float(value), 2), label="拼团价格") attend_limit = serializers.IntegerField(label="参团上限") from_datetime = serializers.DateTimeField(format=DateFormat.TIME, label="拼团活动开始时间") to_datetime = serializers.DateTimeField(format=DateFormat.TIME, label="拼团活动结束时间") status = serializers.IntegerField(label="拼团活动状态 1:启用 2:停用 3:过期") is_editable = serializers.BooleanField(label="拼团是否可以编辑")
class AdminGrouponSerializer(GrouponBasicSerializer): """后台拼团活动详情序列化器类""" groupon_id = serializers.IntegerField(source="id", label="拼团id") product = GrouponProductSerializer(label="拼团商品信息") price = FuncField(lambda value: round(float(value), 2), label="拼团价格") attend_limit = serializers.IntegerField(label="参团上限") from_datetime = serializers.DateTimeField(format=DateFormat.TIME, label="拼团活动开始时间") to_datetime = serializers.DateTimeField(format=DateFormat.TIME, label="拼团活动结束时间") status = serializers.IntegerField(label="拼团活动状态 1:启用 2:停用 3:过期") quantity_limit = serializers.IntegerField(label="成团数量上限") success_size = serializers.IntegerField(label="成团人数")