美文网首页
买家订单service

买家订单service

作者: 谢谢水果 | 来源:发表于2018-11-19 11:36 被阅读0次

买家订单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() {
    }
}

相关文章

  • 买家订单service

    买家订单service接口 main--service--OrderService.java 买家订单servic...

  • 买家类目service

    买家类目service接口 main--service--CategoryService.java 买家类目ser...

  • 买家商品service

    买家类目service接口 main--service--ProductService.java 买家类目serv...

  • BuyerService

    买家查找订单和取消订单

  • 买家订单DAO

    买家订单主表 实体类 main--dataobject--OrderMaster.java 买家订单详情 实体类 ...

  • 目录

    数据库设计买家类目DAO买家类目service

  • 订单 service

    订单 service

  • 买家商品api controller

    买家类目service接口 main--controller--BuyerProductController.java

  • 买家订单api controller

    买家类目service接口 main--controller--BuyerProductController.java

  • iOS电商项目之确认订单

    确认订单模块包括买家地址、订单信息、发票类型、积分折现,订单信息又分为(单店铺单订单、单店铺多订单,多店铺多订单)...

网友评论

      本文标题:买家订单service

      本文链接:https://www.haomeiwen.com/subject/vheofqtx.html