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<CoffeeDTO> 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<CoffeeDO> coffeeList = coffeeRepository.selectCoffeeListWithOrder(id);
|
|
if (coffeeList != null && coffeeList.size() != 0) {
|
|
List<CoffeeDTO> 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<CoffeeOrderDTO> getOrderListByCustomerId(String customerId) {
|
|
if (customerId.isEmpty()) return null;
|
|
List<CoffeeOrderDTO> orderDTOList = new ArrayList<>();
|
|
|
|
List<CoffeeOrderDO> orderDOList = orderRepository.queryOrderListWithCustomerId(customerId);
|
|
for (CoffeeOrderDO orderDO : orderDOList) {
|
|
CoffeeOrderDTO orderDTO = (CoffeeOrderDTO) DO2DTOUtil.getInstance().doToDto(orderDO, CoffeeOrderDTO.class);
|
|
|
|
//获取订单下的咖啡列表
|
|
List<CoffeeDO> coffeeList = coffeeRepository.selectCoffeeListWithOrder(orderDO.getId());
|
|
if (coffeeList != null && coffeeList.size() != 0) {
|
|
List<CoffeeDTO> coffeeDTOList = new ArrayList<>();
|
|
for (CoffeeDO coffeeDo : coffeeList) {
|
|
CoffeeDTO dto = new CoffeeDTO(coffeeDo);
|
|
coffeeDTOList.add(dto);
|
|
}
|
|
orderDTO.setItems(coffeeDTOList);
|
|
}
|
|
orderDTOList.add(orderDTO);
|
|
}
|
|
|
|
return orderDTOList;
|
|
}
|
|
}
|