From fbfd01086ad9dc0c710ebc3eee3bdf5499a07091 Mon Sep 17 00:00:00 2001 From: JiangYouYao <ak473600000> Date: Fri, 18 Mar 2022 09:33:23 +0800 Subject: [PATCH] 重构:订单取消逻辑 --- zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 151 insertions(+), 2 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 ec62439..ce4c734 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 @@ -19,21 +19,27 @@ 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.common.service.OperationLogService; import com.matrix.system.constance.Dictionary; +import com.matrix.system.enums.OperationButtonEnum; +import com.matrix.system.enums.OperationFunctionEnum; import com.matrix.system.hive.bean.*; import com.matrix.system.hive.dao.*; 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.plugin.util.MoneyUtil; import com.matrix.system.hive.service.CodeService; import com.matrix.system.hive.service.MoneyCardUseService; import com.matrix.system.hive.service.SysProjUseService; import com.matrix.system.score.constant.ScoreSettingConstant; import com.matrix.system.score.entity.ScoreVipDetail; +import com.matrix.system.score.service.ScoreVipDetailService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.ArrayList; @@ -52,6 +58,9 @@ @Component public class SysOrderServiceHelper { + + @Autowired + ScoreVipDetailService scoreVipDetailService; @Autowired SysVipInfoDao sysVipInfoDao; @@ -74,6 +83,11 @@ SysOutStoreItemDao sysOutStoreItemDao; @Autowired + private SysOrderDao sysOrderDao; + + @Autowired + private OperationLogService operationLogService; + @Autowired ShoppingGoodsDao shoppingGoodsDao; @Autowired @@ -88,6 +102,10 @@ @Autowired MoneyCardUseService moneyCardUseService; + + + @Autowired + private SysOrderItemDao orderItemDao; /** * 创建支付流水 @@ -223,6 +241,45 @@ } } + + /** + * 储值卡退款 + * @param order + */ + public void returnMoneyCardPay(SysOrder order) { + SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); + List<MoneyCardPayDto> moneyCardPayDtoList = Lists.newArrayList(); + + List<SysOrderFlow> flows = sysOrderFlowDao.selectByOrderId(order.getId()); + // 非现金收款退回扣卡余额 + for (SysOrderFlow flow : flows) { + if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) { + if (flow.getCardId() != null) { + MoneyCardPayDto dto = new MoneyCardPayDto(); + dto.setOrderNo(order.getOrderNo()); + dto.setOrderId(order.getId()); + dto.setCount(1); + dto.setCarUseId(flow.getCardId()); + dto.setType(MoneyCardUseFlow.USE_TYPE_ORDRE_CANCEL); + if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) { + dto.setGiftMoney(flow.getAmount().doubleValue()); + } else { + dto.setRealMoney(flow.getAmount().doubleValue()); + } + dto.setUpdateUser(user.getSuId()); + moneyCardPayDtoList.add(dto); + } else { + throw new GlobleException("无效的储值卡支付方式"); + } + } + } + + if (CollectionUtils.isNotEmpty(moneyCardPayDtoList)) { + LogUtil.info("退回储值卡余额{}", JSON.toJSONString(moneyCardPayDtoList)); + moneyCardUseService.changeMoneyCard(moneyCardPayDtoList); + } + } + /** * @param sourceOrder 如果购买了充值卡设置会员的充值卡 * @author:姜友瑶 @@ -259,6 +316,7 @@ /** * 新增出库单并更新本店库存 * jyytodo 继续优化 + * * @param order */ public void addOutStore(SysOrder order) { @@ -373,10 +431,9 @@ } - - /** * 设置会员消费积分 + * * @param pageOrder */ public void addVipScore(SysOrder pageOrder) { @@ -527,8 +584,100 @@ } } + /** + * 创建订单信息 + * + * @param sysOrder + * @return + */ + @Transactional(rollbackFor = Exception.class) + public SysOrder saveOrder(SysOrder sysOrder) { + + //校验参数 jyytodo + + // 计算订单折扣金额,收款情况下 计算订单总额 + double zkTotal = 0.0; + // 页面的pageOrder 参数只包含支付金额信息,不带有购买商品 + for (SysOrderItem item : sysOrder.getItems()) { + ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(item.getGoodsId()); + item.setType(shoppingGoods.getGoodType()); + if (item.getZkPrice() == 0) { + item.setIsFree(Dictionary.FLAG_YES); + } + Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount())); + zkTotal = MoneyUtil.add(zkTotal, itemZkTotal); + item.setStatus(Dictionary.ORDER_STATU_DFK); + } + + SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); + sysOrder.setZkTotal(zkTotal); + sysOrder.setStatu(Dictionary.ORDER_STATU_DFK); + + sysOrder.setStaffId(user.getSuId()); + sysOrder.setCompanyId(user.getCompanyId()); + + //新增订单 + sysOrder.setOrderNo(codeService.getOrderCode()); + sysOrderDao.insert(sysOrder); + + //保存单据明细 + sysOrder.getItems().forEach(sysOrderItem -> { + sysOrderItem.setOrderId(sysOrder.getId()); + orderItemDao.insert(sysOrderItem); + }); + + //保存单据日志 + operationLogService.saveOperation(sysOrder.getCompanyId(), sysOrder.getShopId(), user.getSuId(), + OperationFunctionEnum.ORDER, + OperationButtonEnum.CREATE, + sysOrder.getId(), + sysOrder.getOrderNo(), + sysOrder.getVipId()); + + return sysOrder; + } + /** + * 修改订单信息 + * + * @param sysOrder + * @return + */ + @Transactional(rollbackFor = Exception.class) + public SysOrder modifyOrder(SysOrder sysOrder) { + // 计算订单折扣金额,收款情况下 计算订单总额 + double zkTotal = 0.0; + for (SysOrderItem item : sysOrder.getItems()) { + ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(item.getGoodsId()); + item.setType(shoppingGoods.getGoodType()); + if (item.getZkPrice() == 0) { + item.setIsFree(Dictionary.FLAG_YES); + } + Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount())); + zkTotal = MoneyUtil.add(zkTotal, itemZkTotal); + } + sysOrder.setZkTotal(zkTotal); + //更新订单 + sysOrderDao.update(sysOrder); + //删除原有订单明细 + orderItemDao.deleteByOrderId(sysOrder.getId()); + sysOrder.getItems().forEach(sysOrderItem -> { + sysOrderItem.setOrderId(sysOrder.getId()); + orderItemDao.insert(sysOrderItem); + }); + + SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); + //保存单据日志 + operationLogService.saveOperation(sysOrder.getCompanyId(), sysOrder.getShopId(), user.getSuId(), + OperationFunctionEnum.ORDER, + OperationButtonEnum.UPDATE, + sysOrder.getId(), + sysOrder.getOrderNo(), + sysOrder.getVipId()); + + return sysOrder; + } } \ No newline at end of file -- Gitblit v1.9.1