|
@@ -0,0 +1,269 @@
|
|
|
+package com.yc.ship.module.trade.controller.admin.order.vo.order;
|
|
|
+
|
|
|
+import com.yc.ship.framework.common.validation.IntEnum;
|
|
|
+import com.yc.ship.framework.common.validation.Mobile;
|
|
|
+import com.yc.ship.module.trade.api.dto.TradeOrderCreateReqDTO;
|
|
|
+import com.yc.ship.module.trade.enums.CredentialTypeEnum;
|
|
|
+import io.swagger.v3.oas.annotations.Hidden;
|
|
|
+import io.swagger.v3.oas.annotations.media.Schema;
|
|
|
+import lombok.Data;
|
|
|
+import org.hibernate.validator.constraints.Length;
|
|
|
+
|
|
|
+import javax.validation.Valid;
|
|
|
+import javax.validation.constraints.NotBlank;
|
|
|
+import javax.validation.constraints.NotEmpty;
|
|
|
+import javax.validation.constraints.NotNull;
|
|
|
+import java.io.Serializable;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Schema(description = "旅行社交易订单创建 Request VO")
|
|
|
+@Data
|
|
|
+public class ShipTradeOrderCreateReqVO implements Serializable {
|
|
|
+
|
|
|
+ @Schema(description = "分销商ID", example = "MT1231312")
|
|
|
+ private Long distributorId;
|
|
|
+
|
|
|
+ @Schema(description = "第三方订单号,分销商下单", example = "MT1231312")
|
|
|
+ @Hidden
|
|
|
+ private String externalOrderNo;
|
|
|
+
|
|
|
+ @Schema(description = "出行日期", example = "2025-06-01")
|
|
|
+ private Date travelDate;
|
|
|
+
|
|
|
+ @Schema(description = "订单项列表", example = "")
|
|
|
+ @NotEmpty(message = "订单项列表不能为空")
|
|
|
+ @Valid
|
|
|
+ private List<OrderItem> itemlList;
|
|
|
+
|
|
|
+ @Schema(description = "订单金额(元)", example = "100")
|
|
|
+ @NotNull(message = "订单金额不能为空")
|
|
|
+ private BigDecimal amount;
|
|
|
+
|
|
|
+ @Schema(description = "支付金额(元)", example = "90")
|
|
|
+ @NotNull(message = "支付金额不能为空")
|
|
|
+ private BigDecimal payAmount;
|
|
|
+
|
|
|
+ @Schema(description = "订单联系信息", example = "")
|
|
|
+ @NotNull(message = "联系人信息不能为空")
|
|
|
+ private OrderUser orderUser;
|
|
|
+
|
|
|
+ @Schema(description = "订单属性", example = "")
|
|
|
+ private OrderProperty orderProperty;
|
|
|
+
|
|
|
+ @Schema(description = "订单备注", example = "xx游客岁数较大")
|
|
|
+ @Length(max = 120,message = "备注不能超过120个字符")
|
|
|
+ private String remark;
|
|
|
+
|
|
|
+ @Schema(description = "携程需要参数,其他情况忽略", example = "")
|
|
|
+ private String itemId;
|
|
|
+
|
|
|
+ @Schema(description = "是否完全支付 0 否 1是", example = "")
|
|
|
+ private Integer isFullPay;
|
|
|
+
|
|
|
+ @Schema(description = "是否改签 0 否 1是", example = "")
|
|
|
+ private Integer isChange;
|
|
|
+
|
|
|
+ @Schema(description = "是否补票 0 否 1是", example = "")
|
|
|
+ private Integer isTimePay;
|
|
|
+
|
|
|
+ @Schema(description = "是否申请营销政策(0否 1是)", example = "")
|
|
|
+ private Integer isMarketing;
|
|
|
+
|
|
|
+ @Schema(description = "是否申请使用营销政策(0否 1是)", example = "")
|
|
|
+ private Integer isMarketingUse;
|
|
|
+
|
|
|
+ @Schema(description = "预定团号", example = "")
|
|
|
+ private String groupNo;
|
|
|
+
|
|
|
+ @Schema(description = "币种", example = "CNY")
|
|
|
+ private String currency;
|
|
|
+ /**
|
|
|
+ * 航次ID
|
|
|
+ */
|
|
|
+ @Schema(description = "航次ID")
|
|
|
+ private Long voyageId;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 游轮ID
|
|
|
+ */
|
|
|
+ @Schema(description = "游轮ID")
|
|
|
+ private Long shipId;
|
|
|
+
|
|
|
+
|
|
|
+ @Schema(description = "订单项")
|
|
|
+ @Data
|
|
|
+ @Valid
|
|
|
+ public static class OrderItem{
|
|
|
+ @Schema(description = "国籍")
|
|
|
+ private String nationality;
|
|
|
+
|
|
|
+ @Schema(description = "成人数量", example = "10")
|
|
|
+ @NotNull(message = "成人数量不能为空")
|
|
|
+ private Integer crnum1;
|
|
|
+
|
|
|
+ @Schema(description = "儿童数量", example = "10")
|
|
|
+ @NotNull(message = "儿童数量不能为空")
|
|
|
+ private Integer etnum2;
|
|
|
+
|
|
|
+ @Schema(description = "婴儿数量", example = "10")
|
|
|
+ @NotNull(message = "婴儿数量不能为空")
|
|
|
+ private Integer yenum3;
|
|
|
+
|
|
|
+ @Schema(description = "陪同数量", example = "10")
|
|
|
+ @NotNull(message = "陪同数量不能为空")
|
|
|
+ private Integer ptnum;
|
|
|
+
|
|
|
+ @Schema(description = "陪同费用", example = "10")
|
|
|
+ private BigDecimal ptamount;
|
|
|
+
|
|
|
+
|
|
|
+ @Schema(description = "订单明细列表", example = "")
|
|
|
+ @NotEmpty(message = "订单明细列表不能为空")
|
|
|
+ @Valid
|
|
|
+ private List<OrderDetail> detailList;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Schema(description = "订单明细")
|
|
|
+ @Data
|
|
|
+ @Valid
|
|
|
+ public static class OrderDetail{
|
|
|
+
|
|
|
+ @Schema(description = "游船产品:楼层ID OR 附加产品:附加产品ID", example = "")
|
|
|
+ @NotBlank(message = "楼层ID/附加产品ID不能为空")
|
|
|
+ private String productId;
|
|
|
+
|
|
|
+ @Schema(description = "产品类型 0 游船产品 1 附加产品", example = "")
|
|
|
+ @NotNull(message = "产品类型不能为空")
|
|
|
+ private Integer productType;
|
|
|
+
|
|
|
+ @Schema(description = "单价", example = "")
|
|
|
+ private BigDecimal price;
|
|
|
+
|
|
|
+ @Schema(description = "原始单价", example = "")
|
|
|
+ private BigDecimal originPrice;
|
|
|
+
|
|
|
+ @Schema(description = "规格类型", example = "full")
|
|
|
+ private String specType;
|
|
|
+
|
|
|
+ @Schema(description = "购买数量", example = "10")
|
|
|
+ @NotNull(message = "购买数量不能为空")
|
|
|
+ private Integer count;
|
|
|
+
|
|
|
+ @Schema(description = "游客列表", example = "")
|
|
|
+ @Valid
|
|
|
+ private List<Visitor> visitorList;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Schema(description = "游客信息")
|
|
|
+ @Data
|
|
|
+ @Valid
|
|
|
+ public static class Visitor{
|
|
|
+
|
|
|
+ @Schema(description = "姓名", example = "")
|
|
|
+ private String name;
|
|
|
+
|
|
|
+ @Schema(description = "国籍")
|
|
|
+ private String nationality;
|
|
|
+
|
|
|
+ @Schema(description = "年龄")
|
|
|
+ private Integer age;
|
|
|
+
|
|
|
+ @Schema(description = "是否重庆中转 0:否 1是")
|
|
|
+ private Integer cqzz;
|
|
|
+
|
|
|
+ @Schema(description = "是否宜昌中转 0:否 1是")
|
|
|
+ private Integer yczz;
|
|
|
+
|
|
|
+ @Schema(description = "证件号", example = "")
|
|
|
+ private String credentialNo;
|
|
|
+
|
|
|
+ @Schema(description = "证件类型", example = "")
|
|
|
+ @IntEnum(value = CredentialTypeEnum.class,message = "证件类型不正确")
|
|
|
+ private Integer credentialType;
|
|
|
+
|
|
|
+ @Mobile
|
|
|
+ @Schema(description = "手机号", example = "")
|
|
|
+ private String mobile;
|
|
|
+
|
|
|
+ @Schema(description = "内部平台下单必传,用于区分一票多人券码对应关系", example = "")
|
|
|
+ private String otaDetailId;
|
|
|
+
|
|
|
+ @Schema(description = "是否投保 0否 1是", example = "")
|
|
|
+ private Integer isInsure;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Schema(description = "订单联系人")
|
|
|
+ @Data
|
|
|
+ @Valid
|
|
|
+ public static class OrderUser{
|
|
|
+
|
|
|
+ @Schema(description = "姓名", example = "")
|
|
|
+ private String contactName;
|
|
|
+
|
|
|
+ @Schema(description = "证件号", example = "")
|
|
|
+ private String credentialNo;
|
|
|
+
|
|
|
+ @Schema(description = "证件类型", example = "")
|
|
|
+ @IntEnum(value = CredentialTypeEnum.class,message = "证件类型不正确")
|
|
|
+ private Integer credentialType;
|
|
|
+
|
|
|
+ @Mobile
|
|
|
+ @Schema(description = "手机号", example = "")
|
|
|
+ private String mobile;
|
|
|
+
|
|
|
+ @Mobile
|
|
|
+ @Schema(description = "邮箱", example = "")
|
|
|
+ private String email;
|
|
|
+
|
|
|
+ @Schema(description = "区/县", example = "")
|
|
|
+ private String county;
|
|
|
+
|
|
|
+ @Schema(description = "省", example = "")
|
|
|
+ private String province;
|
|
|
+
|
|
|
+ @Schema(description = "城市", example = "")
|
|
|
+ private String city;
|
|
|
+
|
|
|
+ @Schema(description = "客户", example = "")
|
|
|
+ private String clientUser;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Schema(description = "订单属性")
|
|
|
+ @Data
|
|
|
+ @Valid
|
|
|
+ public static class OrderProperty{
|
|
|
+
|
|
|
+ @Schema(description = "游客类型", example = "")
|
|
|
+ private Integer visitorType;
|
|
|
+ @Schema(description = "团队类型", example = "")
|
|
|
+ private Integer teamType;
|
|
|
+ @Schema(description = "销售渠道", example = "0")
|
|
|
+ private Integer sellMethod;
|
|
|
+ @Schema(description = "来源ID", example = "123")
|
|
|
+ private String sourceId;
|
|
|
+ @Schema(description = "来源名称", example = "美团")
|
|
|
+ private String sourceName;
|
|
|
+ @Schema(description = "会员ID", example = "123")
|
|
|
+ private String memberId;
|
|
|
+ @Schema(description = "销售员ID", example = "123")
|
|
|
+ private String sellerId;
|
|
|
+ @Schema(description = "门店ID", example = "123")
|
|
|
+ private Long storeId;
|
|
|
+ @Schema(description = "门店名称", example = "123")
|
|
|
+ private String storeName;
|
|
|
+ @Schema(description = "业绩共享人", example = "123")
|
|
|
+ private String shareName;
|
|
|
+ @Schema(description = "个人分销ID", example = "123")
|
|
|
+ private Long personalDistributorId;
|
|
|
+ @Schema(description = "优惠券码ID", example = "123")
|
|
|
+ private Long couponCodeId;
|
|
|
+ @Schema(description = "链接ID", example = "123")
|
|
|
+ private Long linkId;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|