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/MoneyCardUseService.java | 8
zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java | 11
zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java | 184 +++++++++-----
zq-erp/src/main/java/com/matrix/system/constance/Dictionary.java | 4
zq-erp/src/main/java/com/matrix/system/app/action/ApiOrderAction.java | 33 +-
zq-erp/src/main/java/com/matrix/system/hive/service/SysBeauticianStateService.java | 8
zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java | 1
zq-erp/src/main/java/com/matrix/system/hive/service/SysProjUseService.java | 8
zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml | 8
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 350 ++++++++---------------------
zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjUseDao.java | 2
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java | 49 ++++
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java | 22 +
zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java | 11
zq-erp/src/main/java/com/matrix/system/hive/action/ShoppingGoodsController.java | 7
zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java | 3
zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpShoppingGoodsController.java | 6
zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java | 1
18 files changed, 329 insertions(+), 387 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiOrderAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiOrderAction.java
index 10237fb..d8dc496 100644
--- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiOrderAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/app/action/ApiOrderAction.java
@@ -17,10 +17,10 @@
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.hive.bean.ShoppingGoodsCategory;
import com.matrix.system.hive.bean.SysOrder;
+import com.matrix.system.hive.bean.SysOrderItem;
import com.matrix.system.hive.bean.SysShopInfo;
import com.matrix.system.hive.dao.SysShopInfoDao;
import com.matrix.system.hive.plugin.util.CollectionUtils;
-import com.matrix.system.hive.pojo.ShoppingCarItem;
import com.matrix.system.hive.pojo.ShoppingCarItemsVo;
import com.matrix.system.hive.service.ShoppingGoodsCategoryService;
import com.matrix.system.hive.service.ShoppingGoodsService;
@@ -109,31 +109,26 @@
@ApiOperation(value = "创建订单", notes = "创建订单")
@PostMapping(value = "/createOrder")
public AjaxResult createOrder(@RequestBody @Validated CreateOrderDto createOrderDto) {
- SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
-
+ SysOrder order=new SysOrder();
+ order.setVipId(createOrderDto.getVipId());
ShoppingCarItemsVo car = new ShoppingCarItemsVo();
car.setVipId(createOrderDto.getVipId());
if (CollectionUtils.isNotEmpty(createOrderDto.getItems())) {
- List<ShoppingCarItem> list = new ArrayList<>();
+ List<SysOrderItem> list = new ArrayList<>();
for (CreateOderItemDto item : createOrderDto.getItems()) {
- ShoppingCarItem carItem = new ShoppingCarItem();
- carItem.setCount(item.getCount());
- carItem.setGoodsId(item.getGoodsId());
- carItem.setIsFree(item.getIsFree());
- carItem.setType(item.getGoodsType());
-
- carItem.setShoppingGoods(shoppingGoodsService.findById(item.getGoodsId()));
- list.add(carItem);
+ SysOrderItem orderItem = new SysOrderItem();
+ orderItem.setCount(item.getCount());
+ orderItem.setGoodsId(item.getGoodsId());
+ orderItem.setIsFree(item.getIsFree());
+ //jyytodo 这个字段可以不传
+ orderItem.setType(item.getGoodsType());
+ list.add(orderItem);
}
- car.setCarItems(list);
+ order.setItems(list);
}
- int i = sysOrderService.createOrder(WebUtil.getSession(), car);
- if (i > 0) {
- return AjaxResult.buildSuccessInstance("下单成功");
- }
-
- return AjaxResult.buildFailInstance("下单失败");
+ sysOrderService.checkAndSaveOrder(order);
+ return AjaxResult.buildSuccessInstance("下单成功");
}
@ApiOperation(value = "获取订单列表", notes = "获取订单列表")
diff --git a/zq-erp/src/main/java/com/matrix/system/constance/Dictionary.java b/zq-erp/src/main/java/com/matrix/system/constance/Dictionary.java
index 199d54d..97e3843 100644
--- a/zq-erp/src/main/java/com/matrix/system/constance/Dictionary.java
+++ b/zq-erp/src/main/java/com/matrix/system/constance/Dictionary.java
@@ -403,10 +403,6 @@
* 商城商品-充值卡
*/
String SHOPPING_GOODS_TYPE_CZK = "充值卡";
- /**
- * 商城商品-综合卡
- */
- String SHOPPING_GOODS_TYPE_ZHK = "综合卡";
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/ShoppingGoodsController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/ShoppingGoodsController.java
index 2118f7a..53b2bf6 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/action/ShoppingGoodsController.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/action/ShoppingGoodsController.java
@@ -129,7 +129,6 @@
shoppingGoods.setAssembleProj(shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(shoppingGoods.getId(), ShoppingGoods.SHOPPING_GOODS_TYPE_XM));
} else if (
Dictionary.SHOPPING_GOODS_TYPE_XM.equals(shoppingGoods.getGoodType())
- || Dictionary.SHOPPING_GOODS_TYPE_ZHK.equals(shoppingGoods.getGoodType())
) {
shoppingGoods.setAssembleGoods(shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(shoppingGoods.getId(), null));
} else if (Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(shoppingGoods.getGoodType())) {
@@ -291,9 +290,6 @@
shoppingGoods.setAssembleGoods(assembleListGoods);
List<ShoppingGoodsAssemble> assembleListProj = shoppingGoodsAssembleDao.selectProjByShoppingGoodsId(shoppingGoods.getId());
shoppingGoods.setAssembleProj(assembleListProj);
- } else if (Dictionary.SHOPPING_GOODS_TYPE_ZHK.equals(shoppingGoods.getGoodType())) {
- List<ShoppingGoodsAssemble> assembleList = shoppingGoodsAssembleDao.selectAssembleShoppingGoodsByShoppingGoodsId(shoppingGoods.getId());
- shoppingGoods.setZongheCarGoods(assembleList);
}
@@ -322,9 +318,6 @@
// 返回充值卡编辑界面
WebUtil.getRequest().setAttribute("obj", shoppingGoods);
return "admin/hive/products/money-card-form";
- } else if (shoppingGoods.getGoodType().equals(Dictionary.SHOPPING_GOODS_TYPE_ZHK)) {
- WebUtil.getRequest().setAttribute("obj", shoppingGoods);
- return "admin/hive/products/zonghe-card-form";
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java
index 0787c91..606777c 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java
@@ -88,6 +88,7 @@
/**
+ * // jyytodo 可以考虑一个已启用未启用的状态,开卡后如果没有使用过就视为未启用
* 状态,有效,无效,转让,冻结,退款
*/
private String status;
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java
index 8e4359e..15deb13 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java
@@ -10,6 +10,7 @@
*/
public class MoneyCardUseFlow implements Serializable{
+ //jyytodo 改成枚举
public static final String USE_TYPE_CONSUMER = "消费扣款";
public static final String USE_TYPE_ORDRE_CANCEL = "取消订单";
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjUseDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjUseDao.java
index cd19d3d..0168346 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjUseDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjUseDao.java
@@ -136,4 +136,6 @@
List<SysProjUse> selectTaoCanListWithProj(@Param("record") SysProjUse sysProjUse);
int selectTaocanCountForCourseAndInfinite(@Param("taocanId") Long taocanId, @Param("vipId") Long vipId);
+
+ int selectUseCountByOrderItemId(Long orderItemId);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java
index c083f38..b70f7e7 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java
@@ -15,7 +15,7 @@
/**
- * 修改储值卡余额
+ * 扣除储值卡余额
*/
void changeMoneyCard(List<MoneyCardPayDto> moneyCardPayDtoList);
@@ -129,4 +129,10 @@
public List<MoneyCardUse> findVipCardUse(MoneyCardUse moneyCardUse);
+ /**
+ * 根据订单id删除充值卡
+ * 只有没有被使用过的储值卡可以删除
+ * @param id
+ */
+ void deleteByOrderItemId(Long id);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/SysBeauticianStateService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/SysBeauticianStateService.java
index 5904b62..5759276 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/SysBeauticianStateService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/SysBeauticianStateService.java
@@ -1,12 +1,11 @@
package com.matrix.system.hive.service;
-import java.util.Date;
-import java.util.List;
-
-
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.hive.bean.SysBeauticianState;
import com.matrix.system.hive.plugin.util.BaseServices;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -75,7 +74,6 @@
public List<SysBeauticianState> findByTimeAndStaff(Long id, Date beginTime, Date endTime);
- public List<SysBeauticianState> findBySerId(Long serviceId);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java
index 9cae7ba..83a8ada 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/SysOrderService.java
@@ -8,10 +8,7 @@
import com.matrix.system.hive.bean.SysOrder;
import com.matrix.system.hive.plugin.util.BaseServices;
import com.matrix.system.hive.pojo.CzXkVo;
-import com.matrix.system.hive.pojo.ShoppingCarItemsVo;
-import org.springframework.transaction.annotation.Transactional;
-import javax.servlet.http.HttpSession;
import java.math.BigDecimal;
import java.util.List;
@@ -87,14 +84,6 @@
public void refundOrderMoney(SysOrder sysOrder);
- /**
- * 创建订单
- * @param session
- * @param car
- * @return
- */
- @Transactional(rollbackFor = Exception.class)
- public int createOrder(HttpSession session, ShoppingCarItemsVo car);
/**
* 补交
* @Title: updateAfterMoney
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/SysProjUseService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/SysProjUseService.java
index fa92426..ce768cf 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/SysProjUseService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/SysProjUseService.java
@@ -2,7 +2,6 @@
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.pojo.PaginationVO;
-import com.matrix.system.hive.bean.MoneyCardUse;
import com.matrix.system.hive.bean.SysProjUse;
import com.matrix.system.hive.dto.ProjUseOperationDto;
import com.matrix.system.hive.plugin.util.BaseServices;
@@ -152,4 +151,11 @@
public List<SysProjUse> findTaocaoProjUseWithProj(SysProjUse sysProjUse);
int findTaocanCountForCourseAndInfinite(Long taocanId, Long vipId);
+
+ /**
+ * 取消订单删除项目
+ * 只有没有使用过的才能被删除
+ * @param id
+ */
+ void deleteByOrderItemId(Long id);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
index a1b5de0..40b1c48 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
@@ -1,11 +1,13 @@
package com.matrix.system.hive.service.imp;
import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.pojo.VerificationResult;
import com.matrix.core.tools.DateUtil;
+import com.matrix.core.tools.LogUtil;
import com.matrix.system.common.validate.ParameterValidate;
import com.matrix.system.common.validate.group.Group;
import com.matrix.system.constance.Dictionary;
@@ -16,7 +18,6 @@
import com.matrix.system.hive.plugin.util.MoneyUtil;
import com.matrix.system.hive.service.MoneyCardUseService;
import com.matrix.system.hive.service.ShoppingGoodsService;
-import com.matrix.system.hive.validation.ProjUseGroup;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -63,7 +64,7 @@
@Override
@Transactional(rollbackFor = Exception.class)
public void addVipMoneyCard(List<MoneyCardOperationDto> moneyCardOperationDtos) {
- moneyCardOperationDtos.forEach(dto->{
+ moneyCardOperationDtos.forEach(dto -> {
//参数校验
ParameterValidate.ValidResult baseIdResult = ParameterValidate.validateBean(dto, Group.ADD.class);
if (baseIdResult.hasErrors()) {
@@ -71,7 +72,7 @@
}
ShoppingGoods moneyCar = shoppingGoodsDao.selectById(dto.getGoodsId());
MoneyCardUse moneyCardUse = new MoneyCardUse();
- BeanUtil.copyProperties(dto,moneyCardUse);
+ BeanUtil.copyProperties(dto, moneyCardUse);
moneyCardUse.setVipId(dto.getVipId());
moneyCardUse.setGiftMoney(moneyCar.getReferencePice());
moneyCardUse.setRealMoney(moneyCar.getSealPice());
@@ -93,84 +94,137 @@
moneyCardUseDao.insert(moneyCardUse);
});
+ }
-
-
-
-
+ @Override
+ public void deleteByOrderItemId(Long id) {
+ MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow();
+ moneyCardUseFlow.setCarUseId(id);
+ int i = moneyCardUseFlowDao.selectTotalRecord(moneyCardUseFlow);
+ if(i>0){
+ MoneyCardUse one = getOne(lambdaQuery().eq(MoneyCardUse::getOrderItemId,id));
+ throw new GlobleException(one.getCardName()+"储值卡已经被启用无法删除");
+ }else {
+ moneyCardUseDao.deleteByOrderItemId(id);
+ }
}
@Override
@Transactional(rollbackFor = Exception.class)
public void changeMoneyCard(List<MoneyCardPayDto> moneyCardPayDtoList) {
-
- // 判断商品是否在充值卡的限制购买
- moneyCardPayDtoList.forEach(cardUse -> {
- VerificationResult verificationResult = checkIsBangding(cardUse.getCarUseId(), cardUse.getGoodsIds());
- if (!verificationResult.isJudgeResult()) {
- throw new GlobleException(verificationResult.getMsg());
- }
- });
-
-
moneyCardPayDtoList.forEach(moneyCardPayDto -> {
- MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(moneyCardPayDto.getCarUseId());
- MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
- if (Objects.nonNull(moneyCardPayDto.getGiftMoney()) && moneyCardPayDto.getGiftMoney()>0) {
- if (moneyCardUse.getGiftMoney() >= moneyCardPayDto.getGiftMoney()) {
- double surplus = MoneyUtil.sub(moneyCardUse.getGiftMoney(), moneyCardPayDto.getGiftMoney());
- moneyCardUse.setGiftMoney(surplus);
- moneyCardUseFlow.setGiftMoney(0D - moneyCardPayDto.getGiftMoney());
- } else {
- throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
- }
- } else {
- if (moneyCardUse.getRealMoney() >= moneyCardPayDto.getRealMoney()) {
- double surplus = MoneyUtil.sub(moneyCardUse.getRealMoney(), moneyCardPayDto.getRealMoney());
- moneyCardUse.setRealMoney(surplus);
- moneyCardUseFlow.setTotal(0 - moneyCardPayDto.getRealMoney());
- } else {
- throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
- }
+ if (MoneyCardUseFlow.USE_TYPE_CONSUMER.equals(moneyCardPayDto.getType())) {
+ //扣减储值卡余额
+ deductMoneyCard(moneyCardPayDto);
+ } else if (MoneyCardUseFlow.USE_TYPE_ORDRE_CANCEL.equals(moneyCardPayDto.getType())) {
+ //回退储值卡余额
+ returnMoneyCard(moneyCardPayDto);
}
-
- 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 = shoppingGoodsDao.selectById(moneyCardUse.getGoodsId());
- if (shoppingGoods != null) {
- Date invalidTime = shoppingGoodsService.calInvalidTime(shoppingGoods, 2, moneyCardUse.getFailTime());
- moneyCardUse.setFailTime(invalidTime);
- }
-
- moneyCardUse.setLastCount(moneyCardUse.getLastCount() - moneyCardPayDto.getCount());
-
- // 更新充值卡信息
- moneyCardUseDao.update(moneyCardUse);
- //设置卡项使用流水
- moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
- moneyCardUseFlow.setOrderNo(moneyCardPayDto.getOrderNo());
- moneyCardUseFlow.setVipId(moneyCardUse.getVipId());
- moneyCardUseFlow.setTimes(-1);
- moneyCardUseFlow.setType(moneyCardPayDto.getType());
- moneyCardUseFlow.setCreateTime(new Date());
- moneyCardUseFlow.setOperationId(moneyCardPayDto.getUpdateUser());
- moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney());
- moneyCardUseFlowDao.insert(moneyCardUseFlow);
});
+ }
+
+ /**
+ * 回退储值卡余额
+ *
+ * @param moneyCardPayDto
+ */
+ private void returnMoneyCard(MoneyCardPayDto moneyCardPayDto) {
+ LogUtil.info("回退储值卡余额 {}", JSON.toJSONString(moneyCardPayDto));
+ MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(moneyCardPayDto.getCarUseId());
+ MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
+
+ if (Objects.nonNull(moneyCardPayDto.getGiftMoney())) {
+ //jyytodo 余额余次的修改和新增在数据库层面做加减
+ moneyCardUse.setGiftMoney(moneyCardUse.getGiftMoney() + moneyCardPayDto.getGiftMoney());
+ }
+ if (Objects.nonNull(moneyCardPayDto.getRealMoney())) {
+ moneyCardUse.setRealMoney(moneyCardUse.getRealMoney() + moneyCardPayDto.getRealMoney());
+ }
+ moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y);
+ moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
+ moneyCardUseDao.update(moneyCardUse);
+ //设置卡项使用流水
+ moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
+ moneyCardUseFlow.setOrderNo(moneyCardPayDto.getOrderNo());
+ moneyCardUseFlow.setVipId(moneyCardUse.getVipId());
+ moneyCardUseFlow.setTimes(moneyCardUse.getLastCount());
+ moneyCardUseFlow.setType(moneyCardPayDto.getType());
+ moneyCardUseFlow.setCreateTime(new Date());
+ moneyCardUseFlow.setOperationId(moneyCardPayDto.getUpdateUser());
+ moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney());
+ moneyCardUseFlowDao.insert(moneyCardUseFlow);
+ }
+
+ /**
+ * 扣减储值余额
+ *
+ * @param moneyCardPayDto
+ */
+ private void deductMoneyCard(MoneyCardPayDto moneyCardPayDto) {
+ // 判断商品是否在充值卡的限制购买
+ VerificationResult verificationResult = checkIsBangding(moneyCardPayDto.getCarUseId(), moneyCardPayDto.getGoodsIds());
+ if (!verificationResult.isJudgeResult()) {
+ throw new GlobleException(verificationResult.getMsg());
+ }
+ LogUtil.info("扣减储值卡余额 {}", JSON.toJSONString(moneyCardPayDto));
+ MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(moneyCardPayDto.getCarUseId());
+ MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
+ if (Objects.nonNull(moneyCardPayDto.getGiftMoney()) && moneyCardPayDto.getGiftMoney() > 0) {
+ if (moneyCardUse.getGiftMoney() >= moneyCardPayDto.getGiftMoney()) {
+ double surplus = MoneyUtil.sub(moneyCardUse.getGiftMoney(), moneyCardPayDto.getGiftMoney());
+ moneyCardUse.setGiftMoney(surplus);
+ moneyCardUseFlow.setGiftMoney(0D - moneyCardPayDto.getGiftMoney());
+ } else {
+ throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
+ }
+ } else {
+ if (moneyCardUse.getRealMoney() >= moneyCardPayDto.getRealMoney()) {
+ double surplus = MoneyUtil.sub(moneyCardUse.getRealMoney(), moneyCardPayDto.getRealMoney());
+ moneyCardUse.setRealMoney(surplus);
+ moneyCardUseFlow.setTotal(0 - moneyCardPayDto.getRealMoney());
+ } 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 = shoppingGoodsDao.selectById(moneyCardUse.getGoodsId());
+ if (shoppingGoods != null) {
+ Date invalidTime = shoppingGoodsService.calInvalidTime(shoppingGoods, 2, moneyCardUse.getFailTime());
+ moneyCardUse.setFailTime(invalidTime);
+ }
+
+ moneyCardUse.setLastCount(moneyCardUse.getLastCount() - moneyCardPayDto.getCount());
+
+ // 更新充值卡信息
+ moneyCardUseDao.update(moneyCardUse);
+
+ //设置卡项使用流水
+ moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
+ moneyCardUseFlow.setOrderNo(moneyCardPayDto.getOrderNo());
+ moneyCardUseFlow.setVipId(moneyCardUse.getVipId());
+ moneyCardUseFlow.setTimes(moneyCardUse.getLastCount());
+ moneyCardUseFlow.setType(moneyCardPayDto.getType());
+ moneyCardUseFlow.setCreateTime(new Date());
+ moneyCardUseFlow.setOperationId(moneyCardPayDto.getUpdateUser());
+ moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney());
+ moneyCardUseFlowDao.insert(moneyCardUseFlow);
}
/**
* 检查商品是否在储值卡的消费范围内
+ *
* @param moneyCardUseId 储值卡id
- * @param goodsIds 商品id集合
+ * @param goodsIds 商品id集合
* @return
*/
private VerificationResult checkIsBangding(Long moneyCardUseId, List<Long> goodsIds) {
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java
index 639beac..287a6a9 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java
@@ -390,9 +390,6 @@
case Dictionary.SHOPPING_GOODS_TYPE_TC:
shoppingGoods.setIsAssemble(Dictionary.FLAG_YES);
break;
- case Dictionary.SHOPPING_GOODS_TYPE_ZHK:
- shoppingGoods.setIsAssemble(Dictionary.FLAG_YES);
- break;
}
}
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 fc54596..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
@@ -241,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:姜友瑶
@@ -629,6 +668,16 @@
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
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
index 72f57c1..def632f 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -34,8 +34,6 @@
import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.system.hive.plugin.util.MoneyUtil;
import com.matrix.system.hive.pojo.CzXkVo;
-import com.matrix.system.hive.pojo.ShoppingCarItem;
-import com.matrix.system.hive.pojo.ShoppingCarItemsVo;
import com.matrix.system.hive.service.*;
import com.matrix.system.score.service.ScoreVipDetailService;
import com.matrix.system.shopXcx.mqTask.AsyncMessageRouting;
@@ -44,7 +42,6 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import javax.servlet.http.HttpSession;
import javax.validation.constraints.NotEmpty;
import java.math.BigDecimal;
import java.util.*;
@@ -61,6 +58,7 @@
private SysOrderItemDao orderItemDao;
@Autowired
private SysProjUseDao sysProjUseDao;
+ private SysProjUseService sysProjUseService;
@Autowired
@@ -175,217 +173,110 @@
public void cancelOrder(Long id) {
SysOrder order = sysOrderDao.selectById(id);
- SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+
if (order.getStatu().equals(Dictionary.ORDER_STATU_DFK)) {
-
- order.setStatu(Dictionary.ORDER_STATU_YQX);
- order.setArrears(0D);
-
- //发送微信公众号提醒
- UniformMsgParam uniformMsgParam = new UniformMsgParam(order.getCompanyId(), UniformMsgParam.GZH_DDQX);
- uniformMsgParam.put("orderId", order.getId());
- asyncMessageManager.sendMsg(AsyncMessageRouting.SEND_UNIFORM_TEMPLATE_MSG, uniformMsgParam);
-
- sysOrderDao.update(order);
- //保存单据日志
- operationLogService.saveOperation(order.getCompanyId(), order.getShopId(), sysUsers.getSuId(),
- OperationFunctionEnum.ORDER,
- OperationButtonEnum.CANCEL,
- order.getId(),
- order.getOrderNo(),
- order.getVipId(),
- "未付款取消订单");
+ //待付款订单取消
+ cancelDFKOrder(order);
} else {
+ //已付款订单取消
+ cancelYFKOrder(order);
+ }
+ }
- //一个订单只能被取消一次
- if (Dictionary.ORDER_STATU_YQX.equals(order.getStatu())) {
- throw new GlobleException("订单已取消");
- }
-
- List<SysOrderFlow> flows = sysOrderFlowDao.selectByOrderId(id);
- // 非现金收款退回扣卡余额
- for (SysOrderFlow flow : flows) {
- if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
-
- MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId());
- MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
-
- if (moneyCardUse != null) {
- // 根据订单明细判断是赠送金额购买还是本金购买
- moneyCardUseFlow.setTotal(flow.getAmount().doubleValue());
- if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) {
- moneyCardUse.setGiftMoney(MoneyUtil.add(moneyCardUse.getGiftMoney(), flow.getAmount().doubleValue()));
- } else {
- moneyCardUse.setRealMoney(MoneyUtil.add(moneyCardUse.getRealMoney(), flow.getAmount().doubleValue()));
- }
-
- if (!moneyCardUse.getIsVipCar().equals(Dictionary.FLAG_YES_Y)) {
- if (moneyCardUse.getLastCount() != null) {
- moneyCardUse.setLastCount(moneyCardUse.getLastCount() + 1);
- moneyCardUseFlow.setTimes(1);
- }
- }
- moneyCardUseDao.update(moneyCardUse);
- //插入充值卡变动流水
- SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
- moneyCardUseFlow.setOrderNo(order.getOrderNo());
- moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
- moneyCardUseFlow.setVipId(order.getVipId());
- moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_ORDRE_CANCEL);
- moneyCardUseFlow.setCreateTime(new Date());
- moneyCardUseFlow.setOperationId(user.getSuId());
- moneyCardUseFlow.setContent(moneyCardUse.getChangeRemark());
- moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney());
- moneyCardUseFlowDao.insert(moneyCardUseFlow);
- }
- }
- }
-
- List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(id);
- for (SysOrderItem orderItem : sysOrderItems) {
- // 充值卡类型退款
- if (Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(orderItem.getType())) {
- ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(orderItem.getGoodsId());
- //删除购买的充值卡
- moneyCardUseDao.deleteByOrderItemId(orderItem.getId());
- } else if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(orderItem.getType())
- || Dictionary.SHOPPING_GOODS_TYPE_TC.equals(orderItem.getType())) {
- // 项目套餐退款
- // 删除套餐项目使用情况
- sysProjUseDao.deleteByOrderItemId(orderItem.getId());
- } else if (Dictionary.SHOPPING_GOODS_TYPE_ZHK.equals(orderItem.getType())) {
- // 综合卡
- // 删除套餐项目使用情况
- sysProjUseDao.deleteByOrderItemId(orderItem.getId());
- // 删除充值卡
- moneyCardUseDao.deleteByOrderItemId(orderItem.getId());
- }
- }
-
- //删除出库单,恢复库存
- SysOutStore sysOutStore = new SysOutStore();
- sysOutStore.setOrderId(order.getId());
- List<SysOutStore> sysOutStores = sysOutStoreDao.selectByModel(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());
- }
- // 删除业绩
- AchieveNew achieveNew = new AchieveNew();
- achieveNew.setOrderId(id);
- achieveNewService.removeByModel(achieveNew);
-
- // 删除收款记录
- sysOrderFlowDao.deleteByOrderId(id);
-
- //删除积分
- scoreVipDetailService.removeByBusinessId(order.getVipId(), order.getId());
-
- // 取消订单
- order.setStatu(Dictionary.ORDER_STATU_YQX);
- sysOrderDao.update(order);
- //保存单据日志
- operationLogService.saveOperation(order.getCompanyId(), order.getShopId(), sysUsers.getSuId(),
- OperationFunctionEnum.ORDER,
- OperationButtonEnum.CANCEL,
- order.getId(),
- order.getOrderNo(),
- order.getVipId(),
- "已付款取消订单");
+ /**
+ * 已付款订单取消
+ * @param order
+ */
+ private void cancelYFKOrder(SysOrder order) {
+ SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ //一个订单只能被取消一次
+ if (Dictionary.ORDER_STATU_YQX.equals(order.getStatu())) {
+ throw new GlobleException("订单已取消");
}
+ //储值卡退款
+ sysOrderServiceHelper.returnMoneyCardPay(order);
+
+ List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(order.getId());
+ for (SysOrderItem orderItem : sysOrderItems) {
+ // 充值卡类型退款
+ if (Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(orderItem.getType())) {
+ //删除购买的充值卡
+ moneyCardUseService.deleteByOrderItemId(orderItem.getId());
+ } else if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(orderItem.getType())
+ || Dictionary.SHOPPING_GOODS_TYPE_TC.equals(orderItem.getType())) {
+ // 项目套餐退款
+ // 删除套餐项目使用情况
+ sysProjUseService.deleteByOrderItemId(orderItem.getId());
+ }
+ }
+
+ //删除出库单,恢复库存
+ SysOutStore sysOutStore = new SysOutStore();
+ sysOutStore.setOrderId(order.getId());
+ List<SysOutStore> sysOutStores = sysOutStoreDao.selectByModel(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());
+ }
+
+ // 删除业绩
+ AchieveNew achieveNew = new AchieveNew();
+ achieveNew.setOrderId(order.getId());
+ achieveNewService.removeByModel(achieveNew);
+
+ // 删除收款记录
+ sysOrderFlowDao.deleteByOrderId(order.getId());
+
+ //删除积分
+ scoreVipDetailService.removeByBusinessId(order.getVipId(), order.getId());
+
+ // 取消订单
+ order.setStatu(Dictionary.ORDER_STATU_YQX);
+ sysOrderDao.update(order);
+ //保存单据日志
+ operationLogService.saveOperation(order.getCompanyId(), order.getShopId(), sysUsers.getSuId(),
+ OperationFunctionEnum.ORDER,
+ OperationButtonEnum.CANCEL,
+ order.getId(),
+ order.getOrderNo(),
+ order.getVipId(),
+ "已付款取消订单");
}
-
/**
- * 创建订单 lk
+ * 待付款订单取消
+ * @param order
*/
- @Override
- @Transactional(rollbackFor = Exception.class)
- public int createOrder(HttpSession session, ShoppingCarItemsVo car) {
+ private void cancelDFKOrder(SysOrder order) {
- if (car.getCarItems().size() < 1) {
- throw new GlobleException("没用选择购买产品");
- }
- // 获取会员信息,判断等级 获取相应家居折扣
- SysVipInfo info = sysVipInfoDao.selectById(car.getVipId());
+ SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ order.setStatu(Dictionary.ORDER_STATU_YQX);
+ order.setArrears(0D);
- //获取折扣-----
- Double zk = zk = 1.0;
+ //发送微信公众号提醒
+ UniformMsgParam uniformMsgParam = new UniformMsgParam(order.getCompanyId(), UniformMsgParam.GZH_DDQX);
+ uniformMsgParam.put("orderId", order.getId());
+ asyncMessageManager.sendMsg(AsyncMessageRouting.SEND_UNIFORM_TEMPLATE_MSG, uniformMsgParam);
- SysOrder order = new SysOrder();
- SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
- order.setShopId(user.getShopId());
- order.setOrderNo(codeService.getOrderCode());
- order.setVipId(info.getId());
- order.setOrderTime(new Date());
- order.setRemark(car.getRemark());
- order.setStaffId(user.getSuId());
- order.setIsCross(2 + "");
- order.setChangeId(car.getChangeId());
- order.setStatu(Dictionary.ORDER_STATU_DFK);
- order.setCardPay(0.00);
- order.setCashPay(0.00);
- order.setCompanyId(user.getCompanyId());
- order.setBeatuyId(car.getBeatuyId() + "");
- // 根据美疗师id查询美疗师姓名
- if (car.getBeatuyId() != null) {
- String beatuyName = shopStaffInfoDao.selectById(car.getBeatuyId()).getSuName();
- System.out.println("美疗师:" + beatuyName);
- order.setBeatuyName(beatuyName);
- }
- int i = sysOrderDao.insert(order);
- // 创建订单明细,并计算总价与折扣总价
- // 总价
- double total = 0;
- double zkTotal = 0;
- int count = 0;
- // 设置订单条目
- for (ShoppingCarItem carItem : car.getCarItems()) {
-
- SysOrderItem orderItem = new SysOrderItem();
- orderItem.setOrderId(order.getId());
- orderItem.setCount(carItem.getCount());
- orderItem.setIsFree(carItem.getIsFree());
- orderItem.setType(carItem.getType());
- orderItem.setStatus(Dictionary.ORDER_STATU_DFK);
- // 新增明细
- // 设置商品id
- orderItem.setGoodsId(carItem.getGoodsId());
- // 设置assembleId
- orderItem.setAssembleId(carItem.getAssembleId());
- // 如果是家居产品的话,要取出组合sku中的价格
- double p = carItem.getShoppingGoods().getSealPice();
- orderItem.setPrice(p);
- if (carItem.getIsFree().equals(Dictionary.FLAG_NO)) {
- orderItem.setZkPrice(MoneyUtil.mul(p, zk));
- } else {
- // 如果是免费,则设置为0.0
- orderItem.setZkPrice(0.0);
- }
-
-
- orderItemDao.insert(orderItem);
- total = MoneyUtil.add(total,
- MoneyUtil.mul(orderItem.getPrice(), Double.parseDouble(carItem.getCount() + "")));
- zkTotal = MoneyUtil.add(zkTotal,
- MoneyUtil.mul(orderItem.getZkPrice(), Double.parseDouble(carItem.getCount() + "")));
- }
-
- // 设置订单总价与折后价
- order.setTotal(total);
- order.setZkTotal(zkTotal);
sysOrderDao.update(order);
- return i;
+ //保存单据日志
+ operationLogService.saveOperation(order.getCompanyId(), order.getShopId(), sysUsers.getSuId(),
+ OperationFunctionEnum.ORDER,
+ OperationButtonEnum.CANCEL,
+ order.getId(),
+ order.getOrderNo(),
+ order.getVipId(),
+ "未付款取消订单");
}
@@ -397,7 +288,7 @@
public void updateReceiptMoney(SysOrder pageOrder) throws GlobleException {
//校验订单是否满足收款条件
- checkOrder(pageOrder);
+ checkOrderAblePay(pageOrder);
// 更新订单主表信息
updateOrderInfo(pageOrder);
@@ -494,7 +385,11 @@
}
- private void checkOrder(SysOrder pageOrder) {
+ /**
+ * 检查订单是否满足支付条件
+ * @param pageOrder
+ */
+ private void checkOrderAblePay(SysOrder pageOrder) {
SysOrder checkOrder = sysOrderDao.selectById(pageOrder.getId());
@@ -797,54 +692,7 @@
}
- 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);
- }
/**
* 退款退项目,套餐,卡项
@@ -923,10 +771,6 @@
}
}
- // TODO 综合卡退款
- if (Dictionary.SHOPPING_GOODS_TYPE_ZHK.equals(item.getType())) {
-
- }
ShoppingGoods goods = shoppingGoodsDao.selectById(item.getGoodsId());
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
index a464c3d..b3f85c7 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
@@ -10,13 +10,13 @@
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.common.validate.ParameterValidate;
-import com.matrix.system.common.validate.group.Group;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.*;
import com.matrix.system.hive.dto.ProjUseOperationDto;
import com.matrix.system.hive.plugin.util.MoneyUtil;
import com.matrix.system.hive.service.ShoppingGoodsService;
+import com.matrix.system.hive.service.SysBeauticianStateService;
import com.matrix.system.hive.service.SysProjServicesService;
import com.matrix.system.hive.service.SysProjUseService;
import com.matrix.system.hive.validation.ProjUseGroup;
@@ -41,6 +41,9 @@
private SysProjUseDao sysProjUseDao;
@Autowired
SysProjServicesService projServicesService;
+
+ @Autowired
+ SysBeauticianStateService sysBeauticianStateService;
@Autowired
private SysProjuseFreezeDao sysProjuseFreezeDao;
@@ -770,4 +773,21 @@
public int findTaocanCountForCourseAndInfinite(Long taocanId, Long vipId) {
return sysProjUseDao.selectTaocanCountForCourseAndInfinite(taocanId, vipId);
}
+
+ @Override
+ public void deleteByOrderItemId(Long id) {
+ int count=sysProjUseDao.selectUseCountByOrderItemId(id);
+ if(count>0){
+ SysProjUse query=new SysProjUse();
+ query.setOrderItemId(id);
+ List<SysProjUse> sysProjUses = sysProjUseDao.selectByModel(query);
+ if(sysProjUses.size()>1){
+ throw new GlobleException(sysProjUses.get(0).getProjName()+"套餐已经被使用无法删除");
+ }else {
+ throw new GlobleException(sysProjUses.get(0).getProjName()+"项目已经被使用无法删除");
+ }
+ }else {
+ sysProjUseDao.deleteByOrderItemId(id);
+ }
+ }
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpShoppingGoodsController.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpShoppingGoodsController.java
index 6e78a24..c22f83c 100644
--- a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpShoppingGoodsController.java
+++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/ErpShoppingGoodsController.java
@@ -101,9 +101,6 @@
shoppingGoods.setAssembleGoods(assembleListGoods);
List<ShoppingGoodsAssemble> assembleListProj = shoppingGoodsAssembleDao.selectProjByShoppingGoodsId(shoppingGoods.getId());
shoppingGoods.setAssembleProj(assembleListProj);
- } else if (Dictionary.SHOPPING_GOODS_TYPE_ZHK.equals(shoppingGoods.getGoodType())) {
- List<ShoppingGoodsAssemble> assembleList = shoppingGoodsAssembleDao.selectAssembleShoppingGoodsByShoppingGoodsId(shoppingGoods.getId());
- shoppingGoods.setZongheCarGoods(assembleList);
}
@@ -132,9 +129,6 @@
// 返回充值卡编辑界面
WebUtil.getRequest().setAttribute("obj", shoppingGoods);
return "admin/hive-erp/products/money-card-form";
- } else if (shoppingGoods.getGoodType().equals(Dictionary.SHOPPING_GOODS_TYPE_ZHK)) {
- WebUtil.getRequest().setAttribute("obj", shoppingGoods);
- return "admin/hive-erp/products/zonghe-card-form";
}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java
index 7b2d38e..05086bb 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java
@@ -185,17 +185,6 @@
orderItemDao.insert(orderItem);
}
break;
- case Dictionary.SHOPPING_GOODS_TYPE_ZHK:
- // 新增明细
- orderItem.setGoodsId(shoppingGoods.getId());
- // 每一个充值卡都看成一个单独的订单条目
- count = orderItem.getCount();
- for (int j = 0; j < count; j++) {
- orderItem.setCount(1);
- orderItem.setId(null);
- orderItemDao.insert(orderItem);
- }
- break;
}
}
// 处理收款逻辑
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml
index 335a873..c0d8efd 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml
@@ -948,4 +948,12 @@
select count(1) from sys_proj_use
where taocan_id=#{taocanId} and vip_id=#{vipId}
</select>
+ <select id="selectUseCountByOrderItemId" resultType="java.lang.Integer">
+ SELECT count(*)
+ from sys_beautician_state a
+ LEFT JOIN sys_proj_use b on a.puse_id=b.ID
+ left join sys_proj_services c on a.SERVICES_ID=c.id
+ where b.ORDER_ITEM_ID=#{orderItemId}
+ and c.STATE !='预约取消';
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1