From a768dc3daa04d35fedfbe75c0a59b9b2545b85c4 Mon Sep 17 00:00:00 2001 From: gongzuming <gongzuming> Date: 星期四, 19 九月 2024 16:59:33 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master-v2' --- src/main/java/com/mzl/flower/service/BaseService.java | 107 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 97 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/BaseService.java b/src/main/java/com/mzl/flower/service/BaseService.java index acd2725..c5c2d7e 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,6 +12,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,23 +20,29 @@ 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; 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 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 @@ -56,6 +65,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; @@ -113,10 +139,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 +151,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 @@ -221,7 +251,7 @@ break; } } - fp = fp.add(b); + fp = fp.add(getAmount(b)); dto.setFirstFee(b); } @@ -280,7 +310,7 @@ break; } } - fp = fp.add(b); + fp = fp.add(getAmount(b)); dto.setSecondFee(b); FlowerMarkupSpCg fmpsc = null; @@ -335,7 +365,7 @@ break; } } - fp = fp.add(b); + fp = fp.add(getAmount(b)); dto.setPartnerFee(b); } @@ -373,7 +403,7 @@ break; } } - fp = fp.add(b); + fp = fp.add(getAmount(b)); } //二次加价 @@ -431,7 +461,7 @@ break; } } - fp = fp.add(b); + fp = fp.add(getAmount(b)); return fp; } @@ -452,6 +482,45 @@ protected Customer getCurrentCustomer(){ Customer p = getCurrentCustomerWithoutCheck(); + if(p == null){ + throw new ValidationException("客户不存在"); + } + + 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("客户不存在"); } @@ -637,4 +706,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