B2cOrderDTO.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package com.backendsys.entity.B2c;
  2. import com.backendsys.entity.validator.RangeArray;
  3. import com.backendsys.entity.validator.RangeStringArray;
  4. import jakarta.validation.constraints.*;
  5. import lombok.Data;
  6. import java.awt.geom.Point2D;
  7. import java.math.BigDecimal;
  8. import java.util.Date;
  9. import java.util.List;
  10. import java.util.Map;
  11. @Data
  12. public class B2cOrderDTO {
  13. public static interface Detail{}
  14. public static interface Confirm{}
  15. public static interface Create{}
  16. public static interface Update{}
  17. /**
  18. * b2c_order
  19. */
  20. // 从确认订单传递的加密字段
  21. @NotNull(message = "订单加密信息不能为空", groups = { B2cOrderDTO.Create.class })
  22. private String encrypted;
  23. private Long id;
  24. @NotNull(message = "订单ID不能为空", groups = { B2cOrderDTO.Detail.class, B2cOrderDTO.Update.class })
  25. private Long order_id;
  26. @NotEmpty(message = "规格不能为空", groups = { B2cOrderDTO.Confirm.class })
  27. private List<Map<String, Object>> sku;
  28. @Size(max = 32, message = "订单编码长度不超过 {value}", groups = { B2cOrderDTO.Update.class })
  29. private String order_code;
  30. // (cart 从购物车, sku 从规格)
  31. // @NotNull(message = "订单来源不能为空", groups = { B2cOrderDTO.Create.class })
  32. @RangeArray(message="订单来源取值有误,范围应是(1从购物车, 2从规格ID)", value = {"1", "2"}, groups = { B2cOrderDTO.Create.class })
  33. private Integer order_source;
  34. // 当 { order_source: 'sku' } 时,{ spec_sku_id } 必填
  35. @NotNull(message = "规格ID不能为空", groups = { B2cOrderDTO.Update.class })
  36. private Long spec_sku_id;
  37. private Long member_id;
  38. private String member_open_id;
  39. //
  40. //@Size(max = 200, message = "配送地址长度不超过 {max} 字符", groups = { B2cOrderDTO.Create.class, B2cOrderDTO.Update.class })
  41. private String recipient_address;
  42. private Point2D.Double recipient_point;
  43. //@Digits(integer = 9, fraction = 2, message = "配送金额最多支持 {integer} 位数字且小数点后最多 {fraction} 位", groups = { B2cOrderDTO.Create.class, B2cOrderDTO.Update.class })
  44. private BigDecimal recipient_price;
  45. /*
  46. public class YourEntity {
  47. @Valid
  48. @NotNull(message = "收件人坐标不能为空")
  49. private Point2D.Double recipient_point;
  50. // Getter and Setter
  51. // Other fields and methods
  52. }
  53. // 自定义校验器
  54. public class LatitudeValidator implements ConstraintValidator<ValidLatitude, Point2D.Double> {
  55. @Override
  56. public boolean isValid(Point2D.Double value, ConstraintValidatorContext context) {
  57. if (value == null) {
  58. return true; // 允许为空
  59. }
  60. double latitude = value.getY();
  61. // 进行纬度范围检查
  62. return latitude >= -90.0 && latitude <= 90.0;
  63. }
  64. }
  65. // 自定义注解
  66. @Target({ ElementType.FIELD })
  67. @Retention(RetentionPolicy.RUNTIME)
  68. @Constraint(validatedBy = LatitudeValidator.class)
  69. public @interface ValidLatitude {
  70. String message() default "纬度值超出有效范围";
  71. Class<?>[] groups() default {};
  72. Class<? extends Payload>[] payload() default {};
  73. }
  74. */
  75. // @NotNull(message = "总价不能为空", groups = { B2cOrderDTO.Create.class, B2cOrderDTO.Update.class })
  76. // @Digits(integer = 9, fraction = 2, message = "总价最多支持 {integer} 位数字且小数点后最多 {fraction} 位", groups = { B2cOrderDTO.Create.class, B2cOrderDTO.Update.class })
  77. private BigDecimal final_total_price;
  78. @NotNull(message = "支付方式不能为空", groups = { B2cOrderDTO.Create.class, B2cOrderDTO.Update.class })
  79. @RangeStringArray(message="支付方式取值有误,范围应是(WeChatPay微信, AliPay支付宝)", value = {"WeChatPay", "AliPay"}, groups = { B2cOrderDTO.Create.class, B2cOrderDTO.Update.class })
  80. private String pay_method;
  81. private Date pay_time;
  82. @RangeArray(message="支付状态取值有误,范围应是(-2已超时, -1待支付, 1已支付, 2已退款)", value = {"-2", "-1", "1", "2"}, groups = { B2cOrderDTO.Update.class })
  83. private Integer pay_status;
  84. private String prepay_id;
  85. private Date pay_refund_time;
  86. @RangeArray(message="退款状态取值有误,范围应是(-1退款失败, 1退款中, 2退款成功)", value = {"-1", "1", "2"}, groups = { B2cOrderDTO.Update.class })
  87. private Integer pay_refund_status;
  88. @RangeArray(message="取消订单方式取值有误,范围应是(1会员, 2商家)", value = {"1", "2"}, groups = { B2cOrderDTO.Update.class })
  89. private Integer cancel_order_way;
  90. @Size(max = 200, message = "取消订单原因长度不超过 {max} 字符", groups = { B2cOrderDTO.Update.class })
  91. private String cancel_order_reason;
  92. @RangeArray(message="订单状态取值有误,范围应是(-2取消订单, -1预下单, 1已下单, 2已收货, 3待评价, 4已完成)", value = {"-2", "-1", "1", "2", "3", "4"}, groups = { B2cOrderDTO.Update.class })
  93. private Integer status;
  94. @RangeArray(message="是否已阅取值有误,范围应是(-1未阅, 1已阅)", value = {"-1", "1"}, groups = { B2cOrderDTO.Update.class })
  95. private Integer is_readed;
  96. @Size(max = 200, message = "取消订单原因长度不超过 {max} 字符", groups = { B2cOrderDTO.Update.class })
  97. private String notes;
  98. private String create_time_begin;
  99. private String create_time_end;
  100. private String create_time;
  101. private String update_time;
  102. }