This commit is contained in:
2025-07-01 17:54:58 +08:00
commit 57dcd609e2
5136 changed files with 346184 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.zhwl</groupId>
<artifactId>zhwl-ota</artifactId>
<version>3.8.7</version>
</parent>
<dependencies>
<dependency>
<groupId>com.zhwl</groupId>
<artifactId>zhwl-ticket-order</artifactId>
</dependency>
<dependency>
<groupId>com.zhwl</groupId>
<artifactId>zhwl-printset</artifactId>
</dependency>
</dependencies>
<modelVersion>4.0.0</modelVersion>
<artifactId>zhwl-ota-trip</artifactId>
<description>携程接口模块</description>
</project>

View File

@@ -0,0 +1,167 @@
package com.zhwl.trip.controller;
import com.alibaba.fastjson2.JSONObject;
import com.zhwl.common.constant.TripConstants;
import com.zhwl.common.core.controller.BaseController;
import com.zhwl.common.core.domain.AjaxResult;
import com.zhwl.common.enums.TripResultType;
import com.zhwl.common.utils.StringUtils;
import com.zhwl.system.service.ISysConfigService;
import com.zhwl.trip.domain.OdaTripHeader;
import com.zhwl.trip.service.OdaTripService;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
/**
* 携程Controller
*
* @author wangxing
* @date 2024-06-24
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/zdy/trip")
public class OtaTripController extends BaseController {
private final OdaTripService odaTripService;
private final ISysConfigService sysConfigService;
private static final Logger log = LoggerFactory.getLogger(OtaTripController.class);
@PostMapping("/syncOrder")
public String syncOrder(@RequestBody String requestBody) {
log.info("携程入口requestBody"+requestBody);
//校验参数
if (StringUtils.isEmpty(requestBody)){
return resultMessage(TripResultType.PARSING_FAILED.getKey(),TripResultType.PARSING_FAILED.getValue()+"请求参数为空");
}
JSONObject jsonObject = JSONObject.parseObject(requestBody);
//获取请求头
String header = jsonObject.getString(TripConstants.HEADER);
//获取请求体
String body = jsonObject.getString(TripConstants.BODY);
if (StringUtils.isEmpty(header)){
return resultMessage(TripResultType.PARSING_FAILED.getKey(),TripResultType.PARSING_FAILED.getValue()+"请求头header为空");
}
OdaTripHeader odaTripHeader = JSONObject.parseObject(header, OdaTripHeader.class);
// 校验请求头参数
String tripResult = checkHeader(odaTripHeader);
if (StringUtils.isNotEmpty(tripResult)){
return tripResult;
}
// 验证签名
if (!odaTripService.checkHealth(odaTripHeader,body)){
return resultMessage(TripResultType.SIGNATURE_ERROR.getKey(),TripResultType.SIGNATURE_ERROR.getValue());
}
log.info("携程执行方法名:"+odaTripHeader.getServiceName());
switch (odaTripHeader.getServiceName()){
//订单验证
case TripConstants.VERIFYORDER:
String verifyOrder = odaTripService.verifyOrder(body);
log.info(odaTripHeader.getServiceName()+"响应结果:"+verifyOrder);
return verifyOrder;
//预下单创建
case TripConstants.CREATEPREORDER:
String createPreOrder = odaTripService.createPreOrder(body);
log.info(odaTripHeader.getServiceName()+"响应结果:"+createPreOrder);
return createPreOrder;
//预下单支付
case TripConstants.PAYPREORDER:
String payPreOrder = odaTripService.payPreOrder(body);
log.info(odaTripHeader.getServiceName()+"响应结果:"+payPreOrder);
return payPreOrder;
//预下单支付确认
case TripConstants.PAYPREORDERCONFIRM:
String payPreOrderConfirm = odaTripService.payPreOrderConfirm(body);
log.info(odaTripHeader.getServiceName()+"响应结果:"+payPreOrderConfirm);
return payPreOrderConfirm;
//预下单取消
case TripConstants.CANCELPREORDER:
String cancelPreOrder = odaTripService.cancelPreOrder(body);
log.info(odaTripHeader.getServiceName()+"响应结果:"+cancelPreOrder);
return cancelPreOrder;
//订单新订
case TripConstants.CREATEORDER:
String createOrder = odaTripService.createOrder(body);
log.info(odaTripHeader.getServiceName()+"响应结果:"+createOrder);
return createOrder;
//订单核销通知
case TripConstants.ORDERCONSUMEDNOTICE:
String orderConsumedNotice = odaTripService.orderConsumedNotice(body);
log.info(odaTripHeader.getServiceName()+"响应结果:"+orderConsumedNotice);
return orderConsumedNotice;
//订单取消
case TripConstants.CANCELORDER:
String cancelOrder = odaTripService.cancelOrder(body);
log.info(odaTripHeader.getServiceName()+"响应结果:"+cancelOrder);
return cancelOrder;
//订单取消确认
case TripConstants.CANCELORDERCONFIRM:
String cancelOrderConfirm = odaTripService.cancelOrderConfirm(body);
log.info(odaTripHeader.getServiceName()+"响应结果:"+cancelOrderConfirm);
return cancelOrderConfirm;
//订单退款
case TripConstants.REFUNDORDER:
String refundOrder = odaTripService.refundOrder(body);
log.info(odaTripHeader.getServiceName()+"响应结果:"+refundOrder);
return refundOrder;
//订单查询
case TripConstants.QUERYORDER:
String queryOrder = odaTripService.queryOrder(body);
log.info(odaTripHeader.getServiceName()+"响应结果:"+queryOrder);
return queryOrder;
default:
return resultMessage(TripResultType.METHOD_NON.getKey(),TripResultType.METHOD_NON.getValue());
}
}
/**
* 校验请求头参数
* @param odaTripHeader 携程旅行请求头对象
* @return 结果
*/
private String checkHeader(OdaTripHeader odaTripHeader){
//供应商账号
if (StringUtils.isEmpty(odaTripHeader.getAccountId())){
return resultMessage(TripResultType.PARSING_FAILED.getKey(),TripResultType.PARSING_FAILED.getValue()+",供应商账号为空!");
}
String configAccountId = sysConfigService.selectConfigByKey(TripConstants.ACCOUNTID);
if (!configAccountId.equals(odaTripHeader.getAccountId())){
return resultMessage(TripResultType.SUPPLIER_ERROR.getKey(),TripResultType.SUPPLIER_ERROR.getValue());
}
//接口名称
if (StringUtils.isEmpty(odaTripHeader.getServiceName())){
return resultMessage(TripResultType.PARSING_FAILED.getKey(),TripResultType.PARSING_FAILED.getValue()+",接口名称为空!");
}
//请求时间
if (StringUtils.isEmpty(odaTripHeader.getRequestTime())){
return resultMessage(TripResultType.PARSING_FAILED.getKey(),TripResultType.PARSING_FAILED.getValue()+",请求时间为空!");
}
//版本号
if (StringUtils.isEmpty(odaTripHeader.getVersion())){
return resultMessage(TripResultType.PARSING_FAILED.getKey(),TripResultType.PARSING_FAILED.getValue()+",版本号为空!");
}
//签名
if (StringUtils.isEmpty(odaTripHeader.getSign())){
return resultMessage(TripResultType.PARSING_FAILED.getKey(),TripResultType.PARSING_FAILED.getValue()+",签名为空!");
}
return null;
}
private String resultMessage(String code,String message){
return "{ \"header\": { \"resultCode\": \""+code+"\", \"resultMessage\": \""+message+"\" }, \"body\": null}";
}
@GetMapping(value = "/test/{orderCode}")
public AjaxResult getInfo(@PathVariable("orderCode") String orderCode) {
odaTripService.travelNotice(orderCode);
return success();
}
}

View File

@@ -0,0 +1,127 @@
package com.zhwl.trip.controller;
import com.zhwl.common.annotation.Log;
import com.zhwl.common.constant.TripConstants;
import com.zhwl.common.core.controller.BaseController;
import com.zhwl.common.core.domain.AjaxResult;
import com.zhwl.common.core.page.TableDataInfo;
import com.zhwl.common.enums.BusinessType;
import com.zhwl.common.utils.poi.ExcelUtil;
import com.zhwl.ticket.order.domain.vo.ZdyTicketOrderRefundVo;
import com.zhwl.ticket.order.domain.vo.ZdyTicketOrderVo;
import com.zhwl.ticket.order.dto.ZdyTicketOrderDto;
import com.zhwl.ticket.order.dto.ZdyTicketOrderRefundDto;
import com.zhwl.ticket.order.service.IZdyTicketOrderRefundService;
import com.zhwl.ticket.order.service.IZdyTicketOrderService;
import com.zhwl.trip.domain.ZdyTripOrder;
import com.zhwl.trip.service.IZdyTripOrderService;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import static com.zhwl.common.enums.ScenicOrderType.*;
/**
* 携程订单信息Controller
*
* @author wangxing
* @date 2024-06-26
*/
@RestController
@RequestMapping("/trip/tripOrder")
@RequiredArgsConstructor
public class ZdyTripOrderController extends BaseController {
private final IZdyTripOrderService zdyTripOrderService;
private final IZdyTicketOrderRefundService zdyTicketOrderRefundService;
private final IZdyTicketOrderService zdyTicketOrderService;
/**
* 查询携程订单信息列表
*/
@PreAuthorize("@ss.hasPermi('trip:tripOrder:list')")
@GetMapping("/list")
public TableDataInfo list(ZdyTripOrder zdyTripOrder) {
List<ZdyTripOrder> list = zdyTripOrderService.selectZdyTripOrderColumnList(zdyTripOrder);
return getDataTable(list);
}
/**
* 查询携程订单退款信息列表
*/
@PreAuthorize("@ss.hasPermi('trip:refundOrder:list')")
@GetMapping("/refundList")
public TableDataInfo list(ZdyTicketOrderRefundDto zdyTicketOrderRefundDto) {
startPage();
zdyTicketOrderRefundDto.setRefundSource(TripConstants.ORDERSOURCE);
List<ZdyTicketOrderRefundVo> list = zdyTicketOrderRefundService.selectZdyTicketOrderRefundList(zdyTicketOrderRefundDto);
return getDataTable(list);
}
/**
* 获取携程订单退款单主表详细信息
*/
@PreAuthorize("@ss.hasPermi('trip:refundOrder:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(zdyTicketOrderRefundService.selectZdyTicketOrderRefundById(id));
}
/**
* 导出携程订单信息列表
*/
@PreAuthorize("@ss.hasPermi('trip:tripOrder:export')")
@Log(title = "携程订单信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ZdyTripOrder zdyTripOrder) {
List<ZdyTripOrder> list = zdyTripOrderService.selectZdyTripOrderList(zdyTripOrder);
ExcelUtil<ZdyTripOrder> util = new ExcelUtil<ZdyTripOrder>(ZdyTripOrder. class);
util.exportExcel(response, list, "携程订单信息数据");
}
/**
* 查询待打印订单列表
*/
@PreAuthorize("@ss.hasPermi('trip:tripOrder:print')")
@GetMapping("/printOrderList")
public TableDataInfo printOrderList(ZdyTicketOrderDto zdyTicketOrderDto) {
startPage();
zdyTicketOrderDto.setVerificationType(VERIFICATION_TYPE_ZERO.getStatus());
zdyTicketOrderDto.setPaymentType(PAYMENT_TYPE_ONE.getStatus());
zdyTicketOrderDto.setRefundStatus(REFUND_STATUS_ZERO.getStatus());
List<ZdyTicketOrderVo> list = zdyTicketOrderService.selectZdyTicketOrderList(zdyTicketOrderDto);
return getDataTable(list);
}
/**
* 新增携程订单信息
*/
@PreAuthorize("@ss.hasPermi('trip:tripOrder:add')")
@Log(title = "携程订单信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody ZdyTripOrder zdyTripOrder) {
return toAjax(zdyTripOrderService.insertZdyTripOrder(zdyTripOrder));
}
/**
* 修改携程订单信息
*/
@PreAuthorize("@ss.hasPermi('trip:tripOrder:edit')")
@Log(title = "携程订单信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody ZdyTripOrder zdyTripOrder) {
return toAjax(zdyTripOrderService.updateZdyTripOrder(zdyTripOrder));
}
/**
* 删除携程订单信息
*/
@PreAuthorize("@ss.hasPermi('trip:tripOrder:remove')")
@Log(title = "携程订单信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(zdyTripOrderService.deleteZdyTripOrderByIds(ids));
}
}

View File

@@ -0,0 +1,40 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 请求订单取消 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripCancelOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 携程处理批次流水号。格式为处理日期yyyyMMdd+32位去分隔符的Guid
*/
private String sequenceId;
/**
* 携程订单号
*/
private String otaOrderId;
/**
* 供应商订单号
*/
private String supplierOrderId;
/**
* 确认类型。1仅通知供应商订单操作。如果需要确认订单供应商应在携程VBK后台操作。接口层面上供应商返回成功0000即可且该结果不影响订单在携程VBK后台的确认结果
* 2供应商系统同步或异步确认。携程根据供应商返回结果成功或失败或异步通知的结果确认通过或确认拒绝进行处理常规对接均为2。
*/
private Integer confirmType;
/**
* 订单项节点
*/
private List<OdaTripCancelOrderItems> items;
}

View File

@@ -0,0 +1,48 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 预下单支付确认 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripCancelOrderConfirm implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 携程处理批次流水号。格式为处理日期yyyyMMdd+32位去分隔符的Guid
*/
private String sequenceId;
/**
* 携程订单号
*/
private String otaOrderId;
/**
* 供应商订单号
*/
private String supplierOrderId;
/**
* 确认结果返回码, 参考: 供应商接口返回码
* 如0000表示成功
*/
private String confirmResultCode;
/**
* 确认结果信息:
* 确认成功
* 确认失败+具体原因, 参考: 供应商接口返回码
*/
private String confirmResultMessage;
/**
* 订单项节点
*/
private List<OdaTripCancelOrderConfirmItems> items;
}

View File

@@ -0,0 +1,30 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 预下单支付确认 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripCancelOrderConfirmItems implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单项编号
*/
private String itemId;
/**
* 凭证集合节点
* (如需根据站点进行凭证语言翻译供应商可根据每个item下的locale字段自行翻译凭证并返回翻译后的凭证信息)
* 当supplierConfirmType=1时可返回值 当supplierConfirmType=2时不返回值
*/
private List<OdaTripPayResponseVoucher> vouchers;
}

View File

@@ -0,0 +1,62 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* 订单项节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripCancelOrderItems implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单项编号
*/
private String itemId;
/**
* 供应商产品最小单位
* 如供应商产品的资源编号
*/
private String PLU;
/**
* 供应商最晚确认时间格式“yyyy-MM-dd HH:mm:ss”。该时间为北京时区的时间
* 仅当confirmType=2且合同中对客售后服务是由商家提供时此字段必传
* (注:若超出此时间订单仍未被确认,携程会自动对客退订)
*/
private String lastConfirmTime;
/**
* 退订类型,必填
* 0、全退1、按份数部分退2、按出行人部分退
* 若为全退/按份数退,会传取消份数;若为按出行人退,会传取消份数及取消份数包含的全部出行人
*/
private Integer cancelType;
/**
* 本次请求取消份数
*/
private Integer quantity;
/**
* 退订出行人节点cancelType=2时该节点必传传取消份数包含的全部出行人
*/
private List<OdaTripPayResponsePassenger> passengers;
/**
* 被取消的退款金额。当合同中对客售后服务是由商家提供时此字段会传值退款金额为PLU的单位卖价扣除手续费后的金额
*/
private BigDecimal amount;
/**
* 被取消的退款金额单位(货币标准符号)
* 如CNY表示人民币
*/
private String amountCurrency;
}

View File

@@ -0,0 +1,29 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 请求订单取消 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripCancelResponseOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 供应商确认类型:
* 1.取消已确认当confirmType =1/2时可同步返回确认结果
* 2.取消待确认当confirmType =2时需异步返回确认结果的
*/
private Integer supplierConfirmType;
/**
* 订单项节点
*/
private List<OdaTripCancelResponseOrderItems> items;
}

View File

@@ -0,0 +1,27 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 订单项节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripCancelResponseOrderItems implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单项编号
*/
private String itemId;
/**
* 订单项节点
*/
private List<OdaTripQueryResponseVoucher> vouchers;
}

View File

@@ -0,0 +1,23 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 优惠信息节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripConsumedDiscount implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 优惠策略集合节点仅供wifi租赁使用/台/天)
*/
private List<OdaTripConsumedPolicy> policyList;
}

View File

@@ -0,0 +1,35 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 请求订单核销通知 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripConsumedOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 携程处理批次流水号。格式为处理日期yyyyMMdd+32位去分隔符的Guid
*/
private String sequenceId;
/**
* 携程订单号
*/
private String otaOrderId;
/**
* 供应商订单号
*/
private String supplierOrderId;
/**
* 订单项节点
*/
private List<OdaTripConsumedOrderItems> items;
}

View File

@@ -0,0 +1,74 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* 订单项节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripConsumedOrderItems implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单项编号
*/
private String itemId;
/**
* 实际使用开始日期格式“yyyy-MM-dd”
*/
private String useStartDate;
/**
* 实际使用结束日期格式“yyyy-MM-dd”
*/
private String useEndDate;
/**
* 订单总份数
*/
private Integer quantity;
/**
* 订单已核销总份数。订单核销总份数如该笔订单共购买三张游客第一次核销2张则传值2第二次又核销一张则传值3
*/
private Integer useQuantity;
/**
* 已核销的份数所对应的出行人,一张一人该节点必填
*/
private List<OdaTripConsumedPassenger> passengers;
/**
* 已核销的份数所对应的凭证,有已核销凭证时必填
*/
private List<OdaTripConsumedVoucher> vouchers;
/**
* 优惠信息节点
*/
private List<OdaTripConsumedDiscount> discount;
/**
* 备注信息
*/
private String remark;
/**
* 实际损失金额
*/
private BigDecimal lostAmount;
/**
* 实际损失金额单位(货币标准符号),暂只支持人民币
* 如CNY表示人民币
*/
private BigDecimal lostAmountCurrency;
}

View File

@@ -0,0 +1,22 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
/**
* 出行人凭证关系节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripConsumedPassenger implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 出行人编号
*/
private String passengerId;
}

View File

@@ -0,0 +1,28 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
/**
* 优惠策略集合节点仅供wifi租赁使用/台/天) Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripConsumedPolicy implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 优惠日期, 格式“yyyy-MM-dd”
*/
private String date;
/**
* 优惠数量
*/
private Integer quantity;
}

View File

@@ -0,0 +1,24 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
/**
* 出行人凭证关系节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripConsumedVoucher implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 凭证编号
*/
private String voucherId;
}

View File

@@ -0,0 +1,40 @@
package com.zhwl.trip.domain;
import lombok.Data;
/**
* 联系人节点,为此笔订单联系人,并非实际出行人 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripContacts {
private static final long serialVersionUID = 1L;
/**
* 姓名,需要支持中/英文。注:英文姓名会用/分割示例VIIYGS/MAKSIM
*/
private String name;
/**
* 手机号码/国际电话号码
*/
private String mobile;
/**
* 国际标准电话区号, 如86表示中华人民共和国1表示美国
*/
private String intlCode;
/**
* 备选的手机号码/国际电话号码
*/
private String optionalMobile;
/**
* 备选的国际标准电话区号, 如86表示中华人民共和国1表示美国
*/
private String optionalIntlCode;
/**
* 邮箱地址
*/
private String email;
}

View File

@@ -0,0 +1,49 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.util.List;
/**
* 订单新订请求对象 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripCreateOrder {
private static final long serialVersionUID = 1L;
/**
* 携程处理批次流水号。格式为处理日期yyyyMMdd+32位去分隔符的Guid
*/
private String sequenceId;
/**
* 携程订单号
*/
private String otaOrderId;
/**
* 确认类型: 1.仅通知供应商订单操作。如果需要确认订单供应商应在携程VBK后台操作。接口层面上供应商返回成功0000即可且该结果不影响订单在携程VBK后台的确认结果
* 2.供应商系统(同步或异步)确认,携程根据供应商返回结果(成功或失败)或异步通知的结果(确认通过或确认拒绝)进行处理
*/
private Integer confirmType;
/**
* 供应商最晚确认时间格式yyyy-MM-dd hh:mm:ss该时间前供应商需完成该订单的下单确认否则视为超时下单失败
*/
private String orderLastConfirmTime;
/**
* 联系人节点,为此笔订单联系人,并非实际出行人
*/
private List<OdaTripContacts> contacts;
/**
* 订单项节点
*/
private List<OdaTripCreateOrderItems> items;
}

View File

@@ -0,0 +1,104 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 订单新订节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripCreateOrderItems {
private static final long serialVersionUID = 1L;
/**
* 订单项编号
*/
private String itemId;
/**
* 用户对外标识
*/
private String openId;
/**
* 供应商产品最小单位
* 如供应商产品的资源编号
*/
private String PLU;
/**
* 语言-地区 zh-CN 中文简体-中国
*/
private String locale;
/**
* 销售渠道
* XCW携程旅行网
* BSTD百事通门店
* XCD携程门店
* YCD悠程门店
* QT2B其他渠道
*/
private String distributionChannel;
/**
* 使用日期格式“yyyy-MM-dd”字段含义如下
*
* string
* 使用日期格式“yyyy-MM-dd”字段含义如下
* 单日票:表示客人下单时选择的使用日期;
* 多日票含WiFi等多日租赁产品表示使用开始日期配合<最晚可使用日期>字段使用;
* 非指定日期票:表示客人最早可使用日期,配合<最晚可使用日期>字段使用
*/
private String useStartDate;
/**
* 最晚可使用日期格式“yyyy-MM-dd”
*/
private String useEndDate;
/**
* 备注信息
*/
private String remark;
/**
* 单价卖价
*/
private BigDecimal price;
/**
* 单价卖价单位(货币标准符号) 如CNY表示人民币
*/
private String priceCurrency;
/**
* 单价结算价, 注:若商品合同中报价模式含有按底价报价,则此字段传值。否则不传值。(具体合同信息请咨询业务经理)
*/
private BigDecimal cost;
/**
* 单价结算价单位(货币标准符号) 如CNY表示人民币
*/
private String costCurrency;
/**
* 供应商建议携程卖价。划线价
*/
private String suggestedPrice;
/**
* 供应商建议携程卖价单位货币标准符号CNY表示人民币暂只支持人民币
*/
private String suggestedPriceCurrency;
/**
* 订单数量
*/
private Integer quantity;
/**
* 出行人节点
*/
private List<OdaTripPassengers> passengers;
}

View File

@@ -0,0 +1,38 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
/**
* 携程旅行请求头对象 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripHeader implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 供应商账号
*/
private String accountId;
/**
* 接口名称
*/
private String serviceName;
/**
* 请求时间
*/
private String requestTime;
/**
* 版本号
*/
private String version;
/**
* 签名
*/
private String sign;
}

View File

@@ -0,0 +1,94 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 订单项节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripItems {
private static final long serialVersionUID = 1L;
/**
* 供应商产品最小单位
*
* 如供应商产品的资源编号
*/
private String PLU;
/**
* 语言-地区 zh-CN 中文简体-中国
*/
private String locale;
/**
* 销售渠道
* XCW携程旅行网
* BSTD百事通门店
* XCD携程门店
* YCD悠程门店
* QT2B其他渠道
*/
private String distributionChannel;
/**
* 使用日期格式“yyyy-MM-dd”字段含义如下
*
* string
* 使用日期格式“yyyy-MM-dd”字段含义如下
* 单日票:表示客人下单时选择的使用日期;
* 多日票含WiFi等多日租赁产品表示使用开始日期配合<最晚可使用日期>字段使用;
* 非指定日期票:表示客人最早可使用日期,配合<最晚可使用日期>字段使用
*/
private String useStartDate;
/**
* 最晚可使用日期格式“yyyy-MM-dd”
*/
private String useEndDate;
/**
* 备注信息
*/
private String remark;
/**
* 单价卖价
*/
private BigDecimal price;
/**
* 单价卖价单位(货币标准符号) 如CNY表示人民币
*/
private String priceCurrency;
/**
* 邮箱地址
*/
private String email;
/**
* 单价结算价, 注:若商品合同中报价模式含有按底价报价,则此字段传值。否则不传值。(具体合同信息请咨询业务经理)
*/
private BigDecimal cost;
/**
* 订单数量
*/
private Integer quantity;
/**
* 单价结算价单位(货币标准符号) 如CNY表示人民币
*/
private String costCurrency;
/**
* 供应商建议携程卖价。划线价
*/
private String suggestedPrice;
/**
* 供应商建议携程卖价单位货币标准符号CNY表示人民币暂只支持人民币
*/
private String suggestedPriceCurrency;
/**
* 出行人节点
*/
private List<OdaTripPassengers> passengers;
}

View File

@@ -0,0 +1,112 @@
package com.zhwl.trip.domain;
import lombok.Data;
/**
* 出行人节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripPassengers {
private static final long serialVersionUID = 1L;
/**
* 出行人编号,用来标识该订单每一位出行人
*/
private String passengerId;
/**
* 姓名
*/
private String name;
/**
* 拼音或英文名
*/
private String firstName;
/**
* 拼音或英文名
*/
private String lastName;
/**
* 手机号码/国际电话号码
*/
private String mobile;
/**
* 国际标准电话区号86表示中华人民共和国1表示美国
*/
private String intlCode;
/**
* 证件类型,不传/传null/传0指不需要证件1 身份证2 护照3 学生证
*/
private String cardType;
/**
* 证件号,实名制产品必传
*/
private String cardNo;
/**
* 生日格式“yyyy-MM-dd”
*/
private String birthDate;
/**
* 年龄类型
*
* ADU:成人
*
* CHI:儿童
*
* BAB:婴儿
*/
private String ageType;
/**
* 性别
* M:男
* F:女
*/
private String gender;
/**
* 国籍代码
*/
private String nationalityCode;
/**
* 国籍名称
*/
private String nationalityName;
/**
* 证件签发国
*/
private String cardIssueCountry;
/**
* 证件签发地
*/
private String cardIssuePlace;
/**
* 证件签发日期格式“yyyy-MM-dd”
*/
private String cardIssueDate;
/**
* 证件有效期格式“yyyy-MM-dd”
*/
private String cardValidDate;
/**
* 出生地
*/
private String birthPlace;
/**
* 身高,单位(cm)
*/
private Integer height;
/**
* 体重,单位(kg)
*/
private Integer weight;
}

View File

@@ -0,0 +1,47 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 预下单支付 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripPayPreOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 携程处理批次流水号。格式为处理日期yyyyMMdd+32位去分隔符的Guid
*/
private String sequenceId;
/**
* 携程订单号
*/
private String otaOrderId;
/**
* 供应商订单号
*/
private String supplierOrderId;
/**
* 确认类型: 1.仅通知供应商订单操作。如果需要确认订单供应商应在携程VBK后台操作。接口层面上供应商返回成功0000即可且该结果不影响订单在携程VBK后台的确认结果
* 2.供应商系统(同步或异步)确认,携程根据供应商返回结果(成功或失败)或异步通知的结果(确认通过或确认拒绝)进行处理
*/
private Integer confirmType;
/**
* 供应商最晚确认时间格式yyyy-MM-dd hh:mm:ss该时间前供应商需完成该订单的下单确认否则视为超时下单失败
*/
private String orderLastConfirmTime;
/**
* 支付订单项节点
*/
private List<OdaTripPayPreOrderItems> items;
}

View File

@@ -0,0 +1,58 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 预下单支付确认 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripPayPreOrderConfirm implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 携程处理批次流水号。格式为处理日期yyyyMMdd+32位去分隔符的Guid
*/
private String sequenceId;
/**
* 携程订单号
*/
private String otaOrderId;
/**
* 确认结果返回码, 参考: 供应商接口返回码
* 如0000表示成功
*/
private String confirmResultCode;
/**
* 确认结果信息:
* 确认成功
* 确认失败+具体原因, 参考: 供应商接口返回码
*/
private String confirmResultMessage;
/**
* 凭证发送方
* 1.携程对客发送凭证。即供应商通过API将凭证发送给携程系统携程系统再向客人发送凭证。推荐
* 2.供应商对客发送凭证。即供应商系统直接向客人发送凭证。无论供应商是否提供vouchers节点的内容携程系统既不会处理也不会对客发送凭证。
* voucherSender=2时需接入订单凭证发送接口。
*/
private Integer voucherSender;
/**
* 凭证集合节点
* (如需根据站点进行凭证语言翻译供应商可根据每个item下的locale字段自行翻译凭证并返回翻译后的凭证信息)
* 当supplierConfirmType=1时可返回值 当supplierConfirmType=2时不返回值
*/
private List<OdaTripPayResponseVoucher> vouchers;
/**
* 订单项节点
*/
private List<OdaTripPayResponseOrderItems> items;
}

View File

@@ -0,0 +1,28 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
/**
* 支付订单项节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripPayPreOrderItems implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 供应商产品最小单位
*
* 如供应商产品的资源编号
*/
private String PLU;
/**
* 订单项编号预下单创建的订单项按照PLU绑定订单项编号
*/
private String itemId;
}

View File

@@ -0,0 +1,48 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 携程预下单返回体 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripPayResponseOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 携程订单号
*/
private String otaOrderId;
/**
* 供应商订单号
*/
private String supplierOrderId;
/**
* 供应商确认类型1支付已确认当confirmType =1/2时可同步返回确认结果
* 2支付待确认当confirmType =2时需异步返回确认结果的后续通过预下单支付确认接口传确认信息
*/
private Integer supplierConfirmType;
/**
*凭证发送方
* 1.携程对客发送凭证。即供应商通过API将凭证发送给携程系统携程系统再向客人发送凭证。推荐
* 2.供应商对客发送凭证。即供应商系统直接向客人发送凭证。无论供应商是否提供vouchers节点的内容携程系统既不会处理也不会对客发送凭证。
* voucherSender=2时需接入订单凭证发送接口。
*/
private Integer voucherSender;
/**
* 凭证集合节点
* (如需根据站点进行凭证语言翻译供应商可根据每个item下的locale字段自行翻译凭证并返回翻译后的凭证信息)
* 当supplierConfirmType=1时可返回值 当supplierConfirmType=2时不返回值
*/
private List<OdaTripPayResponseVoucher> vouchers;
/**
* 订单项节点
*/
private List<OdaTripPayResponseOrderItems> items;
}

View File

@@ -0,0 +1,40 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 订单项节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripPayResponseOrderItems implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单项编号
*/
private String itemId;
/**
*是否出行人与凭证有关联关系
* 相关isCredentialVouchers=1即该出行人核销或退订对应凭证会根据该凭证已绑定的全部出行人状态自动计算失效
* 不相关isCredentialVouchers=0
*/
private Integer isCredentialVouchers;
/**
* 出行人凭证关系节点isCredentialVouchers=1必填
* (注:请确保传输的出行人与凭证关系的准确性,后续退订和核销均会依据此信息自动更新凭证状态)
*/
private List<OdaTripPayResponsePassenger> passengerVouchers;
/**
* 剩余库存数量节点 注:日期级别库存的产品在库存不足时需返回使用日期中的实际库存数量
*/
private List<OdaTripPreResponseInventorys> inventorys;
}

View File

@@ -0,0 +1,28 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
/**
* 出行人凭证关系节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripPayResponsePassenger implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 出行人编号
*/
private String passengerId;
/**
* 凭证编号
*/
private String voucherId;
}

View File

@@ -0,0 +1,62 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
/**
* 凭证集合节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripPayResponseVoucher implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单项编号,如果按资源单位来匹配凭证则必返回值
*/
private String itemId;
/**
* 凭证编号isCredentialVouchers=1必填需保证订单内唯一会用于核销和退订
*/
private String voucherId;
/**
* 凭证形式
* 1:普通凭证(凭身份证/手机号等使用)
* 2:数字码
* 3:二维码图片根据供应商返回的原始字符串voucherData生成二维码图片
* 4:凭证图片根据供应商返回的图片数据流voucherData生成凭证图片
* 5:PDF确认单根据供应商返回的文件数据流voucherData生成PDF确认单
* 6:凭证链接根据供应商返回调原始凭证链接voucherData生成短链接
* 7:条形码128格式根据供应商返回voucherData生成条形码128格式的图片凭证
* 8:条形码417格式根据供应商返回voucherData生成条形码417格式的图片凭证
*/
private Integer voucherType;
/**
* 凭证数字码 当voucherType=2时必返回值 当voucherType=3/4/5/6/7/8时可返回值作为辅助码
*/
private String voucherCode;
/**
* 凭证数据源 当voucherType=3时返回可生成二维码的原始字符串
* 当voucherType=4时返回base64后的凭证图片数据流
* 当voucherType=5时返回base64后的PDF文件数据流
* 当voucherType=6时返回原始凭证链接
* 当voucherType=7时返回可生成条形码128的原始字符串
* 当voucherType=8时返回可生成条形码417的原始字符串
*/
private String voucherData;
/**
* 凭证座位信息
* 注:座位信息与凭证需一一对应
* 例“15排09座”
*/
private String voucherSeatInfo;
}

View File

@@ -0,0 +1,26 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
/**
* 携程预下单剩余库存数量节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripPreResponseInventorys implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 使用日期格式“yyyy-MM-dd”
*/
private String useDate;
/**
* 使用日期对应的剩余库存数量
*/
private Integer quantity;
}

View File

@@ -0,0 +1,31 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 携程预下单返回体 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripPreResponseOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 携程订单号
*/
private String otaOrderId;
/**
* 供应商订单号
*/
private String supplierOrderId;
/**
* 剩余库存数量节点
*/
private List<OdaTripPreResponseOrderItems> items;
}

View File

@@ -0,0 +1,29 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 携程预下单返回订单项节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripPreResponseOrderItems implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 供应商产品最小单位
*
* 如供应商产品的资源编号
*/
private String PLU;
/**
* 剩余库存数量节点
*/
private List<OdaTripPreResponseInventorys> inventorys;
}

View File

@@ -0,0 +1,32 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 订单查询返回体 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripQueryResponseOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 携程订单号
*/
private String otaOrderId;
/**
* 供应商订单号
*/
private String supplierOrderId;
/**
* 订单项节点
*/
private List<OdaTripQueryResponseOrderItems> items;
}

View File

@@ -0,0 +1,70 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 携程订单查询返回订单项节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripQueryResponseOrderItems implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单项编号。如果为空调用了预下单创建接口但是没有调用预下单支付接口该字段必需传0
*/
private String itemId;
/**
* 实际使用开始日期格式“yyyy-MM-dd”
*/
private String useStartDate;
/**
* 实际使用结束日期格式“yyyy-MM-dd” 如只有一天将与useStartDate值相同
*/
private String useEndDate;
/**
* 订单状态
* 1 新订待确认
* 2 新订已确认
* 3 取消待确认
* 4 部分取消 使用前的部分取消的状态
* 5 全部取消
* 6 已取物品(票券、物件)
* 7 部分使用 使用后的部分使用状态
* 8 全部使用
* 9 已还物品(票券、物件)
* 10 已过期
* 11 待支付
* 12 支付待确认
* 13 支付已确认
* 14 预下单取消成功
*/
private Integer orderStatus;
/**
* 订单总份数
*/
private Integer quantity;
/**
* 实际使用总份数
*/
private Integer useQuantity;
/**
* 实际取消总份数
*/
private Integer cancelQuantity;
/**
* 出行人节点
*/
private List<OdaTripQueryResponsePassenger> passengers;
/**
* 凭证节点
*/
private List<OdaTripQueryResponseVoucher> vouchers;
}

View File

@@ -0,0 +1,28 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
/**
* 出行人节点cancelQuantity不为0且退订时cancelType=2必传传全部出行人信息 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripQueryResponsePassenger implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 出行人编号
*/
private String passengerId;
/**
* 状态0、待使用1、已使用2、已取消
*/
private Integer passengerStatus;
}

View File

@@ -0,0 +1,27 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
/**
* 凭证节点,传全部凭证信息 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripQueryResponseVoucher implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 凭证编号
*/
private String voucherId;
/**
* 状态0、待使用1、已使用2、已取消
*/
private Integer voucherStatus;
}

View File

@@ -0,0 +1,21 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
/**
* 订单退款返回体 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripRefundResponseOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 携程订单号
*/
private Integer supplierConfirmType;
}

View File

@@ -0,0 +1,25 @@
package com.zhwl.trip.domain;
import com.zhwl.common.core.domain.BaseEntity;
import lombok.Data;
/**
* 携程对象 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripResult extends BaseEntity{
private static final long serialVersionUID = 1L;
/**
* 处理结果返回码
*/
private OdaTripHeader header;
/**
* 处理结果返回信息
*/
private Object body;
}

View File

@@ -0,0 +1,32 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 订单验证 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripVerifyOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 携程处理批次流水号。格式为处理日期yyyyMMdd+32位去分隔符的Guid
*/
private String sequenceId;
/**
* 联系人节点,为此笔订单联系人,并非实际出行人
*/
private List<OdaTripContacts> contacts;
/**
* 订单项节点
*/
private List<OdaTripItems> items;
}

View File

@@ -0,0 +1,25 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 订单验证返回体 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripVerifyResponseOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单项节点
*/
private List<OdaTripVerifyResponseOrderItems> items;
}

View File

@@ -0,0 +1,29 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 携程订单验证返回订单项节点 Entity
*
* @author wangxing
* @date 2024-06-24
*/
@Data
public class OdaTripVerifyResponseOrderItems implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 供应商产品最小单位
* 如供应商产品的资源编号
*/
private String PLU;
/**
* 携程预下单剩余库存数量节点
*/
private List<OdaTripPreResponseInventorys> inventorys;
}

View File

@@ -0,0 +1,91 @@
package com.zhwl.trip.domain;
import com.zhwl.common.annotation.Excel;
import com.zhwl.common.core.domain.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 携程订单信息对象 zdy_trip_order
*
* @author wangxing
* @date 2024-06-26
*/
@Data
public class ZdyTripOrder extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 携程处理批次流水号 */
@Excel(name = "携程处理批次流水号")
private String sequenceId;
/** 携程订单号 */
@Excel(name = "携程订单号")
private String otaOrderId;
/** 供应商订单id */
@Excel(name = "供应商订单id")
private Long ticketOrderId;
/** 供应商订单号 */
@Excel(name = "供应商订单号")
private String supplierOrderId;
/** 携程服务名 */
private String serviceName;
/** 携程确认类型(1.仅通知供应商订单操作、2.供应商系统(同步或异步)确认) */
@Excel(name = "携程确认类型(1.仅通知供应商订单操作、2.供应商系统", readConverterExp = "同=步或异步")
private Integer confirmType;
/**
* 下单数量
*/
private Integer orderQuantity;
/**
* 使用日期对应的剩余库存数量
*/
private Integer quantity;
/** 供应商副表订单id */
private Long orderItemId;
/** 供应商订单明细id */
private Long orderDetailId;
/**
* 订单状态
* 1 新订待确认
* 2 新订已确认
* 3 取消待确认
* 4 部分取消 使用前的部分取消的状态
* 5 全部取消
* 6 已取物品(票券、物件)
* 7 部分使用 使用后的部分使用状态
* 8 全部使用
* 9 已还物品(票券、物件)
* 10 已过期
* 11 待支付
* 12 支付待确认
* 13 支付已确认
* 14 预下单取消成功
*/
private Integer orderStatus;
/**
*退款总金额
*/
private BigDecimal totalAmount;
/**
* 退款总金额单位(货币标准符号) 如CNY表示人民币
*/
private String totalAmountCurrency;
/**
* 携程订单明细信息对象
*/
private List<ZdyTripOrderDetail> tripOrderDetailList;
}

View File

@@ -0,0 +1,99 @@
package com.zhwl.trip.domain;
import com.zhwl.common.annotation.Excel;
import com.zhwl.common.core.domain.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
/**
* 携程订单明细信息对象 zdy_trip_order_detail
*
* @author wangxing
* @date 2024-06-27
*/
@Data
public class ZdyTripOrderDetail extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 携程订单id */
@Excel(name = "携程订单id")
private Long tripOrderId;
/** 供应商副表订单id */
@Excel(name = "供应商副表订单id")
private Long ticketOrderItemId;
/** 供应商副表核销码 */
@Excel(name = "供应商副表核销码")
private String ticketOrderItemCode;
/** 供应商订单明细id */
@Excel(name = "供应商订单明细id")
private Long ticketOrderDetailId;
/**
* 门票id
*/
@Excel(name = "门票id")
private Long ticketId;
/**
* 二维码规则1一票一码 2多票一码
*/
@Excel(name = "二维码规则", readConverterExp = "1=一票一码,2=多票一码")
private String qrcodeRule;
/** 游客id */
@Excel(name = "游客id")
private Long userTouristId;
/** 出行人编号 */
@Excel(name = "出行人编号")
private String passengerId;
/** 凭证编号 */
@Excel(name = "凭证编号")
private String voucherId;
/** 使用日期格式“yyyy-MM-dd” */
@Excel(name = "使用日期格式“yyyy-MM-dd”")
private String useDate;
/** 携程订单项编号 */
@Excel(name = "携程订单项编号")
private String itemId;
/**
* 订单状态
* 1 新订待确认
* 2 新订已确认
* 3 取消待确认
* 4 部分取消 使用前的部分取消的状态
* 5 全部取消
* 6 已取物品(票券、物件)
* 7 部分使用 使用后的部分使用状态
* 8 全部使用
* 9 已还物品(票券、物件)
* 10 已过期
* 11 待支付
* 12 支付待确认
* 13 支付已确认
* 14 预下单取消成功
*/
private Integer orderStatus;
/**
* 使用日期对应的剩余库存数量
*/
private Integer quantity;
/**
*退款金额
*/
private BigDecimal amount;
/**
* 退款金额单位(货币标准符号) 如CNY表示人民币
*/
private String amountCurrency;
}

View File

@@ -0,0 +1,50 @@
package com.zhwl.trip.domain;
import lombok.Data;
import java.io.Serializable;
/**
* 游客对象 zdy_user_tourist
*
* @author ruoyi
* @date 2024-04-07
*/
@Data
public class ZdyTripOrderUser implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 携程订单项编号
*/
private String itemId;
/**
* 商品编码
*/
private String plu;
/**
* 携程出行人编号,用来标识该订单每一位出行人
*/
private String passengerId;
/**
* 电话
*/
private String userName;
/**
* 电话
*/
private String mobile;
/**
* 游客
*/
private Long userId;
/**
* 是否同步携程
*/
private Boolean isSync;
}

View File

@@ -0,0 +1,77 @@
package com.zhwl.trip.mapper;
import com.zhwl.trip.domain.ZdyTripOrderDetail;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 携程订单明细信息Mapper接口
*
* @author wangxing
* @date 2024-06-27
*/
@Mapper
public interface ZdyTripOrderDetailMapper {
/**
* 查询携程订单明细信息
*
* @param id 携程订单明细信息主键
* @return 携程订单明细信息
*/
ZdyTripOrderDetail selectZdyTripOrderDetailById(Long id);
/**
* 根据itemId查询携程订单明细信息
* @param itemId
* @return
*/
List<ZdyTripOrderDetail> selectZdyTripOrderDetailByItemId(Long itemId);
/**
* 查询携程订单明细信息列表
*
* @param zdyTripOrderDetail 携程订单明细信息
* @return 携程订单明细信息集合
*/
List<ZdyTripOrderDetail> selectZdyTripOrderDetailList(ZdyTripOrderDetail zdyTripOrderDetail);
/**
* 查询携程订单明细信息列表
*
* @param tripOrderId 携程订单明细信息
* @return 携程订单明细信息集合
*/
List<ZdyTripOrderDetail> selectZdyTripOrderDetailListByTripOrderId(Long tripOrderId);
/**
* 新增携程订单明细信息
*
* @param zdyTripOrderDetail 携程订单明细信息
* @return 结果
*/
int insertZdyTripOrderDetail(ZdyTripOrderDetail zdyTripOrderDetail);
/**
* 修改携程订单明细信息
*
* @param zdyTripOrderDetail 携程订单明细信息
* @return 结果
*/
int updateZdyTripOrderDetail(ZdyTripOrderDetail zdyTripOrderDetail);
/**
* 删除携程订单明细信息
*
* @param id 携程订单明细信息主键
* @return 结果
*/
int deleteZdyTripOrderDetailById(Long id);
/**
* 批量删除携程订单明细信息
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
int deleteZdyTripOrderDetailByIds(Long[] ids);
}

View File

@@ -0,0 +1,78 @@
package com.zhwl.trip.mapper;
import com.zhwl.trip.domain.ZdyTripOrder;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 携程订单信息Mapper接口
*
* @author wangxing
* @date 2024-06-26
*/
@Mapper
public interface ZdyTripOrderMapper {
/**
* 查询携程订单信息
*
* @param id 携程订单信息主键
* @return 携程订单信息
*/
ZdyTripOrder selectZdyTripOrderById(Long id);
/**
* 根据订单号查询携程订单信息
* @param orderId
* @return
*/
ZdyTripOrder selectZdyTripOrderByOrderCode(String orderCode);
/**
* 查询携程订单信息列表
*
* @param zdyTripOrder 携程订单信息
* @return 携程订单信息集合
*/
List<ZdyTripOrder> selectZdyTripOrderList(ZdyTripOrder zdyTripOrder);
/**
* 查询携程订单信息列表
*
* @param zdyTripOrder 携程订单信息
* @return 携程订单信息集合
*/
List<ZdyTripOrder> selectZdyTripOrderColumnList(ZdyTripOrder zdyTripOrder);
/**
* 新增携程订单信息
*
* @param zdyTripOrder 携程订单信息
* @return 结果
*/
int insertZdyTripOrder(ZdyTripOrder zdyTripOrder);
/**
* 修改携程订单信息
*
* @param zdyTripOrder 携程订单信息
* @return 结果
*/
int updateZdyTripOrder(ZdyTripOrder zdyTripOrder);
/**
* 删除携程订单信息
*
* @param id 携程订单信息主键
* @return 结果
*/
int deleteZdyTripOrderById(Long id);
/**
* 批量删除携程订单信息
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
int deleteZdyTripOrderByIds(Long[] ids);
}

View File

@@ -0,0 +1,61 @@
package com.zhwl.trip.service;
import com.zhwl.trip.domain.ZdyTripOrderDetail;
import java.util.List;
/**
* 携程订单明细信息Service接口
*
* @author wangxing
* @date 2024-06-27
*/
public interface IZdyTripOrderDetailService {
/**
* 查询携程订单明细信息
*
* @param id 携程订单明细信息主键
* @return 携程订单明细信息
*/
public ZdyTripOrderDetail selectZdyTripOrderDetailById(Long id);
/**
* 查询携程订单明细信息列表
*
* @param zdyTripOrderDetail 携程订单明细信息
* @return 携程订单明细信息集合
*/
public List<ZdyTripOrderDetail> selectZdyTripOrderDetailList(ZdyTripOrderDetail zdyTripOrderDetail);
/**
* 新增携程订单明细信息
*
* @param zdyTripOrderDetail 携程订单明细信息
* @return 结果
*/
public int insertZdyTripOrderDetail(ZdyTripOrderDetail zdyTripOrderDetail);
/**
* 修改携程订单明细信息
*
* @param zdyTripOrderDetail 携程订单明细信息
* @return 结果
*/
public int updateZdyTripOrderDetail(ZdyTripOrderDetail zdyTripOrderDetail);
/**
* 批量删除携程订单明细信息
*
* @param ids 需要删除的携程订单明细信息主键集合
* @return 结果
*/
public int deleteZdyTripOrderDetailByIds(Long[] ids);
/**
* 删除携程订单明细信息信息
*
* @param id 携程订单明细信息主键
* @return 结果
*/
public int deleteZdyTripOrderDetailById(Long id);
}

View File

@@ -0,0 +1,69 @@
package com.zhwl.trip.service;
import com.zhwl.trip.domain.ZdyTripOrder;
import java.util.List;
/**
* 携程订单信息Service接口
*
* @author wangxing
* @date 2024-06-26
*/
public interface IZdyTripOrderService {
/**
* 查询携程订单信息
*
* @param id 携程订单信息主键
* @return 携程订单信息
*/
ZdyTripOrder selectZdyTripOrderById(Long id);
/**
* 查询携程订单信息列表
*
* @param zdyTripOrder 携程订单信息
* @return 携程订单信息集合
*/
List<ZdyTripOrder> selectZdyTripOrderList(ZdyTripOrder zdyTripOrder);
/**
* 查询携程订单信息列表
*
* @param zdyTripOrder 携程订单信息
* @return 携程订单信息集合
*/
List<ZdyTripOrder> selectZdyTripOrderColumnList(ZdyTripOrder zdyTripOrder);
/**
* 新增携程订单信息
*
* @param zdyTripOrder 携程订单信息
* @return 结果
*/
int insertZdyTripOrder(ZdyTripOrder zdyTripOrder);
/**
* 修改携程订单信息
*
* @param zdyTripOrder 携程订单信息
* @return 结果
*/
int updateZdyTripOrder(ZdyTripOrder zdyTripOrder);
/**
* 批量删除携程订单信息
*
* @param ids 需要删除的携程订单信息主键集合
* @return 结果
*/
int deleteZdyTripOrderByIds(Long[] ids);
/**
* 删除携程订单信息信息
*
* @param id 携程订单信息主键
* @return 结果
*/
int deleteZdyTripOrderById(Long id);
}

View File

@@ -0,0 +1,114 @@
package com.zhwl.trip.service;
import com.zhwl.ticket.order.domain.bo.CommonParamBo;
import com.zhwl.trip.domain.OdaTripHeader;
/**
* 携程Service接口
*
* @author wangxing
* @date 2024-06-24
*/
public interface OdaTripService {
/**
* 验证签名
* @param odaTripHeader 请求参数
* @param requestBody 请求体
* @return 结果
*/
boolean checkHealth(OdaTripHeader odaTripHeader, String requestBody);
/**
* 订单验证
* @param requestBody 请求体
* @return 结果
*/
String verifyOrder(String requestBody);
/**
* 预下单创建
* @param requestBody 请求体
* @return 结果
*/
String createPreOrder(String requestBody);
/**
* 预下单取消
* @param requestBody 请求体
* @return 结果
*/
String cancelPreOrder(String requestBody);
/**
* 预下单支付
* @param requestBody 请求体
* @return 结果
*/
String payPreOrder(String requestBody);
/**
* 预下单支付确认
* @param requestBody 请求体
* @return 结果
*/
String payPreOrderConfirm(String requestBody);
/**
* 订单新订
* @param requestBody 请求体
* @return 结果
*/
String createOrder(String requestBody);
/**
* 订单取消
* @param requestBody 请求体
* @return 结果
*/
String cancelOrder(String requestBody);
/**
* 订单退款
* @param requestBody 请求体
* @return 结果
*/
String refundOrder(String requestBody);
/**
* 订单取消确认
* @param requestBody 请求体
* @return 结果
*/
String cancelOrderConfirm(String requestBody);
/**
* 订单查询
* @param requestBody 请求体
* @return 结果
*/
String queryOrder(String requestBody);
/**
* 订单核销通知
* @param requestBody 请求体
* @return 结果
*/
String orderConsumedNotice(String requestBody);
/**
* 核销后向携程发送订单核销通知
* @param commonParamBo 请求体
* @return 结果
*/
String syncOrderDetail(CommonParamBo commonParamBo);
/**
* 出行通知
* @param commonParamBo 请求体
* @return 结果
*/
void travelNotice(String orderCode);
}

View File

@@ -0,0 +1,89 @@
package com.zhwl.trip.service.impl;
import com.zhwl.common.utils.DateUtils;
import com.zhwl.trip.domain.ZdyTripOrderDetail;
import com.zhwl.trip.mapper.ZdyTripOrderDetailMapper;
import com.zhwl.trip.service.IZdyTripOrderDetailService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 携程订单明细信息Service业务层处理
*
* @author wangxing
* @date 2024-06-27
*/
@Service
@RequiredArgsConstructor
public class ZdyTripOrderDetailServiceImpl implements IZdyTripOrderDetailService {
private final ZdyTripOrderDetailMapper zdyTripOrderDetailMapper;
/**
* 查询携程订单明细信息
*
* @param id 携程订单明细信息主键
* @return 携程订单明细信息
*/
@Override
public ZdyTripOrderDetail selectZdyTripOrderDetailById(Long id) {
return zdyTripOrderDetailMapper.selectZdyTripOrderDetailById(id);
}
/**
* 查询携程订单明细信息列表
*
* @param zdyTripOrderDetail 携程订单明细信息
* @return 携程订单明细信息
*/
@Override
public List<ZdyTripOrderDetail> selectZdyTripOrderDetailList(ZdyTripOrderDetail zdyTripOrderDetail) {
return zdyTripOrderDetailMapper.selectZdyTripOrderDetailList(zdyTripOrderDetail);
}
/**
* 新增携程订单明细信息
*
* @param zdyTripOrderDetail 携程订单明细信息
* @return 结果
*/
@Override
public int insertZdyTripOrderDetail(ZdyTripOrderDetail zdyTripOrderDetail) {
zdyTripOrderDetail.setCreateTime(DateUtils.getNowDate());
return zdyTripOrderDetailMapper.insertZdyTripOrderDetail(zdyTripOrderDetail);
}
/**
* 修改携程订单明细信息
*
* @param zdyTripOrderDetail 携程订单明细信息
* @return 结果
*/
@Override
public int updateZdyTripOrderDetail(ZdyTripOrderDetail zdyTripOrderDetail) {
return zdyTripOrderDetailMapper.updateZdyTripOrderDetail(zdyTripOrderDetail);
}
/**
* 批量删除携程订单明细信息
*
* @param ids 需要删除的携程订单明细信息主键
* @return 结果
*/
@Override
public int deleteZdyTripOrderDetailByIds(Long[] ids) {
return zdyTripOrderDetailMapper.deleteZdyTripOrderDetailByIds(ids);
}
/**
* 删除携程订单明细信息信息
*
* @param id 携程订单明细信息主键
* @return 结果
*/
@Override
public int deleteZdyTripOrderDetailById(Long id) {
return zdyTripOrderDetailMapper.deleteZdyTripOrderDetailById(id);
}
}

View File

@@ -0,0 +1,97 @@
package com.zhwl.trip.service.impl;
import com.zhwl.trip.domain.ZdyTripOrder;
import com.zhwl.trip.mapper.ZdyTripOrderMapper;
import com.zhwl.trip.service.IZdyTripOrderService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 携程订单信息Service业务层处理
*
* @author wangxing
* @date 2024-06-26
*/
@Service
@RequiredArgsConstructor
public class ZdyTripOrderServiceImpl implements IZdyTripOrderService {
private final ZdyTripOrderMapper zdyTripOrderMapper;
/**
* 查询携程订单信息
*
* @param id 携程订单信息主键
* @return 携程订单信息
*/
@Override
public ZdyTripOrder selectZdyTripOrderById(Long id) {
return zdyTripOrderMapper.selectZdyTripOrderById(id);
}
/**
* 查询携程订单信息列表
*
* @param zdyTripOrder 携程订单信息
* @return 携程订单信息
*/
@Override
public List<ZdyTripOrder> selectZdyTripOrderList(ZdyTripOrder zdyTripOrder) {
return zdyTripOrderMapper.selectZdyTripOrderList(zdyTripOrder);
}
/**
* 新增携程订单信息
*
* @param zdyTripOrder 携程订单信息
* @return 结果
*/
@Override
public int insertZdyTripOrder(ZdyTripOrder zdyTripOrder) {
return zdyTripOrderMapper.insertZdyTripOrder(zdyTripOrder);
}
/**
* 修改携程订单信息
*
* @param zdyTripOrder 携程订单信息
* @return 结果
*/
@Override
public int updateZdyTripOrder(ZdyTripOrder zdyTripOrder) {
return zdyTripOrderMapper.updateZdyTripOrder(zdyTripOrder);
}
/**
* 查询携程订单信息列表
*
* @param zdyTripOrder 携程订单信息
* @return 携程订单信息集合
*/
@Override
public List<ZdyTripOrder> selectZdyTripOrderColumnList(ZdyTripOrder zdyTripOrder){
return zdyTripOrderMapper.selectZdyTripOrderColumnList(zdyTripOrder);
}
/**
* 批量删除携程订单信息
*
* @param ids 需要删除的携程订单信息主键
* @return 结果
*/
@Override
public int deleteZdyTripOrderByIds(Long[] ids) {
return zdyTripOrderMapper.deleteZdyTripOrderByIds(ids);
}
/**
* 删除携程订单信息信息
*
* @param id 携程订单信息主键
* @return 结果
*/
@Override
public int deleteZdyTripOrderById(Long id) {
return zdyTripOrderMapper.deleteZdyTripOrderById(id);
}
}

View File

@@ -0,0 +1,212 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhwl.trip.mapper.ZdyTripOrderDetailMapper">
<resultMap type="ZdyTripOrderDetail" id="ZdyTripOrderDetailResult">
<result property="id" column="id"/>
<result property="tripOrderId" column="trip_order_id"/>
<result property="ticketOrderItemId" column="ticket_order_item_id"/>
<result property="ticketOrderItemCode" column="ticket_order_item_code"/>
<result property="ticketOrderDetailId" column="ticket_order_detail_id"/>
<result property="ticketId" column="ticket_id"/>
<result property="qrcodeRule" column="qrcode_rule"/>
<result property="itemId" column="item_id"/>
<result property="userTouristId" column="user_tourist_id"/>
<result property="passengerId" column="passenger_id"/>
<result property="voucherId" column="voucher_id"/>
<result property="useDate" column="use_date"/>
<result property="quantity" column="quantity"/>
<result property="orderStatus" column="column_order_status"/>
<result property="amount" column="amount"/>
<result property="amountCurrency" column="amount_currency"/>
<result property="createTime" column="create_time"/>
<result property="orderStatus" column="order_status"/>
</resultMap>
<sql id="selectZdyTripOrderDetailVo">
select id, trip_order_id, ticket_order_item_id,amount,amount_currency,order_status,qrcode_rule,ticket_order_detail_id,ticket_order_item_code,ticket_id, user_tourist_id, passenger_id, voucher_id, use_date,quantity,item_id, create_time
from zdy_trip_order_detail
</sql>
<select id="selectZdyTripOrderDetailList" parameterType="ZdyTripOrderDetail" resultMap="ZdyTripOrderDetailResult">
<include refid="selectZdyTripOrderDetailVo"/>
<where>
<if test="tripOrderId != null ">
and trip_order_id = #{tripOrderId}
</if>
<if test="ticketOrderDetailId != null ">
and ticket_order_detail_id = #{ticketOrderDetailId}
</if>
<if test="ticketOrderItemId != null ">
and ticket_order_item_id = #{ticketOrderItemId}
</if>
<if test="userTouristId != null ">
and user_tourist_id = #{userTouristId}
</if>
<if test="passengerId != null and passengerId != ''">
and passenger_id = #{passengerId}
</if>
<if test="voucherId != null and voucherId != ''">
and voucher_id = #{voucherId}
</if>
<if test="useDate != null and useDate != ''">
and use_date = #{useDate}
</if>
<if test="itemId != null and itemId != ''">
and item_id = #{itemId}
</if>
</where>
</select>
<select id="selectZdyTripOrderDetailListByTripOrderId" parameterType="Long" resultMap="ZdyTripOrderDetailResult">
<include refid="selectZdyTripOrderDetailVo"/>
where trip_order_id = #{tripOrderId}
</select>
<select id="selectZdyTripOrderDetailById" parameterType="Long"
resultMap="ZdyTripOrderDetailResult">
<include refid="selectZdyTripOrderDetailVo"/>
where id = #{id}
</select>
<select id="selectZdyTripOrderDetailByItemId" parameterType="Long"
resultMap="ZdyTripOrderDetailResult">
<include refid="selectZdyTripOrderDetailVo"/>
where item_id = #{itemId}
</select>
<insert id="insertZdyTripOrderDetail" parameterType="ZdyTripOrderDetail" useGeneratedKeys="true"
keyProperty="id">
insert into zdy_trip_order_detail
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="tripOrderId != null">trip_order_id,
</if>
<if test="ticketOrderDetailId != null">ticket_order_detail_id,
</if>
<if test="ticketOrderItemId != null">ticket_order_item_id,
</if>
<if test="userTouristId != null">user_tourist_id,
</if>
<if test="ticketId != null">ticket_id,
</if>
<if test="passengerId != null">passenger_id,
</if>
<if test="voucherId != null">voucher_id,
</if>
<if test="useDate != null">use_date,
</if>
<if test="quantity != null">quantity,
</if>
<if test="itemId != null">item_id,
</if>
<if test="ticketOrderItemCode != null">ticket_order_item_code,
</if>
<if test="qrcodeRule != null">qrcode_rule,
</if>
<if test="orderStatus != null">order_status,
</if>
<if test="amount != null">amount,
</if>
<if test="amountCurrency != null">amount_currency,
</if>
create_time,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="tripOrderId != null">#{tripOrderId},
</if>
<if test="ticketOrderDetailId != null">#{ticketOrderDetailId},
</if>
<if test="ticketOrderItemId != null">#{ticketOrderItemId},
</if>
<if test="userTouristId != null">#{userTouristId},
</if>
<if test="ticketId != null">#{ticketId},
</if>
<if test="passengerId != null">#{passengerId},
</if>
<if test="voucherId != null">#{voucherId},
</if>
<if test="useDate != null">#{useDate},
</if>
<if test="quantity != null">#{quantity},
</if>
<if test="itemId != null">#{itemId},
</if>
<if test="ticketOrderItemCode != null">#{ticketOrderItemCode},
</if>
<if test="qrcodeRule != null">#{qrcodeRule},
</if>
<if test="orderStatus != null">#{orderStatus},
</if>
<if test="amount != null">#{amount},
</if>
<if test="amountCurrency != null">#{amountCurrency},
</if>
sysdate(),
</trim>
</insert>
<update id="updateZdyTripOrderDetail" parameterType="ZdyTripOrderDetail">
update zdy_trip_order_detail
<trim prefix="SET" suffixOverrides=",">
<if test="tripOrderId != null">trip_order_id =
#{tripOrderId},
</if>
<if test="ticketOrderDetailId != null">ticket_order_detail_id =
#{ticketOrderDetailId},
</if>
<if test="ticketOrderItemId != null">ticket_order_item_id =
#{ticketOrderItemId},
</if>
<if test="userTouristId != null">user_tourist_id =
#{userTouristId},
</if>
<if test="ticketId != null">ticket_id =
#{ticketId},
</if>
<if test="passengerId != null">passenger_id =
#{passengerId},
</if>
<if test="voucherId != null">voucher_id =
#{voucherId},
</if>
<if test="useDate != null">use_date =
#{useDate},
</if>
<if test="quantity != null">quantity =
#{quantity},
</if>
<if test="itemId != null">item_id =
#{itemId},
</if>
<if test="qrcodeRule != null">qrcode_rule =
#{qrcodeRule},
</if>
<if test="orderStatus != null">order_status =
#{orderStatus},
</if>
<if test="amount != null">amount =
#{amount},
</if>
<if test="amountCurrency != null">amount_currency =
#{amountCurrency},
</if>
</trim>
where id = #{id}
</update>
<delete id="deleteZdyTripOrderDetailById" parameterType="Long">
delete from zdy_trip_order_detail where id = #{id}
</delete>
<delete id="deleteZdyTripOrderDetailByIds" parameterType="String">
delete from zdy_trip_order_detail where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@@ -0,0 +1,275 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace = "com.zhwl.trip.mapper.ZdyTripOrderMapper">
<resultMap type = "ZdyTripOrder" id = "ZdyTripOrderResult">
<result property = "id" column = "id"/>
<result property = "sequenceId" column = "sequence_id"/>
<result property = "otaOrderId" column = "ota_order_id"/>
<result property = "ticketOrderId" column = "ticket_order_id"/>
<result property = "supplierOrderId" column = "supplier_order_id"/>
<result property = "confirmType" column = "confirm_type"/>
<result property = "orderQuantity" column = "order_quantity"/>
<result property = "serviceName" column = "service_name"/>
<result property = "quantity" column = "quantity"/>
<result property = "totalAmount" column = "total_amount"/>
<result property = "totalAmountCurrency" column = "total_amount_currency"/>
<result property = "orderStatus" column = "order_status"/>
<result property = "createTime" column = "create_time"/>
<result property = "updateTime" column = "update_time"/>
</resultMap>
<sql id = "selectZdyTripOrderVo">
select id,
sequence_id,
ota_order_id,
ticket_order_id,
total_amount,
total_amount_currency,
order_status,
supplier_order_id,
confirm_type,
order_quantity,
quantity,
service_name,
create_time,
update_time
from zdy_trip_order
</sql>
<resultMap type = "ZdyTripOrder" id = "ZdyTripOrderColumnResult">
<result property = "id" column = "id"/>
<result property = "sequenceId" column = "sequence_id"/>
<result property = "otaOrderId" column = "ota_order_id"/>
<result property = "ticketOrderId" column = "ticket_order_id"/>
<result property = "supplierOrderId" column = "supplier_order_id"/>
<result property = "confirmType" column = "confirm_type"/>
<result property = "orderQuantity" column = "order_quantity"/>
<result property = "serviceName" column = "service_name"/>
<result property = "quantity" column = "quantity"/>
<result property = "totalAmount" column = "total_amount"/>
<result property = "totalAmountCurrency" column = "total_amount_currency"/>
<result property = "orderStatus" column = "order_status"/>
<result property = "createTime" column = "create_time"/>
<result property = "updateTime" column = "update_time"/>
<collection property = "tripOrderDetailList" ofType = "ZdyTripOrderDetail" resultMap = "ZdyTripOrderDetailResult">
</collection>
</resultMap>
<resultMap type = "ZdyTripOrderDetail" id = "ZdyTripOrderDetailResult">
<result property = "id" column = "column_id"/>
<result property = "tripOrderId" column = "trip_order_id"/>
<result property = "ticketOrderItemId" column = "ticket_order_item_id"/>
<result property = "ticketOrderDetailId" column = "ticket_order_detail_id"/>
<result property = "ticketId" column = "ticket_id"/>
<result property = "itemId" column = "item_id"/>
<result property = "userTouristId" column = "user_tourist_id"/>
<result property = "ticketOrderItemCode" column = "ticket_order_item_code"/>
<result property = "qrcodeRule" column = "qrcode_rule"/>
<result property = "passengerId" column = "passenger_id"/>
<result property = "voucherId" column = "voucher_id"/>
<result property = "useDate" column = "use_date"/>
<result property = "quantity" column = "quantity"/>
<result property = "amount" column = "amount"/>
<result property = "amountCurrency" column = "amount_currency"/>
<result property = "orderStatus" column = "column_order_status"/>
<result property = "createTime" column = "create_time"/>
</resultMap>
<sql id = "selectZdyTripOrderColumnVo">
select a.id,
a.sequence_id,
a.ota_order_id,
a.total_amount,
a.total_amount_currency,
a.ticket_order_id,
a.order_status,
a.supplier_order_id,
a.confirm_type,
a.quantity,
a.order_quantity,
a.service_name,
a.create_time,
a.update_time,
b.id as column_id,
b.trip_order_id,
b.amount,
b.amount_currency,
b.qrcode_rule,
b.ticket_order_item_id,
b.order_status as column_order_status,
b.ticket_order_item_code,
b.ticket_id,
b.ticket_order_detail_id,
b.user_tourist_id,
b.passenger_id,
b.voucher_id,
b.use_date,
b.item_id,
b.quantity as column_quantity
from zdy_trip_order a
left join zdy_trip_order_detail b on b.trip_order_id = a.id
</sql>
<select id = "selectZdyTripOrderList" parameterType = "ZdyTripOrder" resultMap = "ZdyTripOrderResult">
<include refid = "selectZdyTripOrderVo"/>
<where>
<if test = "sequenceId != null and sequenceId != ''">
and sequence_id = #{sequenceId}
</if>
<if test = "otaOrderId != null and otaOrderId != ''">
and ota_order_id = #{otaOrderId}
</if>
<if test = "ticketOrderId != null ">
and ticket_order_id = #{ticketOrderId}
</if>
<if test = "supplierOrderId != null and supplierOrderId != ''">
and supplier_order_id = #{supplierOrderId}
</if>
<if test = "confirmType != null ">
and confirm_type = #{confirmType}
</if>
</where>
</select>
<select id = "selectZdyTripOrderColumnList" parameterType = "ZdyTripOrder" resultMap = "ZdyTripOrderColumnResult">
<include refid = "selectZdyTripOrderColumnVo"/>
<where>
<if test = "sequenceId != null and sequenceId != ''">
and a.sequence_id = #{sequenceId}
</if>
<if test = "otaOrderId != null and otaOrderId != ''">
and a.ota_order_id = #{otaOrderId}
</if>
<if test = "ticketOrderId != null ">
and a.ticket_order_id = #{ticketOrderId}
</if>
<if test = "supplierOrderId != null and supplierOrderId != ''">
and a.supplier_order_id = #{supplierOrderId}
</if>
<if test = "confirmType != null ">
and a.confirm_type = #{confirmType}
</if>
<if test = "orderStatus != null ">
and a.order_status = #{orderStatus}
</if>
<if test = "orderItemId != null ">
and b.ticket_order_item_id = #{orderItemId}
</if>
<if test = "orderDetailId != null ">
and b.ticket_order_detail_id = #{orderDetailId}
</if>
</where>
group by b.ticket_order_detail_id,a.id,b.id
</select>
<select id = "selectZdyTripOrderById" parameterType = "Long" resultMap = "ZdyTripOrderResult">
<include refid = "selectZdyTripOrderVo"/>
where id = #{id}
</select>
<select id = "selectZdyTripOrderByOrderCode" parameterType = "String" resultMap = "ZdyTripOrderResult">
<include refid = "selectZdyTripOrderVo"/>
where supplier_order_id = #{supplierOrderId}
</select>
<insert id = "insertZdyTripOrder" parameterType = "ZdyTripOrder" useGeneratedKeys = "true"
keyProperty = "id">
insert into zdy_trip_order
<trim prefix = "(" suffix = ")" suffixOverrides = ",">
<if test = "sequenceId != null">sequence_id,
</if>
<if test = "otaOrderId != null">ota_order_id,
</if>
<if test = "ticketOrderId != null">ticket_order_id,
</if>
<if test = "supplierOrderId != null">supplier_order_id,
</if>
<if test = "confirmType != null">confirm_type,
</if>
<if test = "quantity != null">quantity,
</if>
<if test = "orderQuantity != null">order_quantity,
</if>
<if test = "serviceName != null">service_name,
</if>
<if test = "orderStatus != null">order_status,
</if>
<if test = "totalAmount != null">total_amount,
</if>
<if test = "totalAmountCurrency != null">total_amount_currency,
</if>
create_time,
</trim>
<trim prefix = "values (" suffix = ")" suffixOverrides = ",">
<if test = "sequenceId != null">#{sequenceId},
</if>
<if test = "otaOrderId != null">#{otaOrderId},
</if>
<if test = "ticketOrderId != null">#{ticketOrderId},
</if>
<if test = "supplierOrderId != null">#{supplierOrderId},
</if>
<if test = "confirmType != null">#{confirmType},
</if>
<if test = "quantity != null">#{quantity},
</if>
<if test = "orderQuantity != null">#{orderQuantity},
</if>
<if test = "serviceName != null">#{serviceName},
</if>
<if test = "orderStatus != null">#{orderStatus},
</if>
<if test = "totalAmount != null">#{totalAmount},
</if>
<if test = "totalAmountCurrency != null">#{totalAmountCurrency},
</if>
sysdate(),
</trim>
</insert>
<update id = "updateZdyTripOrder" parameterType = "ZdyTripOrder">
update zdy_trip_order
<trim prefix = "SET" suffixOverrides = ",">
<if test = "sequenceId != null">sequence_id = #{sequenceId},
</if>
<if test = "otaOrderId != null">ota_order_id = #{otaOrderId},
</if>
<if test = "ticketOrderId != null">ticket_order_id = #{ticketOrderId},
</if>
<if test = "supplierOrderId != null">supplier_order_id = #{supplierOrderId},
</if>
<if test = "confirmType != null">confirm_type = #{confirmType},
</if>
<if test = "quantity != null">quantity = #{quantity},
</if>
<if test = "orderQuantity != null">order_quantity = #{orderQuantity},
</if>
<if test = "serviceName != null">service_name = #{serviceName},
</if>
<if test = "orderStatus != null">order_status = #{orderStatus},
</if>
<if test = "totalAmount != null">total_amount = #{totalAmount},
</if>
<if test = "totalAmountCurrency != null">total_amount_currency = #{totalAmountCurrency},
</if>
update_time = sysdate(),
</trim>
where id = #{id}
</update>
<delete id = "deleteZdyTripOrderById" parameterType = "Long">
delete
from zdy_trip_order
where id = #{id}
</delete>
<delete id = "deleteZdyTripOrderByIds" parameterType = "String">
delete from zdy_trip_order where id in
<foreach item = "id" collection = "array" open = "(" separator = "," close = ")">
#{id}
</foreach>
</delete>
</mapper>

Some files were not shown because too many files have changed in this diff Show More