package com.whn.hellospring.service; import com.whn.hellospring.model.*; import com.whn.hellospring.repository.CoffeeOrderRepository; import com.whn.hellospring.repository.CoffeeRepository; import com.whn.hellospring.utils.DO2DTOUtil; import lombok.extern.slf4j.Slf4j; import org.joda.money.CurrencyUnit; import org.joda.money.Money; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Slf4j @Service public class CoffeeOrderService { @Autowired private CoffeeOrderRepository orderRepository; @Autowired private CoffeeRepository coffeeRepository; /** * 删除一个订单 */ public void deleteOrderById(Long id) { //删除订单 orderRepository.deleteOrderWithId(id); //删除订单下的咖啡 coffeeRepository.deleteCoffeeByOrderId(id); } /** * 创建一个订单 */ public void createOrder(CoffeeOrderDTO coffeeOrderDTO) { //保存订单 CoffeeOrderDO order = (CoffeeOrderDO) DO2DTOUtil.getInstance().dtoToDo(coffeeOrderDTO, CoffeeOrderDO.class); order.setState(OrderState.INIT); orderRepository.save(order); //保存咖啡 if (coffeeOrderDTO.getItems() != null && coffeeOrderDTO.getItems().size() != 0) { List list = coffeeOrderDTO.getItems(); for (CoffeeDTO coffeeDTO : list) { CoffeeDO coffeeDO = (CoffeeDO) DO2DTOUtil.getInstance().dtoToDo(coffeeDTO, CoffeeDO.class); coffeeDO.setOrder_id_fk(order.getId()); coffeeDO.setPrice(Money.of(CurrencyUnit.of("CNY"), coffeeDTO.getPrice())); coffeeRepository.save(coffeeDO); } } } /** * 获取一个订单信息 */ public CoffeeOrderDTO getOrderById(Long id) { //获取订单主体 CoffeeOrderDO orderDO = orderRepository.queryOrderWithId(id); CoffeeOrderDTO orderDTO = (CoffeeOrderDTO) DO2DTOUtil.getInstance().doToDto(orderDO, CoffeeOrderDTO.class); //获取订单下的咖啡列表 List coffeeList = coffeeRepository.selectCoffeeListWithOrder(id); if (coffeeList != null && coffeeList.size() != 0) { List coffeeDTOList = new ArrayList<>(); for (CoffeeDO coffeeDo : coffeeList) { CoffeeDTO dto = new CoffeeDTO(coffeeDo); coffeeDTOList.add(dto); } orderDTO.setItems(coffeeDTOList); } return orderDTO; } /** * 修改订单状态 */ public boolean updateState(CoffeeOrderDO order, OrderState state) { if (state.compareTo(order.getState()) <= 0) { log.warn("Wrong state order{},{}", state, order.getState()); return false; } order.setState(state); orderRepository.save(order); log.info("update Order{}", order); return false; } /** * 根据客户id,获取订单列表 */ public List getOrderListByCustomerId(String customerId) { if (customerId.isEmpty()) return null; List orderDTOList = new ArrayList<>(); List orderDOList = orderRepository.queryOrderListWithCustomerId(customerId); for (CoffeeOrderDO orderDO : orderDOList) { CoffeeOrderDTO orderDTO = (CoffeeOrderDTO) DO2DTOUtil.getInstance().doToDto(orderDO, CoffeeOrderDTO.class); //获取订单下的咖啡列表 List coffeeList = coffeeRepository.selectCoffeeListWithOrder(orderDO.getId()); if (coffeeList != null && coffeeList.size() != 0) { List coffeeDTOList = new ArrayList<>(); for (CoffeeDO coffeeDo : coffeeList) { CoffeeDTO dto = new CoffeeDTO(coffeeDo); coffeeDTOList.add(dto); } orderDTO.setItems(coffeeDTOList); } orderDTOList.add(orderDTO); } return orderDTOList; } }