创建订单
This commit is contained in:
parent
290eea787e
commit
97727917c0
@ -2,6 +2,9 @@ package net.jieyuu.mapper;
|
|||||||
|
|
||||||
import net.jieyuu.model.ProductOrderItemDO;
|
import net.jieyuu.model.ProductOrderItemDO;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@ -13,4 +16,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|||||||
*/
|
*/
|
||||||
public interface ProductOrderItemMapper extends BaseMapper<ProductOrderItemDO> {
|
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
|
* 用户id
|
||||||
*/
|
*/
|
||||||
private Integer userId;
|
private Long userId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 0表示未删除,1表示已经删除
|
* 0表示未删除,1表示已经删除
|
||||||
|
@ -1,19 +1,21 @@
|
|||||||
package net.jieyuu.service.impl;
|
package net.jieyuu.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.TypeReference;
|
import com.alibaba.fastjson.TypeReference;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.jieyuu.enums.BizCodeEnum;
|
import net.jieyuu.enums.*;
|
||||||
import net.jieyuu.enums.CouponStateEnum;
|
|
||||||
import net.jieyuu.exception.BizException;
|
import net.jieyuu.exception.BizException;
|
||||||
import net.jieyuu.feign.CouponFeignService;
|
import net.jieyuu.feign.CouponFeignService;
|
||||||
import net.jieyuu.feign.ProductFeignService;
|
import net.jieyuu.feign.ProductFeignService;
|
||||||
import net.jieyuu.feign.UserFeignService;
|
import net.jieyuu.feign.UserFeignService;
|
||||||
import net.jieyuu.interceptor.LoginInterceptor;
|
import net.jieyuu.interceptor.LoginInterceptor;
|
||||||
|
import net.jieyuu.mapper.ProductOrderItemMapper;
|
||||||
import net.jieyuu.model.LoginUser;
|
import net.jieyuu.model.LoginUser;
|
||||||
import net.jieyuu.model.OrderItemVO;
|
import net.jieyuu.model.OrderItemVO;
|
||||||
import net.jieyuu.model.ProductOrderDO;
|
import net.jieyuu.model.ProductOrderDO;
|
||||||
import net.jieyuu.mapper.ProductOrderMapper;
|
import net.jieyuu.mapper.ProductOrderMapper;
|
||||||
|
import net.jieyuu.model.ProductOrderItemDO;
|
||||||
import net.jieyuu.request.ConfirmOrderRequest;
|
import net.jieyuu.request.ConfirmOrderRequest;
|
||||||
import net.jieyuu.request.LockCouponRecordRequest;
|
import net.jieyuu.request.LockCouponRecordRequest;
|
||||||
import net.jieyuu.request.LockProductRequest;
|
import net.jieyuu.request.LockProductRequest;
|
||||||
@ -29,6 +31,7 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -56,6 +59,9 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
|
|||||||
@Autowired
|
@Autowired
|
||||||
private CouponFeignService couponFeignService;
|
private CouponFeignService couponFeignService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ProductOrderItemMapper productOrderItemMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 防重提交
|
* * 防重提交
|
||||||
* * 用户微服务-确认收货地址
|
* * 用户微服务-确认收货地址
|
||||||
@ -100,13 +106,90 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
|
|||||||
// 锁定库存
|
// 锁定库存
|
||||||
this.lockProductStocks(orderItemList, orderOutTradeNo);
|
this.lockProductStocks(orderItemList, orderOutTradeNo);
|
||||||
|
|
||||||
// 创建订单 todo
|
// 创建订单
|
||||||
|
ProductOrderDO productOrderDO = this.saveProductOrder(orderRequest, loginUser, orderOutTradeNo, addressVO);
|
||||||
|
|
||||||
|
//创建订单项
|
||||||
|
this.saveproductOrderItems(orderOutTradeNo, productOrderDO.getId(), orderItemList);
|
||||||
|
// 发送延迟消息,用于自动关单 todo
|
||||||
|
|
||||||
|
|
||||||
//创建支付 todo
|
//创建支付 todo
|
||||||
|
|
||||||
return null;
|
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
|
id, product_order_id, out_trade_no, product_id, product_name, product_img, buy_num, create_time, total_amount, amount
|
||||||
</sql>
|
</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>
|
</mapper>
|
||||||
|
Loading…
Reference in New Issue
Block a user