|
|
|
@@ -16,6 +16,7 @@ import java.util.stream.Collectors; |
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
|
|
|
|
import com.iformall.domain.po.*; |
|
|
|
import com.iformall.domain.vo.*; |
|
|
|
import com.iformall.enums.*; |
|
|
|
import com.iformall.service.*; |
|
|
|
@@ -50,24 +51,6 @@ import com.iformall.common.ResultData; |
|
|
|
import com.iformall.domain.dto.OrderComposeSaveDto; |
|
|
|
import com.iformall.domain.dto.OrderSaveDto; |
|
|
|
import com.iformall.domain.dto.WxSharingOrderDto; |
|
|
|
import com.iformall.domain.po.WxAppinfo; |
|
|
|
import com.iformall.domain.po.WxBatchOrder; |
|
|
|
import com.iformall.domain.po.WxCUserBasicInfo; |
|
|
|
import com.iformall.domain.po.WxCardInfo; |
|
|
|
import com.iformall.domain.po.WxCoupon; |
|
|
|
import com.iformall.domain.po.WxCouponChannel; |
|
|
|
import com.iformall.domain.po.WxCouponMerchant; |
|
|
|
import com.iformall.domain.po.WxCouponOrder; |
|
|
|
import com.iformall.domain.po.WxCouponPassword; |
|
|
|
import com.iformall.domain.po.WxCouponSend; |
|
|
|
import com.iformall.domain.po.WxCreditHistory; |
|
|
|
import com.iformall.domain.po.WxMerchant; |
|
|
|
import com.iformall.domain.po.WxMerchantBUser; |
|
|
|
import com.iformall.domain.po.WxOrder; |
|
|
|
import com.iformall.domain.po.WxOrderGroup; |
|
|
|
import com.iformall.domain.po.WxOrderPress; |
|
|
|
import com.iformall.domain.po.WxPayAccount; |
|
|
|
import com.iformall.domain.po.WxPayOrder; |
|
|
|
import com.iformall.domain.po.base.TenantEntity; |
|
|
|
import com.iformall.domain.po.msg.FmInsideOrderSuccessMsg; |
|
|
|
import com.iformall.exception.MallinkException; |
|
|
|
@@ -2028,9 +2011,12 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); |
|
|
|
// 是否砍价 |
|
|
|
WxOrder order = null; |
|
|
|
if (checkCouponIsFree(coupon)) { |
|
|
|
if (checkCouponIsFree(coupon,orderdto.getShippingType())) { |
|
|
|
// 免费券 |
|
|
|
order = proxy.saveFreeOrderForCoupon(composeOrder,user, coupon,perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), null,payWay); |
|
|
|
order = proxy.saveFreeOrderForCoupon(composeOrder,user, coupon,perCouponNumber, |
|
|
|
orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), |
|
|
|
null,payWay, |
|
|
|
orderdto.getShippingType(),orderdto.getAddress()); |
|
|
|
if (order != null) { |
|
|
|
// 6. 下订单完成,发送内部消息 |
|
|
|
// 下订单完成,发送内部消息 |
|
|
|
@@ -2043,7 +2029,7 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
} |
|
|
|
} else { |
|
|
|
// 有价券 |
|
|
|
order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId()); |
|
|
|
order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto); |
|
|
|
} |
|
|
|
// couponActionLog |
|
|
|
// try { |
|
|
|
@@ -2059,13 +2045,18 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public boolean checkCouponIsFree(WxCoupon coupon) { |
|
|
|
return coupon.getSalePrice() == 0; |
|
|
|
public boolean checkCouponIsFree(WxCoupon coupon,Integer shippingType) { |
|
|
|
if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(shippingType)){ |
|
|
|
return coupon.getSalePrice().intValue() + coupon.getFreightPrice().intValue() == 0; |
|
|
|
} |
|
|
|
return coupon.getSalePrice().intValue() == 0; |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) |
|
|
|
@Override |
|
|
|
public WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay) { |
|
|
|
public WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, |
|
|
|
Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay, |
|
|
|
Integer shippingType, UserBasicInfoAddress address) { |
|
|
|
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); |
|
|
|
// 减库存操作 |
|
|
|
String couponIdStr = String.valueOf(coupon.getId()); |
|
|
|
@@ -2089,6 +2080,11 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
record.setPayment(0); |
|
|
|
record.setFormId(formId); |
|
|
|
record.setOrderGroupId(0L); |
|
|
|
|
|
|
|
record.setShippingType(shippingType); |
|
|
|
if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(shippingType)){ |
|
|
|
record.setShippingAddress(JSON.toJSONString(address)); |
|
|
|
} |
|
|
|
if (null != composeOrder) { |
|
|
|
record.setComposeOrderId(composeOrder.getMainOrderId()); |
|
|
|
if (EnumComposeOrder.childOrderIsSingle(composeOrder.getComposeOrderType())) { |
|
|
|
@@ -2120,7 +2116,7 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) |
|
|
|
public WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, boolean isPress, Long orderGroupId, String formId) { |
|
|
|
public WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,OrderComposeSaveDto orderdto) { |
|
|
|
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); |
|
|
|
String couponIdStr = String.valueOf(coupon.getId()); |
|
|
|
// 3. 减库存操作 |
|
|
|
@@ -2138,17 +2134,26 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
// 4. 保存订单 |
|
|
|
Long orderNumber; |
|
|
|
// 4.1 券价格 |
|
|
|
WxComposeChildOrderPrice price = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildCouponOrderPrice(coupon, isPress, orderGroupId, couponNumber); |
|
|
|
WxComposeChildOrderPrice price = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()) |
|
|
|
.getChildCouponOrderPrice(coupon, orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), couponNumber); |
|
|
|
|
|
|
|
Integer orderStatus = OrderHelper.getOrderStatusWxCoupon(coupon, orderGroupId); |
|
|
|
Integer orderStatus = OrderHelper.getOrderStatusWxCoupon(coupon, orderdto.getSignleOrder().getOrderGroupId()); |
|
|
|
|
|
|
|
// 4.2 保存订单 |
|
|
|
WxOrder record = new WxOrder(); |
|
|
|
record.setType(orderType); |
|
|
|
record.setCouponChannelId(couponChannelId); |
|
|
|
record.setOrderGroupId(orderGroupId); |
|
|
|
record.setFormId(formId); |
|
|
|
record.setPayment(price.getRealPayMent()); |
|
|
|
record.setCouponChannelId(orderdto.getSignleOrder().getCouponChannelId()); |
|
|
|
record.setOrderGroupId(orderdto.getSignleOrder().getOrderGroupId()); |
|
|
|
record.setFormId(orderdto.getSignleOrder().getFormId()); |
|
|
|
|
|
|
|
record.setPayment(price.getRealPayMent()+coupon.getFreightPrice());//加运费 |
|
|
|
record.setFreightPrice(coupon.getFreightPrice()); |
|
|
|
|
|
|
|
record.setShippingType(orderdto.getShippingType()); |
|
|
|
if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(orderdto.getShippingType())){ |
|
|
|
record.setShippingAddress(JSON.toJSONString(orderdto.getAddress())); |
|
|
|
} |
|
|
|
|
|
|
|
record.setOrderStatus(orderStatus); |
|
|
|
record.setComposeOrderId(composeOrder.getMainOrderId()); |
|
|
|
if (EnumComposeOrder.childOrderIsSingle(composeOrder.getComposeOrderType())) { |
|
|
|
@@ -2159,13 +2164,13 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
|
|
|
|
record.setCouponNumber(couponNumber); |
|
|
|
try { |
|
|
|
orderNumber = proxy.saveNoFreeOrder(record, user, coupon, isPress); |
|
|
|
orderNumber = proxy.saveNoFreeOrder(record, user, coupon, orderdto.getSignleOrder().isPressOrder()); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("保存订单:" + e.getMessage(),e); |
|
|
|
throw new MallinkException(ErrorCode.ORDER_SAVE_ERR.getCode(),"["+coupon.getTitle()+"]订单保存错误,"+e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
if (isPress) { |
|
|
|
if (orderdto.getSignleOrder().isPressOrder()) { |
|
|
|
// 5. 第一次砍价 |
|
|
|
try { |
|
|
|
proxy.firstPress(record, user, coupon, orderNumber); |
|
|
|
@@ -2590,7 +2595,7 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (!checkCouponIsFree(coupon)) { |
|
|
|
if (!checkCouponIsFree(coupon,null)) { |
|
|
|
// 有价,拼团检查 |
|
|
|
if (isOrderGroup(orderSaveDto.getOrderGroupId())) { |
|
|
|
checkOrderGroup(wxCUserBasicInfo, orderSaveDto.getOrderGroupId(),coupon,premsg); |
|
|
|
|