package com.talentcard.server.request; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.DecimalMin; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; import java.math.BigDecimal; import java.time.LocalDate; import java.util.List; @Schema(name = "CouponManagementSaveRequest", description = "优惠券配置保存参数") public record CouponManagementSaveRequest( @NotNull @Schema(description = "适用商户ID", example = "1") Long merchantId, @NotBlank @Size(max = 128) @Schema(description = "优惠券名称") String couponName, @NotBlank @Schema(description = "类型:CASH代金券、FULL_REDUCTION满减券、DISCOUNT折扣券、EXCHANGE兑换券") String couponType, @NotNull @DecimalMin("0.00") @Schema(description = "面额,单位元", example = "50.00") BigDecimal couponAmount, @Schema(description = "使用条件:NONE无门槛、FULL满减") String conditionType, @DecimalMin("0.00") @Schema(description = "满减门槛金额") BigDecimal conditionAmount, @Schema(description = "适用人才卡等级") List talentLevels, @Schema(description = "有效开始日期") LocalDate validStart, @Schema(description = "有效结束日期") LocalDate validEnd, @Size(max = 64) @Schema(description = "发放批次号,不传自动生成") String batchNo, @NotNull @Min(-1) @Schema(description = "发放总量,-1表示不限量", example = "1000") Integer totalQuantity, @Schema(description = "是否政府补贴") Boolean governmentSubsidy, @Schema(description = "状态:0下架、1上架", example = "1") Integer status ) {}