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

---
 src/main/java/com/mzl/flower/service/BaseService.java                 |   19 +++++++--
 src/main/java/com/mzl/flower/service/supplier/SupplierService.java    |   16 ++++++++
 src/main/java/com/mzl/flower/service/supplier/SupplierSubService.java |   23 +++++++----
 src/main/java/com/mzl/flower/web/supplier/SupplierSubController.java  |    7 +++
 src/main/java/com/mzl/flower/dto/response/current/CurrentUserDTO.java |    8 ++++
 src/main/java/com/mzl/flower/service/system/UserService.java          |   14 +++++++
 src/main/java/com/mzl/flower/dto/request/supplier/SupplierSubDTO.java |    3 +
 7 files changed, 78 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/mzl/flower/dto/request/supplier/SupplierSubDTO.java b/src/main/java/com/mzl/flower/dto/request/supplier/SupplierSubDTO.java
index e054150..1f02a61 100644
--- a/src/main/java/com/mzl/flower/dto/request/supplier/SupplierSubDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/supplier/SupplierSubDTO.java
@@ -26,4 +26,7 @@
     @ApiModelProperty("验证码")
     private String smsCode;
 
+    @ApiModelProperty("验证码类型,小程序不传")
+    private String type;
+
 }
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 c3cdf51..2a6a781 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
@@ -5,6 +5,7 @@
 import com.mzl.flower.dto.response.partner.PartnerDTO;
 import com.mzl.flower.dto.response.supplier.SupplierDTO;
 import com.mzl.flower.dto.response.system.MenuTreeDTO;
+import com.mzl.flower.entity.supplier.SupplierSub;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -56,4 +57,11 @@
 
     @ApiModelProperty(value = "是否总仓权限")
     private Boolean mainWarehouse;
+
+    @ApiModelProperty(value = "是否是子供应商")
+    public Boolean isSubSupplier;
+
+    @ApiModelProperty(value = "子供应商信息")
+    private SupplierSub supplierSub;
+
 }
diff --git a/src/main/java/com/mzl/flower/service/BaseService.java b/src/main/java/com/mzl/flower/service/BaseService.java
index ecfcb6a..def7248 100644
--- a/src/main/java/com/mzl/flower/service/BaseService.java
+++ b/src/main/java/com/mzl/flower/service/BaseService.java
@@ -18,11 +18,13 @@
 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;
@@ -31,6 +33,7 @@
 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;
@@ -53,6 +56,9 @@
 
     @Autowired
     protected SupplierMapper supplierMapper;
+
+    @Autowired
+    protected SupplierSubMapper supplierSubMapper;
 
     @Autowired
     protected PartnerMapper partnerMapper;
@@ -552,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;
     }
 
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 0a4582e..39e482a 100644
--- a/src/main/java/com/mzl/flower/service/supplier/SupplierService.java
+++ b/src/main/java/com/mzl/flower/service/supplier/SupplierService.java
@@ -10,7 +10,9 @@
 import com.mzl.flower.dto.request.supplier.*;
 import com.mzl.flower.dto.response.supplier.SupplierDTO;
 import com.mzl.flower.entity.supplier.Supplier;
+import com.mzl.flower.entity.supplier.SupplierSub;
 import com.mzl.flower.mapper.supplier.SupplierMapper;
+import com.mzl.flower.mapper.supplier.SupplierSubMapper;
 import com.mzl.flower.service.BaseService;
 import com.mzl.flower.utils.DateUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -21,6 +23,7 @@
 import org.springframework.security.oauth2.provider.token.TokenStore;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
@@ -35,6 +38,9 @@
     private final static String SUPPLIER_STATUS_REJECT = "R"; // 审核拒绝
 
     private final SupplierMapper supplierMapper;
+
+    @Resource
+    private SupplierSubMapper supplierSubMapper;
 
     @Resource
     private BaseService baseService;
@@ -162,6 +168,16 @@
             throw new ValidationException("当前登录用户不是供应商账号");
         }
         SupplierDTO dto = supplierMapper.getCurrentSupplier(SecurityUtils.getUserId());
+        //如果是空 查询子账号的供应商ID
+        if (ObjectUtils.isEmpty(dto)) {
+            SupplierSub sub = supplierSubMapper.getCurrentSupplier(SecurityUtils.getUserId());
+            if (!ObjectUtils.isEmpty(sub)) {
+                dto = supplierMapper.findSupplierDetail(sub.getSupplierId());
+            }
+        }
+        if(ObjectUtils.isEmpty(dto)){
+            throw new ValidationException("供应商信息不存在");
+        }
         return dto;
     }
 
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 dcead67..e4b4d21 100644
--- a/src/main/java/com/mzl/flower/service/supplier/SupplierSubService.java
+++ b/src/main/java/com/mzl/flower/service/supplier/SupplierSubService.java
@@ -51,14 +51,16 @@
 
 
     public void addOrUpdateSupplier(SupplierSubDTO dto) {
-        if(StringUtils.isEmpty(dto.getSmsCode())){
-            throw new ValidationException("手机验证码为空");
-        }
-        String smsCode = dto.getSmsCode();
-        //从缓存中获取验证码
-        String smsCacheCode = stringCacheClient.get(SMS_CODE_KEY + SEPARATOR + Constants.USER_TYPE.supplier.name() + SEPARATOR + dto.getPhone());
-        if (!org.apache.commons.lang3.StringUtils.equals(smsCode, smsCacheCode)) {
-            throw new ValidationException("手机验证码不正确");
+        if (StringUtils.isEmpty(dto.getType())) {
+            if (StringUtils.isEmpty(dto.getSmsCode())) {
+                throw new ValidationException("手机验证码为空");
+            }
+            String smsCode = dto.getSmsCode();
+            //从缓存中获取验证码
+            String smsCacheCode = stringCacheClient.get(SMS_CODE_KEY + SEPARATOR + Constants.USER_TYPE.supplier.name() + SEPARATOR + dto.getPhone());
+            if (!org.apache.commons.lang3.StringUtils.equals(smsCode, smsCacheCode)) {
+                throw new ValidationException("手机验证码不正确");
+            }
         }
 
         SupplierSub supplierSub;
@@ -81,6 +83,7 @@
 
             supplierSub = new SupplierSub();
             BeanUtils.copyProperties(dto, supplierSub, "id");
+            supplierSub.setSupplierId(supplierDTO.getId());
             supplierSub.create(SecurityUtils.getUserId());
             supplierSub.setIsEnabled(true);
 
@@ -227,4 +230,8 @@
         }
         return supplierSubMapper.getSubSupplier(String.valueOf(supplierDTO.getId()));
     }
+
+    public SupplierSub getById(Long id) {
+        return supplierSubMapper.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 e5286b5..47b50b4 100644
--- a/src/main/java/com/mzl/flower/service/system/UserService.java
+++ b/src/main/java/com/mzl/flower/service/system/UserService.java
@@ -14,9 +14,11 @@
 import com.mzl.flower.dto.response.system.UserDetailsDTO;
 import com.mzl.flower.dto.response.system.UserListDTO;
 import com.mzl.flower.entity.point.CustomerPoint;
+import com.mzl.flower.entity.supplier.SupplierSub;
 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.SupplierSubMapper;
 import com.mzl.flower.mapper.system.*;
 import com.mzl.flower.service.customer.CustomerService;
 import com.mzl.flower.service.partner.PartnerService;
@@ -32,6 +34,7 @@
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 
 import javax.validation.constraints.NotBlank;
 import java.util.ArrayList;
@@ -82,6 +85,9 @@
     private CustomerPointMapper customerPointMapper;
     @Autowired
     private StationService stationService;
+
+    @Autowired
+    private SupplierSubMapper supplierSubMapper;
 
 
     public User findUserByOpenId(String openId, String sessionKey, String unionId
@@ -209,6 +215,14 @@
             }
         }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);
+            } else {
+                result.setIsSubSupplier(false);
+                result.setSupplierSub(null);
+            }
         }else if(Constants.USER_TYPE.partner.name().equals(user.getType())){
             result.setPartnerDTO(partnerService.getCurrentPartner());
         }else if (Constants.USER_TYPE.admin.name().equals(user.getType())){
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 a4d59d9..5dde042 100644
--- a/src/main/java/com/mzl/flower/web/supplier/SupplierSubController.java
+++ b/src/main/java/com/mzl/flower/web/supplier/SupplierSubController.java
@@ -67,4 +67,11 @@
     public ResponseEntity<ReturnDataDTO<List<SupplierSub>>> getSubSupplier() {
         return returnData(R.SUCCESS.getCode(), supplierSubService.getSubSupplier());
     }
+
+    @GetMapping("/getById")
+    @ApiOperation(value = "通过ID查询子账号", notes = "通过ID查询子账号")
+    public ResponseEntity<ReturnDataDTO<SupplierSub>> getById(@NotNull(message = "id不能为空") Long id) {
+        SupplierSub supplierSub = supplierSubService.getById(id);
+        return returnData(R.SUCCESS.getCode(), supplierSub);
+    }
 }

--
Gitblit v1.9.3