From 3868b706ee3ee115a400d77abc3b69b83ea448c7 Mon Sep 17 00:00:00 2001
From: jyy <jyy>
Date: Fri, 03 Sep 2021 14:15:36 +0800
Subject: [PATCH] bug123
---
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 129 +++++++++++++++++++-----------------------
1 files changed, 58 insertions(+), 71 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 2b11597..eace5b4 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
@@ -524,34 +524,34 @@
* 检查产品销售次数
*/
private void checkSealLimit(SysOrder pageOrder) {
- pageOrder.getItems().forEach(item->{
- ShoppingGoods shopGoods = shoppingGoodsDao.selectById(item.getGoodsId());
+ 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());
+ //最大销售次数检测
+ 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+"次");
- }
- }
+ if ((buyOnceCount + item.getCount()) > onceCount) {
+ throw new GlobleException(shopGoods.getName() + "每人限购"+onceCount+"次");
+ }
+ }
- });
+ });
}
@@ -666,15 +666,15 @@
//添加自己的积分
if(selfScore>0){
- scoreVipDetailService.addScore(
- vipInfo.getId(),
- pageOrder.getStaffId(),
- pageOrder.getShopId(),
- selfScore,
- pageOrder.getId(),
- ScoreVipDetail.SCORE_VIP_TYPE_CASH,
- "消费奖励"
- );
+ scoreVipDetailService.addScore(
+ vipInfo.getId(),
+ pageOrder.getStaffId(),
+ pageOrder.getShopId(),
+ selfScore,
+ pageOrder.getId(),
+ ScoreVipDetail.SCORE_VIP_TYPE_CASH,
+ "消费奖励"
+ );
}
if(vipInfo.getRecommendId()!=null){
@@ -1188,7 +1188,7 @@
List<ShoppingGoodsAssemble> assembleList = shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(sysOrderItem.getGoodsId(), ShoppingGoods.SHOPPING_GOODS_TYPE_XM);
assembleList.forEach(item -> {
//TODO 补综合卡逻辑
- createProjuseByAssemble(order, sysOrderItem, item, null, null);
+ createProjuseByAssemble(order, sysOrderItem, item, null, null,null,0);
});
//处理综合卡中包含的套餐
@@ -1209,7 +1209,7 @@
* 通过组合关系创建用户项目余次
*/
private SysProjUse createProjuseByAssemble(SysOrder order, SysOrderItem sysOrderItem,
- ShoppingGoodsAssemble goodsAssemble, Long taocanId, Date failTime) {
+ ShoppingGoodsAssemble goodsAssemble, Long taocanId, Date failTime,String source,int maxCount) {
//计算折扣
Double zk = sysOrderItem.getZkPrice() / sysOrderItem.getPrice();
@@ -1217,48 +1217,37 @@
puse.setIsOver(Dictionary.DELETED_N);
puse.setOrderItemId(sysOrderItem.getId());
puse.setProjId(goodsAssemble.getAssembleGoodId());
- puse.setSurplusCount(goodsAssemble.getTotal());
+ puse.setSurplusCount(goodsAssemble.getTotal()==null?maxCount: goodsAssemble.getTotal());
puse.setDeductionNum(goodsAssemble.getDeductionNum());
puse.setProjName(goodsAssemble.getShoppingGoods().getName());
puse.setVipId(order.getVipId());
puse.setStatus(Dictionary.TAOCAN_STATUS_YX);
puse.setTaocanId(taocanId);
puse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
+ puse.setSource(source);
+
if (taocanId == null) {
puse.setPrice(goodsAssemble.getShoppingGoods().getPrice() * zk);
} else {
puse.setPrice(goodsAssemble.getPrice() * zk);
}
- // 赠送和打折后金额为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(sysOrderItem.getPrice()>0){
-
-
-
-
- }else{
- //等于0取原价
- if (taocanId == null) {
- puse.setPrice(goodsAssemble.getShoppingGoods().getPrice() );
- } else {
- puse.setPrice(goodsAssemble.getPrice());
- }
+ //赠送项目是否计算消耗业绩否则 赠送产品按原价计算消耗
+ boolean zsConsumeAchieve = projServicesService.skipServiceOrderStep(Dictionary.ZS_CONSUME_ACHIEVE);
+ if(zsConsumeAchieve){
+ if(sysOrderItem.getPrice()<=0){
+ //等于0取原价
+ if (taocanId == null) {
+ puse.setPrice(goodsAssemble.getShoppingGoods().getPrice() );
+ } else {
+ puse.setPrice(goodsAssemble.getPrice());
}
-
- }else{
- puse.setPrice(0D);
}
-
-
+ }else{
+ puse.setPrice(0D);
}
+
puse.setBalance(MoneyUtil.mul(puse.getPrice(), Double.valueOf(puse.getSurplusCount())));
puse.setFailTime(failTime);
sysProjUseDao.insert(puse);
@@ -1308,19 +1297,21 @@
//创建套餐绑定的项目
List<ShoppingGoodsAssemble> assembleList = shoppingGoodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(projId, ShoppingGoods.SHOPPING_GOODS_TYPE_XM);
for (ShoppingGoodsAssemble assemble : assembleList) {
- SysProjUse tempUse = createProjuseByAssemble(order, sysOrderItem, assemble, taocanProjUse.getId(),taocanProjUse.getFailTime());
+ SysProjUse tempUse = createProjuseByAssemble(order, sysOrderItem, assemble, taocanProjUse.getId(),taocanProjUse.getFailTime(),taocanProjUse.getSource(),taocanShoppingGoods.getCarUseCount());
sumBanance += tempUse.getBalance();
surplusCount += tempUse.getSurplusCount();
}
if (Dictionary.FLAG_NO_N.equals(taocanShoppingGoods.getIsCourse())) {
//固定套餐,剩余次数等于绑定项目的次数
taocanProjUse.setSurplusCount(surplusCount);
+ //合计套餐余额
+ taocanProjUse.setBalance(sumBanance);
} else {
//任选套餐剩余次数等于最大使用次数
taocanProjUse.setSurplusCount(taocanShoppingGoods.getCarUseCount());
+ taocanProjUse.setBalance(sysOrderItem.getZkPrice());
}
- //合计套餐余额
- taocanProjUse.setBalance(sumBanance);
+
sysProjUseDao.update(taocanProjUse);
}
@@ -1356,11 +1347,7 @@
//赠送项目是否计算消耗业绩否则 赠送产品按原价计算消耗
boolean zsConsumeAchieve = projServicesService.skipServiceOrderStep(Dictionary.ZS_CONSUME_ACHIEVE);
if(zsConsumeAchieve){
- if(sysOrderItem.getPrice()>0){
- puse.setPrice(sysOrderItem.getZkPrice());
- }else{
- puse.setPrice(sysOrderItem.getShoppingGoods().getSealPice());
- }
+ puse.setPrice(sysOrderItem.getShoppingGoods().getSealPice());
}else{
puse.setPrice(0D);
}
@@ -1692,7 +1679,7 @@
int sub = sysProjUse.getSurplusCount() - item.getCount();
if (sub < 0) {
- throw new GlobleException("项目余次不足");
+ throw new GlobleException("项目余次不足");
}else if(sub==0){
sysProjUse.setIsOver(Dictionary.FLAG_YES_Y);
sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
--
Gitblit v1.9.1