From 8e918267caaba4ed0b63049d250f08d70cfad6dd Mon Sep 17 00:00:00 2001 From: moxiangrong Date: Thu, 22 Feb 2024 18:12:41 +0800 Subject: [PATCH] fix bug --- .../storeorder/AppStoreOrderServiceImpl.java | 1 + .../module/product/enums/ErrorCodeConstants.java | 2 ++ .../campaigninfo/CampaignInfoServiceImpl.java | 16 ++++++++++++++++ .../mapper/backuprecord/BackupRecordMapper.xml | 1 + .../signinrecord/SignInRecordServiceImpl.java | 5 +---- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeorder/AppStoreOrderServiceImpl.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeorder/AppStoreOrderServiceImpl.java index 7d3050a..8eb65f1 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeorder/AppStoreOrderServiceImpl.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeorder/AppStoreOrderServiceImpl.java @@ -1801,6 +1801,7 @@ public class AppStoreOrderServiceImpl extends ServiceImpl res.setPostagePrice(BigDecimal.ZERO)); storePostage = BigDecimal.ZERO; } diff --git a/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/ErrorCodeConstants.java b/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/ErrorCodeConstants.java index 7064a08..9fe8b0c 100644 --- a/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/ErrorCodeConstants.java +++ b/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/ErrorCodeConstants.java @@ -74,4 +74,6 @@ public interface ErrorCodeConstants { ErrorCode CAMPAIGN_NUMBER_ERROR = new ErrorCode(1008007011, " 超出活动购买数量!"); + ErrorCode CAMPAIGN_PRICE_NOT_ZERO_ERROR = new ErrorCode(1008007012, " 选择规格[{}]的商品,活动价格不能为0!"); + } diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/campaigninfo/CampaignInfoServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/campaigninfo/CampaignInfoServiceImpl.java index 5174abd..1dc2522 100644 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/campaigninfo/CampaignInfoServiceImpl.java +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/campaigninfo/CampaignInfoServiceImpl.java @@ -18,6 +18,7 @@ import co.yixiang.yshop.module.product.dal.dataobject.storeproduct.StoreProductD import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO; import co.yixiang.yshop.module.product.dal.mysql.campaigndetail.CampaignDetailMapper; import co.yixiang.yshop.module.product.dal.mysql.campaigninfo.CampaignInfoMapper; +import co.yixiang.yshop.module.product.enums.campaign.CampaignTypeEnum; import co.yixiang.yshop.module.product.enums.common.PageTypeEnum; import co.yixiang.yshop.module.product.enums.spu.ProductSpuStatusEnum; import co.yixiang.yshop.module.product.mq.producer.PayRefundProducer; @@ -35,6 +36,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.TimeUnit; @@ -113,6 +115,13 @@ public class CampaignInfoServiceImpl implements CampaignInfoService { for (CampaignDetailCreateReqVO detail : details) { StoreProductAttrValueDO productAttrValueDO = productAttrValueDOMap.get(detail.getSkuId()); if (ObjectUtil.isNull(productAttrValueDO)) throw exception(STORE_PRODUCT_ATTR_VALUE_NOT_EXISTS); + // 计算折扣价格 + if (CampaignTypeEnum.DISCOUNT.getValue().equals(createReqVO.getType())) + detail.setPrice(productAttrValueDO.getPrice().multiply(detail.getDiscount()) + .divide(BigDecimal.TEN).setScale(2, RoundingMode.HALF_UP)); + // 活动价格不能为0 + if(productAttrValueDO.getPrice().compareTo(BigDecimal.ZERO) == 0) + throw exception(CAMPAIGN_PRICE_NOT_ZERO_ERROR, productAttrValueDO.getSku()); // 检测价格 if (productAttrValueDO.getPrice().compareTo(detail.getPrice()) < 0) throw exception(CAMPAIGN_PASS_ORIGINAL_PRICE_ERROR, productAttrValueDO.getSku()); @@ -223,6 +232,13 @@ public class CampaignInfoServiceImpl implements CampaignInfoService { for (CampaignDetailCreateReqVO detail : details) { StoreProductAttrValueDO productAttrValueDO = productAttrValueDOMap.get(detail.getSkuId()); if (ObjectUtil.isNull(productAttrValueDO)) throw exception(STORE_PRODUCT_ATTR_VALUE_NOT_EXISTS); + // 计算折扣价格 + if (CampaignTypeEnum.DISCOUNT.getValue().equals(updateReqVO.getType())) + detail.setPrice(productAttrValueDO.getPrice().multiply(detail.getDiscount()) + .divide(BigDecimal.TEN).setScale(2, RoundingMode.HALF_UP)); + // 活动价格不能为0 + if(productAttrValueDO.getPrice().compareTo(BigDecimal.ZERO) == 0) + throw exception(CAMPAIGN_PRICE_NOT_ZERO_ERROR, productAttrValueDO.getSku()); // 检测价格 if (productAttrValueDO.getPrice().compareTo(detail.getPrice()) < 0) throw exception(CAMPAIGN_PASS_ORIGINAL_PRICE_ERROR, productAttrValueDO.getSku()); diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/backuprecord/BackupRecordMapper.xml b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/backuprecord/BackupRecordMapper.xml index 3ff4cce..480641c 100644 --- a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/backuprecord/BackupRecordMapper.xml +++ b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/backuprecord/BackupRecordMapper.xml @@ -52,6 +52,7 @@ TRUNCATE TABLE yshop_store_order_status; TRUNCATE TABLE yshop_store_cart; TRUNCATE TABLE yshop_store_order_cart_info; + TRUNCATE TABLE yshop_store_order_detail; TRUNCATE TABLE yshop_store_after_sales; TRUNCATE TABLE yshop_store_after_sales_item; TRUNCATE TABLE yshop_store_after_sales_status; diff --git a/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/signinrecord/SignInRecordServiceImpl.java b/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/signinrecord/SignInRecordServiceImpl.java index 87bd98e..760f97c 100644 --- a/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/signinrecord/SignInRecordServiceImpl.java +++ b/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/signinrecord/SignInRecordServiceImpl.java @@ -204,9 +204,6 @@ public class SignInRecordServiceImpl implements SignInRecordService { verifyExistSignInToday(userId); //获取当前签到规则 IntegralRuleDO currentIntegralRule = getIntegralRule(userId); - if(!currentIntegralRule.getEnable()){ - throw exception(SIGN_IN_CLOSED); - } //领取积分 IntegralRuleDTO rule = new IntegralRuleDTO(); rule.setUserId(userId); @@ -234,7 +231,7 @@ public class SignInRecordServiceImpl implements SignInRecordService { //查询签到相关积分规则 List integralRuleList = integralRuleService.getIntegralRuleByTypes(ListUtil.of(BillDetailEnum.SIGN.getValue())); //每日签到规则 - IntegralRuleDO everydayIntegralRuleDO = integralRuleList.stream().filter(item -> item.getAttribute1().equals("1")).findFirst().orElse(new IntegralRuleDO(0,Boolean.FALSE)); + IntegralRuleDO everydayIntegralRuleDO = integralRuleList.stream().filter(item -> item.getAttribute1().equals("1")).findFirst().orElse(new IntegralRuleDO(0,true)); //当前签到天数 Integer count = countByUserIdThisWeek(userId) + 1; //获取当前签到规则