From 33a30da7b2795fc60ebab8e89760087f5dfdd3a0 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期二, 10 九月 2024 16:13:37 +0800
Subject: [PATCH] add:三端用户禁用后下线

---
 src/main/java/com/mzl/flower/service/BaseService.java              |   36 +++++++++++++++++
 src/main/java/com/mzl/flower/service/supplier/SupplierService.java |   13 ++++++
 src/main/java/com/mzl/flower/service/partner/PartnerService.java   |    7 +++
 src/main/java/com/mzl/flower/service/customer/CustomerService.java |    7 +++
 4 files changed, 61 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/mzl/flower/service/BaseService.java b/src/main/java/com/mzl/flower/service/BaseService.java
index 363b03c..94c2d4c 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;
@@ -23,6 +25,10 @@
 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.time.*;
@@ -30,10 +36,10 @@
 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 +62,16 @@
 
     @Autowired
     private FlowerCategoryMapper flowerCategoryMapper;
+
+    @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;
@@ -631,4 +647,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);
+                }
+            }
+        }
+    }
+
+
 }
diff --git a/src/main/java/com/mzl/flower/service/customer/CustomerService.java b/src/main/java/com/mzl/flower/service/customer/CustomerService.java
index a4aa812..187c75b 100644
--- a/src/main/java/com/mzl/flower/service/customer/CustomerService.java
+++ b/src/main/java/com/mzl/flower/service/customer/CustomerService.java
@@ -16,11 +16,13 @@
 import com.mzl.flower.entity.partner.Partner;
 import com.mzl.flower.mapper.customer.CustomerMapper;
 import com.mzl.flower.mapper.partner.PartnerMapper;
+import com.mzl.flower.service.BaseService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 @Service
@@ -31,6 +33,9 @@
     private final CustomerMapper customerMapper;
 
     private final PartnerMapper partnerMapper;
+
+    @Resource
+    private BaseService baseService;
 
     public CustomerService(CustomerMapper customerMapper, PartnerMapper partnerMapper) {
         this.customerMapper = customerMapper;
@@ -208,6 +213,8 @@
         }
         if (customer.getIsEnabled()) {
             customer.setIsEnabled(false);
+            //强制下线
+            baseService.removeToken(customer.getUserId());
         } else {
             customer.setIsEnabled(true);
         }
diff --git a/src/main/java/com/mzl/flower/service/partner/PartnerService.java b/src/main/java/com/mzl/flower/service/partner/PartnerService.java
index 15f9a26..f0f110e 100644
--- a/src/main/java/com/mzl/flower/service/partner/PartnerService.java
+++ b/src/main/java/com/mzl/flower/service/partner/PartnerService.java
@@ -12,6 +12,7 @@
 import com.mzl.flower.entity.partner.Partner;
 import com.mzl.flower.entity.supplier.Supplier;
 import com.mzl.flower.mapper.partner.PartnerMapper;
+import com.mzl.flower.service.BaseService;
 import com.mzl.flower.service.UploadService;
 import com.mzl.flower.utils.DateUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -20,6 +21,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
@@ -42,6 +44,9 @@
 
 
     private final UploadService uploadService;
+
+    @Resource
+    private BaseService baseService;
 
     public PartnerService(PartnerMapper partnerMapper, WxMaService maService, UploadService uploadService) {
         this.partnerMapper = partnerMapper;
@@ -171,6 +176,8 @@
         }
         if (partner.getIsEnabled()) {
             partner.setIsEnabled(false);
+            //强制下线
+            baseService.removeToken(partner.getUserId());
         } else {
             partner.setIsEnabled(true);
         }
diff --git a/src/main/java/com/mzl/flower/service/supplier/SupplierService.java b/src/main/java/com/mzl/flower/service/supplier/SupplierService.java
index 67e2e99..225c894 100644
--- a/src/main/java/com/mzl/flower/service/supplier/SupplierService.java
+++ b/src/main/java/com/mzl/flower/service/supplier/SupplierService.java
@@ -1,5 +1,6 @@
 package com.mzl.flower.service.supplier;
 
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -8,15 +9,20 @@
 import com.mzl.flower.constant.Constants;
 import com.mzl.flower.dto.request.supplier.*;
 import com.mzl.flower.dto.response.supplier.SupplierDTO;
-import com.mzl.flower.entity.customer.Customer;
 import com.mzl.flower.entity.supplier.Supplier;
 import com.mzl.flower.mapper.supplier.SupplierMapper;
+import com.mzl.flower.service.BaseService;
 import com.mzl.flower.utils.DateUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+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.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -29,6 +35,9 @@
     private final static String SUPPLIER_STATUS_REJECT = "R"; // 审核拒绝
 
     private final SupplierMapper supplierMapper;
+
+    @Resource
+    private BaseService baseService;
 
     public SupplierService(SupplierMapper supplierMapper) {
         this.supplierMapper = supplierMapper;
@@ -196,6 +205,8 @@
         }
         if (supplier.getIsEnabled()) {
             supplier.setIsEnabled(false);
+            //强制下线
+            baseService.removeToken(supplier.getUserId());
         } else {
             supplier.setIsEnabled(true);
         }

--
Gitblit v1.9.3