提交 7ada05f9 authored 作者: hzh's avatar hzh

火车票功能实现

上级 14a6e1cc
package org.dromara.common.ys.model.req.train;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.dromara.common.ys.model.BaseModel;
/**
* @author hzh
* @date 2024-11-15
**/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class CancelOrderModel extends BaseModel {
/**
* 订单编号
**/
private String orderNo;
}
package org.dromara.common.ys.model.req.train;
import org.dromara.common.ys.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @author hzh
* @date 2024-11-15
**/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class OrderQueryModel extends BaseModel {
/**
* 订单号
**/
private String orderNO;
}
package org.dromara.common.ys.model.res.train;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @author hzh
* @date 2024-11-15
**/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class BusinessInfo {
/**
* 最后审批时间
**/
private String appDatetime;
/**
* 出差申请单号
**/
private String ccsqdNo;
/**
* 联系人
**/
private String link_Man;
/**
* 成本中心编号
**/
private String costCenterNo;
/**
* 企业代码
**/
private String corpCode;
/**
* 违背事项代码
**/
private String violateitemCode;
/**
* 项目编号
**/
private String projectNo;
/**
* 最后审批人工号
**/
private String appUserNo;
/**
* 最后审批人姓名
**/
private String appUserName;
/**
* 违背原因代码
**/
private String reasonCode;
/**
* 联系手机
**/
private String link_mobile;
/**
* 出差事由
**/
private String travelRemark;
/**
* 企业预订人姓名
**/
private String bookerName;
/**
* 企业简称
**/
private String corpName;
/**
* 审批状态
**/
private String appStatus;
/**
* 联系邮箱
**/
private String link_email;
/**
* 违背事项名称
**/
private String violateitem;
/**
* 企业预订人工号
**/
private String bookerNo;
/**
* 是否违背差旅标准
**/
private String isViolate;
/**
* 成本中心名称
**/
private String costCenterName;
/**
* 低价航班信息
**/
private String lowFlightInfo;
/**
* 审批规则名字
**/
private String appRuleName;
/**
* 差旅类型
**/
private Integer businessType;
/**
* 项目名称
**/
private String projectName;
/**
* 违背原因名称
**/
private String reasonDesc;
}
package org.dromara.common.ys.model.res.train;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.dromara.common.ys.model.res.airport.other.OrderPayInfoBean;
import java.math.BigDecimal;
import java.util.List;
/**
* @author hzh
* @date 2024-11-15
**/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class OrderInfoModel {
/**
* 张数
**/
private Integer ticketNumber;
/**
* 预订时间
**/
private String bookDate;
/**
* 最晚出票时间 格式yyyy-MM-dd HH:mm:ss
**/
private String latePaymentTime;
/**
* 乘车人
**/
private String passengerNames;
/**
* 支付信息
**/
private PayInfo Pay;
/**
* 订单状态代码
**/
private String orderStatus;
/**
* 12306账号
**/
private String trainAccount;
/**
* 订单状态名称
**/
private String orderStatuName;
/**
* 保险金额
**/
private BigDecimal insureAmount;
/**
* 行程id
**/
private String routeId;
/**
* 是否可凭二代身份证直接进出站 1是 0 否
**/
private String isByidcard;
/**
* 支付信息集合 适用于多科目支付
**/
private List<OrderPayInfoBean> payInfoList;
/**
* 订单合计
**/
private BigDecimal orderPrice;
/**
* 差旅信息
**/
private BusinessInfo Business;
/**
* 订单号
**/
private String orderNo;
/**
* 是否无座
**/
private String isNoseat;
/**
* 票价合计
**/
private BigDecimal ticketPrice;
/**
* 是否可凭二代身份证直接进出站说明
**/
private String isByidcardName;
/**
* 检票口
**/
private String ticketEntrance;
/**
* 保险份数
**/
private Integer insureNum;
/**
* 乘车人List
**/
private List<TicketInfo> TrTicketList;
/**
* 取票单号
**/
private String takeTicketCode;
/**
* 订单出票状态代码
**/
private String purchaseStatus;
/**
* 车票行程info
**/
private RangeInfo TrRange;
/**
* 预订渠道
**/
private String orderFrom;
/**
* 出票时间
**/
private String drawDate;
/**
* 支付状态
**/
private String payStatus;
/**
* 服务费合计
**/
private BigDecimal ServiceChargePrice;
}
package org.dromara.common.ys.model.res.train;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @author hzh
* @date 2024-11-15
**/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class PayInfo {
/**
* 支付方式代码
**/
private String payMothed;
/**
* 支付操作人
**/
private String payUser;
/**
* 支付科目代码
**/
private String paySubject;
/**
* 支付方式名称
**/
private String payMothedName;
/**
* 支付卡号
**/
private String payBankCard;
/**
* 支付科目名称
**/
private String pay_subjectName;
/**
* 支付备注
**/
private String payRemark;
/**
* 支付时间
**/
private String payDatetime;
/**
* 支付流水号
**/
private String payBillno;
}
package org.dromara.common.ys.model.res.train;
import org.dromara.common.ys.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @author hzh
* @date 2024-11-15
**/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class RangeInfo {
/**
* 到达城市名称
**/
private String toCityName;
/**
* 旅行时长
**/
private String travelTime;
/**
* 出发站名称
**/
private String fromStationName;
/**
* 到达日期
**/
private String toDate;
/**
* 到达城市编号
**/
private String toCity;
/**
* 到达站代码
**/
private String toStationCode;
/**
* 车次
**/
private String trainCode;
/**
* 席别名称
**/
private String seatTypeName;
/**
* 出发日期
**/
private String fromDate;
/**
* 到达站名称
**/
private String toStationName;
/**
* 席别代码
**/
private String seatType;
/**
* 出发城市名称
**/
private String fromCityName;
/**
* 出发时刻
**/
private String fromTime;
/**
* 出发站代码
**/
private String fromStationCode;
/**
* 出发城市编号
**/
private String fromCity;
/**
* 到达时刻
**/
private String toTime;
}
package org.dromara.common.ys.model.res.train;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
* @author hzh
* @date 2024-11-15
**/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class TicketInfo {
/**
* 是否发生退票
**/
private Integer isReturn;
/**
* 乘车人姓名
**/
private String passengerName;
/**
* 是否已出票
**/
private String isTicket;
/**
* 国籍
**/
private String nation;
/**
* 证件有效截止日期 yyyy-MM-dd
**/
private String expiryDate;
/**
* 保险金额
**/
private BigDecimal insureAmount;
/**
* 序号
**/
private String sequenceNo;
/**
* 座位号
**/
private String seatCode;
/**
* 票价小计
**/
private BigDecimal ticketPriceCount;
/**
* id 此字段没任何用处
**/
private String id;
/**
* 票号
**/
private String ticketCode;
/**
* 车票明细ID
**/
private String ticketID;
/**
* 服务费
**/
private BigDecimal sellServiceCharge;
/**
* 乘机人所在部门名称
**/
private String empDeptName;
/**
* 乘车人证件类型
**/
private String idType;
/**
* 票价
**/
private BigDecimal ticketPrice;
/**
* 乘车人证件号码
**/
private String idCode;
/**
* 出生日期
**/
private String born;
/**
* 性别M男;F女
**/
private String sex;
/**
* 乘机人工号
**/
private String empNo;
/**
* 乘机人所在部门编号
**/
private String empDeptID;
/**
* 保险份数
**/
private BigDecimal insureNum;
/**
* 乘车人类型
**/
private Integer passengerType;
/**
* 乘车人手机号
**/
private String phoneNumber;
/**
* 是否发生改签
**/
private Integer isChange;
}
...@@ -3,13 +3,9 @@ package org.dromara.common.ys.service; ...@@ -3,13 +3,9 @@ package org.dromara.common.ys.service;
import org.dromara.common.ys.common.PageInfo; import org.dromara.common.ys.common.PageInfo;
import org.dromara.common.ys.model.req.train.QueryModel; import org.dromara.common.ys.model.req.train.QueryModel;
import org.dromara.common.ys.model.req.train.OrderBookReqModel; import org.dromara.common.ys.model.req.train.*;
import org.dromara.common.ys.model.req.train.OrderListQueryModel;
import org.dromara.common.ys.model.req.train.TrainSetCheckAccountDTOModel;
import org.dromara.common.ys.model.res.train.AllStationModel; import org.dromara.common.ys.model.res.train.AllStationModel;
import org.dromara.common.ys.model.res.train.OrderBookResModel; import org.dromara.common.ys.model.res.train.*;
import org.dromara.common.ys.model.res.train.OrderListQueryResModel;
import org.dromara.common.ys.model.res.train.CheckAccountResModel;
import java.util.List; import java.util.List;
...@@ -62,4 +58,22 @@ public interface ITrainService { ...@@ -62,4 +58,22 @@ public interface ITrainService {
*/ */
PageInfo<OrderListQueryResModel> orderList(String userId, OrderListQueryModel model); PageInfo<OrderListQueryResModel> orderList(String userId, OrderListQueryModel model);
/**
* 查询订单详情
*
* @param userId 用户id
* @param model 查询参数
* @return 查询结果
*/
OrderInfoModel detail(String userId, OrderQueryModel model);
/**
* 取消订单
*
* @param userId 用户id
* @param model 取消订单参数
* @return 取消订单结果
*/
Boolean cancelOrder(String userId, CancelOrderModel model);
} }
...@@ -10,9 +10,10 @@ import org.dromara.common.ys.common.PageInfo; ...@@ -10,9 +10,10 @@ import org.dromara.common.ys.common.PageInfo;
import org.dromara.common.ys.enums.DomainEnum; import org.dromara.common.ys.enums.DomainEnum;
import org.dromara.common.ys.enums.train.TrainApiEnum; import org.dromara.common.ys.enums.train.TrainApiEnum;
import org.dromara.common.ys.model.req.train.*; import org.dromara.common.ys.model.req.train.*;
import org.dromara.common.ys.model.res.train.CheckAccountResModel;
import org.dromara.common.ys.model.res.train.OrderBookResModel; import org.dromara.common.ys.model.res.train.OrderBookResModel;
import org.dromara.common.ys.model.res.train.OrderInfoModel;
import org.dromara.common.ys.model.res.train.OrderListQueryResModel; import org.dromara.common.ys.model.res.train.OrderListQueryResModel;
import org.dromara.common.ys.model.res.train.CheckAccountResModel;
import org.dromara.common.ys.service.ITrainService; import org.dromara.common.ys.service.ITrainService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -110,4 +111,34 @@ public class TrainServiceImpl implements ITrainService { ...@@ -110,4 +111,34 @@ public class TrainServiceImpl implements ITrainService {
.setTotal(pageInfo.getTotal()) .setTotal(pageInfo.getTotal())
.setList(JSON.parseArray(JSON.toJSONString(pageInfo.getList()), OrderListQueryResModel.class)); .setList(JSON.parseArray(JSON.toJSONString(pageInfo.getList()), OrderListQueryResModel.class));
} }
@Override
public OrderInfoModel detail(String userId, OrderQueryModel model) {
ApiHttpResponse res = Api.v1(
com.wenhe.base.base.RequestMethodEnum.POST,
DomainEnum.TEST.getDomain(),
TrainApiEnum.QUERY_ORDER.getUrl(),
userId,
JSON.toJSONString(model)
);
if (!CharSequenceUtil.equals(res.getErrCode(), Code.SUCCESS.getCode())) {
throw new RuntimeException(res.getTips());
}
return JSON.parseObject(JSON.parseObject(res.getData()).toJSONString(), OrderInfoModel.class);
}
@Override
public Boolean cancelOrder(String userId, CancelOrderModel model) {
ApiHttpResponse res = Api.v1(
com.wenhe.base.base.RequestMethodEnum.POST,
DomainEnum.TEST.getDomain(),
TrainApiEnum.ORDER_CANCEL.getUrl(),
userId,
JSON.toJSONString(model)
);
if (!CharSequenceUtil.equals(res.getErrCode(), Code.SUCCESS.getCode())) {
throw new RuntimeException(res.getTips());
}
return true;
}
} }
...@@ -9,12 +9,11 @@ import org.dromara.common.core.domain.R; ...@@ -9,12 +9,11 @@ import org.dromara.common.core.domain.R;
import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.ys.common.PageInfo; import org.dromara.common.ys.common.PageInfo;
import org.dromara.common.ys.constant.TripType; import org.dromara.common.ys.constant.TripType;
import org.dromara.common.ys.model.req.train.QueryModel;
import org.dromara.common.ys.model.req.train.*; import org.dromara.common.ys.model.req.train.*;
import org.dromara.common.ys.model.res.comomResource.CityModel; import org.dromara.common.ys.model.res.comomResource.CityModel;
import org.dromara.common.ys.model.res.train.AllStationModel; import org.dromara.common.ys.model.res.train.AllStationModel;
import org.dromara.common.ys.model.res.train.OrderBookResModel; import org.dromara.common.ys.model.res.train.*;
import org.dromara.common.ys.model.res.train.OrderListQueryResModel;
import org.dromara.common.ys.model.res.train.CheckAccountResModel;
import org.dromara.common.ys.service.ICommonResourceService; import org.dromara.common.ys.service.ICommonResourceService;
import org.dromara.common.ys.service.ITrainService; import org.dromara.common.ys.service.ITrainService;
import org.dromara.server.base.BaseController; import org.dromara.server.base.BaseController;
...@@ -196,5 +195,24 @@ public class TrainController extends BaseController { ...@@ -196,5 +195,24 @@ public class TrainController extends BaseController {
return R.ok(trainService.orderList(getUserId(), model)); return R.ok(trainService.orderList(getUserId(), model));
} }
/**
* 订单详情
*/
@GlobalTransactional(timeoutMills = 600000)
@GetMapping("/orderDetail")
public R<OrderInfoModel> orderDetail(OrderQueryModel model) {
return R.ok(trainService.detail(getUserId(), model));
}
/**
* 取消订单
*/
@GlobalTransactional(timeoutMills = 600000, rollbackFor = Exception.class)
@PostMapping("/cancel")
public R<Boolean> cancel(@RequestBody CancelOrderModel model) {
trainService.cancelOrder(getUserId(), model);
return R.ok(true);
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论