|
@@ -121,23 +121,42 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
|
|
|
@Override
|
|
|
public Map<String, Object> generateOrder(OrderParam orderParam) {
|
|
|
- if (orderParam.getOrderAmount() == null) {
|
|
|
- throw new BizException("订单金额校验不通过");
|
|
|
- }
|
|
|
- List<OmsOrderItem> orderItemList = new ArrayList<>();
|
|
|
- //获取购物车及优惠信息
|
|
|
- UmsMember currentMember = memberService.getCurrentMember();
|
|
|
- if (orderParam.getUserId() != null && orderParam.getUserId() > 0) {
|
|
|
- currentMember = memberService.getById(orderParam.getUserId());
|
|
|
- }
|
|
|
+ OmsOrder order = new OmsOrder();
|
|
|
+ String orderSn = generateOrderSn();
|
|
|
if (!StringUtil.isEmpty(orderParam.getOrderNo())) {
|
|
|
// 订单号不为空 先删除订单 在重新创建订单
|
|
|
OmsOrderDetail detail = detail(orderParam.getOrderNo());
|
|
|
if (detail != null) {
|
|
|
detail.setStatus(4);
|
|
|
orderMapper.updateByPrimaryKeySelective(detail);
|
|
|
+ detail.setId(null);
|
|
|
+ detail.setOrderSn(orderSn);
|
|
|
+ orderMapper.insert(detail);
|
|
|
+ List<OmsOrderItem> orderItemList = detail.getOrderItemList();
|
|
|
+ for (OmsOrderItem omsOrderItem : orderItemList) {
|
|
|
+ omsOrderItem.setId(null);
|
|
|
+ omsOrderItem.setOrderSn(detail.getOrderSn());
|
|
|
+ omsOrderItem.setOrderId(order.getId());
|
|
|
+ }
|
|
|
+ orderItemDao.insertList(orderItemList);
|
|
|
+
|
|
|
+ return feignMecCreateOrder(order.getCouponId(),orderParam.getOrderNo(), orderSn, detail.getMemberId(), detail.getTotalAmount());
|
|
|
+ } else {
|
|
|
+ throw new BizException("订单信息获取失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ if (orderParam.getOrderAmount() == null) {
|
|
|
+ throw new BizException("订单金额校验不通过");
|
|
|
}
|
|
|
}
|
|
|
+ List<OmsOrderItem> orderItemList = new ArrayList<>();
|
|
|
+ //获取购物车及优惠信息
|
|
|
+ UmsMember currentMember = memberService.getCurrentMember();
|
|
|
+ if (orderParam.getUserId() != null && orderParam.getUserId() > 0) {
|
|
|
+ currentMember = memberService.getById(orderParam.getUserId());
|
|
|
+ }
|
|
|
+
|
|
|
List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId(),
|
|
|
orderParam.getCartIds(), true);
|
|
|
for (CartPromotionItem cartPromotionItem : cartPromotionItemList) {
|
|
@@ -167,23 +186,9 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
Asserts.fail("库存不足,无法下单");
|
|
|
}
|
|
|
|
|
|
- String orderSn = generateOrderSn();
|
|
|
BigDecimal amount = calcTotalAmount(orderItemList);
|
|
|
|
|
|
- // 远程调用管乐迷订单记录
|
|
|
- MallCreateOrderModel model = new MallCreateOrderModel();
|
|
|
- model.setAmount(amount);
|
|
|
- model.setOrderNo(orderSn);
|
|
|
- model.setUserId(currentMember.getId().intValue());
|
|
|
- model.setCouponIdList(StringUtil.toIntegerList(orderParam.getCouponId()));
|
|
|
- HttpResponseResult<Map> mapHttpResponseResult = webFeignService.mallCreateOrder(model);
|
|
|
- if (!mapHttpResponseResult.getStatus()) {
|
|
|
- throw new BizException("管乐迷订单生成失败");
|
|
|
- }
|
|
|
- Map data = mapHttpResponseResult.getData();
|
|
|
- if (Integer.valueOf(0).equals(MapUtil.get(data,"mallStatus",Integer.class))) {
|
|
|
- throw new BizException("管乐迷订单生成失败");
|
|
|
- }
|
|
|
+ Map data = feignMecCreateOrder(orderParam.getCouponId(),orderParam.getOrderNo(), orderSn, currentMember.getId(), amount);
|
|
|
|
|
|
BigDecimal couponAmount = MapUtil.get(data, "mallCouponAmount", BigDecimal.class);
|
|
|
if (couponAmount == null) {
|
|
@@ -246,7 +251,6 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
lockProductStock(cartPromotionItemList);
|
|
|
|
|
|
//根据商品合计、运费、活动优惠、优惠券、积分计算应付金额
|
|
|
- OmsOrder order = new OmsOrder();
|
|
|
String cartIds = orderParam.getCartIds().stream().map(String::valueOf).collect(Collectors.joining());
|
|
|
order.setCartIds(cartIds);
|
|
|
order.setDiscountAmount(new BigDecimal(0));
|
|
@@ -342,6 +346,25 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ private Map feignMecCreateOrder(String couponId,String oldOrderNo, String orderSn, Long userId, BigDecimal amount) {
|
|
|
+ // 远程调用管乐迷订单记录
|
|
|
+ MallCreateOrderModel model = new MallCreateOrderModel();
|
|
|
+ model.setAmount(amount);
|
|
|
+ model.setOrderNo(orderSn);
|
|
|
+ model.setUserId(userId.intValue());
|
|
|
+ model.setCouponIdList(StringUtil.toIntegerList(couponId));
|
|
|
+ model.setOldOrderNo(oldOrderNo);
|
|
|
+ HttpResponseResult<Map> mapHttpResponseResult = webFeignService.mallCreateOrder(model);
|
|
|
+ if (!mapHttpResponseResult.getStatus()) {
|
|
|
+ throw new BizException("管乐迷订单生成失败");
|
|
|
+ }
|
|
|
+ Map data = mapHttpResponseResult.getData();
|
|
|
+ if (Integer.valueOf(0).equals(MapUtil.get(data,"mallStatus",Integer.class))) {
|
|
|
+ throw new BizException("管乐迷订单生成失败");
|
|
|
+ }
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public Integer paySuccess(Long orderId, Integer payType) {
|
|
|
//修改订单支付状态
|