From 6ee2a947a786edad9eb19a5401de7fcc456b90a6 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期二, 10 十二月 2024 18:23:11 +0800
Subject: [PATCH] add: 供应商子账号4
---
src/main/java/com/mzl/flower/config/GlobalSupplierVariables.java | 39 +++++++++++++++++++
src/main/java/com/mzl/flower/service/supplier/SupplierSubService.java | 17 ++++++++
src/main/java/com/mzl/flower/service/system/UserService.java | 27 +++++++++++--
3 files changed, 77 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/mzl/flower/config/GlobalSupplierVariables.java b/src/main/java/com/mzl/flower/config/GlobalSupplierVariables.java
new file mode 100644
index 0000000..ec2a45f
--- /dev/null
+++ b/src/main/java/com/mzl/flower/config/GlobalSupplierVariables.java
@@ -0,0 +1,39 @@
+package com.mzl.flower.config;
+
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class GlobalSupplierVariables {
+ private final Map<String, String> supplierMap = new HashMap<>();
+
+ @PostConstruct
+ public void init() {
+ // 初始化操作,如果需要的话
+ System.out.println("Application started, initializing supplier map...");
+ }
+
+ @PreDestroy
+ public void cleanup() {
+ // 清理操作
+ supplierMap.clear();
+ System.out.println("Application shutting down, clearing supplier map...");
+ }
+
+ public String getSupplier(String supplierId) {
+ return supplierMap.get(supplierId);
+ }
+
+ public void setSupplier(String supplierId, String userId) {
+ supplierMap.put(supplierId, userId);
+ }
+
+ public void removeSupplier(String supplierId) {
+ supplierMap.remove(supplierId);
+ }
+}
+
diff --git a/src/main/java/com/mzl/flower/service/supplier/SupplierSubService.java b/src/main/java/com/mzl/flower/service/supplier/SupplierSubService.java
index 7a61aef..aa302a3 100644
--- a/src/main/java/com/mzl/flower/service/supplier/SupplierSubService.java
+++ b/src/main/java/com/mzl/flower/service/supplier/SupplierSubService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzl.flower.base.cache.StringCacheClient;
+import com.mzl.flower.config.GlobalSupplierVariables;
import com.mzl.flower.config.exception.ValidationException;
import com.mzl.flower.config.security.SecurityUtils;
import com.mzl.flower.constant.Constants;
@@ -71,6 +72,8 @@
private final PartnerService partnerService;
private final StationService stationService;
private final UserWechatMapper wechatMapper;
+
+ private final GlobalSupplierVariables globalSupplierVariables;
@@ -274,10 +277,22 @@
String userId = "";
if (type == 1) {
userId = SecurityUtils.getUserId();
- }else {
+ SupplierDTO currentSupplier = supplierMapper.getCurrentSupplier(userId);
+ //切换主账号
+ String supplier = globalSupplierVariables.getSupplier(String.valueOf(currentSupplier.getId()));
+ if (StringUtils.isEmpty(supplier)) {
+ globalSupplierVariables.removeSupplier(String.valueOf(currentSupplier.getId()));
+ }
+ } else {
SupplierSub supplierSub = supplierSubMapper.selectById(id);
supplierSub.setType(0);
userId = supplierSub.getUserId();
+ //切换子账号
+ String supplier = globalSupplierVariables.getSupplier(String.valueOf(supplierSub.getSupplierId()));
+ if (StringUtils.isEmpty(supplier)) {
+ globalSupplierVariables.removeSupplier(String.valueOf(supplierSub.getSupplierId()));
+ }
+ globalSupplierVariables.setSupplier(String.valueOf(supplierSub.getSupplierId()), userId);
}
CurrentUserDTO result = new CurrentUserDTO();
diff --git a/src/main/java/com/mzl/flower/service/system/UserService.java b/src/main/java/com/mzl/flower/service/system/UserService.java
index b2f93d0..92bf94e 100644
--- a/src/main/java/com/mzl/flower/service/system/UserService.java
+++ b/src/main/java/com/mzl/flower/service/system/UserService.java
@@ -3,12 +3,14 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.config.GlobalSupplierVariables;
import com.mzl.flower.config.exception.ValidationException;
import com.mzl.flower.config.security.SecurityUtils;
import com.mzl.flower.constant.Constants;
import com.mzl.flower.dto.request.BindWechatDTO;
import com.mzl.flower.dto.request.system.*;
import com.mzl.flower.dto.response.current.CurrentUserDTO;
+import com.mzl.flower.dto.response.supplier.SupplierDTO;
import com.mzl.flower.dto.response.system.EmployeeDTO;
import com.mzl.flower.dto.response.system.MenuTreeDTO;
import com.mzl.flower.dto.response.system.UserDetailsDTO;
@@ -18,6 +20,7 @@
import com.mzl.flower.entity.system.*;
import com.mzl.flower.enums.TrueOrFalseEnum;
import com.mzl.flower.mapper.point.CustomerPointMapper;
+import com.mzl.flower.mapper.supplier.SupplierMapper;
import com.mzl.flower.mapper.supplier.SupplierSubMapper;
import com.mzl.flower.mapper.system.*;
import com.mzl.flower.service.customer.CustomerService;
@@ -89,6 +92,12 @@
@Autowired
private SupplierSubMapper supplierSubMapper;
+ @Autowired
+ private SupplierMapper supplierMapper;
+
+ @Autowired
+ private GlobalSupplierVariables globalSupplierVariables;
+
public User findUserByOpenId(String openId, String sessionKey, String unionId
, String imgUrl, String nickname,String userType){
@@ -148,6 +157,7 @@
}
public CurrentUserDTO getCurrentUser() {
+
String userId = SecurityUtils.getUserId();
CurrentUserDTO result = new CurrentUserDTO();
@@ -216,16 +226,23 @@
}else if(Constants.USER_TYPE.supplier.name().equals(user.getType())){
result.setSupplierDTO(supplierService.getCurrentSupplier());
SupplierSub sub = supplierSubMapper.getCurrentSupplier(SecurityUtils.getUserId());
+ SupplierDTO dto = supplierMapper.getCurrentSupplier(SecurityUtils.getUserId());
+ String tempUserId = globalSupplierVariables.getSupplier(String.valueOf(dto.getId()));
if (!ObjectUtils.isEmpty(sub)) {
result.setIsSubSupplier(true);
result.setSupplierSub(sub);
- //可切换
result.setSwitchFlag(false);
} else {
- result.setIsSubSupplier(false);
- result.setSupplierSub(null);
- //不可切换
- result.setSwitchFlag(true);
+ if (!StringUtils.isBlank(tempUserId)) {
+ SupplierSub temSub = supplierSubMapper.getCurrentSupplier(tempUserId);
+ result.setIsSubSupplier(true);
+ result.setSupplierSub(temSub);
+ result.setSwitchFlag(true);
+ } else {
+ result.setIsSubSupplier(false);
+ result.setSupplierSub(null);
+ result.setSwitchFlag(true);
+ }
}
}else if(Constants.USER_TYPE.partner.name().equals(user.getType())){
result.setPartnerDTO(partnerService.getCurrentPartner());
--
Gitblit v1.9.3