提交 4f435508 authored 作者: hzh's avatar hzh

机票模块增加接口

上级 dacaecb5
package org.dromara.common.ys.model.req.airport;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.dromara.common.ys.model.BaseModel;
/**
* @author hzh
* @date 2024-10-18
* @desc 指定航班获取舱位价格(第二屏)
**/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class QueryMoreCabinModel extends BaseModel {
/**
* 航班标识,查询航班时返回 ,
*/
private String cacheId;
/**
* 航班号
*/
private String flightNo;
/**
* 用于匹配差标的员工工号,如不传,以当前登录人工号进行匹配
*/
private String empNo;
}
......@@ -2,50 +2,180 @@ package org.dromara.common.ys.model.res.airport;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
* @author hzh
* @date 2024-10-21
**/
@Data
public class QueryFlightMinPriceModel extends QueryFlightModel {
public class QueryFlightMinPriceModel {
/**
* 价格map
* 出发城市机场信息 {[0 起飞机场三字码,1 出发机场名称,2 起飞城市id ,3起飞城市名称]}
*/
private Map<String, Object> priceMap;
private List<List<Object>> deptAirport;
/**
* 机型map
* 查询耗时(毫秒)
*/
private Map<String, Object> planeMap;
private Integer queryTimes;
/**
* 查询耗时(毫秒)
* 查询缓存key
*/
private Integer queryTimes;
private String queryCacheKey;
/**
* 机型信息 {[0机型,1机型名称]}
*/
private List<List<Object>> planes;
/**
* 航司信息 {[0航司二字码,1航司名称,2航司logo]}
*/
private List<List<Object>> airlines;
/**
* 七天特价
* 到达城市机场信息 {[0 到达机场三字码,1 到达机场名称,2 到达城市id,3 到达城市名称]}
*/
private List<WeekPrice> weekPrice;
private List<List<Object>> arrAirport;
/**
* 航班舱位信息集合
*/
private List<Flights> flights;
/**
* 全天最低价
*/
private DayMinPrice dayMinPrice;
private DayMinPriceBean dayMinPriceBean;
/**
* 中转航班信息
*/
private List<PlaneShoppingGnTransFerFlightBean> transFerFlightBeans;
}
/**
* 航班信息
*/
@Data
class Flights {
/**
* 到达信息 [0 机场城市信息编号 int ,1 到达航站楼,2 到达日期 yyyy-MM-dd,3 到达时间 HH:mm]
*/
private List<Object> arr;
/**
* 航班信息[0 航司信息编号 int ,1 航班号,2 共享航班号, 3 飞行里程 int ,4 飞行时长 eg:12h30m,5 飞行时长(分钟) int eg:120 ,6 是否有餐食 0否 1是,7 经停次数 大于0时 代表需经停 int,8 机型编号 int ,9 航程类型 1 单程 2中转]
*/
private List<Object> flight;
/**
* 最低价销售信息 [0 当前航班最低销售价 Double,1 航班最低销售折扣 Double,2 销售服务费]
*/
private List<Object> minPriceSale;
/**
* 最低价信息 [0 当前航班最低价 Double,1 机场建设费 Double,2 燃油税 Double,3 航班最低折扣 Double,4 航班最低价舱位代码,5 航班最低价舱位名称,6 航班最低价舱位等级,7 最低价舱位等级名称,8 经济舱全价,9产品类型 (0特价 1普通 2代购 3协议 4折上折 5直减产品 6商务优享 7GP产品)
*/
private List<Object> minPrice;
/**
* 出发信息 [0 机场城市信息编号 int,1 起飞航站楼,2 起飞日期 yyyy-MM-dd,3 起飞时间 HH:mm] ,
*/
private List<Object> dept;
/**
* 美亚专用,扩展信息4
*/
private Object ext4;
/**
* 美亚专用,扩展信息5
*/
private Object ext5;
}
/**
* 当天最低价
*/
@Data
class DayMinPriceBean {
/**
* 价格id
*/
private String arriveTime;
/**
* 航班号
*/
private String flightNo;
/**
* 账单价
*/
private BigDecimal departTime;
/**
* 舱位名称
*/
private String arriveDate;
/**
* 航班集合
* 舱位代码
*/
private Map<String, Object> flightMap;
private String cabin;
/**
* 舱位名称
*/
private String departDate;
/**
* 舱位名称
*/
private String cabinName;
}
/**
* 当天最低价
*/
@Data
class PlaneShoppingGnTransFerFlightBean {
/**
* 航班标识
* 中转航班信息
*/
private String cacheId;
private List<TransFerFlightInfo> transFerFlightInfos;
/**
* 出发信息 [0 停留时长 eg 10h5m ,1 中转次数 int,2 总时长 eg 10h5m ,3 总价格 bigdecimal,4中转城市名称 5 供应商id 6 总基建 7总燃油] ,
*/
private List<Object> transFerExt;
/**
* 销售价
*/
private BigDecimal salePrice;
/**
* 服务费
*/
private BigDecimal serviceFee;
}
/**
* 中转航班信息
*/
@Data
class TransFerFlightInfo {
/**
* 航班信息[0 航司信息编号 int ,1 航班号,2 共享航班号, 3 飞行里程 int ,4 飞行时长 eg:12h30m,5 飞行时长(分钟) int eg:120 ,6 是否有餐食 0否 1是,7 经停次数 大于0时 代表需经停 int,8 机型信息下标 int 9]
*/
private List<List<Object>> flight;
/**
* 出发信息 [0 机场城市信息编号 int,1 起飞航站楼,2 起飞日期 yyyy-MM-dd,3 起飞时间 HH:mm]
*/
private List<List<Object>> dept;
/**
* 到达信息 [0 机场城市信息编号 int ,1 到达航站楼,2 到达日期 yyyy-MM-dd,3 到达时间 HH:mm]
*/
private List<List<Object>> arr;
/**
* 舱位信息 [0 舱位等级代码,1 舱位等级名称,2 舱位代码, 3 舱位名称,4 舱位座位数 5 Y舱价]
*/
private List<List<Object>> cabin;
}
package org.dromara.common.ys.model.res.airport;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @author hzh
* @date 2024-10-21
**/
@Data
public class QueryMoreCabinModel {
/**
* 航班所有价格集合,数据结构参考航班列表查询接口返回的价格集合
*/
private Map<String, Object> priceMap;
/**
* 航班所有舱位集合,数据结构参考航班列表查询接口返回的航班的舱位集合
*/
private Map<String, Object> cabinMap;
/**
* 航班所有舱位类型集合,数据结构参考航班列表查询接口返回的航班的舱位类型集合
*/
private List<CabinType> cabinTypeList;
/**
* 舱位等级集合
*/
@Data
class CabinType {
/**
* 舱位等级名称
*/
private String cabinTypeName;
/**
* 舱位id集合
*/
private List<String> cabinList;
/**
* 舱位等级
*/
private String cabinType;
}
}
......@@ -32,6 +32,15 @@ public interface IAirportService {
*/
QueryFlightMinPriceModel queryFlightMinPrice(String userId, org.dromara.common.ys.model.req.airport.QueryFlightMinPriceModel model);
/**
* 指定航班获取舱位价格(第二屏)
*
* @param userId 用户id
* @param model 查询参数
* @return 查询结果
*/
QueryMoreCabinModel queryMoreCabin(String userId, org.dromara.common.ys.model.req.airport.QueryMoreCabinModel model);
/**
* 创建订单
*
......
......@@ -58,6 +58,22 @@ public class AirPortServiceImpl implements IAirportService {
return JSON.parseObject(res.getData(), QueryFlightMinPriceModel.class);
}
@Override
public QueryMoreCabinModel queryMoreCabin(String userId, org.dromara.common.ys.model.req.airport.QueryMoreCabinModel model) {
ApiHttpResponse res = Api.v1(
RequestMethodEnum.POST,
DomainEnum.TEST.getDomain(),
AirportApiEnum.QUERY_MORE_CABIN.getUrl(),
userId,
null,
JSON.toJSONString(model)
);
if (!CharSequenceUtil.equals(res.getErrCode(), Code.SUCCESS.getCode())) {
throw new RuntimeException(res.getTips());
}
return JSON.parseObject(res.getData(), QueryMoreCabinModel.class);
}
@Override
public List<BookOrderModel> bookOrder(String userId, org.dromara.common.ys.model.req.airport.bookOrder.BookOrderModel model) {
ApiHttpResponse res = Api.v1(
......
......@@ -76,6 +76,28 @@ public class AirportController extends BaseController {
return R.ok(airPortService.queryFlight(getUserId(), model));
}
/**
* 航班最低价查询(第一屏)
*/
@GlobalTransactional(timeoutMills = 600000)
@GetMapping("queryFlightMinPrice")
public R<QueryFlightMinPriceModel> queryFlightMinPrice(org.dromara.common.ys.model.req.airport.QueryFlightMinPriceModel model) {
List<AirportModel> airPortList = getAirPortList();
model.setArriveAirport(getCode(model.getArriveAirport(), airPortList));
model.setDepartAirport(getCode(model.getDepartAirport(), airPortList));
model.setTripType(TripType.PUBLIC.getCode());
return R.ok(airPortService.queryFlightMinPrice(getUserId(), model));
}
/**
* 指定航班获取舱位价格(第二屏)
*/
@GlobalTransactional(timeoutMills = 600000)
@GetMapping("queryMoreCabin")
public R<QueryMoreCabinModel> queryMoreCabin(org.dromara.common.ys.model.req.airport.QueryMoreCabinModel model) {
return R.ok(airPortService.queryMoreCabin(getUserId(), model));
}
private String getCode(String cityName, List<AirportModel> airPortList) {
return airPortList.stream().filter(item -> StringUtils.equals(cityName, item.getCityName()))
.sorted((o1, o2) -> {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论