提交 6668cd4a authored 作者: hzh's avatar hzh

下单功能实现

上级 414b3c1b
...@@ -19,6 +19,14 @@ public enum FeeType { ...@@ -19,6 +19,14 @@ public enum FeeType {
CLOUD_SERVICE_FEE("CLOUD_SERVICE_FEE", "云上服务费"), CLOUD_SERVICE_FEE("CLOUD_SERVICE_FEE", "云上服务费"),
//飞机票费 //飞机票费
AIRPLANE_TICKET_FEE("AIRPLANE_TICKET_FEE", "飞机票费"), AIRPLANE_TICKET_FEE("AIRPLANE_TICKET_FEE", "飞机票费"),
//火车票费
RAIL_TICKET_FEE("RAIL_TICKET_FEE", "火车票费"),
//用车费
CAR_FEE("CAR_FEE", "用车费"),
//用车罚金
CAR_FINE("CAR_FINE", "用车罚金"),
//酒店费
HOTEL_FEE("HOTEL_FEE", "酒店费"),
//服务费 //服务费
SERVICE_FEE("SERVICE_FEE", "服务费"); SERVICE_FEE("SERVICE_FEE", "服务费");
......
...@@ -19,4 +19,13 @@ public enum OrderType { ...@@ -19,4 +19,13 @@ public enum OrderType {
private final String type; private final String type;
private final String desc; private final String desc;
public static OrderType getEnum(String type) {
for (OrderType orderType : values()) {
if (orderType.getType().equals(type)) {
return orderType;
}
}
throw new RuntimeException("不存在该类型");
}
} }
package org.dromara.server.controller;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.order.api.enums.OrderType;
import org.dromara.server.domain.vo.OrderPayVo;
import org.dromara.server.service.IPayOrderService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author hzh
* @date 2024-12-06
**/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/order")
public class OrderController {
private IPayOrderService service;
/**
* 下单支付接口
*/
@PostMapping("/pay")
public R<Object> pay(@Validated OrderPayVo vo) {
OrderType ot = OrderType.getEnum(vo.getOrderType());
return R.ok(service.createOrder(vo.getOrderNo(), ot));
}
}
package org.dromara.server.domain.vo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* @author hzh
* @date 2024-12-06
* @desc TODO
**/
@Data
public class OrderPayVo {
/**
* 订单号
*/
@NotNull(message = "订单号不能为空")
private String orderNo;
/**
* 订单类型
*/
@NotNull(message = "订单类型不能为空")
private String orderType;
}
...@@ -41,7 +41,7 @@ public class AirportOrderStrategy implements IOrderStrategy { ...@@ -41,7 +41,7 @@ public class AirportOrderStrategy implements IOrderStrategy {
//燃油费 //燃油费
RemoteSaveOrder.Fee fuelFee = new RemoteSaveOrder.Fee() RemoteSaveOrder.Fee fuelFee = new RemoteSaveOrder.Fee()
.setFeeDesc("燃油费") .setFeeDesc("燃油费")
.setFeeAmount(detail.getInsureAmount()) .setFeeAmount(detail.getTax())
.setFeeType(FeeType.FUEL_FEE); .setFeeType(FeeType.FUEL_FEE);
//飞机票费 //飞机票费
RemoteSaveOrder.Fee planeTicket = new RemoteSaveOrder.Fee() RemoteSaveOrder.Fee planeTicket = new RemoteSaveOrder.Fee()
......
package org.dromara.server.service.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.ys.model.req.vehicles.OrderDetailModel;
import org.dromara.common.ys.service.IVehiclesService;
import org.dromara.order.api.domain.RemoteSaveOrder;
import org.dromara.order.api.enums.FeeType;
import org.dromara.server.service.IOrderStrategy;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 用车订单策略
*
* @author hzh
* @date 2024-12-06
**/
@Slf4j
@Service("CAR" + IOrderStrategy.BASE_NAME)
@RequiredArgsConstructor
public class CarOrderStrategy implements IOrderStrategy {
private IVehiclesService vehiclesService;
@Override
public RemoteSaveOrder createOrder(String orderNo) {
org.dromara.common.ys.model.res.vehicles.OrderDetailModel detail = vehiclesService.detail(LoginHelper.getUserNo(), new OrderDetailModel().setOrderNo(orderNo));
// 罚金
RemoteSaveOrder.Fee fineFee = new RemoteSaveOrder.Fee()
.setFeeDesc("罚金")
.setFeeAmount(detail.getFine())
.setFeeType(FeeType.CAR_FINE);
//服务费
RemoteSaveOrder.Fee serviceFee = new RemoteSaveOrder.Fee()
.setFeeDesc("服务费")
.setFeeAmount(detail.getServiceFee())
.setFeeType(FeeType.CLOUD_SERVICE_FEE);
//火车票费
RemoteSaveOrder.Fee carFee = new RemoteSaveOrder.Fee()
.setFeeDesc("用车费")
.setFeeAmount(detail.getServiceFee())
.setFeeType(FeeType.CAR_FEE);
return new RemoteSaveOrder()
.setFeeList(List.of(fineFee, serviceFee, carFee));
}
}
package org.dromara.server.service.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.ys.model.res.hotel.HotelOrderQueryDetailModel;
import org.dromara.common.ys.service.IHotelService;
import org.dromara.order.api.domain.RemoteSaveOrder;
import org.dromara.order.api.enums.FeeType;
import org.dromara.server.service.IOrderStrategy;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 酒店订单策略
*
* @author hzh
* @date 2024-12-06
**/
@Slf4j
@Service("HOTEL" + IOrderStrategy.BASE_NAME)
@RequiredArgsConstructor
public class HotelOrderStrategy implements IOrderStrategy {
private IHotelService hotelService;
@Override
public RemoteSaveOrder createOrder(String orderNo) {
HotelOrderQueryDetailModel detail = hotelService.hotelOrderDetail(LoginHelper.getUserNo(), new org.dromara.common.ys.model.req.hotel.HotelOrderQueryDetailModel().setOrderNo(orderNo));
// 保险金额
RemoteSaveOrder.Fee hotelFee = new RemoteSaveOrder.Fee()
.setFeeDesc("房费")
.setFeeAmount(detail.getSalePrice())
.setFeeType(FeeType.INSURANCE_FEE);
//服务费
RemoteSaveOrder.Fee serviceFee = new RemoteSaveOrder.Fee()
.setFeeDesc("服务费")
.setFeeAmount(detail.getServiceFee())
.setFeeType(FeeType.CLOUD_SERVICE_FEE);
return new RemoteSaveOrder()
.setFeeList(List.of(hotelFee, serviceFee));
}
}
package org.dromara.server.service.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.ys.model.req.train.OrderQueryModel;
import org.dromara.common.ys.model.res.train.OrderInfoModel;
import org.dromara.common.ys.service.ITrainService;
import org.dromara.order.api.domain.RemoteSaveOrder;
import org.dromara.order.api.enums.FeeType;
import org.dromara.server.service.IOrderStrategy;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 火车票订单策略
*
* @author hzh
* @date 2024-12-06
**/
@Slf4j
@Service("TRAIN" + IOrderStrategy.BASE_NAME)
@RequiredArgsConstructor
public class TrainOrderStrategy implements IOrderStrategy {
private ITrainService trainService;
@Override
public RemoteSaveOrder createOrder(String orderNo) {
OrderInfoModel detail = trainService.detail(LoginHelper.getUserNo(), new OrderQueryModel().setOrderNO(orderNo));
// 保险金额
RemoteSaveOrder.Fee insuranceFee = new RemoteSaveOrder.Fee()
.setFeeDesc("保险费")
.setFeeAmount(detail.getInsureAmount())
.setFeeType(FeeType.HOTEL_FEE);
//服务费
RemoteSaveOrder.Fee serviceFee = new RemoteSaveOrder.Fee()
.setFeeDesc("服务费")
.setFeeAmount(detail.getServiceChargePrice())
.setFeeType(FeeType.CLOUD_SERVICE_FEE);
//火车票费
RemoteSaveOrder.Fee railTicket = new RemoteSaveOrder.Fee()
.setFeeDesc("火车票费")
.setFeeAmount(detail.getTicketPrice())
.setFeeType(FeeType.RAIL_TICKET_FEE);
return new RemoteSaveOrder()
.setFeeList(List.of(insuranceFee, serviceFee, railTicket));
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论