فهرست منبع

feat(product): 增加品牌授权信息查询功能

- 在 SupplierAuthorizeService 中新增 getSupplierAuthorizeList 方法
- 添加 SupplierAuthorizeDTO 数据传输对象
- 在 ProductBrandController 和 ProductBrandServiceImpl 中集成供应商授权信息服务
- 通过 Dubbo 远程调用获取品牌对应的授权信息列表
- 在 ProductBrandVo 中增加供应商授权列表字段
- 优化分页查询返回逻辑
Lijingyang 1 ماه پیش
والد
کامیت
90dc8197f7

+ 5 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteSupplierInfoService.java

@@ -1,5 +1,8 @@
 package org.dromara.customer.api;
 package org.dromara.customer.api;
 
 
+import org.dromara.customer.api.domain.dto.SupplierAuthorizeDTO;
+
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.Set;
 import java.util.Set;
 
 
@@ -17,4 +20,6 @@ public interface RemoteSupplierInfoService {
      * 根据ids查询供应商名称
      * 根据ids查询供应商名称
      */
      */
     Map<Long, String> selectSupplierNameByIds(Set<Long> ids);
     Map<Long, String> selectSupplierNameByIds(Set<Long> ids);
+
+    List<SupplierAuthorizeDTO> getSupplierAuthorizeList(Long brandId);
 }
 }

+ 161 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/dto/SupplierAuthorizeDTO.java

@@ -0,0 +1,161 @@
+package org.dromara.customer.api.domain.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * author
+ * 时间:2026/3/11,9:56
+ */
+@Data
+public class SupplierAuthorizeDTO implements Serializable {
+    private Long id;
+
+    /**
+     * 类目ID 三级
+     */
+    private Long categoryId;
+
+    private Long brandId;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 供应商名称
+     */
+    private String supplierName;
+
+
+    /**
+     * 供货类目
+     */
+    private String supplyProCate;
+
+    /**
+     * 可供货品牌
+     */
+    private String supplyBrand;
+
+    /**
+     * 授权单编号
+     */
+    private String authorizeNo;
+
+    /**
+     * 有授权品牌
+     */
+    private String authBrand;
+
+    /**
+     * 品牌编号
+     */
+    private String brandNo;
+
+    /**
+     * 品牌名称(中文)
+     */
+    private String brandName;
+
+    /**
+     * 品牌英文名称
+     */
+    private String brandEnglishName;
+
+    /**
+     * 品牌LOGO图片地址
+     */
+    private String brandLogo;
+
+    /**
+     * 授权类型(如独家/非独家)
+     */
+    private String authorizeType;
+
+    /**
+     * 授权品类(多个品类用分隔符区分)
+     */
+    private String authorizationCategory;
+
+    /**
+     * 品牌授权方(授权出具主体)
+     */
+    private String brandLicensor;
+
+    /**
+     * 授权关系文件存储地址
+     */
+    private String authorizationRelationshipFile;
+
+    /**
+     * 授权开始时间
+     */
+    private Date authorizationStartTime;
+
+    /**
+     * 授权结束时间
+     */
+    private Date authorizationEndTime;
+
+    /**
+     * 授权区域(如中国大陆/全球等)
+     */
+    private String authorizedArea;
+
+    /**
+     * 品牌持有类型(如自有/代理)
+     */
+    private String brandHoldType;
+
+    /**
+     * 授权层级(如一级/二级授权)
+     */
+    private String authorizeLevel;
+
+    /**
+     * 授权审核状态(0待审核/1已通过/2已驳回)
+     */
+    private String authorizedStatus;
+
+    /**
+     * 授权关系文件原文件名
+     */
+    private String authorizationRelationshipFileName;
+
+    /**
+     * 品牌注册人
+     */
+    private String brandRegistrant;
+
+    /**
+     * 审核反馈意见
+     */
+    private String reviewFeedback;
+
+    /**
+     * 供应区域(省)
+     */
+    private String province;
+
+    /**
+     * 供应区域(市)
+     */
+    private String city;
+
+    /**
+     * 一级,二级,三级品目名称 oneLevelName twoLevelName threeLevelName
+     */
+    Map<String, String> categorysMap;
+
+}

+ 10 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/dubbo/RemoteSupplierInfoServiceImpl.java

@@ -4,9 +4,12 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.dromara.customer.api.RemoteSupplierInfoService;
 import org.dromara.customer.api.RemoteSupplierInfoService;
+import org.dromara.customer.api.domain.dto.SupplierAuthorizeDTO;
+import org.dromara.customer.service.ISupplierAuthorizeService;
 import org.dromara.customer.service.ISupplierInfoService;
 import org.dromara.customer.service.ISupplierInfoService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.Set;
 import java.util.Set;
 
 
@@ -22,6 +25,8 @@ public class RemoteSupplierInfoServiceImpl implements RemoteSupplierInfoService
 
 
     private final ISupplierInfoService supplierInfoService;
     private final ISupplierInfoService supplierInfoService;
 
 
+    private final ISupplierAuthorizeService supplierAuthorizeService;
+
     @Override
     @Override
     public int updateIsDisable() {
     public int updateIsDisable() {
         return supplierInfoService.updateIsDisable();
         return supplierInfoService.updateIsDisable();
@@ -31,4 +36,9 @@ public class RemoteSupplierInfoServiceImpl implements RemoteSupplierInfoService
     public Map<Long, String> selectSupplierNameByIds(Set<Long> ids) {
     public Map<Long, String> selectSupplierNameByIds(Set<Long> ids) {
         return supplierInfoService.selectSupplierNameByIds(ids);
         return supplierInfoService.selectSupplierNameByIds(ids);
     }
     }
+
+    @Override
+    public List<SupplierAuthorizeDTO> getSupplierAuthorizeList(Long brandId) {
+        return supplierAuthorizeService.getSupplierAuthorizeList(brandId);
+    }
 }
 }

+ 3 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/ISupplierAuthorizeService.java

@@ -1,6 +1,7 @@
 package org.dromara.customer.service;
 package org.dromara.customer.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.customer.api.domain.dto.SupplierAuthorizeDTO;
 import org.dromara.customer.domain.SupplierAuthorize;
 import org.dromara.customer.domain.SupplierAuthorize;
 import org.dromara.customer.domain.vo.SupplierAuthorizeVo;
 import org.dromara.customer.domain.vo.SupplierAuthorizeVo;
 import org.dromara.customer.domain.bo.SupplierAuthorizeBo;
 import org.dromara.customer.domain.bo.SupplierAuthorizeBo;
@@ -52,6 +53,8 @@ public interface ISupplierAuthorizeService extends IService<SupplierAuthorize>{
      */
      */
     Boolean insertByBo(SupplierAuthorizeBo bo);
     Boolean insertByBo(SupplierAuthorizeBo bo);
 
 
+    List<SupplierAuthorizeDTO> getSupplierAuthorizeList(Long brandId);
+
     /**
     /**
      * 修改供应能力查询
      * 修改供应能力查询
      *
      *

+ 34 - 7
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/SupplierAuthorizeServiceImpl.java

@@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.customer.api.domain.dto.SupplierAuthorizeDTO;
 import org.dromara.customer.domain.QualificationFile;
 import org.dromara.customer.domain.QualificationFile;
 import org.dromara.customer.domain.SupplierInfo;
 import org.dromara.customer.domain.SupplierInfo;
 import org.dromara.customer.domain.SupplyArea;
 import org.dromara.customer.domain.SupplyArea;
@@ -140,6 +141,38 @@ public class SupplierAuthorizeServiceImpl  extends ServiceImpl<SupplierAuthorize
         return flag;
         return flag;
     }
     }
 
 
+    @Override
+    public List<SupplierAuthorizeDTO> getSupplierAuthorizeList(Long brandId) {
+        LambdaQueryWrapper<SupplierAuthorize> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(SupplierAuthorize::getBrandId, brandId);
+        List<SupplierAuthorizeVo> supplierAuthorizeVos = baseMapper.selectVoList(lqw);
+        setSupplierNames(supplierAuthorizeVos);
+        // 使用AddressAreaService查询地区信息
+        setSupplyAreaInfo(supplierAuthorizeVos);
+
+        //一级 二级 三级 品目
+        Map<Long,Long> categoryMap = supplierAuthorizeVos.stream()
+            .filter(item -> item.getId() != null && item.getCategoryId() != null)
+            .collect(Collectors.toMap(
+                SupplierAuthorizeVo::getId,
+                item ->item.getCategoryId()
+            ));
+
+        Map<Long, Map<String, String>> categorysMap = remoteCategoryService.getallCategoryNameById(categoryMap);
+
+        supplierAuthorizeVos.forEach(item -> {
+            Map<String, String> stringStringMap = categorysMap.get(item.getId());
+            item.setCategorysMap(stringStringMap);
+        });
+        return supplierAuthorizeVos.stream()
+            .map(vo -> {
+                SupplierAuthorizeDTO dto = new SupplierAuthorizeDTO();
+                BeanUtils.copyProperties(vo, dto);
+                return dto;
+            })
+            .collect(Collectors.toList());
+    }
+
     /**
     /**
      * 修改供应能力查询
      * 修改供应能力查询
      *
      *
@@ -587,13 +620,7 @@ public class SupplierAuthorizeServiceImpl  extends ServiceImpl<SupplierAuthorize
             item.setCategorysMap(stringStringMap);
             item.setCategorysMap(stringStringMap);
         });
         });
         // 直接创建新的分页对象,包含处理后的数据
         // 直接创建新的分页对象,包含处理后的数据
-        Page<SupplierAuthorizeVo> resultPage = new Page<>();
-        resultPage.setCurrent(supplierAuthorizePage.getCurrent());
-        resultPage.setSize(supplierAuthorizePage.getSize());
-        resultPage.setTotal(supplierAuthorizePage.getTotal());
-        resultPage.setRecords(supplierAuthorizeVos);
-
-        return TableDataInfo.build(resultPage);
+        return TableDataInfo.build(supplierAuthorizePage);
     }
     }
 
 
     @Override
     @Override

+ 4 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductBrandController.java

@@ -6,6 +6,8 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.customer.api.RemoteSupplierInfoService;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -37,6 +39,8 @@ public class ProductBrandController extends BaseController {
 
 
     private final IProductBrandService productBrandService;
     private final IProductBrandService productBrandService;
 
 
+
+
     /**
     /**
      * 查询产品品牌信息列表
      * 查询产品品牌信息列表
      */
      */

+ 4 - 1
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductBrandVo.java

@@ -4,6 +4,7 @@ import org.dromara.common.translation.annotation.Translation;
 import java.util.Date;
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.dromara.common.translation.constant.TransConstant;
 import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.customer.api.domain.dto.SupplierAuthorizeDTO;
 import org.dromara.easyes.annotation.IndexName;
 import org.dromara.easyes.annotation.IndexName;
 import org.dromara.product.domain.ProductBrand;
 import org.dromara.product.domain.ProductBrand;
 import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
 import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
@@ -16,7 +17,7 @@ import lombok.Data;
 import java.io.Serial;
 import java.io.Serial;
 import java.io.Serializable;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Date;
-
+import java.util.List;
 
 
 
 
 /**
 /**
@@ -173,5 +174,7 @@ public class ProductBrandVo implements Serializable {
 
 
     private Date createTime;
     private Date createTime;
 
 
+    List<SupplierAuthorizeDTO> supplierAuthorizeList;
+
 
 
 }
 }

+ 10 - 1
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductBrandServiceImpl.java

@@ -9,6 +9,7 @@ import co.elastic.clients.elasticsearch._types.aggregations.LongTermsBucket;
 import co.elastic.clients.elasticsearch.core.SearchResponse;
 import co.elastic.clients.elasticsearch.core.SearchResponse;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -18,6 +19,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.customer.api.RemoteSupplierInfoService;
+import org.dromara.customer.api.domain.dto.SupplierAuthorizeDTO;
 import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper;
 import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper;
 import org.dromara.product.domain.*;
 import org.dromara.product.domain.*;
 import org.dromara.product.domain.vo.*;
 import org.dromara.product.domain.vo.*;
@@ -63,6 +66,9 @@ public class ProductBrandServiceImpl  extends ServiceImpl<ProductBrandMapper, Pr
 
 
     private final ProductIndustrialFloorLinkMapper productIndustrialFloorLinkMapper;
     private final ProductIndustrialFloorLinkMapper productIndustrialFloorLinkMapper;
 
 
+    @DubboReference
+    private final RemoteSupplierInfoService remoteSupplierInfoService;
+
     // Redis key前缀,用于存储品牌编号自增的计数器
     // Redis key前缀,用于存储品牌编号自增的计数器
     private static final String BRAND_NO_COUNTER_KEY = "product:brand:no:counter";
     private static final String BRAND_NO_COUNTER_KEY = "product:brand:no:counter";
     // 品牌编号的位数(6位)
     // 品牌编号的位数(6位)
@@ -95,7 +101,10 @@ public class ProductBrandServiceImpl  extends ServiceImpl<ProductBrandMapper, Pr
      */
      */
     @Override
     @Override
     public ProductBrandVo queryById(Long id){
     public ProductBrandVo queryById(Long id){
-        return baseMapper.selectVoById(id);
+        List<SupplierAuthorizeDTO> supplierAuthorizeList = remoteSupplierInfoService.getSupplierAuthorizeList(id);
+        ProductBrandVo productBrandVo = baseMapper.selectVoById(id);
+        productBrandVo.setSupplierAuthorizeList(supplierAuthorizeList);
+        return productBrandVo;
     }
     }
 
 
     /**
     /**