创建订单
This commit is contained in:
parent
290eea787e
commit
97727917c0
@ -2,10 +2,13 @@ package net.jieyuu.mapper;
|
||||
|
||||
import net.jieyuu.model.ProductOrderItemDO;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author jieyuu
|
||||
@ -13,4 +16,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
*/
|
||||
public interface ProductOrderItemMapper extends BaseMapper<ProductOrderItemDO> {
|
||||
|
||||
/**
|
||||
* 批量插入
|
||||
*
|
||||
* @param orderItemList
|
||||
*/
|
||||
void insertBatch(@Param("orderItemList") List<ProductOrderItemDO> orderItemList);
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ public class ProductOrderDO implements Serializable {
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Integer userId;
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 0表示未删除,1表示已经删除
|
||||
|
@ -1,19 +1,21 @@
|
||||
package net.jieyuu.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.TypeReference;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.jieyuu.enums.BizCodeEnum;
|
||||
import net.jieyuu.enums.CouponStateEnum;
|
||||
import net.jieyuu.enums.*;
|
||||
import net.jieyuu.exception.BizException;
|
||||
import net.jieyuu.feign.CouponFeignService;
|
||||
import net.jieyuu.feign.ProductFeignService;
|
||||
import net.jieyuu.feign.UserFeignService;
|
||||
import net.jieyuu.interceptor.LoginInterceptor;
|
||||
import net.jieyuu.mapper.ProductOrderItemMapper;
|
||||
import net.jieyuu.model.LoginUser;
|
||||
import net.jieyuu.model.OrderItemVO;
|
||||
import net.jieyuu.model.ProductOrderDO;
|
||||
import net.jieyuu.mapper.ProductOrderMapper;
|
||||
import net.jieyuu.model.ProductOrderItemDO;
|
||||
import net.jieyuu.request.ConfirmOrderRequest;
|
||||
import net.jieyuu.request.LockCouponRecordRequest;
|
||||
import net.jieyuu.request.LockProductRequest;
|
||||
@ -29,6 +31,7 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -56,6 +59,9 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
|
||||
@Autowired
|
||||
private CouponFeignService couponFeignService;
|
||||
|
||||
@Autowired
|
||||
private ProductOrderItemMapper productOrderItemMapper;
|
||||
|
||||
/**
|
||||
* * 防重提交
|
||||
* * 用户微服务-确认收货地址
|
||||
@ -100,13 +106,90 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
|
||||
// 锁定库存
|
||||
this.lockProductStocks(orderItemList, orderOutTradeNo);
|
||||
|
||||
// 创建订单 todo
|
||||
// 创建订单
|
||||
ProductOrderDO productOrderDO = this.saveProductOrder(orderRequest, loginUser, orderOutTradeNo, addressVO);
|
||||
|
||||
//创建订单项
|
||||
this.saveproductOrderItems(orderOutTradeNo, productOrderDO.getId(), orderItemList);
|
||||
// 发送延迟消息,用于自动关单 todo
|
||||
|
||||
|
||||
//创建支付 todo
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单项
|
||||
*
|
||||
* @param orderOutTradeNo
|
||||
* @param orderId
|
||||
* @param orderItemList
|
||||
*/
|
||||
private void saveproductOrderItems(String orderOutTradeNo, Long orderId, List<OrderItemVO> orderItemList) {
|
||||
|
||||
List<ProductOrderItemDO> orderItemDOList = orderItemList.stream().map(obj -> {
|
||||
ProductOrderItemDO itemDO = new ProductOrderItemDO();
|
||||
itemDO.setBuyNum(obj.getBuyNum());
|
||||
|
||||
itemDO.setProductId(obj.getProductId());
|
||||
itemDO.setProductName(obj.getProductTitle());
|
||||
itemDO.setProductImg(obj.getProductImg());
|
||||
|
||||
itemDO.setOutTradeNo(orderOutTradeNo);
|
||||
itemDO.setCreateTime(new Date());
|
||||
// 单价
|
||||
itemDO.setAmount(obj.getAmount());
|
||||
// 总价
|
||||
itemDO.setTotalAmount(obj.getTotalAmount());
|
||||
itemDO.setProductOrderId(orderId);
|
||||
|
||||
return itemDO;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
|
||||
productOrderItemMapper.insertBatch(orderItemDOList);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建订单
|
||||
*
|
||||
* @param orderRequest
|
||||
* @param loginUser
|
||||
* @param orderOutTradeNo
|
||||
* @param addressVO
|
||||
* @return
|
||||
*/
|
||||
private ProductOrderDO saveProductOrder(ConfirmOrderRequest orderRequest, LoginUser loginUser, String orderOutTradeNo, ProductOrderAddressVO addressVO) {
|
||||
ProductOrderDO productOrderDO = new ProductOrderDO();
|
||||
productOrderDO.setUserId(loginUser.getId());
|
||||
productOrderDO.setHeadImg(loginUser.getHeadImg());
|
||||
productOrderDO.setNickname(loginUser.getName());
|
||||
|
||||
|
||||
productOrderDO.setOutTradeNo(orderOutTradeNo);
|
||||
productOrderDO.setDel(0);
|
||||
productOrderDO.setOrderType(ProductOrderTypeEnum.DAILY.name());
|
||||
|
||||
//实际支付的价格
|
||||
productOrderDO.setPayAmount(orderRequest.getRealPayAmount());
|
||||
productOrderDO.setTotalAmount(orderRequest.getTotalAmount());
|
||||
productOrderDO.setState(ProductOrderStateEnum.NEW.name());
|
||||
//
|
||||
productOrderDO.setPayType(ProductOrderPayTypeEnum.valueOf(orderRequest.getPayType()).name());
|
||||
|
||||
// 收货地址
|
||||
productOrderDO.setReceiverAddress(JSON.toJSONString(addressVO));
|
||||
|
||||
// 插入数据库
|
||||
productOrderMapper.insert(productOrderDO);
|
||||
|
||||
return productOrderDO;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 锁定商品库存
|
||||
*
|
||||
|
@ -21,4 +21,28 @@
|
||||
id, product_order_id, out_trade_no, product_id, product_name, product_img, buy_num, create_time, total_amount, amount
|
||||
</sql>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_NO_List">
|
||||
id, product_order_id, out_trade_no, product_id, product_name, product_img, buy_num, create_time, total_amount, amount
|
||||
</sql>
|
||||
<insert id="insertBatch">
|
||||
|
||||
insert into product_order_item
|
||||
(<include refid="Base_Column_NO_List"/>)
|
||||
values
|
||||
<foreach collection="orderItemList" item="item" index="index" separator=",">
|
||||
(
|
||||
#{item.productOrderId}
|
||||
#{item.outTradeNo}
|
||||
#{item.productId}
|
||||
#{item.productName}
|
||||
#{item.productImg}
|
||||
#{item.buyNum}
|
||||
#{item.createTime}
|
||||
#{item.totalAmount}
|
||||
#{item.amount}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
</mapper>
|
||||
|
Loading…
Reference in New Issue
Block a user