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 | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 105 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/mzl/flower/service/BaseService.java b/src/main/java/com/mzl/flower/service/BaseService.java
index f6cca5b..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;
@@ -113,18 +145,24 @@
}
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 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);
}
+ }
+
+ protected BigDecimal getAmount(BigDecimal amount){
+ return amount == null ? new BigDecimal(0) : amount;
}
protected void prepareSalesAmount(OrderSalesItem s
@@ -221,7 +259,7 @@
break;
}
}
- fp = fp.add(b);
+ fp = fp.add(getAmount(b));
dto.setFirstFee(b);
}
@@ -280,7 +318,7 @@
break;
}
}
- fp = fp.add(b);
+ fp = fp.add(getAmount(b));
dto.setSecondFee(b);
FlowerMarkupSpCg fmpsc = null;
@@ -335,7 +373,7 @@
break;
}
}
- fp = fp.add(b);
+ fp = fp.add(getAmount(b));
dto.setPartnerFee(b);
}
@@ -373,7 +411,7 @@
break;
}
}
- fp = fp.add(b);
+ fp = fp.add(getAmount(b));
}
//二次加价
@@ -431,7 +469,7 @@
break;
}
}
- fp = fp.add(b);
+ fp = fp.add(getAmount(b));
return fp;
}
@@ -457,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){
@@ -491,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;
}
@@ -647,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