From 3566668d97d3844d4d4b95c0058a0f5cb9e5db07 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期一, 09 十二月 2024 17:33:12 +0800
Subject: [PATCH] add: 供应商子账号2

---
 src/main/java/com/mzl/flower/service/supplier/SupplierSubService.java |  114 +++++++++++++++++++++++++++++++++++++
 src/main/java/com/mzl/flower/web/supplier/SupplierSubController.java  |    8 ++
 src/main/java/com/mzl/flower/dto/response/current/CurrentUserDTO.java |    3 +
 src/main/java/com/mzl/flower/service/system/UserService.java          |    4 +
 4 files changed, 127 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/mzl/flower/dto/response/current/CurrentUserDTO.java b/src/main/java/com/mzl/flower/dto/response/current/CurrentUserDTO.java
index 2a6a781..894d918 100644
--- a/src/main/java/com/mzl/flower/dto/response/current/CurrentUserDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/current/CurrentUserDTO.java
@@ -64,4 +64,7 @@
     @ApiModelProperty(value = "子供应商信息")
     private SupplierSub supplierSub;
 
+    @ApiModelProperty(value = "是否是子供应商")
+    public Boolean switchFlag;
+
 }
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 e4b4d21..b73a886 100644
--- a/src/main/java/com/mzl/flower/service/supplier/SupplierSubService.java
+++ b/src/main/java/com/mzl/flower/service/supplier/SupplierSubService.java
@@ -9,14 +9,27 @@
 import com.mzl.flower.dto.request.register.RegisterDTO;
 import com.mzl.flower.dto.request.supplier.QuerySupplierSubDTO;
 import com.mzl.flower.dto.request.supplier.SupplierSubDTO;
+import com.mzl.flower.dto.response.current.CurrentUserDTO;
 import com.mzl.flower.dto.response.supplier.SupplierDTO;
 import com.mzl.flower.dto.response.supplier.SupplierSubVO;
+import com.mzl.flower.dto.response.system.MenuTreeDTO;
+import com.mzl.flower.entity.point.CustomerPoint;
 import com.mzl.flower.entity.supplier.SupplierSub;
+import com.mzl.flower.entity.system.Role;
 import com.mzl.flower.entity.system.User;
+import com.mzl.flower.entity.system.UserWechat;
+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.MenuMapper;
+import com.mzl.flower.mapper.system.PartnerMenuMapper;
 import com.mzl.flower.mapper.system.UserMapper;
+import com.mzl.flower.mapper.system.UserWechatMapper;
 import com.mzl.flower.service.BaseService;
+import com.mzl.flower.service.customer.CustomerService;
+import com.mzl.flower.service.partner.PartnerService;
+import com.mzl.flower.service.system.RoleService;
+import com.mzl.flower.utils.TreeBuilderUtil;
 import com.mzl.flower.utils.UUIDGenerator;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
@@ -48,6 +61,17 @@
     public static final String SEPARATOR = ":";
 
     private final SupplierMapper supplierMapper;
+    private final SupplierService supplierService;
+    private final RoleService roleService;
+    private final MenuMapper menuMapper;
+    private final PartnerMenuMapper partnerMenuMapper;
+    private final CustomerService customerService;
+    private final CustomerPointMapper customerPointMapper;
+    private final PartnerService partnerService;
+    private final StationService stationService;
+    private final UserWechatMapper wechatMapper;
+
+
 
 
     public void addOrUpdateSupplier(SupplierSubDTO dto) {
@@ -66,7 +90,7 @@
         SupplierSub supplierSub;
         if (dto.getId() == null) {
 
-            SupplierDTO supplierDTO = supplierMapper.getCurrentSupplier(SecurityUtils.getUserId());
+            SupplierDTO supplierDTO =  supplierService.getCurrentSupplier();
             if(ObjectUtils.isEmpty(supplierDTO)){
                 throw new ValidationException("供应商信息不存在");
             }
@@ -156,7 +180,7 @@
 
 
     private boolean checkExistName(String name, Long supplierId) {
-        if (StringUtils.isEmpty(name)) {
+        if (!StringUtils.isEmpty(name)) {
             LambdaQueryWrapper<SupplierSub> lambdaQueryWrapper = new LambdaQueryWrapper();
             lambdaQueryWrapper.eq(SupplierSub::getName, name).eq(SupplierSub::getSupplierId, supplierId);
             return supplierSubMapper.selectCount(lambdaQueryWrapper) > 0;
@@ -234,4 +258,90 @@
     public SupplierSub getById(Long id) {
         return supplierSubMapper.selectById(id);
     }
+
+    public CurrentUserDTO getSwitchById(Long id) {
+        SupplierSub supplierSub = supplierSubMapper.selectById(id);
+        String userId = supplierSub.getUserId();
+
+        CurrentUserDTO result = new CurrentUserDTO();
+
+        //获取用户信息
+        User user = getUserById(userId);
+        if(user == null){
+            throw new ValidationException("用户不存在");
+        }
+        result.setLoginName(user.getLoginName());
+        result.setNickName(user.getNickName());
+        result.setTel(user.getTel());
+        result.setPicture(user.getPicture());
+        result.setType(user.getType());
+
+        //获取用户角色信息
+        List<String> roleIds = new ArrayList<>();
+        List<Role> roleList = roleService.getUserRoleList(userId);
+        for (Role role : roleList) {
+            roleIds.add(role.getId());
+        }
+        result.setRoles(roleIds);
+
+        //根据用户角色获取用户菜单
+        List<MenuTreeDTO> menus = null;
+        if(Constants.USER_TYPE.admin.name().equals(user.getType())){
+            if (roleIds.contains(Constants.ROLE_SYS_ADMIN)) {
+                menus = menuMapper.selectListOrderBySeq();
+            } else if (roleIds.size() > 0) {
+                menus = menuMapper.selectOperationList(roleIds);
+            }
+        }else if(Constants.USER_TYPE.partner.name().equals(user.getType())){
+            menus = partnerMenuMapper.selectListOrderBySeq();
+        }
+        if(menus != null) {
+            for (MenuTreeDTO menu : menus) {
+                menu.setPath(menu.getMenuHref());
+                menu.setName(menu.getMenuName());
+                menu.setLabel(menu.getMenuName());
+            }
+            menus = (List<MenuTreeDTO>) TreeBuilderUtil.buildListToTree(menus);
+        }
+        result.setMenus(menus);
+        result.setId(userId);
+
+        if(Constants.USER_TYPE.customer.name().equals(user.getType())){
+            result.setCustomerDTO(customerService.getCurrentCustomer());
+            //查询积分
+            CustomerPoint customerPoint = customerPointMapper.selectOne(new LambdaQueryWrapper<CustomerPoint>()
+                    .eq(CustomerPoint::getUserId, userId));
+            if(customerPoint == null){
+                result.setCurrentPoint(0);
+            }else{
+                Integer currentPoint =customerPoint.getTotalPoint()-customerPoint.getUsedPoint()-customerPoint.getExpiredPoint()-customerPoint.getDeductionPoint();
+                result.setCurrentPoint(currentPoint>=0?currentPoint:0);
+            }
+        }else if(Constants.USER_TYPE.supplier.name().equals(user.getType())){
+            result.setSupplierDTO(supplierService.getCurrentSupplier());
+            SupplierSub sub = supplierSubMapper.getCurrentSupplier(SecurityUtils.getUserId());
+            if (!ObjectUtils.isEmpty(sub)) {
+                result.setIsSubSupplier(true);
+                result.setSupplierSub(sub);
+                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());
+        }else if (Constants.USER_TYPE.admin.name().equals(user.getType())){
+            result.setMainWarehouse(stationService.getMainWarehouse(user.getId()));
+        }
+        result.setBindWechat(wechatMapper.selectCount(new LambdaQueryWrapper<UserWechat>()
+                .eq(UserWechat::getUserId, userId)) > 0);
+
+        return result;
+
+    }
+
+    public User getUserById(String id){
+        return userMapper.selectById(id);
+    }
 }
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 47b50b4..5b704fe 100644
--- a/src/main/java/com/mzl/flower/service/system/UserService.java
+++ b/src/main/java/com/mzl/flower/service/system/UserService.java
@@ -219,9 +219,13 @@
             if (!ObjectUtils.isEmpty(sub)) {
                 result.setIsSubSupplier(true);
                 result.setSupplierSub(sub);
+                //可切换
+                result.setSwitchFlag(true);
             } else {
                 result.setIsSubSupplier(false);
                 result.setSupplierSub(null);
+                //不可切换
+                result.setSwitchFlag(false);
             }
         }else if(Constants.USER_TYPE.partner.name().equals(user.getType())){
             result.setPartnerDTO(partnerService.getCurrentPartner());
diff --git a/src/main/java/com/mzl/flower/web/supplier/SupplierSubController.java b/src/main/java/com/mzl/flower/web/supplier/SupplierSubController.java
index 5dde042..ee11286 100644
--- a/src/main/java/com/mzl/flower/web/supplier/SupplierSubController.java
+++ b/src/main/java/com/mzl/flower/web/supplier/SupplierSubController.java
@@ -5,6 +5,7 @@
 import com.mzl.flower.base.R;
 import com.mzl.flower.base.ReturnDataDTO;
 import com.mzl.flower.dto.request.supplier.*;
+import com.mzl.flower.dto.response.current.CurrentUserDTO;
 import com.mzl.flower.dto.response.payment.DeliveryOrderItemListDTO;
 import com.mzl.flower.dto.response.supplier.SupplierSubVO;
 import com.mzl.flower.entity.supplier.SupplierSub;
@@ -74,4 +75,11 @@
         SupplierSub supplierSub = supplierSubService.getById(id);
         return returnData(R.SUCCESS.getCode(), supplierSub);
     }
+
+    @GetMapping("/getSwitchById")
+    @ApiOperation(value = "子账号切换", notes = "子账号切换")
+    public ResponseEntity<ReturnDataDTO<CurrentUserDTO>> getSwitchById(@NotNull(message = "id不能为空") Long id) {
+        CurrentUserDTO currentUserDTO = supplierSubService.getSwitchById(id);
+        return returnData(R.SUCCESS.getCode(), currentUserDTO);
+    }
 }

--
Gitblit v1.9.3