diff --git a/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java b/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java index 2feb89b4..a103b767 100644 --- a/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java @@ -37,6 +37,5 @@ public class RegisteredCouponActivityExecute implements MemberRegisterEvent { .eq("coupon_activity_type", CouponActivityTypeEnum.REGISTERED.name()) .and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START))); couponActivityService.registered(couponActivities, member); - } } diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java index b03e1a51..15724eb7 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java @@ -349,14 +349,30 @@ public class PriceDetailDTO implements Serializable { public void setDiscountPrice(Double discountPrice) { this.discountPrice = discountPrice; + promotionPriceHandler(); this.recount(); } public void setCouponPrice(Double couponPrice) { this.couponPrice = couponPrice; + promotionPriceHandler(); this.recount(); } + /** + * 如果促销金额+优惠券金额大于商品金额问题处理 + */ + private void promotionPriceHandler() { + if (couponPrice == null || discountPrice == null) { + return; + } + //如果订单优惠总额>商品金额,则处理一下数据,使得两数相加<=商品金额 + if (CurrencyUtil.add(couponPrice, discountPrice) > goodsPrice) { + couponPrice = CurrencyUtil.sub(goodsPrice, discountPrice); + this.setCouponPrice(couponPrice); + } + } + public void setDistributionCommission(Double distributionCommission) { this.distributionCommission = distributionCommission; this.recount(); diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java index eafc4877..427bccb7 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java @@ -121,6 +121,8 @@ public class PromotionGoods extends BaseEntity { this.promotionId = pointsGoods.getId(); this.quantity = pointsGoods.getActiveStock(); this.originalPrice = sku.getPrice(); + this.promotionType = PromotionTypeEnum.POINTS_GOODS.name(); + this.scopeId = sku.getId(); } } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java index bb41f1bc..e36027ac 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java @@ -23,6 +23,7 @@ import cn.lili.modules.promotion.service.KanjiaActivityGoodsService; import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.mybatis.util.PageUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.beans.BeanUtils; @@ -32,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.List; /** @@ -214,7 +216,11 @@ public class KanjiaActivityGoodsServiceImpl extends AbstractPromotionsServiceImp @Override public KanjiaActivityGoods getKanjiaGoodsBySkuId(String skuId) { - KanjiaActivityGoods kanjiaActivityGoods = this.getOne(new QueryWrapper().eq("sku_id", skuId), false); + KanjiaActivityGoods kanjiaActivityGoods = this.getOne( + new LambdaQueryWrapper() + .eq(KanjiaActivityGoods::getSkuId, skuId) + .ge(KanjiaActivityGoods::getEndTime, new Date()) + .le(KanjiaActivityGoods::getStartTime, new Date())); if (kanjiaActivityGoods != null && PromotionsStatusEnum.START.name().equals(kanjiaActivityGoods.getPromotionStatus())) { return kanjiaActivityGoods; } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillServiceImpl.java index ddd03f8c..78f45a85 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillServiceImpl.java @@ -151,7 +151,7 @@ public class SeckillServiceImpl extends AbstractPromotionsServiceImpl map = new HashMap<>(); // es促销key map.put("esPromotionKey", promotionKey); diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 7860e8ed..ae7f5164 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -315,7 +315,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements resultMap.put(KEY_SUCCESS, 0); resultMap.put(KEY_FAIL, 0); resultMap.put(KEY_PROCESSED, 0); - cache.put(CachePrefix.INIT_INDEX_PROCESS.getPrefix() + "", resultMap); + cache.put(CachePrefix.INIT_INDEX_PROCESS.getPrefix(), resultMap); if (!goodsIndexList.isEmpty()) { goodsIndexRepository.deleteAll(); for (EsGoodsIndex goodsIndex : goodsIndexList) { diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java index 68019d77..29e58226 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java @@ -15,6 +15,7 @@ import cn.lili.modules.search.entity.dto.HotWordsDTO; import cn.lili.modules.search.entity.dto.ParamOptions; import cn.lili.modules.search.entity.dto.SelectorOptions; import cn.lili.modules.search.service.EsGoodsSearchService; +import com.alibaba.druid.util.StringUtils; import lombok.extern.slf4j.Slf4j; import org.apache.lucene.search.join.ScoreMode; import org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction; @@ -222,6 +223,7 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { for (int i = 0; i < brandBuckets.size(); i++) { String brandId = brandBuckets.get(i).getKey().toString(); //当商品品牌id为0时,代表商品没有选择品牌,所以过滤掉品牌选择器 + //当品牌id为空并且 if (brandId.equals("0") || (CharSequenceUtil.isNotEmpty(goodsSearch.getBrandId()) && Arrays.asList(goodsSearch.getBrandId().split("@")).contains(brandId))) { @@ -231,6 +233,9 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { String brandName = ""; if (brandBuckets.get(i).getAggregations() != null && brandBuckets.get(i).getAggregations().get(ATTR_BRAND_NAME) != null) { brandName = this.getAggregationsBrandOptions(brandBuckets.get(i).getAggregations().get(ATTR_BRAND_NAME)); + if (StringUtils.isEmpty(brandName)) { + continue; + } } String brandUrl = ""; @@ -238,6 +243,9 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { brandUrlBuckets.get(i).getAggregations() != null && brandUrlBuckets.get(i).getAggregations().get(ATTR_BRAND_URL) != null) { brandUrl = this.getAggregationsBrandOptions(brandUrlBuckets.get(i).getAggregations().get(ATTR_BRAND_URL)); + if (StringUtils.isEmpty(brandUrl)) { + continue; + } } SelectorOptions so = new SelectorOptions(); so.setName(brandName);