|  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void addRefundOrderFlow(SysOrder sourceOrder) { | 
 |  |  |         //处理支付流水 | 
 |  |  |         int flowCount = 1; | 
 |  |  |         for (SysOrderFlow flow : sourceOrder.getFlows()) { | 
 |  |  |             //支付内容摘要设置 | 
 |  |  |             Long goodsId = sourceOrder.getItems().get(0).getGoodsId(); | 
 |  |  |             ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId); | 
 |  |  |             flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品"); | 
 |  |  |             // 退款,则取负数 | 
 |  |  |             flow.setFlowType(SysOrderFlow.FLOW_TYPE_REFUND); | 
 |  |  |             flow.setAmount(flow.getAmount().negate()); | 
 |  |  |             flow.setOrderId(sourceOrder.getOldOrderId()); | 
 |  |  |  | 
 |  |  |             //统计储值卡支付 | 
 |  |  |             if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) { | 
 |  |  |                 if (flow.getCardId() != null) { | 
 |  |  |                     MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId()); | 
 |  |  |                     //修改储值卡余额 | 
 |  |  |                     cardPaySk(moneyCardUse, sourceOrder, flow); | 
 |  |  |                 }else{ | 
 |  |  |                     throw new GlobleException("无效的储值卡支付方式"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             flow.setFlowNo(codeService.getFlowCode() + "-" + flowCount); | 
 |  |  |             flow.setVipId(sourceOrder.getVipId()); | 
 |  |  |             flow.setShopId(sourceOrder.getShopId()); | 
 |  |  |             flow.setCompanyId(sourceOrder.getCompanyId()); | 
 |  |  |             sysOrderFlowDao.insert(flow); | 
 |  |  |             flowCount++; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void refundCard(MoneyCardUse moneyCardUse, SysOrder sourceOrder, SysOrderFlow flow) { | 
 |  |  |         SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); | 
 |  |  |  | 
 |  |  |         MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow(); | 
 |  |  |         if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) { | 
 |  |  |             if (moneyCardUse.getGiftMoney() >= flow.getAmount().doubleValue()) { | 
 |  |  |                 double surplus = MoneyUtil.sub(moneyCardUse.getGiftMoney(), flow.getAmount().doubleValue()); | 
 |  |  |                 moneyCardUse.setGiftMoney(surplus); | 
 |  |  |                 moneyCardUseFlow.setGiftMoney(0D - flow.getAmount().doubleValue()); | 
 |  |  |             } else { | 
 |  |  |                 throw new GlobleException(moneyCardUse.getCardName() + "余额不足"); | 
 |  |  |             } | 
 |  |  |         } else { | 
 |  |  |             if (moneyCardUse.getRealMoney() >= flow.getAmount().doubleValue()) { | 
 |  |  |                 double surplus = MoneyUtil.sub(moneyCardUse.getRealMoney(), flow.getAmount().doubleValue()); | 
 |  |  |                 moneyCardUse.setRealMoney(surplus); | 
 |  |  |                 moneyCardUseFlow.setTotal(0 - flow.getAmount().doubleValue()); | 
 |  |  |             } else { | 
 |  |  |                 throw new GlobleException(moneyCardUse.getCardName() + "余额不足"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if (moneyCardUse.getIsVipCar().equals(Dictionary.FLAG_NO_N)) { | 
 |  |  |             //余额为0时充值卡变为无效 | 
 |  |  |             if (moneyCardUse.getRealMoney().equals(0D) && moneyCardUse.getGiftMoney().equals(0D)) { | 
 |  |  |                 moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y); | 
 |  |  |                 moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_WX); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         ShoppingGoods shoppingGoods = shoppingGoodsService.findById(moneyCardUse.getGoodsId()); | 
 |  |  |         if (shoppingGoods != null) { | 
 |  |  |             Date invalidTime = shoppingGoodsService.calInvalidTime(shoppingGoods, 2, moneyCardUse.getFailTime()); | 
 |  |  |             moneyCardUse.setFailTime(invalidTime); | 
 |  |  |         } | 
 |  |  |         // 更新充值卡信息 | 
 |  |  |         moneyCardUseDao.update(moneyCardUse); | 
 |  |  |         //设置卡项使用流水 | 
 |  |  |         moneyCardUseFlow.setCarUseId(moneyCardUse.getId()); | 
 |  |  |         moneyCardUseFlow.setOrderNo(sourceOrder.getOrderNo()); | 
 |  |  |         moneyCardUseFlow.setVipId(sourceOrder.getVipId()); | 
 |  |  |         moneyCardUseFlow.setTimes(-1); | 
 |  |  |         moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER); | 
 |  |  |         moneyCardUseFlow.setCreateTime(new Date()); | 
 |  |  |         moneyCardUseFlow.setOperationId(user.getSuId()); | 
 |  |  |         moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney()); | 
 |  |  |         moneyCardUseFlowDao.insert(moneyCardUseFlow); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 退款退项目,套餐,卡项 | 
 |  |  |      * @param sysOrder |