| | |
| | | import com.matrix.core.pojo.PaginationVO; |
| | | import com.matrix.core.tools.DateUtil; |
| | | import com.matrix.core.tools.LogUtil; |
| | | import com.matrix.core.tools.StringUtils; |
| | | import com.matrix.core.tools.WebUtil; |
| | | import com.matrix.system.app.dto.OrderListDto; |
| | | import com.matrix.system.app.mapper.SysProjUseMapper; |
| | |
| | | import com.matrix.system.hive.bean.*; |
| | | import com.matrix.system.hive.dao.*; |
| | | import com.matrix.system.hive.dto.GoodsSealLimitDto; |
| | | import com.matrix.system.hive.dto.MoneyCardPayDto; |
| | | import com.matrix.system.hive.dto.SysOrderItemDto; |
| | | import com.matrix.system.hive.plugin.util.CollectionUtils; |
| | | import com.matrix.system.hive.plugin.util.MoneyUtil; |
| | |
| | | @Autowired |
| | | SysVipInfoDao sysVipInfoDao; |
| | | @Autowired |
| | | SysOutStoreDao sysOutStoreDao; |
| | | SysOutStoreService sysOutStoreService; |
| | | @Autowired |
| | | SysOutStoreItemDao sysOutStoreItemDao; |
| | | @Autowired |
| | |
| | | |
| | | if (Objects.isNull(sysOrder.getId())) { |
| | | LogUtil.info("新增正向订单"); |
| | | return sysOrderServiceHelper.saveOrder(sysOrder); |
| | | return sysOrderServiceHelper.saveOrder(sysOrder,SysOrder.ORDER_TYPE_SEAL); |
| | | } else { |
| | | LogUtil.info("修改订单"); |
| | | return sysOrderServiceHelper.modifyOrder(sysOrder); |
| | |
| | | //储值卡退款 |
| | | sysOrderServiceHelper.returnMoneyCardPay(order); |
| | | |
| | | //套餐项目取消 |
| | | List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(order.getId()); |
| | | for (SysOrderItem orderItem : sysOrderItems) { |
| | | // 充值卡类型退款 |
| | |
| | | //删除出库单,恢复库存 |
| | | SysOutStore sysOutStore = new SysOutStore(); |
| | | sysOutStore.setOrderId(order.getId()); |
| | | List<SysOutStore> sysOutStores = sysOutStoreDao.selectByModel(sysOutStore); |
| | | List<SysOutStore> sysOutStores = sysOutStoreService.findByModel(sysOutStore); |
| | | if (sysOutStores.size() == 1) { |
| | | sysOutStore = sysOutStores.get(0); |
| | | List<SysOutStoreItem> outStoreItemList = sysOutStoreItemDao.selectByOrderId(sysOutStore.getId()); |
| | | for (SysOutStoreItem item : outStoreItemList) { |
| | | SysStoreInfo sysStoreInfo = storeInfoDao.selectById(item.getStoreId()); |
| | | sysStoreInfo.setStoreTotal(sysStoreInfo.getStoreTotal() + item.getAmount()); |
| | | //更新库存 |
| | | storeInfoDao.update(sysStoreInfo); |
| | | } |
| | | sysOutStoreDao.deleteById(sysOutStore.getId()); |
| | | sysOutStoreItemDao.deleteByOrderId(sysOutStore.getId()); |
| | | sysOutStoreService.cancelOutStore(sysOutStore.getId()); |
| | | } |
| | | |
| | | // 删除业绩 |
| | | AchieveNew achieveNew = new AchieveNew(); |
| | | achieveNew.setOrderId(order.getId()); |
| | | achieveNewService.removeByModel(achieveNew); |
| | | achieveNewService.removeByOrderId(order.getId()); |
| | | |
| | | // 删除收款记录 |
| | | sysOrderFlowDao.deleteByOrderId(order.getId()); |
| | |
| | | // 取消订单 |
| | | order.setStatu(Dictionary.ORDER_STATU_YQX); |
| | | sysOrderDao.update(order); |
| | | |
| | | //保存单据日志 |
| | | operationLogService.saveOperation(order.getCompanyId(), order.getShopId(), sysUsers.getSuId(), |
| | | OperationFunctionEnum.ORDER, |
| | |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void updateReceiptMoney(SysOrder pageOrder) throws GlobleException { |
| | | public void payOrder(SysOrder pageOrder) throws GlobleException { |
| | | |
| | | //校验订单是否满足收款条件 |
| | | checkOrderAblePay(pageOrder); |
| | | |
| | | // 更新订单主表信息 |
| | | updateOrderInfo(pageOrder); |
| | | |
| | | // 设置用户为成交客户 |
| | | sysVipInfoService.updateDealStatus(pageOrder.getVipId(), BooleanEnum.TRUE.getValue()); |
| | | payEndUpdateOrderInfo(pageOrder); |
| | | |
| | | //添加支付流水 |
| | | sysOrderServiceHelper.addOrderFlow(pageOrder, false); |
| | |
| | | * |
| | | * @param pageOrder |
| | | */ |
| | | private void updateOrderInfo(SysOrder pageOrder) { |
| | | private void payEndUpdateOrderInfo(SysOrder pageOrder) { |
| | | LogUtil.info("付款更新订单信息 id={}", pageOrder.getId()); |
| | | SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); |
| | | pageOrder.setCashierId(user.getSuId()); |
| | |
| | | |
| | | |
| | | sysOrderDao.update(pageOrder); |
| | | |
| | | |
| | | // 设置用户为成交客户 |
| | | sysVipInfoService.updateDealStatus(pageOrder.getVipId(), BooleanEnum.TRUE.getValue()); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public SysOrder updateAddCardMoney(CzXkVo czVo) { |
| | | SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); |
| | | |
| | | // SysVipInfo vip = (SysVipInfo) WebUtil.getSession().getAttribute(SystemConstance.CURRENT_CUSTOMER); |
| | | // czVo.setVipId(vip.getId()); |
| | | |
| | | //更新会员会员卡金额 |
| | | MoneyCardUse cardUser = moneyCardUseDao.selectVipCard(czVo.getVipId()); |
| | | cardUser.setRealMoney(MoneyUtil.add(cardUser.getRealMoney(), czVo.getBjmoney())); |
| | | cardUser.setGiftMoney(MoneyUtil.add(cardUser.getGiftMoney(), czVo.getGiftMoney())); |
| | | moneyCardUseDao.update(cardUser); |
| | | |
| | | |
| | | // 为会员新增积分 |
| | | SysVipInfo vipInfo = sysVipInfoDao.selectById(cardUser.getVipId()); |
| | | vipInfo.setPointAll(vipInfo.getPointAll() == null ? 0 : vipInfo.getPointAll() + czVo.getJf()); |
| | | sysVipInfoDao.update(vipInfo); |
| | | |
| | | public SysOrder moneyCardCz(CzXkVo czVo) { |
| | | |
| | | // 新增一个充值订单 |
| | | SysOrder order = new SysOrder(); |
| | | order.setArrears(0D); |
| | | order.setTotal(czVo.getBjmoney()); |
| | | order.setZkTotal(czVo.getBjmoney()); |
| | | order.setCashPay(czVo.getBjmoney()); |
| | | order.setShopId(user.getShopId()); |
| | | order.setOrderNo(codeService.getOrderCode()); |
| | | order.setVipId(czVo.getVipId()); |
| | | Date orderTime = new Date(); |
| | | if (StringUtils.isNotBlank(czVo.getDateTime())) { |
| | | orderTime = DateUtil.stringToDateNew(czVo.getDateTime(), DateUtil.DATE_FORMAT_DD); |
| | | } |
| | | order.setOrderTime(orderTime); |
| | | order.setPayTime(orderTime); |
| | | order.setRemark(cardUser.getCardName()); |
| | | order.setStaffId(user.getSuId()); |
| | | order.setIsCross(2 + ""); |
| | | order.setOrderType(SysOrder.ORDER_TYPE_SEAL); |
| | | order.setStatu(Dictionary.ORDER_STATU_YFK); |
| | | order.setCompanyId(user.getCompanyId()); |
| | | sysOrderDao.insert(order); |
| | | SysOrder order =sysOrderServiceHelper.createCzOrder(czVo); |
| | | |
| | | SysOrderItem orderItem = new SysOrderItem(); |
| | | orderItem.setOrderId(order.getId()); |
| | | orderItem.setOrderNo(order.getOrderNo()); |
| | | orderItem.setArrears(0D); |
| | | ShoppingGoods shoppingGoods = shoppingGoodsDao.selectVipCzGoods(); |
| | | orderItem.setGoodsId(shoppingGoods.getId()); |
| | | orderItem.setPayMethod(Dictionary.PAY_TYPE_MOENY); |
| | | orderItem.setCashPay(czVo.getBjmoney()); |
| | | orderItem.setZkPrice(czVo.getBjmoney()); |
| | | orderItem.setCardPay(0D); |
| | | orderItem.setType(Dictionary.SHOPPING_GOODS_TYPE_CZK); |
| | | orderItem.setCount(1); |
| | | orderItem.setIsFree(Dictionary.FLAG_NO); |
| | | orderItem.setPrice(czVo.getBjmoney()); |
| | | orderItem.setStatus(Dictionary.ORDER_STATU_YFK); |
| | | orderItem.setAchieveList(czVo.getAchaeveList()); |
| | | orderItem.setShoppingGoods(shoppingGoods); |
| | | orderItemDao.insert(orderItem); |
| | | List<SysOrderItem> items = new ArrayList<>(); |
| | | items.add(orderItem); |
| | | order.setItems(items); |
| | | //新增会员卡金额 |
| | | MoneyCardUse cardUser = moneyCardUseDao.selectVipCard(czVo.getVipId()); |
| | | MoneyCardPayDto moneyCardPayDto=new MoneyCardPayDto(); |
| | | moneyCardPayDto.setRealMoney(MoneyUtil.add(cardUser.getRealMoney(), czVo.getBjmoney())); |
| | | moneyCardPayDto.setGiftMoney(MoneyUtil.add(cardUser.getGiftMoney(), czVo.getGiftMoney())); |
| | | moneyCardPayDto.setCarUseId(cardUser.getId()); |
| | | moneyCardPayDto.setOrderId(order.getId()); |
| | | moneyCardPayDto.setOrderNo(order.getOrderNo()); |
| | | moneyCardPayDto.setType(MoneyCardUseFlow.USE_TYPE_CZ); |
| | | moneyCardUseService.changeMoneyCard(Arrays.asList(moneyCardPayDto)); |
| | | |
| | | // 更新订单主表信息 |
| | | payEndUpdateOrderInfo(order); |
| | | |
| | | //设置卡项使用流水 |
| | | MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow(); |
| | | moneyCardUseFlow.setTotal(czVo.getBjmoney()); |
| | | moneyCardUseFlow.setGiftMoney(czVo.getGiftMoney()); |
| | | moneyCardUseFlow.setCarUseId(czVo.getCardId()); |
| | | moneyCardUseFlow.setVipId(czVo.getVipId()); |
| | | moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CZ); |
| | | moneyCardUseFlow.setOrderNo(order.getOrderNo()); |
| | | moneyCardUseFlow.setCreateTime(new Date()); |
| | | moneyCardUseFlow.setOperationId(user.getSuId()); |
| | | moneyCardUseFlow.setBalance(cardUser.getGiftMoney() + cardUser.getRealMoney()); |
| | | moneyCardUseFlow.setCarUseId(cardUser.getId()); |
| | | moneyCardUseFlowDao.insert(moneyCardUseFlow); |
| | | |
| | | order.setFlows(czVo.getFlows()); |
| | | |
| | | //添加支付流水 |
| | | sysOrderServiceHelper.addOrderFlow(order, false); |
| | | |
| | | // 添加员工业绩 |
| | | // 设置业绩 |
| | | achieveNewService.addAchaeveByOrder(order); |
| | | |
| | | //设置会员积分 |
| | | sysOrderServiceHelper.addVipScore(order); |
| | | |
| | | return order; |
| | | |
| | |
| | | SysOrder sourceOrder = new SysOrder(); |
| | | sourceOrder.setId(sysOrder.getOldOrderId()); |
| | | sourceOrder.setIsHasRefund(SysOrder.IS_HAS_REFUND_Y); |
| | | // sourceOrder.setStatu(Dictionary.ORDER_STATU_TK); |
| | | sysOrderDao.update(sourceOrder); |
| | | SysOrder oldOrder = sysOrderDao.selectById(sysOrder.getOldOrderId()); |
| | | |
| | |
| | | item.setOrderId(sysOrder.getId()); |
| | | orderItemDao.insert(item); |
| | | } |
| | | |
| | | |
| | | // 添加订单收款流水 |
| | | sysOrderServiceHelper.addOrderFlow(sysOrder, false); |
| | | //退款退套餐退项目 |
| | |
| | | sysOrder.getVipId()); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 退款退项目,套餐,卡项 |
| | | * |
| | |
| | | moneyCardUseDao.update(moneyCardUse); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | ShoppingGoods goods = shoppingGoodsDao.selectById(item.getGoodsId()); |
| | | goods.setRealSealCount(goods.getRealSealCount() - item.getCount()); |
| | | shoppingGoodsDao.update(goods); |