From e892ea04b56194b6208b5a902f1622f40d4c56a7 Mon Sep 17 00:00:00 2001
From: jyy <jyy>
Date: Sat, 10 Jul 2021 09:10:08 +0800
Subject: [PATCH] 新增美度正式环境配置
---
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 100 insertions(+), 8 deletions(-)
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 ae5d05e..e3e1fa1 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
@@ -497,6 +497,14 @@
if (!Dictionary.ORDER_STATU_DFK.equals(pageOrder.getStatu())) {
throw new GlobleException("该订单已经收过款,请刷新页面再试!");
}
+
+ //检查交易限制调整
+ checkSealLimit(pageOrder);
+
+ //交易业绩设置是否合理
+ checkAchieveIsOk(pageOrder);
+
+
// 更新收款时间
pageOrder.setPayTime(new Date());
pageOrder.setStatu(Dictionary.ORDER_STATU_YFK);
@@ -530,6 +538,63 @@
//设置会员积分
addVipScore(pageOrder);
+ }
+
+ /**
+ * 检查产品销售次数
+ */
+ private void checkSealLimit(SysOrder pageOrder) {
+ pageOrder.getItems().forEach(item->{
+ ShoppingGoods shopGoods = shoppingGoodsDao.selectById(item.getGoodsId());
+
+ //最大销售次数检测
+ Integer maxNum = shopGoods.getCarMaxSaleCount();
+ if (maxNum != null && maxNum != 0) {
+ Integer buyNum = orderItemDao.selectByGoodsId(shopGoods.getId(),null);
+ if ((buyNum + item.getCount()) > maxNum) {
+ throw new GlobleException(shopGoods.getName() + "已超过最大销售数量");
+ }
+ if ((buyNum + item.getCount()) == maxNum) {
+ if (!shopGoods.getStaus().equals(Dictionary.BUSINESS_STATE_DOWN)) {
+ shopGoods.setStaus(Dictionary.BUSINESS_STATE_DOWN);
+ shoppingGoodsDao.update(shopGoods);
+ }
+ }
+ }
+ //每人限购次数检测
+ Integer onceCount = shopGoods.getIsOnce();
+ if(onceCount!=null && onceCount!=0){
+ Integer buyOnceCount = orderItemDao.selectByGoodsId(shopGoods.getId(),pageOrder.getVipId());
+
+ if ((buyOnceCount + item.getCount()) > onceCount) {
+ throw new GlobleException(shopGoods.getName() + "每人限购"+onceCount+"次");
+ }
+ }
+
+ });
+
+ }
+
+ /**
+ * 交易业绩设置是否合理
+ * @param pageOrder
+ */
+ private void checkAchieveIsOk(SysOrder pageOrder) {
+ double huakouSum = pageOrder.getItems().stream()
+ .mapToDouble(
+ item ->
+ item.getAchieveList().stream()
+ .filter(achieveNew -> "划扣".equals(achieveNew.getPayMethod()))
+ .mapToDouble(achieve -> achieve.getGoodsCash()).sum()
+ ).sum();
+
+ double czkPay= pageOrder.getFlows().stream()
+ .filter(sysOrderFlow -> "储值卡".equals(sysOrderFlow.getPayMethod()))
+ .mapToDouble(sysOrderFlow ->sysOrderFlow.getAmount().doubleValue()).sum();
+
+ if(czkPay!=huakouSum){
+ throw new GlobleException("划扣业绩不等于储值卡扣款金额,请修改业绩设置!");
+ }
}
/**
@@ -567,9 +632,9 @@
if(StringUtils.isNotBlank(cashConsumption.getParamValue2())){
BigDecimal scoreSetting2 = new BigDecimal(cashConsumption.getParamValue2());
if(scoreSetting2.compareTo(BigDecimal.ZERO)>0){
- cashScore[1]= cashPayAmount.divide(scoreSetting2).intValue();
+ cashScore[2]= cashPayAmount.divide(scoreSetting2).intValue();
}
- cashScore[2]= cashPayAmount.divide(scoreSetting2).intValue();
+
}
}
@@ -752,7 +817,7 @@
// 最大发卡数量为0代表不做限制
if (maxNum != null && maxNum != 0) {
// 查询该商品已经被购买的次数
- Integer buyNum = orderItemDao.selectByGoodsId(shopGoods.getId());
+ Integer buyNum = orderItemDao.selectByGoodsId(shopGoods.getId(),null);
buyNum = (buyNum == null ? 0 : buyNum);
if ((buyNum + carItem.getCount()) > maxNum) {
throw new GlobleException(shopGoods.getName() + "已超过最大销售数量");
@@ -916,7 +981,6 @@
moneyCardUse.setGiftMoney(moneyCar.getReferencePice());
moneyCardUse.setRealMoney(moneyCar.getSealPice());
moneyCardUse.setGoodsId(moneyCar.getId());
- moneyCardUse.setIsOver(Dictionary.FLAG_NO_N);
moneyCardUse.setOrderItemId(sysOrderItem.getId());
moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
@@ -1205,13 +1269,28 @@
} else {
puse.setPrice(goodsAssemble.getPrice() * zk);
}
- puse.setBalance(MoneyUtil.mul(puse.getPrice(), Double.valueOf(puse.getSurplusCount())));
+
// 赠送和打折后金额为0的都视为赠送项目
if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) {
puse.setSource(Dictionary.TAOCAN_SOURCE_GM);
} else {
+
puse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
+ //赠送项目是否计算消耗业绩否则 赠送产品按原价计算消耗
+ boolean zsConsumeAchieve = projServicesService.skipServiceOrderStep(Dictionary.ZS_CONSUME_ACHIEVE);
+ if(zsConsumeAchieve){
+ if (taocanId == null) {
+ puse.setPrice(goodsAssemble.getShoppingGoods().getPrice() );
+ } else {
+ puse.setPrice(goodsAssemble.getPrice());
+ }
+ }else{
+ puse.setPrice(0D);
+ }
+
+
}
+ puse.setBalance(MoneyUtil.mul(puse.getPrice(), Double.valueOf(puse.getSurplusCount())));
puse.setFailTime(failTime);
sysProjUseDao.insert(puse);
return puse;
@@ -1276,6 +1355,9 @@
sysProjUseDao.update(taocanProjUse);
}
+ @Autowired
+ private SysProjServicesService projServicesService;
+
/**
* 根据订单创建用户项目使用情况
*
@@ -1291,18 +1373,29 @@
puse.setVipId(order.getVipId());
puse.setStatus(Dictionary.TAOCAN_STATUS_YX);
puse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
- puse.setBalance(sysOrderItem.getZkPrice());
- puse.setPrice(sysOrderItem.getZkPrice());
+
+
puse.setProjName(sysOrderItem.getShoppingGoods().getName());
// 赠送和打折后金额为0的都视为赠送项目
if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) {
puse.setSource(Dictionary.TAOCAN_SOURCE_GM);
+ puse.setPrice(sysOrderItem.getZkPrice());
} else {
puse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
+ //赠送项目是否计算消耗业绩否则 赠送产品按原价计算消耗
+ boolean zsConsumeAchieve = projServicesService.skipServiceOrderStep(Dictionary.ZS_CONSUME_ACHIEVE);
+ if(zsConsumeAchieve){
+ puse.setPrice(sysOrderItem.getShoppingGoods().getSealPice());
+ }else{
+ puse.setPrice(0D);
+ }
+
+
}
// 设置失效时间
Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null);
puse.setFailTime(invalidTime);
+ puse.setBalance(sysOrderItem.getShoppingGoods().getSealPice()*puse.getSurplusCount());
sysProjUseDao.insert(puse);
}
@@ -1645,7 +1738,6 @@
if (Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(item.getType())) {
MoneyCardUse queryCardUse = new MoneyCardUse();
- queryCardUse.setIsOver(Dictionary.FLAG_NO_N);
queryCardUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
queryCardUse.setOrderItemId(item.getOldItemId());
--
Gitblit v1.9.1