From ae1471f378f399f76518539ec8992e64a3673436 Mon Sep 17 00:00:00 2001 From: 陶杰 <1378534974@qq.com> Date: 星期三, 08 一月 2025 15:26:06 +0800 Subject: [PATCH] 1.订单提交:订单最小金额配置 --- src/main/java/com/mzl/flower/service/BaseService.java | 108 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 97 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/BaseService.java b/src/main/java/com/mzl/flower/service/BaseService.java index bd1d2cb..def7248 100644 --- a/src/main/java/com/mzl/flower/service/BaseService.java +++ b/src/main/java/com/mzl/flower/service/BaseService.java @@ -1,8 +1,10 @@ package com.mzl.flower.service; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mzl.flower.base.cache.MarkupCacheClient; +import com.mzl.flower.base.cache.StringCacheClient; import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.config.security.SecurityUtils; import com.mzl.flower.constant.Constants; @@ -10,30 +12,40 @@ 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; import com.mzl.flower.entity.payment.OrderSalesItem; import com.mzl.flower.entity.supplier.Supplier; +import com.mzl.flower.entity.supplier.SupplierSub; 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.supplier.SupplierSubMapper; import com.mzl.flower.mapper.system.UserMapper; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.security.oauth2.common.OAuth2AccessToken; +import org.springframework.security.oauth2.common.OAuth2RefreshToken; +import org.springframework.security.oauth2.provider.token.TokenStore; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.*; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.regex.Pattern; import static java.time.format.DateTimeFormatter.BASIC_ISO_DATE; +@Service public class BaseService { @Autowired @@ -46,6 +58,9 @@ protected SupplierMapper supplierMapper; @Autowired + protected SupplierSubMapper supplierSubMapper; + + @Autowired protected PartnerMapper partnerMapper; @Autowired @@ -56,6 +71,23 @@ @Autowired private FlowerCategoryMapper flowerCategoryMapper; + + @Autowired + private MemberMapper memberMapper; + + protected Member getMember(Long levelId){ + return memberMapper.selectById(levelId); + } + + @Autowired + private StringCacheClient stringCacheClient; + + @Autowired + private TokenStore tokenStore; + + public static final String TOKEN_KEY = "TOKEN-KEY"; + + public static final String SEPARATOR = ":"; protected double getServiceFeeRate(List<FeeService> fees, Integer saleCount){ int sc = saleCount == null ? 0 : saleCount; @@ -117,12 +149,14 @@ BigDecimal feePlatformPack = getAmount(s.getFeePlatformPack()); BigDecimal feePlatformCheck = getAmount(s.getFeePlatformCheck()); BigDecimal feePlatformTransport = getAmount(s.getFeePlatformTransport()); + BigDecimal feePackingTransport = getAmount(s.getFeePackingTransport()); BigDecimal b = platformSalesMap.get(orderItemId); if (b == null) { b = new BigDecimal(0); } - b = b.add(feePlatform).add(feePlatformPack).add(feePlatformCheck).add(feePlatformTransport); + b = b.add(feePlatform).add(feePlatformPack).add(feePlatformCheck) + .add(feePlatformTransport).add(feePackingTransport); platformSalesMap.put(orderItemId, b); } } @@ -225,7 +259,7 @@ break; } } - fp = fp.add(b); + fp = fp.add(getAmount(b)); dto.setFirstFee(b); } @@ -284,7 +318,7 @@ break; } } - fp = fp.add(b); + fp = fp.add(getAmount(b)); dto.setSecondFee(b); FlowerMarkupSpCg fmpsc = null; @@ -339,7 +373,7 @@ break; } } - fp = fp.add(b); + fp = fp.add(getAmount(b)); dto.setPartnerFee(b); } @@ -377,7 +411,7 @@ break; } } - fp = fp.add(b); + fp = fp.add(getAmount(b)); } //二次加价 @@ -435,7 +469,7 @@ break; } } - fp = fp.add(b); + fp = fp.add(getAmount(b)); return fp; } @@ -461,6 +495,35 @@ } 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){ @@ -495,14 +558,19 @@ return p; } - public Supplier getCurrentSupplier(){ + public Supplier getCurrentSupplier() { String userId = SecurityUtils.getUserId(); Supplier s = supplierMapper.selectOne(new QueryWrapper<Supplier>() .eq("user_id", userId)); - if(s == null){ - throw new ValidationException("供应商信息未认证,请到个人中心进行认证"); + if (s == null) { + SupplierSub sub = supplierSubMapper.getCurrentSupplier(SecurityUtils.getUserId()); + if (!ObjectUtils.isEmpty(sub)) { + s = supplierMapper.selectById(sub.getSupplierId()); + return s; + } else { + throw new ValidationException("供应商信息未认证,请到个人中心进行认证"); + } } - return s; } @@ -651,4 +719,22 @@ return null; } + public void removeToken(String userId) { + String tokenCache = stringCacheClient.get(TOKEN_KEY + SEPARATOR + userId); + if (StringUtils.isNotBlank(tokenCache)) { + //强制删除token,下线 + if (StringUtils.isNotBlank(tokenCache) && StringUtils.isNotBlank(userId)) { + stringCacheClient.delete(TOKEN_KEY + SEPARATOR + userId); + String tokenValue = tokenCache.replace(OAuth2AccessToken.BEARER_TYPE, StrUtil.EMPTY).trim(); + OAuth2AccessToken accessToken = tokenStore.readAccessToken(tokenValue); + if (accessToken != null && StringUtils.isNotBlank(accessToken.getValue())) { + tokenStore.removeAccessToken(accessToken); + OAuth2RefreshToken refreshToken = accessToken.getRefreshToken(); + tokenStore.removeRefreshToken(refreshToken); + } + } + } + } + + } -- Gitblit v1.9.3