| @@ -819,4 +819,4 @@ ALTER TABLE wx_pay_order_95 ADD COLUMN `child_order_share` text COMMENT ' | |||
| ALTER TABLE wx_pay_order_96 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; | |||
| ALTER TABLE wx_pay_order_97 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; | |||
| ALTER TABLE wx_pay_order_98 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; | |||
| ALTER TABLE wx_pay_order_99 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; | |||
| ALTER TABLE wx_pay_order_99 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额'; | |||
| @@ -75,17 +75,29 @@ public class WxOrderController extends BaseController { | |||
| return wxOrderService.composeSaveOrder(EnumComposeOrder.PACKAGECOUPON,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); | |||
| } | |||
| @ApiOperation(value = "商品购物车组合下单", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]") | |||
| @PostMapping("goodsShopCartSave") | |||
| public ResultData goodsShopCart(@RequestBody List<OrderComposeSaveDto> orderSaveDto) { | |||
| Long memberId; | |||
| try { | |||
| memberId = getMemberId(); | |||
| } catch (Exception e) { | |||
| return new ResultData(Result.ERROR,e.getMessage()); | |||
| } | |||
| return wxOrderService.composeSaveOrder(EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); | |||
| } | |||
| @ApiOperation(value = "多个券多个数量组合下订单(购物车组合)", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]") | |||
| @PostMapping("composeSave") | |||
| public ResultData composeSave(@RequestBody List<OrderComposeSaveDto> orderSaveDto) { | |||
| @ApiOperation(value = "券购物车组合下单", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]") | |||
| @PostMapping("couponShopCartSave") | |||
| public ResultData couponShopCartSave(@RequestBody List<OrderComposeSaveDto> orderSaveDto) { | |||
| Long memberId; | |||
| try { | |||
| memberId = getMemberId(); | |||
| } catch (Exception e) { | |||
| return new ResultData(Result.ERROR,e.getMessage()); | |||
| } | |||
| return wxOrderService.composeSaveOrder(EnumComposeOrder.BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); | |||
| return wxOrderService.composeSaveOrder(EnumComposeOrder.ONE_NUMBER_ORDER_BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); | |||
| } | |||
| @ApiOperation(value = "单个券单个订单,卡(分账导致无法批量下单)、拼团,砍价用", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") | |||
| @@ -1,13 +1,11 @@ | |||
| package com.iformall.domain.po; | |||
| import com.baomidou.mybatisplus.annotation.TableField; | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| import lombok.ToString; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| @TableName(value = "wx_batch_order") | |||
| @Data | |||
| @@ -30,8 +28,4 @@ public class WxBatchOrder extends TenantEntity { | |||
| private Date createDate; | |||
| @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") | |||
| private Date updateDate; | |||
| //返回给前端,跟之前的wxorder直接下单做区分 | |||
| @TableField(exist = false) | |||
| private String composeOrderTag = "1"; | |||
| } | |||
| @@ -340,15 +340,4 @@ public class WxCoupon extends TenantEntity { | |||
| } | |||
| return false; | |||
| } | |||
| public boolean oneNumberOneOrder() { | |||
| if (type == null) { | |||
| return true; | |||
| } | |||
| if (type.intValue() == EnumCouponType.COUPON_DISTRIBUTION.getCode().intValue()) { | |||
| return false; | |||
| } | |||
| return true; | |||
| } | |||
| } | |||
| @@ -8,8 +8,9 @@ import com.iformall.domain.po.WxOrder; | |||
| public enum EnumComposeOrder { | |||
| SINGLE(0, "单个订单类型,如拼团,砍价"), | |||
| BATCH(1, "多券种组合订单类型"), | |||
| PACKAGECOUPON(2,"券包组合订单类型") | |||
| ONE_NUMBER_ORDER_BATCH(1, "购物车式组合下单,1个数量1个订单(针对同样产品)"), | |||
| MULITY_NUMBER_ORDER_BATCH(2,"购物车式组合下单,多个数量1个订单(针对同样产品)"), | |||
| PACKAGECOUPON(3,"券包订单类型") | |||
| ; | |||
| public static EnumComposeOrder getEnum(Integer code) { | |||
| @@ -569,8 +569,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||
| } | |||
| } else { | |||
| //如果是组合的,则为多次 | |||
| if ((couponOrder.getComposeOrderType().intValue() == EnumComposeOrder.BATCH.getCode().intValue()) | |||
| || (couponOrder.getComposeOrderType().intValue() == EnumComposeOrder.PACKAGECOUPON.getCode().intValue())) { | |||
| if (EnumComposeOrder.isSingle(couponOrder.getComposeOrderType())) { | |||
| try { | |||
| // 核销分账 | |||
| shareAfterVerify(couponOrder, bUser.getMerchantId(),couponOrder.getPayVendor(),true); | |||
| @@ -741,7 +740,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||
| WxAppinfo wxAppinfo = wxAppinfoService.getCAppInfo(couponOrder,EnumPayWay.getEnum(couponOrder.getPayVendor())); | |||
| WxPayAccount payAccount = wxPayAccountMapper.selectById(wxAppinfo.getPayId()); | |||
| Integer subsidyNum = coupon.getSubsidyNum(); | |||
| OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(couponOrder.getComposeOrderType()); | |||
| Integer subsidyNum = orderAdapterService.calcuteChildOrderSubsidy(coupon); | |||
| if (subsidyNum == null || subsidyNum.intValue() == 0) { | |||
| String parameter = couponMerchant.getParameter(); | |||
| try { | |||
| @@ -765,11 +765,13 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||
| return; | |||
| } | |||
| // 新补贴入库 | |||
| int iSubChargeFee = PayUtils.getPayRate(subsidyNum, payAccount.getRate(), false); | |||
| int iSubChargeFee = OrderHelper.getMallCharge(subsidyNum, payAccount); | |||
| Integer realSubsidyFee = subsidyNum - iSubChargeFee; | |||
| int iPriceChargeFee = PayUtils.getPayRate(coupon.getSalePrice(), payAccount.getRate(), false); | |||
| Integer realPayment = coupon.getSalePrice() - iPriceChargeFee; | |||
| WxOrder order = wxOrderMapper.selectById(couponOrder.getOrderId(), couponOrder.getTenantId()); | |||
| WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, order.getOrderGroupId(), order.getCouponNumber()); | |||
| int iPriceChargeFee = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); | |||
| Integer realPayment = price.getRealPayMent() - iPriceChargeFee; | |||
| WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); | |||
| merchantSubsidy.setId(idWorker.nextId()); | |||
| @@ -779,8 +781,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||
| merchantSubsidy.setMerchantId(merchantId); | |||
| merchantSubsidy.setCouponOrderId(couponOrder.getId()); | |||
| merchantSubsidy.setCouponType(couponOrder.getCouponType()); | |||
| merchantSubsidy.setOrderPayment(coupon.getPrice()); | |||
| merchantSubsidy.setReceiverPayment(coupon.getSalePrice()); | |||
| merchantSubsidy.setOrderPayment(price.getRealPayMent()); | |||
| merchantSubsidy.setReceiverPayment(price.getRealPayMent()); | |||
| merchantSubsidy.setRealPayment(realPayment); | |||
| merchantSubsidy.setSubsidy(subsidyNum); | |||
| merchantSubsidy.setRealSubsidy(realSubsidyFee); | |||
| @@ -1995,54 +1995,54 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| WxComposeOrder composeOrder = orderAdapterService.createDBMainOrder(user, orderSave, payWay); | |||
| for (int i = 0 ; i < orderSave.size(); i ++) { | |||
| OrderComposeSaveDto orderdto = orderSave.get(i); | |||
| //券是一个数量一个订单, 实物是一个产品一个订单 | |||
| int totalOrderCount = 1; | |||
| if (orderAdapterService.isOneNumberOneOrder(orderdto.getWxCoupon())) { | |||
| totalOrderCount = orderdto.getCount(); | |||
| } | |||
| int perCouponNumber = 1; | |||
| if (totalOrderCount==1) { | |||
| perCouponNumber = orderdto.getCount(); | |||
| } | |||
| for (int j =0 ; j < totalOrderCount ; j ++) { | |||
| // 是否砍价 | |||
| WxOrder order = null; | |||
| if (checkCouponIsFree(orderdto.getWxCoupon())) { | |||
| // 免费券 | |||
| order = proxy.saveFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), null,payWay); | |||
| if (order != null) { | |||
| // 6. 下订单完成,发送内部消息 | |||
| // 下订单完成,发送内部消息 | |||
| try { | |||
| proxy.sendOrderSuccessActionMsg(order); | |||
| } catch (Exception e) { | |||
| logger.error("内部消息发送失败: " + e.getMessage(),e); | |||
| throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR); | |||
| } | |||
| } | |||
| } else { | |||
| // 有价券 | |||
| order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId()); | |||
| } | |||
| //券一个数量创建一个订单 | |||
| boolean isOneNumberOneOrder = orderAdapterService.isOneNumberOneOrder(); | |||
| if (isOneNumberOneOrder) { | |||
| for (int j = 0; j < orderdto.getCount(); j++) { | |||
| proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), 1, orderdto, payWay); | |||
| } | |||
| }else { | |||
| proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), orderdto, payWay); | |||
| } | |||
| // couponActionLog | |||
| // try { | |||
| // wxCouponActionLogService.addOne(order, order.getProductId(), order.getOrderNumber(), EnumCouponSendSendType.ACTIVE.getCode(), orderdto.getSignleOrder().getCouponChannelId(),0L); | |||
| // } catch (Exception e) { | |||
| // // 库存恢复 | |||
| // stockBack(order); | |||
| // logger.error("保存订单:" + e.getMessage()); | |||
| // throw new MallinkException(ErrorCode.ORDER_SAVE_ERR); | |||
| // } | |||
| } | |||
| return composeOrder; | |||
| } | |||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | |||
| public WxOrder handleSaveOrderForCouponSingle(WxComposeOrder composeOrder,WxCUserBasicInfo user,WxCoupon coupon,int perCouponNumber,OrderComposeSaveDto orderdto,EnumPayWay payWay) { | |||
| WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy(); | |||
| // 是否砍价 | |||
| WxOrder order = null; | |||
| if (checkCouponIsFree(coupon)) { | |||
| // 免费券 | |||
| order = proxy.saveFreeOrderForCoupon(composeOrder,user, coupon,perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), null,payWay); | |||
| if (order != null) { | |||
| // 6. 下订单完成,发送内部消息 | |||
| // 下订单完成,发送内部消息 | |||
| try { | |||
| proxy.sendOrderSuccessActionMsg(order); | |||
| } catch (Exception e) { | |||
| logger.error("内部消息发送失败: " + e.getMessage(),e); | |||
| throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR); | |||
| } | |||
| } | |||
| } else { | |||
| // 有价券 | |||
| order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId()); | |||
| } | |||
| // couponActionLog | |||
| // try { | |||
| // wxCouponActionLogService.addOne(order, order.getProductId(), order.getOrderNumber(), EnumCouponSendSendType.ACTIVE.getCode(), orderdto.getSignleOrder().getCouponChannelId(),0L); | |||
| // } catch (Exception e) { | |||
| // // 库存恢复 | |||
| // stockBack(order); | |||
| // logger.error("保存订单:" + e.getMessage()); | |||
| // throw new MallinkException(ErrorCode.ORDER_SAVE_ERR); | |||
| // } | |||
| return order; | |||
| } | |||
| @Override | |||
| public boolean checkCouponIsFree(WxCoupon coupon) { | |||
| return coupon.getSalePrice() == 0; | |||
| @@ -155,9 +155,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||
| throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||
| } | |||
| }else { | |||
| if ( null == composeOrder) { | |||
| throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(),"composeOrder is null."); | |||
| } | |||
| List<WxOrder> orderList = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrders(composeOrder, oldRecord.getTenantId()); | |||
| for (WxOrder o : orderList) { | |||
| try { | |||
| @@ -898,6 +895,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||
| logger.error(e.getMessage()); | |||
| throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "订单更新"); | |||
| } | |||
| orderFactory.getOrderAdapterService(record.getComposeOrder()).doOthersAfterPaySuccess(order, record); | |||
| // 下订单完成,发送内部消息 | |||
| try { | |||
| wxOrderService.sendOrderSuccessActionMsg(order); | |||
| @@ -278,7 +278,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { | |||
| record.setTransactionId(payOrder.getTransactionId()); | |||
| record.setCUserId(payOrder.getCUserId()); | |||
| record.setTotalFee(payOrder.getPayAmount()); | |||
| record.setRefundFee(payOrder.getPayAmount()); | |||
| record.setRefundFee(payOrder.getChildOrderShare(rOrder.getId()).getRealPayMent()); | |||
| record.setRefundTimeStart(currentDate); | |||
| record.setRefundOrderStatus(EnumRefundStatus.REFUND_WAIT.getCode()); | |||
| record.setRefundVendor(payOrder.getPayVendor()); | |||
| @@ -6,7 +6,7 @@ import com.iformall.domain.dto.OrderComposeSaveDto; | |||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||
| import com.iformall.domain.po.WxCoupon; | |||
| import com.iformall.domain.po.WxOrder; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.domain.po.WxPayOrder; | |||
| import com.iformall.enums.EnumPayWay; | |||
| import com.iformall.service.order.entity.WxComposeChildOrderPrice; | |||
| import com.iformall.service.order.entity.WxComposeOrder; | |||
| @@ -23,10 +23,10 @@ public interface OrderAdapterService { | |||
| * 是否是一个数量一个订单。一个产品肯定是一个订单 | |||
| * @return | |||
| */ | |||
| boolean isOneNumberOneOrder(WxCoupon coupon); | |||
| boolean isOneNumberOneOrder(); | |||
| /** | |||
| * 查询每一个订单的产品的真实支付价格及补贴 | |||
| * 查询每一个订单的产品的真实支付价格 | |||
| * @param coupon | |||
| * @return | |||
| */ | |||
| @@ -36,7 +36,7 @@ public interface OrderAdapterService { | |||
| * 计算每一个子订单的补贴 | |||
| * @return | |||
| */ | |||
| Integer calcuteChildOrderSubsidy(); | |||
| Integer calcuteChildOrderSubsidy(WxCoupon coupon); | |||
| /** | |||
| * 查询订单信息,单个模式查询WxOrder | |||
| @@ -58,4 +58,11 @@ public interface OrderAdapterService { | |||
| * @param cUserId | |||
| */ | |||
| void updateChildOrdersCUserId(WxComposeOrder composeOrder,List<WxOrder> orderList,Long cUserId); | |||
| /** | |||
| * 支付成功后,对订单进行附加的操作。 | |||
| * @param order | |||
| * @param record | |||
| */ | |||
| void doOthersAfterPaySuccess(WxOrder order,WxPayOrder record); | |||
| } | |||
| @@ -4,15 +4,36 @@ import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import com.iformall.enums.EnumComposeOrder; | |||
| import com.iformall.service.order.impl.BatchOrderAdapterService; | |||
| import com.iformall.service.order.impl.SingleOrderAdapterService; | |||
| import com.iformall.service.order.impl.batch.CouponPackageOrderAdapterService; | |||
| import com.iformall.service.order.impl.batch.MulityNumberOneOrderBatchOrderAdapterService; | |||
| import com.iformall.service.order.impl.batch.OneNumberOneOrderBatchOrderAdapterService; | |||
| @Service | |||
| public class OrderFactory { | |||
| @Autowired | |||
| BatchOrderAdapterService batchOrderAdapterService; | |||
| OneNumberOneOrderBatchOrderAdapterService oneNumberOneOrderBatchOrderAdapterService; | |||
| @Autowired | |||
| MulityNumberOneOrderBatchOrderAdapterService mulityNumberOneOrderBatchOrderAdapterService; | |||
| @Autowired | |||
| SingleOrderAdapterService singleOrderAdapterService; | |||
| @Autowired | |||
| CouponPackageOrderAdapterService couponPackageOrderAdapterService; | |||
| public OrderAdapterService getOrderAdapterService(Integer composeOrderType) { | |||
| if (composeOrderType.intValue() == EnumComposeOrder.SINGLE.getCode().intValue()) { | |||
| return singleOrderAdapterService; | |||
| }else if (composeOrderType.intValue() == EnumComposeOrder.ONE_NUMBER_ORDER_BATCH.getCode().intValue()) { | |||
| return oneNumberOneOrderBatchOrderAdapterService; | |||
| }else if (composeOrderType.intValue() == EnumComposeOrder.PACKAGECOUPON.getCode().intValue()) { | |||
| return couponPackageOrderAdapterService; | |||
| }else if (composeOrderType.intValue() == EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH.getCode().intValue()) { | |||
| return mulityNumberOneOrderBatchOrderAdapterService; | |||
| } | |||
| return null; | |||
| } | |||
| @@ -38,7 +38,7 @@ public class SingleOrderAdapterService implements OrderAdapterService { | |||
| } | |||
| @Override | |||
| public boolean isOneNumberOneOrder(WxCoupon coupon) { | |||
| public boolean isOneNumberOneOrder() { | |||
| return true; | |||
| } | |||
| @@ -74,12 +74,8 @@ public class SingleOrderAdapterService implements OrderAdapterService { | |||
| } | |||
| @Override | |||
| public Integer calcuteChildOrderSubsidy() { | |||
| return null; | |||
| public Integer calcuteChildOrderSubsidy(WxCoupon coupon) { | |||
| return coupon.getSubsidyNum(); | |||
| } | |||
| } | |||
| @@ -1,4 +1,4 @@ | |||
| package com.iformall.service.order.impl; | |||
| package com.iformall.service.order.impl.batch; | |||
| import java.util.ArrayList; | |||
| import java.util.Date; | |||
| @@ -31,59 +31,55 @@ import com.iformall.service.order.util.OrderHelper; | |||
| * @author alascor | |||
| * | |||
| */ | |||
| @Service | |||
| public class BatchOrderAdapterService implements OrderAdapterService { | |||
| public abstract class BaseBatchOrderAdapterService implements OrderAdapterService { | |||
| @Autowired | |||
| WxBatchOrderMapper wxBatchOrderMapper; | |||
| @Autowired | |||
| WxOrderMapper wxOrderMapper; | |||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | |||
| @Override | |||
| public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay) { | |||
| public WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber) { | |||
| Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId); | |||
| return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId()); | |||
| } | |||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | |||
| protected WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay,EnumComposeOrder composeOrderType) { | |||
| WxBatchOrder order =new WxBatchOrder(); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| order.setId(idWorker.nextId()); | |||
| order.setCUserId(user.getId()); | |||
| int payment = 0; | |||
| for (OrderComposeSaveDto ocsd : orderSave) { | |||
| boolean isPress = ocsd.getSignleOrder().getPress() != null ? ocsd.getSignleOrder().getPress() : false; | |||
| boolean isPress = ocsd.getSignleOrder().isPressOrder(); | |||
| WxComposeChildOrderPrice price = getChildOrderPrice(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(), ocsd.getCount()); | |||
| payment = payment+price.getRealPayMent(); | |||
| } | |||
| order.setPayment(payment); | |||
| order.setCreateDate(new Date()); | |||
| wxBatchOrderMapper.insert(order); | |||
| return new WxComposeOrder(order.getId(),EnumComposeOrder.BATCH.getCode()); | |||
| } | |||
| @Override | |||
| public boolean isOneNumberOneOrder(WxCoupon coupon) { | |||
| return coupon.oneNumberOneOrder(); | |||
| return new WxComposeOrder(order.getId(),composeOrderType.getCode()); | |||
| } | |||
| @Override | |||
| public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { | |||
| protected WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId,EnumComposeOrder composeOrderType) { | |||
| WxBatchOrder order = wxBatchOrderMapper.selectById(mainOrderId, tenantId); | |||
| WxComposeOrder corder = new WxComposeOrder(order.getId(),EnumComposeOrder.BATCH.getCode()); | |||
| WxComposeOrder corder = new WxComposeOrder(order.getId(),composeOrderType.getCode()); | |||
| corder.setPayment(order.getPayment()); | |||
| corder.setMainOrder(order); | |||
| return corder; | |||
| } | |||
| @Override | |||
| public List<WxOrder> getChildOrders(WxComposeOrder composeOrder, String tenantId) { | |||
| protected List<WxOrder> getChildOrders(WxComposeOrder composeOrder, String tenantId,EnumComposeOrder composeOrderType) { | |||
| WxOrder orderq = new WxOrder(); | |||
| orderq.setComposeOrderId(composeOrder.getMainOrderId()); | |||
| orderq.setComposeOrderType(EnumComposeOrder.BATCH.getCode()); | |||
| orderq.setComposeOrderType(composeOrderType.getCode()); | |||
| orderq.setTenantId(tenantId); | |||
| List<WxOrder> orderList = wxOrderMapper.findList(orderq); | |||
| return orderList; | |||
| } | |||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | |||
| @Override | |||
| public void updateChildOrdersCUserId(WxComposeOrder composeOrder,List<WxOrder> orderList, Long cUserId) { | |||
| if (null != cUserId) { | |||
| WxBatchOrder order = (WxBatchOrder) composeOrder.getMainOrder(); | |||
| @@ -107,16 +103,10 @@ public class BatchOrderAdapterService implements OrderAdapterService { | |||
| } | |||
| @Override | |||
| public WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber) { | |||
| Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId); | |||
| return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId()); | |||
| } | |||
| @Override | |||
| public Integer calcuteChildOrderSubsidy() { | |||
| // TODO Auto-generated method stub | |||
| return null; | |||
| public Integer calcuteChildOrderSubsidy(WxCoupon coupon) { | |||
| return coupon.getSubsidyNum(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,54 @@ | |||
| package com.iformall.service.order.impl.batch; | |||
| import java.util.List; | |||
| import org.springframework.stereotype.Service; | |||
| import org.springframework.transaction.annotation.Propagation; | |||
| import org.springframework.transaction.annotation.Transactional; | |||
| import com.iformall.domain.dto.OrderComposeSaveDto; | |||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||
| import com.iformall.domain.po.WxCoupon; | |||
| import com.iformall.domain.po.WxOrder; | |||
| import com.iformall.domain.po.WxPayOrder; | |||
| import com.iformall.enums.EnumComposeOrder; | |||
| import com.iformall.enums.EnumPayWay; | |||
| import com.iformall.service.order.entity.WxComposeOrder; | |||
| /** | |||
| * 券包批量下单 | |||
| * @author alascor | |||
| * | |||
| */ | |||
| @Service | |||
| public class CouponPackageOrderAdapterService extends BaseBatchOrderAdapterService { | |||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | |||
| @Override | |||
| public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay) { | |||
| return super.createDBMainOrder(user, orderSave, payWay, EnumComposeOrder.PACKAGECOUPON); | |||
| } | |||
| @Override | |||
| public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { | |||
| return super.getComposeOrder(mainOrderId, tenantId, EnumComposeOrder.PACKAGECOUPON); | |||
| } | |||
| @Override | |||
| public List<WxOrder> getChildOrders(WxComposeOrder composeOrder, String tenantId) { | |||
| return super.getChildOrders(composeOrder, tenantId, EnumComposeOrder.PACKAGECOUPON); | |||
| } | |||
| @Override | |||
| public Integer calcuteChildOrderSubsidy(WxCoupon coupon) { | |||
| return coupon.getSubsidyNum(); | |||
| } | |||
| @Override | |||
| public boolean isOneNumberOneOrder() { | |||
| return true; | |||
| } | |||
| @Override | |||
| public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) { | |||
| //手动核销发券 | |||
| } | |||
| } | |||
| @@ -0,0 +1,49 @@ | |||
| package com.iformall.service.order.impl.batch; | |||
| import java.util.List; | |||
| import org.springframework.stereotype.Service; | |||
| import com.iformall.domain.dto.OrderComposeSaveDto; | |||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||
| import com.iformall.domain.po.WxOrder; | |||
| import com.iformall.domain.po.WxPayOrder; | |||
| import com.iformall.enums.EnumComposeOrder; | |||
| import com.iformall.enums.EnumPayWay; | |||
| import com.iformall.service.order.entity.WxComposeOrder; | |||
| /** | |||
| * 购物车批量下单 | |||
| * @author alascor | |||
| * | |||
| */ | |||
| @Service | |||
| public class MulityNumberOneOrderBatchOrderAdapterService extends BaseBatchOrderAdapterService { | |||
| @Override | |||
| public boolean isOneNumberOneOrder() { | |||
| return false; | |||
| } | |||
| @Override | |||
| public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user, List<OrderComposeSaveDto> orderSave, | |||
| EnumPayWay payWay) { | |||
| return super.createDBMainOrder(user, orderSave, payWay, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH); | |||
| } | |||
| @Override | |||
| public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { | |||
| return super.getComposeOrder(mainOrderId, tenantId, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH); | |||
| } | |||
| @Override | |||
| public List<WxOrder> getChildOrders(WxComposeOrder composeOrder, String tenantId) { | |||
| return super.getChildOrders(composeOrder, tenantId, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH); | |||
| } | |||
| @Override | |||
| public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) { | |||
| } | |||
| } | |||
| @@ -0,0 +1,49 @@ | |||
| package com.iformall.service.order.impl.batch; | |||
| import java.util.List; | |||
| import org.springframework.stereotype.Service; | |||
| import com.iformall.domain.dto.OrderComposeSaveDto; | |||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||
| import com.iformall.domain.po.WxOrder; | |||
| import com.iformall.domain.po.WxPayOrder; | |||
| import com.iformall.enums.EnumComposeOrder; | |||
| import com.iformall.enums.EnumPayWay; | |||
| import com.iformall.service.order.entity.WxComposeOrder; | |||
| /** | |||
| * 购物车批量下单 | |||
| * @author alascor | |||
| * | |||
| */ | |||
| @Service | |||
| public class OneNumberOneOrderBatchOrderAdapterService extends BaseBatchOrderAdapterService { | |||
| @Override | |||
| public boolean isOneNumberOneOrder() { | |||
| return true; | |||
| } | |||
| @Override | |||
| public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user, List<OrderComposeSaveDto> orderSave, | |||
| EnumPayWay payWay) { | |||
| return super.createDBMainOrder(user, orderSave, payWay, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH); | |||
| } | |||
| @Override | |||
| public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { | |||
| return super.getComposeOrder(mainOrderId, tenantId, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH); | |||
| } | |||
| @Override | |||
| public List<WxOrder> getChildOrders(WxComposeOrder composeOrder, String tenantId) { | |||
| return super.getChildOrders(composeOrder, tenantId, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH); | |||
| } | |||
| @Override | |||
| public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) { | |||
| } | |||
| } | |||