买家订单service接口
main--service--OrderService.java
package com.tkft.sell.service;
import com.tkft.sell.dto.OrderDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
/**
* @Auther xinyuan
* @Date 11/18/18 7:05 PM
**/
public interface OrderService {
//创建订单
OrderDTO create(OrderDTO orderDTO);
//查询单个订单
OrderDTO findOne(String orderId);
//查询订单列表
Page<OrderDTO> findList(String buyerOpenid, Pageable pageable);
//取消订单
OrderDTO cancel(OrderDTO orderDTO);
//完结订单
OrderDTO finish(OrderDTO orderDTO);
//支付点单
OrderDTO paid(OrderDTO orderDTO);
}
买家订单service实现
main--service--impl--OrderServiceImpl.java
package com.tkft.sell.service.impl;
import com.tkft.sell.dataobject.OrderDetail;
import com.tkft.sell.dataobject.OrderMaster;
import com.tkft.sell.dataobject.ProductInfo;
import com.tkft.sell.dto.CartDTO;
import com.tkft.sell.dto.OrderDTO;
import com.tkft.sell.enums.OrderStatusEnum;
import com.tkft.sell.enums.PayStatusEnum;
import com.tkft.sell.enums.ResultEnum;
import com.tkft.sell.exception.SellException;
import com.tkft.sell.repository.OrderDetailRepository;
import com.tkft.sell.repository.OrderMasterRepository;
import com.tkft.sell.service.OrderService;
import com.tkft.sell.utils.KeyUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
/**
* @Auther xinyuan
* @Date 11/18/18 7:15 PM
**/
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
private ProductServiceImpl productService;
@Autowired
private OrderDetailRepository orderDetailRepository;
@Autowired
private OrderMasterRepository orderMasterRepository;
@Override
@Transactional
public OrderDTO create(OrderDTO orderDTO) {
BigDecimal orderAmount = new BigDecimal(BigInteger.ZERO);
String orderId = KeyUtil.genUniqueKey();
List<CartDTO> cartDTOList = new ArrayList<>();
//1. 查询商品(价格 数量)
for(OrderDetail orderDetail : orderDTO.getOrderDetailList()){
ProductInfo productInfo = productService.findOne(orderDetail.getProductId());
if(productInfo == null){
throw new SellException(ResultEnum.PRODUCT_NOT_EXIST);
}
//2. 计算总价
orderAmount = productInfo.getProductPrice()
.multiply(new BigDecimal(orderDetail
.getProductQuantity())).add(orderAmount);
//3. 订单详情入库
//订单详情所有属性中 前端只传过来productId和productQuantity两个属性
BeanUtils.copyProperties(productInfo, orderDetail);
orderDetail.setDetailId(KeyUtil.genUniqueKey());
orderDetail.setOrderId(orderId);
orderDetailRepository.save(orderDetail);
CartDTO cartDTO = new CartDTO(orderDetail.getProductId(), orderDetail.getProductQuantity());
cartDTOList.add(cartDTO);
}
//4. 订单主表入库
OrderMaster orderMaster = new OrderMaster();
BeanUtils.copyProperties(orderDTO, orderMaster);
orderMaster.setOrderAmount(orderAmount);
orderMaster.setOrderId(orderId);
orderMaster.setOrderStatus(OrderStatusEnum.NEW.getCode());
orderMaster.setPayStatus(PayStatusEnum.WAIT.getCode());
orderMasterRepository.save(orderMaster);
//5 扣库存
productService.decreaseStock(cartDTOList);
return null;
}
@Override
public OrderDTO findOne(String orderId) {
return null;
}
@Override
public Page<OrderDTO> findList(String buyerOpenid, Pageable pageable) {
return null;
}
@Override
public OrderDTO cancel(OrderDTO orderDTO) {
return null;
}
@Override
public OrderDTO finish(OrderDTO orderDTO) {
return null;
}
@Override
public OrderDTO paid(OrderDTO orderDTO) {
return null;
}
}
买家订单service测试
test--service.impl--OrderServiceImplTest.java
package com.tkft.sell.service.impl;
import com.tkft.sell.dataobject.OrderDetail;
import com.tkft.sell.dto.OrderDTO;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.*;
@RunWith(SpringRunner.class)
@SpringBootTest
public class OrderServiceImplTest {
@Autowired
private OrderServiceImpl orderService;
private final String BUYER_OPENID = "1101110";
@Test
public void create() {
OrderDTO orderDTO = new OrderDTO();
orderDTO.setBuyerAddress("天通苑");
orderDTO.setBuyerName("小刘");
orderDTO.setBuyerOpenid(BUYER_OPENID);
orderDTO.setBuyerPhone("15010195950");
List<OrderDetail> orderDetailList = new ArrayList<>();
OrderDetail o1 = new OrderDetail();
o1.setProductId("123456");
o1.setProductQuantity(2);
OrderDetail o2 = new OrderDetail();
o2.setProductId("123457");
o2.setProductQuantity(2);
orderDetailList.add(o1);
orderDetailList.add(o2);
orderDTO.setOrderDetailList(orderDetailList);
OrderDTO result = orderService.create(orderDTO);
}
@Test
public void findOne() {
}
@Test
public void findList() {
}
@Test
public void cancel() {
}
@Test
public void finish() {
}
@Test
public void paid() {
}
}
网友评论