价格估算接口代码初始化
This commit is contained in:
parent
0ad7ffe1b0
commit
b77287a3ae
|
@ -7,4 +7,5 @@ import lombok.Data;
|
|||
public class LocationParam extends BaseQuery {
|
||||
private Long level;
|
||||
private Long parentLocationId;
|
||||
private String cityName;
|
||||
}
|
||||
|
|
|
@ -17,4 +17,10 @@ public class SupplierLoginController {
|
|||
public Result<String> lyLogin() {
|
||||
return Result.Success(SUCCESS);
|
||||
}
|
||||
|
||||
@PostMapping("/CTrip/login")
|
||||
public Result<String> cTripLogin() {
|
||||
return Result.Success(SUCCESS);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.chint.domain.aggregates.order;
|
|||
|
||||
|
||||
import com.chint.domain.exceptions.LegEventException;
|
||||
import com.chint.domain.service.amount_estimate.EstimateAdapter;
|
||||
import com.chint.domain.value_object.LegData;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
@ -66,6 +67,13 @@ public class Leg {
|
|||
return new Leg(legId);
|
||||
}
|
||||
|
||||
public Leg queryEstimateAmount(EstimateAdapter estimateAdapter, String supplierName) {
|
||||
if (this.legStatus >= (LEG_STATUS_NOT_ORDERED)) {
|
||||
this.estimateAmount = estimateAdapter.of(supplierName).amountEstimate(this);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public Leg reloadStatus() {
|
||||
if (eventList == null) {
|
||||
this.legStatus = LEG_STATUS_PREPARE;
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.chint.domain.aggregates.order;
|
|||
|
||||
import com.chint.domain.aggregates.base.BaseEntity;
|
||||
import com.chint.domain.factoriy.leg.LegFactory;
|
||||
import com.chint.domain.service.amount_estimate.EstimateAdapter;
|
||||
import com.chint.domain.value_object.LegData;
|
||||
import com.chint.domain.value_object.OrderSaveData;
|
||||
import com.chint.infrastructure.util.BigDecimalCalculator;
|
||||
|
@ -50,6 +51,8 @@ public class RouteOrder extends BaseEntity {
|
|||
@Transient
|
||||
private String orderStatusName;
|
||||
|
||||
private String supplierName;
|
||||
|
||||
@MappedCollection(idColumn = "route_id", keyColumn = "route_order_key")
|
||||
public List<Leg> legItems;
|
||||
|
||||
|
@ -77,6 +80,17 @@ public class RouteOrder extends BaseEntity {
|
|||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public RouteOrder queryEstimateAmount(EstimateAdapter estimateAdapter) {
|
||||
if (this.getOrderStatus() >= ORDER_STATUS_NOT_ORDERED) {
|
||||
this.estimateAmount = estimateAdapter
|
||||
.of(this.supplierName)
|
||||
.amountEstimate(this);
|
||||
this.getLegItems()
|
||||
.forEach(leg -> leg.queryEstimateAmount(estimateAdapter, this.supplierName));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public RouteOrder reloadStatus() {
|
||||
this.getLegItems().forEach(Leg::reloadStatus);
|
||||
this.estimateAmount = this.getLegItems()
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
package com.chint.domain.service.amount_estimate;
|
||||
|
||||
import com.chint.domain.aggregates.order.Leg;
|
||||
import com.chint.domain.aggregates.order.RouteOrder;
|
||||
|
||||
public interface AmountEstimate {
|
||||
String amountEstimate(Leg leg);
|
||||
String amountEstimate(RouteOrder routeOrder);
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package com.chint.domain.service.amount_estimate;
|
||||
|
||||
import com.chint.domain.aggregates.order.Leg;
|
||||
import com.chint.domain.aggregates.order.RouteOrder;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class CTripEstimate implements AmountEstimate {
|
||||
@Override
|
||||
public String amountEstimate(Leg leg) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String amountEstimate(RouteOrder routeOrder) {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package com.chint.domain.service.amount_estimate;
|
||||
|
||||
import com.chint.domain.exceptions.NotFoundException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import static com.chint.infrastructure.constant.Constant.*;
|
||||
|
||||
@Component
|
||||
public class EstimateAdapter {
|
||||
|
||||
@Autowired
|
||||
private CTripEstimate cTripEstimate;
|
||||
|
||||
@Autowired
|
||||
private LYEstimate lyEstimate;
|
||||
|
||||
public AmountEstimate of(String supplierName) {
|
||||
return switch (supplierName) {
|
||||
case SUPPLIER_C_TRIP -> cTripEstimate;
|
||||
case SUPPLIER_L_Y -> lyEstimate;
|
||||
default -> throw new NotFoundException(NOT_FOUND);
|
||||
};
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package com.chint.domain.service.amount_estimate;
|
||||
|
||||
import com.chint.domain.aggregates.order.Leg;
|
||||
import com.chint.domain.aggregates.order.RouteOrder;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class LYEstimate implements AmountEstimate {
|
||||
@Override
|
||||
public String amountEstimate(Leg leg) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String amountEstimate(RouteOrder routeOrder) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -72,13 +72,12 @@ public class LegEventServiceImpl implements LegEventService {
|
|||
SyncLegData data = command.getData();
|
||||
RouteOrder routeOrder = routeRepository.queryById(command.getRoutOrderId());
|
||||
String supplierName = data.getSupplierName();
|
||||
|
||||
routeOrder.setSupplierName(supplierName);
|
||||
//这里order所有的leg触发approve事件
|
||||
routeOrder.getLegItems().forEach(leg -> leg.getEventList().add(
|
||||
legEventFactory.creatLegEvent(command.getLegEventType())
|
||||
));
|
||||
syncAdapter.of(supplierName).syncSupplierOrder(routeOrder.reloadStatus());
|
||||
|
||||
//保存routeOrder的状态
|
||||
routeRepository.save(routeOrder);
|
||||
}
|
||||
|
|
|
@ -26,6 +26,10 @@ public class LocationRepositoryImpl implements LocationRepository {
|
|||
locationParam.getPageNum() - 1,
|
||||
locationParam.getPageSize()
|
||||
);
|
||||
if(locationParam.getCityName() != null){
|
||||
Page<Location> res = jdbcLocationRepository.findAllByLocationPathContaining(locationParam.getCityName(), pageResult);
|
||||
return PageResult.totalPageNum(res.getTotalElements(), res.toList());
|
||||
}
|
||||
if (locationParam.getLevel() != null) {
|
||||
Page<Location> res = jdbcLocationRepository.findAllByLevel(locationParam.getLevel(), pageResult);
|
||||
return PageResult.totalPageNum(res.getTotalElements(), res.toList());
|
||||
|
|
Loading…
Reference in New Issue