From 76ed413ae6fd573996207760904304b4951df5d5 Mon Sep 17 00:00:00 2001 From: 935090232@qq.com <ak473600000> Date: Sun, 13 Mar 2022 18:43:34 +0800 Subject: [PATCH] 重构:套餐项目 --- zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 170 insertions(+), 5 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java index 3eb4294..6aad069 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java @@ -7,14 +7,33 @@ */ package com.matrix.system.hive.service.imp; -import com.matrix.system.hive.bean.ShoppingGoods; -import com.matrix.system.hive.bean.SysOrder; -import com.matrix.system.hive.bean.SysOrderFlow; +import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSON; +import com.google.common.collect.Lists; +import com.matrix.core.constance.MatrixConstance; +import com.matrix.core.exception.GlobleException; +import com.matrix.core.tools.LogUtil; +import com.matrix.core.tools.WebUtil; +import com.matrix.system.common.bean.BusParameterSettings; +import com.matrix.system.common.bean.SysUsers; +import com.matrix.system.common.constance.AppConstance; +import com.matrix.system.common.dao.BusParameterSettingsDao; +import com.matrix.system.constance.Dictionary; +import com.matrix.system.hive.bean.*; import com.matrix.system.hive.dao.ShoppingGoodsDao; import com.matrix.system.hive.dao.SysOrderFlowDao; +import com.matrix.system.hive.dto.MoneyCardOperationDto; +import com.matrix.system.hive.dto.MoneyCardPayDto; +import com.matrix.system.hive.dto.ProjUseOperationDto; +import com.matrix.system.hive.plugin.util.CollectionUtils; import com.matrix.system.hive.service.CodeService; +import com.matrix.system.hive.service.MoneyCardUseService; +import com.matrix.system.hive.service.SysProjUseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; /** * @version: V1.0 @@ -29,6 +48,9 @@ @Autowired + private SysProjUseService sysProjUseService; + + @Autowired private CodeService codeService; @@ -38,12 +60,21 @@ @Autowired private SysOrderFlowDao sysOrderFlowDao; + @Autowired + BusParameterSettingsDao busParameterSettingsDao; + + + @Autowired + MoneyCardUseService moneyCardUseService; + /** * 创建支付流水 * * @author:姜友瑶 */ - public void addOrderFlow(SysOrder sourceOrder) { + public void addOrderFlow(SysOrder sourceOrder, boolean isBj) { + + LogUtil.info("创建支付流水 id={}", sourceOrder.getId()); //处理支付流水 int flowCount = 1; for (SysOrderFlow flow : sourceOrder.getFlows()) { @@ -61,7 +92,12 @@ flow.setAmount(flow.getAmount().negate()); flow.setOrderId(sourceOrder.getOldOrderId()); } else { - flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY); + if (isBj) {//jyytodo 优化不能根据isbj来判断流水类型 + flow.setFlowType(SysOrderFlow.FLOW_TYPE_REPAY); + } else { + flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY); + } + flow.setOrderId(sourceOrder.getId()); } sysOrderFlowDao.insert(flow); @@ -70,4 +106,133 @@ } + /** + * 新增项目和套餐的余次 + * + * @author:姜友瑶 + * @date 2016年9月2日 + */ + public void addTaocanProj(SysOrder order) { + List<SysOrderItem> itemList = order.getItems(); + List<ProjUseOperationDto> projUseDtoList = Lists.newArrayList(); + for (SysOrderItem sysOrderItem : itemList) { + // 折扣 项目的实际购买除以项目原价,来计算项目的消耗价格 + // 赠送 计算全额的消耗业绩 + ProjUseOperationDto projUseOperationDto = new ProjUseOperationDto(); + if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0 && !isGiftMoneyPay(order)) { + projUseOperationDto.setFree(false); + } else { + projUseOperationDto.setFree(true); + } + if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_TC)) { + //计算折扣 + Double zk = sysOrderItem.getZkPrice() / sysOrderItem.getPrice(); + projUseOperationDto.setTcZk(zk); + } + projUseOperationDto.setPayMoney(sysOrderItem.getZkPrice()); + projUseOperationDto.setGoodsId(sysOrderItem.getGoodsId()); + projUseOperationDto.setCount(sysOrderItem.getCount()); + projUseOperationDto.setVipId(order.getVipId()); + projUseOperationDto.setOrderItemId(sysOrderItem.getId()); + projUseDtoList.add(projUseOperationDto); + } + sysProjUseService.addUserProjUse(projUseDtoList); + } + + /** + * 全是赠送金额,且配置了赠送金额购买计算为赠送 + * + * @param order + * @return + */ + private boolean isGiftMoneyPay(SysOrder order) { + BusParameterSettings giftiIsfree = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.SHOP_MANAGE_GIFTISFREE, order.getCompanyId()); + if (giftiIsfree.getParamValue().equals("是")) { + return order.getFlows().stream().allMatch(item -> SysOrderFlow.IS_GIFT_Y.equals(item.getIsGift()) + && item.getAmount().doubleValue() > 0D); + } else { + return false; + } + + + } + + + /** + * 使用充值卡付款操作 + * + * @param pageOrder + */ + public void cardPaySk(SysOrder pageOrder) { + + + SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); + List<SysOrderFlow> flows = pageOrder.getFlows(); + List<Long> goodsIds = pageOrder.getItems().stream().map(e -> e.getGoodsId()).collect(Collectors.toList()); + + List<MoneyCardPayDto> moneyCardPayDtoList = Lists.newArrayList(); + + flows.forEach(flow -> { + if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) { + if (flow.getCardId() != null) { + MoneyCardPayDto dto = new MoneyCardPayDto(); + dto.setOrderNo(pageOrder.getOrderNo()); + dto.setOrderId(pageOrder.getId()); + dto.setCount(1); + dto.setCarUseId(flow.getCardId()); + dto.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER); + if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) { + dto.setGiftMoney(flow.getAmount().doubleValue()); + } else { + dto.setRealMoney(flow.getAmount().doubleValue()); + } + dto.setUpdateUser(user.getSuId()); + dto.setGoodsIds(goodsIds); + moneyCardPayDtoList.add(dto); + } else { + throw new GlobleException("无效的储值卡支付方式"); + } + } + }); + + if (CollectionUtils.isNotEmpty(moneyCardPayDtoList)) { + LogUtil.info("扣除储值卡余额{}", JSON.toJSONString(moneyCardPayDtoList)); + moneyCardUseService.changeMoneyCard(moneyCardPayDtoList); + } + } + + /** + * @param sourceOrder 如果购买了充值卡设置会员的充值卡 + * @author:姜友瑶 + * @date 2016年9月19日 + */ + public void addMoneyCardUse(SysOrder sourceOrder) { + List<MoneyCardOperationDto> moneyCardOperationDtos = Lists.newArrayList(); + List<SysOrderItem> orderItemList = sourceOrder.getItems(); + for (SysOrderItem sysOrderItem : orderItemList) { + // 如果购买的是充值卡 + if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_CZK)) { + for (int i = 0; i < sysOrderItem.getCount(); i++) { + + MoneyCardOperationDto moneyCardOperationDto = new MoneyCardOperationDto(); + moneyCardOperationDto.setVipId(sourceOrder.getVipId()); + // 是否为赠送 + if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_YES)) { + moneyCardOperationDto.setSource(Dictionary.TAOCAN_SOURCE_ZS); + } else { + moneyCardOperationDto.setSource(Dictionary.TAOCAN_SOURCE_GM); + } + moneyCardOperationDto.setOrderItemId(sysOrderItem.getId()); + moneyCardOperationDto.setGoodsId(sysOrderItem.getGoodsId()); + moneyCardOperationDtos.add(moneyCardOperationDto); + } + } + } + if (CollUtil.isNotEmpty(moneyCardOperationDtos)) { + moneyCardUseService.addVipMoneyCard(moneyCardOperationDtos); + } + + } + + } \ No newline at end of file -- Gitblit v1.9.1