/** * 保存指定状态的原始订单至数据库 * * @param originalOrderList */ public void saveOriginalOrders(List<OriginalOrder> originalOrderList) { if (CollectionUtils.isEmpty(originalOrderList)) { return; } for (OriginalOrder originalOrder : originalOrderList) { if (!(StringUtils.equalsIgnoreCase( originalOrder.getStatus(), OriginalOrderStatus.WAIT_SELLER_SEND_GOODS.toString()) || StringUtils.equalsIgnoreCase( originalOrder.getStatus(), OriginalOrderStatus.WAIT_BUYER_CONFIRM_GOODS.toString()) || StringUtils.equalsIgnoreCase( originalOrder.getStatus(), OriginalOrderStatus.TRADE_FINISHED.toString()))) { continue; } // 保存原始订单 saveOriginalOrder(originalOrder); for (OriginalOrderItem originalOrderItem : originalOrder.getOriginalOrderItemList()) { // 保存原始订单项 originalOrderItem.setOriginalOrderId(originalOrder.getId()); saveOriginalOrderItem(originalOrderItem); } for (PromotionInfo promotionInfo : originalOrder.getPromotionInfoList()) { // 保存订单优惠记录 promotionInfo.setOriginalOrderId(originalOrder.getId()); savePromotionInfo(promotionInfo); } } }
/** * 获取订单、订单项、订单优惠信息 * * @param originalOrder * @param startTime * @param endTime * @return */ @Transactional(readOnly = true) public List<OriginalOrder> findOriginalOrderFullinfos( OriginalOrder originalOrder, Date startTime, Date endTime) { List<OriginalOrder> originalOrderList = getOriginalOrder(originalOrder, startTime, endTime); if (CollectionUtils.isNotEmpty(originalOrderList)) { for (OriginalOrder originalOrderOri : originalOrderList) { OriginalOrderItem originalOrderItem = new OriginalOrderItem(); originalOrderItem.setOriginalOrderId(originalOrderOri.getId()); List<OriginalOrderItem> originalOrderItemList = findOriginalOrderItem(originalOrderItem); if (CollectionUtils.isNotEmpty(originalOrderItemList)) { originalOrderOri.setOriginalOrderItemList(originalOrderItemList); } PromotionInfo promotionInfo = new PromotionInfo(); promotionInfo.setOriginalOrderId(originalOrderOri.getId()); List<PromotionInfo> promotionInfoList = findPromotionInfos(promotionInfo); if (CollectionUtils.isNotEmpty(promotionInfoList)) { originalOrderOri.setPromotionInfoList(promotionInfoList); } } } return originalOrderList; }
/** * 获取整单优惠(需要分摊减去的优惠:100-店铺优惠,35-满返满送(返现)) * * @param promotionInfoList 订单优惠详情 * @return */ private Money getSelfDiscountFee(List<PromotionInfo> promotionInfoList) { Money selfDiscountFee = Money.valueOf(0); if (promotionInfoList == null) { return selfDiscountFee; } for (PromotionInfo promotionInfo : promotionInfoList) { if (StringUtils.isBlank(promotionInfo.getSkuId()) && (StringUtils.equals( promotionInfo.getCouponType(), PromotionType.JD_TAOZHUANG.getDesc()) || StringUtils.equals( promotionInfo.getCouponType(), PromotionType.JD_SHANTUAN.getDesc()) || StringUtils.equals( promotionInfo.getCouponType(), PromotionType.JD_TUANGOU.getDesc()) || StringUtils.equals( promotionInfo.getCouponType(), PromotionType.JD_DANPINCUXIAO.getDesc()) || StringUtils.equals( promotionInfo.getCouponType(), PromotionType.JD_MANFANMANSONG.getDesc()) || StringUtils.equals( promotionInfo.getCouponType(), PromotionType.JD_DIANPU.getDesc()))) { selfDiscountFee = selfDiscountFee.add(promotionInfo.getDiscountFee()); } } return selfDiscountFee; }
/** * 获取整单优惠(需要分摊减去的优惠:100-店铺优惠,35-满返满送(返现)) * * @param promotionInfoList 订单优惠详情 * @return */ private Money getDiscountFee(List<PromotionInfo> promotionInfoList) { Money discountFee = Money.valueOf(0); if (promotionInfoList == null) { return discountFee; } for (PromotionInfo promotionInfo : promotionInfoList) { if (StringUtils.isBlank(promotionInfo.getSkuId()) && (StringUtils.equals( promotionInfo.getCouponType(), PromotionType.JD_SHOUJIHONGBAO.getDesc()) || StringUtils.equals( promotionInfo.getCouponType(), PromotionType.JD_JINGDOU.getDesc()) || StringUtils.equals( promotionInfo.getCouponType(), PromotionType.JD_JINGDONGQUAN.getDesc()) || StringUtils.equals( promotionInfo.getCouponType(), PromotionType.JD_LIPINKA.getDesc()))) { discountFee = discountFee.add(promotionInfo.getDiscountFee()); } } return discountFee; }
/** * 根据条件查询优惠详情 * * @param promotionInfo * @return */ @Transactional(readOnly = true) public List<PromotionInfo> findPromotionInfos(PromotionInfo promotionInfo) { Search search = new Search(PromotionInfo.class); if (promotionInfo != null) { if (StringUtils.isNotBlank(promotionInfo.getPlatformOrderNo())) { search.addFilterEqual("platformOrderNo", promotionInfo.getPlatformOrderNo()); } if (StringUtils.isNotBlank(promotionInfo.getSkuId())) { search.addFilterEqual("skuId", promotionInfo.getSkuId()); } if (NumberUtil.isNotNullOrNotZero(promotionInfo.getOriginalOrderId())) { search.addFilterEqual("originalOrderId", promotionInfo.getOriginalOrderId()); } } List<PromotionInfo> promotionInfoList = generalDAO.search(search); return promotionInfoList; }