From 935e0480f6d05140db21408d0368105accebbbca Mon Sep 17 00:00:00 2001 From: Cui Zhi Feng <7426394+wuxixiaocui@user.noreply.gitee.com> Date: 星期二, 03 九月 2024 09:26:31 +0800 Subject: [PATCH] 积分 成长值计算 订单金额 --- src/main/java/com/mzl/flower/service/BaseService.java | 71 +++++++++++++++++++++++++++++++++-- 1 files changed, 67 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/BaseService.java b/src/main/java/com/mzl/flower/service/BaseService.java index ac580a1..b796271 100644 --- a/src/main/java/com/mzl/flower/service/BaseService.java +++ b/src/main/java/com/mzl/flower/service/BaseService.java @@ -10,6 +10,7 @@ import com.mzl.flower.dto.response.payment.OrderSalesItemChargeDTO; import com.mzl.flower.entity.customer.Customer; import com.mzl.flower.entity.flower.*; +import com.mzl.flower.entity.menber.Member; import com.mzl.flower.entity.partner.Partner; import com.mzl.flower.entity.payment.FeeService; import com.mzl.flower.entity.payment.OrderItemSales; @@ -17,6 +18,7 @@ import com.mzl.flower.entity.supplier.Supplier; import com.mzl.flower.mapper.customer.CustomerMapper; import com.mzl.flower.mapper.flower.FlowerCategoryMapper; +import com.mzl.flower.mapper.member.MemberMapper; import com.mzl.flower.mapper.partner.PartnerMapper; import com.mzl.flower.mapper.supplier.SupplierMapper; import com.mzl.flower.mapper.system.UserMapper; @@ -25,6 +27,7 @@ import org.springframework.data.redis.core.RedisTemplate; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.*; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -56,6 +59,13 @@ @Autowired private FlowerCategoryMapper flowerCategoryMapper; + + @Autowired + private MemberMapper memberMapper; + + protected Member getMember(Long levelId){ + return memberMapper.selectById(levelId); + } protected double getServiceFeeRate(List<FeeService> fees, Integer saleCount){ int sc = saleCount == null ? 0 : saleCount; @@ -113,10 +123,10 @@ } if (platformSalesMap != null) { - BigDecimal feePlatform = s.getFeePlatform(); - BigDecimal feePlatformPack = s.getFeePlatformPack(); - BigDecimal feePlatformCheck = s.getFeePlatformCheck(); - BigDecimal feePlatformTransport = s.getFeePlatformTransport(); + BigDecimal feePlatform = getAmount(s.getFeePlatform()); + BigDecimal feePlatformPack = getAmount(s.getFeePlatformPack()); + BigDecimal feePlatformCheck = getAmount(s.getFeePlatformCheck()); + BigDecimal feePlatformTransport = getAmount(s.getFeePlatformTransport()); BigDecimal b = platformSalesMap.get(orderItemId); if (b == null) { @@ -125,6 +135,10 @@ b = b.add(feePlatform).add(feePlatformPack).add(feePlatformCheck).add(feePlatformTransport); platformSalesMap.put(orderItemId, b); } + } + + protected BigDecimal getAmount(BigDecimal amount){ + return amount == null ? new BigDecimal(0) : amount; } protected void prepareSalesAmount(OrderSalesItem s @@ -459,6 +473,55 @@ return p; } + /** + * 计算会员单价 + * + * @param price + * @param member + * @return + */ + protected BigDecimal calculateMemberPrice(BigDecimal price, Member member){ + if(price == null || member == null){ + return price; + } + BigDecimal r = price; + + String discountType = member.getDiscountType(); + if(Constants.DISCOUNT_TYPE.ratio.name().equals(discountType)){ + BigDecimal discountRatio = getAmount(member.getDiscountRatio()); + r = price.multiply(discountRatio).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP); + } else if (Constants.DISCOUNT_TYPE.amount.name().equals(discountType)){ + BigDecimal discountAmount = getAmount(member.getDiscountAmount()); + r = price.subtract(discountAmount); + } + + if(r.doubleValue() < 0){ + r = new BigDecimal(0); + } + + return r; + } + + protected Customer getCustomerByUserId(String userId){ + Customer p = customerMapper.selectOne(new QueryWrapper<Customer>() + .eq("user_id", userId)); + if(p == null){ + throw new ValidationException("客户不存在"); + } + + return p; + } + + protected Customer getCustomer(Long id){ + Customer p = customerMapper.selectById(id); + + if(p == null){ + throw new ValidationException("商户不存在"); + } + + return p; + } + public Partner getCurrentPartner(){ String userId = SecurityUtils.getUserId(); Partner p = partnerMapper.selectOne(new QueryWrapper<Partner>() -- Gitblit v1.9.3