增加 部分接口缺少事务注解
This commit is contained in:
parent
f82a5d6800
commit
4fe1eb411b
|
@ -0,0 +1,126 @@
|
||||||
|
package com.chint.domain.service.leg_event;
|
||||||
|
|
||||||
|
import com.chint.application.commands.*;
|
||||||
|
import com.chint.domain.aggregates.order.*;
|
||||||
|
import com.chint.domain.exceptions.CommandException;
|
||||||
|
import com.chint.domain.factoriy.leg_event.LegEventFactory;
|
||||||
|
import com.chint.domain.repository.LegRepository;
|
||||||
|
import com.chint.domain.repository.RouteRepository;
|
||||||
|
import com.chint.domain.service.order_sync.SyncAdapter;
|
||||||
|
import com.chint.domain.value_object.ApproveLegData;
|
||||||
|
import com.chint.domain.value_object.OrderLegData;
|
||||||
|
import com.chint.domain.value_object.PayLegData;
|
||||||
|
import com.chint.domain.value_object.SyncLegData;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import static com.chint.infrastructure.constant.Constant.ORDER_STATUS_APPROVAL;
|
||||||
|
import static com.chint.infrastructure.constant.Constant.ORDER_STATUS_PREPARE;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class LegEventHandler implements LegEventService{
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SyncAdapter syncAdapter;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RouteRepository routeRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private LegRepository legRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private LegEventFactory legEventFactory;
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
@Override
|
||||||
|
public void prepareLeg(LegPrepareCommand command) {
|
||||||
|
Leg leg = legRepository.findByLegId(Leg.of(command.getLegId()));
|
||||||
|
if (leg.getEventList().isEmpty()) {
|
||||||
|
LegEvent legEvent = legEventFactory.creatLegEvent(command.getLegEventType());
|
||||||
|
leg.addEvent(legEvent);
|
||||||
|
legRepository.save(leg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Transactional
|
||||||
|
@Override
|
||||||
|
public void approveLeg(LegApprovalCommand command) {
|
||||||
|
ApproveLegData data = command.getData();
|
||||||
|
RouteOrder routeOrder = routeRepository.findByFakeOrderNo(data.getFakeOrderNo());
|
||||||
|
|
||||||
|
if (routeOrder.getOrderStatus().equals(ORDER_STATUS_PREPARE)) {
|
||||||
|
ApproveOrderNo approveOrderNo = routeOrder.getApproveOrderNo();
|
||||||
|
approveOrderNo.setActualOrderNo(data.getActualOrderNo());
|
||||||
|
approveOrderNo.setAccountCompany(data.getAccountCompany());
|
||||||
|
|
||||||
|
//这里order所有的leg触发approve事件
|
||||||
|
routeOrder.getLegItems().forEach(leg -> leg.getEventList().add(
|
||||||
|
legEventFactory.creatLegEvent(command.getLegEventType())
|
||||||
|
));
|
||||||
|
|
||||||
|
//保存routeOrder的状态
|
||||||
|
routeRepository.save(routeOrder);
|
||||||
|
} else {
|
||||||
|
throw new CommandException("订单未初始化");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Transactional
|
||||||
|
@Override
|
||||||
|
public void syncLeg(LegSyncCommand command) {
|
||||||
|
SyncLegData data = command.getData();
|
||||||
|
RouteOrder routeOrder = routeRepository.queryById(data.getRouteId()).reloadStatus();
|
||||||
|
if (routeOrder.getOrderStatus().equals(ORDER_STATUS_APPROVAL)) {
|
||||||
|
String supplierName = data.getSupplierName();
|
||||||
|
routeOrder.setSupplierName(supplierName);
|
||||||
|
//这里order所有的leg触发approve事件
|
||||||
|
routeOrder.getLegItems().forEach(leg -> leg.getEventList().add(
|
||||||
|
legEventFactory.creatLegEvent(command.getLegEventType())
|
||||||
|
));
|
||||||
|
//保存routeOrder的状态
|
||||||
|
routeRepository.save(routeOrder);
|
||||||
|
syncAdapter.of(supplierName).syncSupplierOrder(routeOrder.reloadStatus());
|
||||||
|
} else {
|
||||||
|
throw new CommandException("订单未提交审批");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Transactional
|
||||||
|
@Override
|
||||||
|
public void orderLeg(LegOrderedCommand command) {
|
||||||
|
OrderLegData data = command.getData();
|
||||||
|
Leg leg = legRepository.findByLegId(Leg.of(command.getLegId()));
|
||||||
|
LegEvent legEvent = legEventFactory.creatLegEvent(command.getLegEventType());
|
||||||
|
OrderDetail orderDetail = new OrderDetail();
|
||||||
|
orderDetail.setAmount(data.getOrderNo());
|
||||||
|
orderDetail.setAmount(data.getAmount());
|
||||||
|
legEvent.setOrderDetail(orderDetail);
|
||||||
|
leg.addEvent(legEvent);
|
||||||
|
legRepository.save(leg);
|
||||||
|
}
|
||||||
|
@Transactional
|
||||||
|
@Override
|
||||||
|
public void payForLeg(LegPayedCommand command) {
|
||||||
|
PayLegData data = command.getData();
|
||||||
|
Leg leg = legRepository.findByLegId(Leg.of(command.getLegId()));
|
||||||
|
LegEvent legEvent = legEventFactory.creatLegEvent(command.getLegEventType());
|
||||||
|
OrderDetail orderDetail = new OrderDetail();
|
||||||
|
orderDetail.setAmount(data.getOrderNo());
|
||||||
|
orderDetail.setAmount(data.getAmount());
|
||||||
|
legEvent.setOrderDetail(orderDetail);
|
||||||
|
leg.addEvent(legEvent);
|
||||||
|
legRepository.save(leg);
|
||||||
|
}
|
||||||
|
@Transactional
|
||||||
|
@Override
|
||||||
|
public void finishLeg(LegFinishedCommand command) {
|
||||||
|
Leg leg = legRepository.findByLegId(Leg.of(command.getLegId()));
|
||||||
|
LegEvent legEvent = legEventFactory.creatLegEvent(command.getLegEventType());
|
||||||
|
leg.addEvent(legEvent);
|
||||||
|
legRepository.save(leg);
|
||||||
|
}
|
||||||
|
@Transactional
|
||||||
|
@Override
|
||||||
|
public void rejectLeg(LegRejectCommand command) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,6 +15,7 @@ import com.chint.infrastructure.echo_framework.annotation.ListenTo;
|
||||||
import com.chint.infrastructure.echo_framework.annotation.TransitionTo;
|
import com.chint.infrastructure.echo_framework.annotation.TransitionTo;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import static com.chint.infrastructure.constant.Constant.ORDER_STATUS_APPROVAL;
|
import static com.chint.infrastructure.constant.Constant.ORDER_STATUS_APPROVAL;
|
||||||
import static com.chint.infrastructure.constant.Constant.ORDER_STATUS_PREPARE;
|
import static com.chint.infrastructure.constant.Constant.ORDER_STATUS_PREPARE;
|
||||||
|
@ -23,27 +24,14 @@ import static com.chint.infrastructure.constant.Constant.ORDER_STATUS_PREPARE;
|
||||||
public class LegEventServiceImpl implements LegEventService {
|
public class LegEventServiceImpl implements LegEventService {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SyncAdapter syncAdapter;
|
private LegEventHandler legEventHandler;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private RouteRepository routeRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private LegRepository legRepository;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private LegEventFactory legEventFactory;
|
|
||||||
|
|
||||||
|
|
||||||
@TransitionTo(command = "LegPrepareCommand", order = 0)
|
@TransitionTo(command = "LegPrepareCommand", order = 0)
|
||||||
@Override
|
@Override
|
||||||
public void prepareLeg(LegPrepareCommand command) {
|
public void prepareLeg(LegPrepareCommand command) {
|
||||||
Leg leg = legRepository.findByLegId(Leg.of(command.getLegId()));
|
legEventHandler.prepareLeg(command);
|
||||||
if (leg.getEventList().isEmpty()) {
|
|
||||||
LegEvent legEvent = legEventFactory.creatLegEvent(command.getLegEventType());
|
|
||||||
leg.addEvent(legEvent);
|
|
||||||
legRepository.save(leg);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//因为审批是针对整个订单的,因此所有订单下属的行程节点触发审批事件
|
//因为审批是针对整个订单的,因此所有订单下属的行程节点触发审批事件
|
||||||
|
@ -52,85 +40,34 @@ public class LegEventServiceImpl implements LegEventService {
|
||||||
@ListenTo(command = "LegApprovalCommand", order = 0)
|
@ListenTo(command = "LegApprovalCommand", order = 0)
|
||||||
@Override
|
@Override
|
||||||
public void approveLeg(LegApprovalCommand command) {
|
public void approveLeg(LegApprovalCommand command) {
|
||||||
ApproveLegData data = command.getData();
|
legEventHandler.approveLeg(command);
|
||||||
RouteOrder routeOrder = routeRepository.findByFakeOrderNo(data.getFakeOrderNo());
|
|
||||||
|
|
||||||
if (routeOrder.getOrderStatus().equals(ORDER_STATUS_PREPARE)){
|
|
||||||
ApproveOrderNo approveOrderNo = routeOrder.getApproveOrderNo();
|
|
||||||
approveOrderNo.setActualOrderNo(data.getActualOrderNo());
|
|
||||||
approveOrderNo.setAccountCompany(data.getAccountCompany());
|
|
||||||
|
|
||||||
//这里order所有的leg触发approve事件
|
|
||||||
routeOrder.getLegItems().forEach(leg -> leg.getEventList().add(
|
|
||||||
legEventFactory.creatLegEvent(command.getLegEventType())
|
|
||||||
));
|
|
||||||
|
|
||||||
//保存routeOrder的状态
|
|
||||||
routeRepository.save(routeOrder);
|
|
||||||
} else {
|
|
||||||
throw new CommandException("订单未初始化");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//这里需要获取同步类,价格routeOrder同步到供应商
|
//这里需要获取同步类,价格routeOrder同步到供应商
|
||||||
@ListenTo(command = "LegSyncCommand", order = 0)
|
@ListenTo(command = "LegSyncCommand", order = 0)
|
||||||
@Override
|
@Override
|
||||||
public void syncLeg(LegSyncCommand command) {
|
public void syncLeg(LegSyncCommand command) {
|
||||||
SyncLegData data = command.getData();
|
legEventHandler.syncLeg(command);
|
||||||
RouteOrder routeOrder = routeRepository.queryById(data.getRouteId()).reloadStatus();
|
|
||||||
if (routeOrder.getOrderStatus().equals(ORDER_STATUS_APPROVAL)) {
|
|
||||||
String supplierName = data.getSupplierName();
|
|
||||||
routeOrder.setSupplierName(supplierName);
|
|
||||||
//这里order所有的leg触发approve事件
|
|
||||||
routeOrder.getLegItems().forEach(leg -> leg.getEventList().add(
|
|
||||||
legEventFactory.creatLegEvent(command.getLegEventType())
|
|
||||||
));
|
|
||||||
//保存routeOrder的状态
|
|
||||||
routeRepository.save(routeOrder);
|
|
||||||
syncAdapter.of(supplierName).syncSupplierOrder(routeOrder.reloadStatus());
|
|
||||||
} else {
|
|
||||||
throw new CommandException("订单未提交审批");
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//下单时间要求回传,需要付款的金额,以及生成对于的行程订单号,如果没有行程订单号根据地点和时间进行匹配
|
//下单时间要求回传,需要付款的金额,以及生成对于的行程订单号,如果没有行程订单号根据地点和时间进行匹配
|
||||||
@ListenTo(command = "LegOrderedCommand", order = 0)
|
@ListenTo(command = "LegOrderedCommand", order = 0)
|
||||||
@Override
|
@Override
|
||||||
public void orderLeg(LegOrderedCommand command) {
|
public void orderLeg(LegOrderedCommand command) {
|
||||||
OrderLegData data = command.getData();
|
legEventHandler.orderLeg(command);
|
||||||
Leg leg = legRepository.findByLegId(Leg.of(command.getLegId()));
|
|
||||||
LegEvent legEvent = legEventFactory.creatLegEvent(command.getLegEventType());
|
|
||||||
OrderDetail orderDetail = new OrderDetail();
|
|
||||||
orderDetail.setAmount(data.getOrderNo());
|
|
||||||
orderDetail.setAmount(data.getAmount());
|
|
||||||
legEvent.setOrderDetail(orderDetail);
|
|
||||||
leg.addEvent(legEvent);
|
|
||||||
legRepository.save(leg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ListenTo(command = "LegPayedCommand", order = 0)
|
@ListenTo(command = "LegPayedCommand", order = 0)
|
||||||
public void payForLeg(LegPayedCommand command) {
|
public void payForLeg(LegPayedCommand command) {
|
||||||
PayLegData data = command.getData();
|
legEventHandler.payForLeg(command);
|
||||||
Leg leg = legRepository.findByLegId(Leg.of(command.getLegId()));
|
|
||||||
LegEvent legEvent = legEventFactory.creatLegEvent(command.getLegEventType());
|
|
||||||
OrderDetail orderDetail = new OrderDetail();
|
|
||||||
orderDetail.setAmount(data.getOrderNo());
|
|
||||||
orderDetail.setAmount(data.getAmount());
|
|
||||||
legEvent.setOrderDetail(orderDetail);
|
|
||||||
leg.addEvent(legEvent);
|
|
||||||
legRepository.save(leg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ListenTo(command = "LegFinishedCommand", order = 0)
|
@ListenTo(command = "LegFinishedCommand", order = 0)
|
||||||
public void finishLeg(LegFinishedCommand command) {
|
public void finishLeg(LegFinishedCommand command) {
|
||||||
Leg leg = legRepository.findByLegId(Leg.of(command.getLegId()));
|
|
||||||
LegEvent legEvent = legEventFactory.creatLegEvent(command.getLegEventType());
|
|
||||||
leg.addEvent(legEvent);
|
|
||||||
legRepository.save(leg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.chint.infrastructure.repository;
|
||||||
import com.chint.domain.aggregates.location.CityEntity;
|
import com.chint.domain.aggregates.location.CityEntity;
|
||||||
import com.chint.domain.repository.CityRepository;
|
import com.chint.domain.repository.CityRepository;
|
||||||
import com.chint.infrastructure.repository.jdbc.JdbcCityRepository;
|
import com.chint.infrastructure.repository.jdbc.JdbcCityRepository;
|
||||||
import com.chint.interfaces.rest.ctrip.dto.location.CTripCity;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@ -23,7 +22,7 @@ public class CityRepositoryImpl implements CityRepository {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CityEntity findByCityName(String name) {
|
public CityEntity findByCityName(String name) {
|
||||||
return null;
|
return jdbcCityRepository.findByCityName(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,4 +6,5 @@ import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface JdbcCityRepository extends CrudRepository<CityEntity,Long> {
|
public interface JdbcCityRepository extends CrudRepository<CityEntity,Long> {
|
||||||
|
CityEntity findByCityName(String cityName);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue