提交 6e88c27e authored 作者: hzh's avatar hzh

代码优化

上级 97e3aa81
......@@ -60,6 +60,13 @@ public class BaseEntity implements Serializable {
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
/**
* 是否需要处理数据
*/
@JsonIgnore
@TableField(exist = false)
private Boolean processData;
/**
* 请求参数
*/
......
package org.dromara.common.mybatis.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ReflectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -31,13 +32,25 @@ public abstract class AbstractBaseService<V, B, T> implements IBaseService<V, B,
public TableDataInfo<V> queryPageList(B bo, PageQuery pageQuery) {
LambdaQueryWrapper<T> lqw = buildQueryWrapper(bo);
Page<V> result = mapper().selectVoPage(pageQuery.build(), lqw);
List<V> list = result.getRecords();
Object processDataObj = ReflectUtil.getFieldValue(bo, "processData");
Boolean processData = processDataObj == null ? true : (Boolean) processDataObj;
if (processData) {
processData(list);
}
return TableDataInfo.build(result);
}
@Override
public List<V> queryList(B bo) {
LambdaQueryWrapper<T> lqw = buildQueryWrapper(bo);
return mapper().selectVoList(lqw);
List<V> list = mapper().selectVoList(lqw);
Object processDataObj = ReflectUtil.getFieldValue(bo, "processData");
Boolean processData = processDataObj == null ? false : (Boolean) processDataObj;
if (processData) {
processData(list);
}
return list;
}
@Override
......@@ -52,8 +65,7 @@ public abstract class AbstractBaseService<V, B, T> implements IBaseService<V, B,
Class<T> clazz = (Class<T>) GenericsUtils.getSuperClassGenricType(this.getClass(), 2);
T add = MapstructUtils.convert(bo, clazz);
validEntityBeforeSave(add);
boolean flag = mapper().insert(add) > 0;
return flag;
return mapper().insert(add) > 0;
}
@Override
......
......@@ -99,7 +99,16 @@ public interface IBaseService<V, B, T> {
*
* @param entity 实体
*/
default void validEntityBeforeSave(T entity){
default void validEntityBeforeSave(T entity) {
}
/**
* 处理数据
*
* @param list list
*/
default void processData(List<V> list) {
}
......
......@@ -3,20 +3,22 @@ package org.dromara.server.controller;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.order.api.domain.OrderPay;
import org.dromara.order.api.domain.RemoteOrder;
import org.dromara.order.api.domain.RemoteSaveOrder;
import org.dromara.order.api.enums.OrderType;
import org.dromara.server.domain.vo.OrderPayVo;
import org.dromara.server.domain.vo.OrderQueryVo;
import org.dromara.server.service.IPayOrderService;
import org.dromara.server.domain.bo.OrderAirportBo;
import org.dromara.server.domain.bo.OrderHotelBo;
import org.dromara.server.domain.bo.OrderTrainBo;
import org.dromara.server.domain.bo.OrderVehiclesBo;
import org.dromara.server.domain.vo.*;
import org.dromara.server.service.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 订单
......@@ -30,6 +32,10 @@ import java.util.List;
public class OrderController {
private final IPayOrderService service;
private final IOrderAirportService orderAirportService;
private final IOrderHotelService orderHotelService;
private final IOrderTrainService orderTrainService;
private final IOrderVehiclesService vehiclesService;
/**
* 下单支付接口
......@@ -73,14 +79,53 @@ public class OrderController {
/**
* 获取费用信息
*
* @param vo vo
* @return 费用列表
*/
@PostMapping("/calcFee")
public R<List<RemoteSaveOrder.Fee>> calcFee(@Validated @RequestBody OrderPayVo vo){
public R<List<RemoteSaveOrder.Fee>> calcFee(@Validated @RequestBody OrderPayVo vo) {
OrderType ot = OrderType.getEnum(vo.getOrderType());
return R.ok(service.calcFee(vo.getOrderNo(), ot));
}
/**
* 订单列表
*/
@RequestMapping("/orderList")
public R<OrderAllVo> orderList(
@RequestParam(value = "startTime") String startTime,
@RequestParam(value = "endTime") String endTime
) {
Map<String, Object> map = Map.of("startTime", startTime, "endTime", endTime);
String userNo = LoginHelper.getUserNo();
//获取飞机票列表
OrderAirportBo oa = new OrderAirportBo().setPersonCode(userNo);
oa.setProcessData(true);
oa.setParams(map);
List<OrderAirportVo> airportList = orderAirportService.queryList(oa);
//获取火车票列表
OrderTrainBo ot = new OrderTrainBo().setPersonCode(userNo);
oa.setProcessData(true);
ot.setParams(map);
List<OrderTrainVo> trainList = orderTrainService.queryList(ot);
//获取酒店列表
OrderHotelBo oh = new OrderHotelBo().setPersonCode(userNo);
oa.setProcessData(true);
oh.setParams(map);
List<OrderHotelVo> hotelList = orderHotelService.queryList(oh);
//获取用车列表
OrderVehiclesBo ov = new OrderVehiclesBo().setPersonCode(userNo);
oa.setProcessData(true);
ov.setParams(map);
List<OrderVehiclesVo> vehiclesList = vehiclesService.queryList(ov);
return R.ok(new OrderAllVo()
.setAirportList(airportList)
.setTrainList(trainList)
.setHotelList(hotelList)
.setVehiclesList(vehiclesList)
);
}
}
package org.dromara.server.domain.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
* @author hzh
* @date 2025-01-02
* @desc 所有订单信息集合
**/
@Data
@Accessors(chain = true)
public class OrderAllVo implements Serializable {
/**
* 机场订单信息集合
*/
private List<OrderAirportVo> airportList;
/**
* 火车订单信息集合
*/
private List<OrderTrainVo> trainList;
/**
* 酒店订单信息集合
*/
private List<OrderHotelVo> hotelList;
/**
* 车辆订单信息集合
*/
private List<OrderVehiclesVo> vehiclesList;
}
......@@ -8,8 +8,6 @@ import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.service.AbstractBaseService;
import org.dromara.common.ys.model.res.airport.QueryTkOrderModel;
import org.dromara.common.ys.model.res.airport.other.*;
......@@ -55,16 +53,14 @@ public class OrderAirportServiceImpl extends AbstractBaseService<OrderAirportVo,
}
@Override
public TableDataInfo<OrderAirportVo> queryPageList(OrderAirportBo bo, PageQuery pageQuery) {
TableDataInfo<OrderAirportVo> page = super.queryPageList(bo, pageQuery);
List<OrderAirportVo> list = page.getRows();
public void processData(List<OrderAirportVo> list) {
super.processData(list);
List<Long> orderIds = StreamUtils.toList(list, OrderAirportVo::getId);
orderIds = CollectionUtils.isEmpty(orderIds) ? Arrays.asList(-1L) : orderIds;
List<OrderAirportRangeVo> rangeList = rangeMapper.selectVoList(new LambdaQueryWrapper<OrderAirportRange>().in(OrderAirportRange::getOrderId, orderIds));
list.forEach(item -> {
item.setRangeList(StreamUtils.filter(rangeList, r -> Objects.equals(r.getOrderId(), item.getId())));
});
return page;
}
@Override
......@@ -103,6 +99,16 @@ public class OrderAirportServiceImpl extends AbstractBaseService<OrderAirportVo,
lqw.eq(StringUtils.isNotBlank(bo.getIsShowCancel()), OrderAirport::getIsShowCancel, bo.getIsShowCancel());
lqw.eq(StringUtils.isNotBlank(bo.getOrderFrom()), OrderAirport::getOrderFrom, bo.getOrderFrom());
lqw.eq(bo.getAirportFee() != null, OrderAirport::getAirportFee, bo.getAirportFee());
if (params != null) {
String startTime = params.getOrDefault("startTime", StringUtils.EMPTY).toString();
if (StringUtils.isNotEmpty(startTime)) {
lqw.ge(OrderAirport::getBookDatetime, startTime);
}
String endTime = params.getOrDefault("endTime", StringUtils.EMPTY).toString();
if (StringUtils.isNotEmpty(endTime)) {
lqw.le(OrderAirport::getBookDatetime, endTime);
}
}
return lqw;
}
......
......@@ -83,6 +83,16 @@ public class OrderHotelServiceImpl extends AbstractBaseService<OrderHotelVo, Ord
lqw.eq(bo.getTotalAmount() != null, OrderHotel::getTotalAmount, bo.getTotalAmount());
lqw.eq(StringUtils.isNotBlank(bo.getBookingRule()), OrderHotel::getBookingRule, bo.getBookingRule());
lqw.eq(StringUtils.isNotBlank(bo.getCheckInDate()), OrderHotel::getCheckInDate, bo.getCheckInDate());
if (params != null) {
String startTime = params.getOrDefault("startTime", StringUtils.EMPTY).toString();
if (StringUtils.isNotEmpty(startTime)) {
lqw.ge(OrderHotel::getBookDate, startTime);
}
String endTime = params.getOrDefault("endTime", StringUtils.EMPTY).toString();
if (StringUtils.isNotEmpty(endTime)) {
lqw.le(OrderHotel::getBookDate, endTime);
}
}
return lqw;
}
......
......@@ -8,8 +8,6 @@ import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.service.AbstractBaseService;
import org.dromara.common.ys.model.req.train.OrderQueryModel;
import org.dromara.common.ys.model.res.airport.other.OrderPayInfoBean;
......@@ -61,9 +59,8 @@ public class OrderTrainServiceImpl extends AbstractBaseService<OrderTrainVo, Ord
}
@Override
public TableDataInfo<OrderTrainVo> queryPageList(OrderTrainBo bo, PageQuery pageQuery) {
TableDataInfo<OrderTrainVo> page = super.queryPageList(bo, pageQuery);
List<OrderTrainVo> list = page.getRows();
public void processData(List<OrderTrainVo> list) {
super.processData(list);
List<Long> orderIds = StreamUtils.toList(list, OrderTrainVo::getId);
orderIds = CollectionUtils.isEmpty(orderIds) ? Arrays.asList(-1L) : orderIds;
List<OrderTrainRangeVo> rangeList = rangeMapper.selectVoList(new LambdaQueryWrapper<OrderTrainRange>().in(OrderTrainRange::getOrderId, orderIds));
......@@ -72,7 +69,6 @@ public class OrderTrainServiceImpl extends AbstractBaseService<OrderTrainVo, Ord
item.setRange(StreamUtils.findFirst(rangeList, r -> Objects.equals(r.getOrderId(), item.getId())));
item.setTickerList(StreamUtils.filter(ticketList, r -> Objects.equals(r.getOrderId(), item.getId())));
});
return page;
}
@Override
......@@ -101,6 +97,16 @@ public class OrderTrainServiceImpl extends AbstractBaseService<OrderTrainVo, Ord
lqw.eq(StringUtils.isNotBlank(bo.getDrawDate()), OrderTrain::getDrawDate, bo.getDrawDate());
lqw.eq(StringUtils.isNotBlank(bo.getOrderFrom()), OrderTrain::getOrderFrom, bo.getOrderFrom());
lqw.eq(StringUtils.isNotBlank(bo.getTrainAccount()), OrderTrain::getTrainAccount, bo.getTrainAccount());
if (params != null) {
String startTime = params.getOrDefault("startTime", StringUtils.EMPTY).toString();
if (StringUtils.isNotEmpty(startTime)) {
lqw.ge(OrderTrain::getBookDate, startTime);
}
String endTime = params.getOrDefault("endTime", StringUtils.EMPTY).toString();
if (StringUtils.isNotEmpty(endTime)) {
lqw.le(OrderTrain::getBookDate, endTime);
}
}
return lqw;
}
......
......@@ -8,8 +8,6 @@ import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.service.AbstractBaseService;
import org.dromara.common.ys.model.res.airport.other.OrderBusinessInfoBean;
import org.dromara.common.ys.model.res.airport.other.OrderPayInfoBean;
......@@ -52,7 +50,6 @@ public class OrderVehiclesServiceImpl extends AbstractBaseService<OrderVehiclesV
private final BizUserMapper userMapper;
private final ScheduledExecutorService scheduledExecutorService;
@Override
public BaseMapperPlus<OrderVehicles, OrderVehiclesVo> mapper() {
return baseMapper;
......@@ -131,20 +128,28 @@ public class OrderVehiclesServiceImpl extends AbstractBaseService<OrderVehiclesV
lqw.eq(StringUtils.isNotBlank(bo.getStartArea()), OrderVehicles::getStartArea, bo.getStartArea());
lqw.eq(StringUtils.isNotBlank(bo.getArriveAirport()), OrderVehicles::getArriveAirport, bo.getArriveAirport());
lqw.eq(StringUtils.isNotBlank(bo.getVehiclesDesc()), OrderVehicles::getVehiclesDesc, bo.getVehiclesDesc());
if (params != null) {
String startTime = params.getOrDefault("startTime", StringUtils.EMPTY).toString();
if (StringUtils.isNotEmpty(startTime)) {
lqw.ge(OrderVehicles::getBookDate, startTime);
}
String endTime = params.getOrDefault("endTime", StringUtils.EMPTY).toString();
if (StringUtils.isNotEmpty(endTime)) {
lqw.le(OrderVehicles::getBookDate, endTime);
}
}
return lqw;
}
@Override
public TableDataInfo<OrderVehiclesVo> queryPageList(OrderVehiclesBo bo, PageQuery pageQuery) {
TableDataInfo<OrderVehiclesVo> page = super.queryPageList(bo, pageQuery);
List<OrderVehiclesVo> list = page.getRows();
public void processData(List<OrderVehiclesVo> list) {
super.processData(list);
List<Long> orderIds = StreamUtils.toList(list, OrderVehiclesVo::getId);
orderIds = CollectionUtils.isEmpty(orderIds) ? Arrays.asList(-1L) : orderIds;
List<OrderVehiclesBusinessVo> businessList = businessMapper.selectVoList(new LambdaQueryWrapper<OrderVehiclesBusiness>().in(OrderVehiclesBusiness::getOrderId, orderIds));
list.forEach(item -> {
item.setBusiness(StreamUtils.findFirst(businessList, r -> Objects.equals(r.getOrderId(), item.getId())));
});
return page;
}
@Override
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论