Quellcode durchsuchen

feat(product): 优化产品模块功能实现

- 修改客户信息新增逻辑,在插入数据库后设置插入成功标识
- 更新外部产品分类平台字段定义,从简单的Web/小程序扩展为平台/工业品/福利/企业购/大客户
- 调整外部产品服务中的价格更新策略方法调用参数
- 移除首页产品控制器中多余的数据源设置代码
- 在系统控制器中新增企业装修相关的轮播广告和会员权益接口
- 修改产品基础服务接口,将站点商品列表方法改为分页查询并新增站点商品池查询方法
- 新增小程序产品控制器及客户商品池查询接口
- 更新订单服务中员工和部门查询的服务引用
- 扩展平台数据范围拦截器,增加协议表前缀过滤
- 在产品基础BO中新增客户ID字段用于商品池查询
- 优化产品基础服务实现,增加多种查询条件和排序功能
- 更新多个产品分类相关实体类中的平台字段注释
- 优化产品分类服务实现,移除不必要的上级分类名称查询逻辑并按排序字段排序
- 在产品池审核服务中增加审核原因字段
- 重命名站点产品控制器路径并调整企业购商品查询接口
- 在税务编码实体类中新增是否有下级字段
- 优化中车推送策略实现,完善价格和详情更新的数据映射逻辑
肖路 vor 16 Stunden
Ursprung
Commit
e7d720cd5b
32 geänderte Dateien mit 255 neuen und 125 gelöschten Zeilen
  1. 1 1
      ruoyi-api/ruoyi-api-product/src/main/java/org/dromara/product/api/domain/ProductCategoryRemoteVo.java
  2. 3 1
      ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlatformDataScopeInterceptor.java
  3. 3 1
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/CustomerInfoServiceImpl.java
  4. 1 1
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/domain/ExternalProductCategory.java
  5. 2 2
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/domain/bo/ExternalProductCategoryBo.java
  6. 1 1
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/domain/vo/ExternalProductCategoryVo.java
  7. 13 6
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/handler/impl/ZhongChePushStrategy.java
  8. 1 1
      ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/service/impl/ExternalProductServiceImpl.java
  9. 2 2
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderMainServiceImpl.java
  10. 3 3
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/utils/kd100/Kd100Util.java
  11. 1 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductBaseController.java
  12. 35 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/mini/MiniProductController.java
  13. 0 1
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/pc/IndexProductController.java
  14. 18 12
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/pc/SiteProductController.java
  15. 1 1
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductCategory.java
  16. 1 1
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductCategoryA10.java
  17. 1 1
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductCategoryCustomer.java
  18. 5 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductBaseBo.java
  19. 2 2
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductCategoryA10Bo.java
  20. 2 2
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductCategoryBo.java
  21. 2 2
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductCategoryCustomerBo.java
  22. 1 1
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductCategoryA10Vo.java
  23. 1 1
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductCategoryCustomerVo.java
  24. 1 1
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductCategoryVo.java
  25. 6 1
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductBaseService.java
  26. 90 62
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductBaseServiceImpl.java
  27. 15 15
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductCategoryServiceImpl.java
  28. 1 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductPoolAuditServiceImpl.java
  29. 24 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/pc/IndexSystemController.java
  30. 6 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTaxCode.java
  31. 6 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTaxCodeBo.java
  32. 6 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTaxCodeVo.java

+ 1 - 1
ruoyi-api/ruoyi-api-product/src/main/java/org/dromara/product/api/domain/ProductCategoryRemoteVo.java

@@ -141,7 +141,7 @@ public class ProductCategoryRemoteVo implements Serializable {
     private String purchaseManagerName;
 
     /**
-     * 所属平台(0=Web, 1=小程序)
+     * 所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)
      */
     private Long platform;
 

+ 3 - 1
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlatformDataScopeInterceptor.java

@@ -112,7 +112,8 @@ public class PlatformDataScopeInterceptor implements Interceptor {
         "erp_dept",
         "erp_staff",
         "partner_prepared",
-        "partner_prepared_product"
+        "partner_prepared_product",
+        "protocol_"
         // 注意:前缀匹配需特殊处理(如 qrtz_),见 isIgnoreTable 方法
     ));
 
@@ -233,6 +234,7 @@ public class PlatformDataScopeInterceptor implements Interceptor {
             || tableName.startsWith("flow_")
             || tableName.startsWith("order_")
             || tableName.startsWith("external_")
+            || tableName.startsWith("protocol_")
             ;
     }
 

+ 3 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/CustomerInfoServiceImpl.java

@@ -1038,7 +1038,9 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
                 // 循环继续,下一次迭代会重新生成 customerNo
             }
         }*/
-
+        if (baseMapper.insert(customerEntity) > 0) {
+            insertSuccess = true;
+        }
         if (!insertSuccess) {
             // 理论上如果没抛异常且没成功,应该到这里,作为兜底
             throw new ServiceException("客户信息新增失败");

+ 1 - 1
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/domain/ExternalProductCategory.java

@@ -79,7 +79,7 @@ public class ExternalProductCategory extends TenantEntity {
     private String dataSource;
 
     /**
-     * 所属平台(0=Web, 1=小程序)
+     * 所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)
      */
     private Long platform;
 

+ 2 - 2
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/domain/bo/ExternalProductCategoryBo.java

@@ -87,9 +87,9 @@ public class ExternalProductCategoryBo extends BaseEntity {
     private String dataSource;
 
     /**
-     * 所属平台(0=Web, 1=小程序)
+     * 所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)
      */
-//    @NotNull(message = "所属平台(0=Web, 1=小程序)不能为空", groups = { AddGroup.class, EditGroup.class })
+//    @NotNull(message = "所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)不能为空", groups = { AddGroup.class, EditGroup.class })
     private Long platform;
 
     /**

+ 1 - 1
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/domain/vo/ExternalProductCategoryVo.java

@@ -98,7 +98,7 @@ public class ExternalProductCategoryVo implements Serializable {
     private String dataSource;
 
     /**
-     * 所属平台(0=Web, 1=小程序)
+     * 所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)
      */
     @ExcelProperty(value = "所属平台", converter = ExcelDictConvert.class)
     @ExcelDictFormat(readConverterExp = "0==Web,,1==小程序")

+ 13 - 6
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/handler/impl/ZhongChePushStrategy.java

@@ -253,11 +253,15 @@ public class ZhongChePushStrategy implements ProductPushStrategy {
     public GoodsPriceUpdateVo updatePrice(Long itemId,List<ProductVo> products) {
         GoodsImportBo bo =  new GoodsImportBo();
         bo.setAccount(username);
-//        bo.setGoods(products.stream().map(item ->{
-//            GoodsImportItem goodsImportItem = new GoodsImportItem();
-//            goodsImportItem.set
-//            return goodsImportItem;
-//        }).toList());
+        List<ExternalProductVo> externalProductVos = externalProductMapper.selectVoList(Wrappers.lambdaQuery(ExternalProduct.class).eq(ExternalProduct::getItemId, itemId));
+        Map<String, BigDecimal> decimalMap = externalProductVos.stream().collect(Collectors.toMap(ExternalProductVo::getProductNo, ExternalProductVo::getExternalPrice));
+        bo.setGoods(products.stream().map(item ->{
+            GoodsImportItem goodsImportItem = new GoodsImportItem();
+            goodsImportItem.setGoodsId(item.getProductNo());
+            goodsImportItem.setDsPrice(item.getMarketPrice());
+            goodsImportItem.setPrice(decimalMap.get(item.getProductNo()));
+            return goodsImportItem;
+        }).toList());
         return zhongChePullController.egoodsPriceUpdate(bo);
     }
 
@@ -340,8 +344,11 @@ public class ZhongChePushStrategy implements ProductPushStrategy {
                 goodsImageUpdateItem.setThirdUrl(item.getReferenceLink());
                 goodsImageUpdateItem.setTaxCode("107022301");
                 goodsImageUpdateItem.setTax(BigDecimal.valueOf(0.13));
-
+                goodsImageUpdateItem.setUnit(item.getUnitName());
+                goodsImageUpdateItem.setStandardCatalogId("1374013891398471680");
+                goodsImageUpdateItem.setStandardCatalogName("福利套餐");
                 goodsImageUpdateItem.setGoodsId(item.getProductNo());
+                goodsImageUpdateItem.setTax(BigDecimal.valueOf(0.13));
                 return goodsImageUpdateItem;
             }).toList());
             return zhongChePullController.egoodsDetailUpdate(bo);

+ 1 - 1
ruoyi-modules/ruoyi-external/src/main/java/org/dromara/external/service/impl/ExternalProductServiceImpl.java

@@ -256,7 +256,7 @@ public class ExternalProductServiceImpl  extends ServiceImpl<ExternalProductMapp
         if (ObjectUtil.isNotEmpty(productIds)) {
             //获取需要推送的商品数据
             List<ProductVo> productDetails = remoteProductService.getProductDetails(productIds);
-//            strategy.updatePrice(productDetails);
+            strategy.updatePrice(itemId,productDetails);
             strategy.updateDetail(itemId,productDetails);
             strategy.updateProperties(itemId,productDetails);
             strategy.updateImages(itemId,productDetails);

+ 2 - 2
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderMainServiceImpl.java

@@ -595,11 +595,11 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
 
             Map<Long, String> staffMap = staffIds.isEmpty()
                 ? Collections.emptyMap()
-                : remoteErpStaffService.selectStaffNameByIds(staffIds);
+                : remoteComStaffService.selectStaffNameByIds(staffIds);
 
             Map<Long, String> deptMap = deptIds.isEmpty()
                 ? Collections.emptyMap()
-                : remoteErpDeptService.selectDeptNameByIds(deptIds);
+                : remoteComDeptService.selectDeptNameByIds(deptIds);
 
             mainBo.setBusinessStaff(staffMap.get(salesPersonId));
             mainBo.setCustomerService(staffMap.get(serviceStaffId));

+ 3 - 3
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/utils/kd100/Kd100Util.java

@@ -54,9 +54,9 @@ public class Kd100Util {
 
     public static void main(String[] args) {
         QueryTrackDTO param = QueryTrackDTO.builder()
-                .com("yunda")
-                .num("434848895994511")
-                .phone("17683851082")
+                .com("shunfeng")
+                .num("SF0224870584349")
+                .phone("18062697722")
                 .build();
         TrackVO orderTracesByJson = queryTrack(param);
         System.out.println(JSONUtil.toJsonStr(orderTracesByJson));

+ 1 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductBaseController.java

@@ -315,4 +315,5 @@ public class ProductBaseController extends BaseController {
         return R.ok(isDuplicate);
     }
 
+
 }

+ 35 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/mini/MiniProductController.java

@@ -0,0 +1,35 @@
+package org.dromara.product.controller.mini;
+
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.product.domain.bo.ProductBaseBo;
+import org.dromara.product.domain.vo.PcProductVo;
+import org.dromara.product.service.IProductBaseService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 首页
+ * @author
+ * @date 2026/1/26 下午6:41
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/miniProduct")
+public class MiniProductController {
+
+    //商品
+    private final IProductBaseService productBaseService;
+
+    /**
+     * 获取客户商品池的商品
+     * */
+    @GetMapping("/getCustomerProductPage")
+    public TableDataInfo<PcProductVo> getCustomerProductPage(ProductBaseBo productBaseBo, PageQuery pageQuery){
+        return productBaseService.getSitePoolProductList(productBaseBo, pageQuery);
+    }
+}

+ 0 - 1
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/pc/IndexProductController.java

@@ -119,7 +119,6 @@ public class IndexProductController {
      * */
     @GetMapping("getProductCategoryTree")
     public R<List<Tree<Long>>> getProductCategoryTree(ProductCategoryBo bo) {
-        bo.setDataSource("youyi");
         return R.ok(productCategoryService.selectCategoryTreeList(bo));
     }
 

+ 18 - 12
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/pc/SiteProductController.java

@@ -3,9 +3,13 @@ package org.dromara.product.controller.pc;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.domain.R;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.product.domain.ClientSite;
 import org.dromara.product.domain.ClientSiteFloor;
+import org.dromara.product.domain.bo.PcProductBo;
+import org.dromara.product.domain.bo.ProductBaseBo;
 import org.dromara.product.domain.vo.ClientSiteVo;
 import org.dromara.product.domain.vo.PcProductVo;
 import org.dromara.product.domain.vo.ProductBrandVo;
@@ -26,7 +30,7 @@ import java.util.List;
 @Validated
 @RequiredArgsConstructor
 @RestController
-@RequestMapping("/siteProduct")
+@RequestMapping("/indexSiteProduct")
 public class SiteProductController {
     //站点主体
     private final IClientSiteService clientSiteService;
@@ -53,17 +57,12 @@ public class SiteProductController {
     }
 
     /**
-    * 获取站点的商品
+    * 获取企业购商品的商品
     * */
-    @GetMapping("/getSiteProductList")
-    public R<List<PcProductVo>> getSiteProductList(){
-        ClientSite one = clientSiteService.getOne(Wrappers.lambdaQuery(ClientSite.class)
-            .eq(ClientSite::getClientId, LoginHelper.getLoginUser().getCustomerId())
-            .eq(ClientSite::getStatus, "0")
-            .last("limit 1")
-        );
-        List<PcProductVo> pcProductVos= productBaseService.getSiteProductList(one.getId());
-        return R.ok(pcProductVos);
+    @GetMapping("/getSiteProductPage")
+    public TableDataInfo<PcProductVo> getSiteProductPage(PcProductBo bo, PageQuery pageQuery){
+        TableDataInfo<PcProductVo> tableDataInfo= productBaseService.getSiteProductPage(bo, pageQuery);
+        return tableDataInfo;
     }
 
     /**
@@ -72,7 +71,6 @@ public class SiteProductController {
     @GetMapping("/getSiteFloorList")
     public R<List<ClientSiteFloor>> getSiteFloorList(){
         ClientSite one = clientSiteService.getOne(Wrappers.lambdaQuery(ClientSite.class)
-            .eq(ClientSite::getClientId, LoginHelper.getLoginUser().getCustomerId())
             .eq(ClientSite::getStatus, "0")
             .last("limit 1")
         );
@@ -98,4 +96,12 @@ public class SiteProductController {
     public R<List<ProductBrandVo>> getSiteFloorBrandList(Long floorId){
         return R.ok(productBrandService.getSiteFloorBrandList(floorId));
     }
+
+    /**
+    * 获取客户商品池的商品
+    * */
+    @GetMapping("/getCustomerProductPage")
+    public TableDataInfo<PcProductVo> getCustomerProductPage(ProductBaseBo productBaseBo, PageQuery pageQuery){
+        return productBaseService.getSitePoolProductList(productBaseBo, pageQuery);
+    }
 }

+ 1 - 1
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductCategory.java

@@ -134,7 +134,7 @@ public class ProductCategory extends TenantEntity {
     private String purchaseManagerName;
 
     /**
-     * 所属平台(0=Web, 1=小程序)
+     * 所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)
      */
     private Long platform;
 

+ 1 - 1
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductCategoryA10.java

@@ -138,7 +138,7 @@ public class ProductCategoryA10 extends TenantEntity {
     private String purchaseManagerName;
 
     /**
-     * 所属平台(0=Web, 1=小程序)
+     * 所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)
      */
     private Long platform;
 

+ 1 - 1
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductCategoryCustomer.java

@@ -143,7 +143,7 @@ public class ProductCategoryCustomer extends TenantEntity {
     private String purchaseManagerName;
 
     /**
-     * 所属平台(0=Web, 1=小程序)
+     * 所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)
      */
     private Long platform;
 

+ 5 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductBaseBo.java

@@ -426,6 +426,11 @@ public class ProductBaseBo extends BaseEntity {
     * */
     private String poolType;
 
+    /**
+    * 客户id
+    * */
+    private Long customerId;
+
 
 
 }

+ 2 - 2
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductCategoryA10Bo.java

@@ -156,9 +156,9 @@ public class ProductCategoryA10Bo extends BaseEntity {
     private String purchaseManagerName;
 
     /**
-     * 所属平台(0=Web, 1=小程序)
+     * 所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)
      */
-    //@NotNull(message = "所属平台(0=Web, 1=小程序)不能为空", groups = { AddGroup.class, EditGroup.class })
+    //@NotNull(message = "所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)不能为空", groups = { AddGroup.class, EditGroup.class })
     private Long platform;
 
     /**

+ 2 - 2
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductCategoryBo.java

@@ -151,9 +151,9 @@ public class ProductCategoryBo extends BaseEntity {
     private String purchaseManagerName;
 
     /**
-     * 所属平台(0=Web, 1=小程序)
+     * 所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)
      */
-    //@NotNull(message = "所属平台(0=Web, 1=小程序)不能为空", groups = { AddGroup.class, EditGroup.class })
+    //@NotNull(message = "所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)不能为空", groups = { AddGroup.class, EditGroup.class })
     private Long platform;
 
     /**

+ 2 - 2
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductCategoryCustomerBo.java

@@ -162,9 +162,9 @@ public class ProductCategoryCustomerBo extends BaseEntity {
     private String purchaseManagerName;
 
     /**
-     * 所属平台(0=Web, 1=小程序)
+     * 所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)
      */
-    //@NotNull(message = "所属平台(0=Web, 1=小程序)不能为空", groups = { AddGroup.class, EditGroup.class })
+    //@NotNull(message = "所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)不能为空", groups = { AddGroup.class, EditGroup.class })
     private Long platform;
 
     /**

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

@@ -172,7 +172,7 @@ public class ProductCategoryA10Vo implements Serializable {
     private String purchaseManagerName;
 
     /**
-     * 所属平台(0=Web, 1=小程序)
+     * 所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)
      */
     @ExcelProperty(value = "所属平台", converter = ExcelDictConvert.class)
     @ExcelDictFormat(readConverterExp = "0==Web,,1==小程序")

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

@@ -178,7 +178,7 @@ public class ProductCategoryCustomerVo implements Serializable {
     private String purchaseManagerName;
 
     /**
-     * 所属平台(0=Web, 1=小程序)
+     * 所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)
      */
     @ExcelProperty(value = "所属平台", converter = ExcelDictConvert.class)
     @ExcelDictFormat(readConverterExp = "0==Web,,1==小程序")

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

@@ -167,7 +167,7 @@ public class ProductCategoryVo implements Serializable {
     private String purchaseManagerName;
 
     /**
-     * 所属平台(0=Web, 1=小程序)
+     * 所属平台 (0=平台,1=工业品,2=福利,3=企业购,4=大客户)
      */
     @ExcelProperty(value = "所属平台", converter = ExcelDictConvert.class)
     @ExcelDictFormat(readConverterExp = "0==Web,,1==小程序")

+ 6 - 1
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductBaseService.java

@@ -242,7 +242,7 @@ public interface IProductBaseService extends IService<ProductBase>{
     /**
     * PC端站点商品列表
      * */
-    List<PcProductVo> getSiteProductList(Long siteId);
+    TableDataInfo<PcProductVo> getSiteProductPage(PcProductBo bo, PageQuery pageQuery);
 
     /**
     * PC端站点楼层商品列表
@@ -273,4 +273,9 @@ public interface IProductBaseService extends IService<ProductBase>{
      * @return 是否存在重复的 69 码
      */
     Boolean checkUpcBarcodeDuplicate(String upcBarcode, Long productId);
+
+    /**
+    * 获取站点商品池商品列表
+    * */
+    TableDataInfo<PcProductVo> getSitePoolProductList(ProductBaseBo productBaseBo, PageQuery pageQuery);
 }

+ 90 - 62
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductBaseServiceImpl.java

@@ -477,6 +477,58 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
         if (ObjectUtil.isNotEmpty(bo.getIsCustomize())) {
             wrapper.eq(ProductBaseVo::getIsCustomize, bo.getIsCustomize());
         }
+        if(ObjectUtil.isNotEmpty(bo.getIds())){
+            wrapper.in(ProductBaseVo::getId, bo.getIds().split(","));
+        }
+        if (ObjectUtil.isNotEmpty(bo.getBrandIds())){
+            wrapper.in(ProductBaseVo::getBrandId, bo.getBrandIds().split(","));
+        }
+        if (ObjectUtil.isNotEmpty(bo.getCategoryIds())){
+            wrapper.in(ProductBaseVo::getBottomCategoryId, bo.getCategoryIds().split(","));
+        }
+        // 添加额外的查询条件
+        if (ObjectUtil.isNotEmpty(bo.getSearchKeyword())) {
+            wrapper.and(e -> e
+                .like(ProductBaseVo::getItemName, bo.getSearchKeyword())
+                .or()
+                .like(ProductBaseVo::getBrandName, bo.getSearchKeyword())
+                .or()
+                .like(ProductBaseVo::getProductNo, bo.getSearchKeyword())
+            );
+        }
+
+        if (bo.getPriceRange() != null) {
+            //价格区间 1:1-100 2:100-500 3:500-1000 4:1000以上
+            switch (bo.getPriceRange()) {
+                case "1":
+                    wrapper.between(ProductBaseVo::getMemberPrice, 1, 100);
+                    break;
+                case "2":
+                    wrapper.between(ProductBaseVo::getMemberPrice, 100, 500);
+                    break;
+                case "3":
+                    wrapper.between(ProductBaseVo::getMemberPrice, 500, 1000);
+                    break;
+                case "4":
+                    wrapper.ge(ProductBaseVo::getMemberPrice, 1000);
+                    break;
+            }
+        }
+
+        if(bo.getSortField() != null && bo.getSortOrder() != null){
+            String[] sortFields = bo.getSortField().split(",");
+            String[] sortOrders = bo.getSortOrder().split(",");
+            for (int i = 0; i < sortFields.length; i++) {
+                switch (sortFields[i]) {
+                    case "1":
+                        wrapper.orderBy( true, sortOrders[i].equals("Asc"),ProductBaseVo::getCreateTime);
+                    case "2":
+                        wrapper.orderBy( true, sortOrders[i].equals("Asc"),ProductBaseVo::getTotalInventory);
+                    case "3":
+                        wrapper.orderBy( true, sortOrders[i].equals("Asc"),ProductBaseVo::getMemberPrice);
+                }
+            }
+        }
 
         return wrapper;
     }
@@ -1494,58 +1546,7 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
         // 使用ES分页查询
         try {
             LambdaEsQueryWrapper<ProductBaseVo> esQueryWrapper = buildEsQueryWrapperForPc(bo);
-            if(ObjectUtil.isNotEmpty(bo.getIds())){
-                esQueryWrapper.in(ProductBaseVo::getId, bo.getIds().split(","));
-            }
-            if (ObjectUtil.isNotEmpty(bo.getBrandIds())){
-                esQueryWrapper.in(ProductBaseVo::getBrandId, bo.getBrandIds().split(","));
-            }
-            if (ObjectUtil.isNotEmpty(bo.getCategoryIds())){
-                esQueryWrapper.in(ProductBaseVo::getBottomCategoryId, bo.getCategoryIds().split(","));
-            }
-            // 添加额外的查询条件
-            if (ObjectUtil.isNotEmpty(bo.getSearchKeyword())) {
-                esQueryWrapper.and(wrapper -> wrapper
-                    .like(ProductBaseVo::getItemName, bo.getSearchKeyword())
-                    .or()
-                    .like(ProductBaseVo::getBrandName, bo.getSearchKeyword())
-                    .or()
-                    .like(ProductBaseVo::getProductNo, bo.getSearchKeyword())
-                );
-            }
 
-            if (bo.getPriceRange() != null) {
-                //价格区间 1:1-100 2:100-500 3:500-1000 4:1000以上
-                switch (bo.getPriceRange()) {
-                    case "1":
-                        esQueryWrapper.between(ProductBaseVo::getMemberPrice, 1, 100);
-                        break;
-                    case "2":
-                        esQueryWrapper.between(ProductBaseVo::getMemberPrice, 100, 500);
-                        break;
-                    case "3":
-                        esQueryWrapper.between(ProductBaseVo::getMemberPrice, 500, 1000);
-                        break;
-                    case "4":
-                        esQueryWrapper.ge(ProductBaseVo::getMemberPrice, 1000);
-                        break;
-                }
-            }
-
-            if(bo.getSortField() != null && bo.getSortOrder() != null){
-                String[] sortFields = bo.getSortField().split(",");
-                String[] sortOrders = bo.getSortOrder().split(",");
-                for (int i = 0; i < sortFields.length; i++) {
-                    switch (sortFields[i]) {
-                        case "1":
-                            esQueryWrapper.orderBy( true, sortOrders[i].equals("Asc"),ProductBaseVo::getCreateTime);
-                        case "2":
-                            esQueryWrapper.orderBy( true, sortOrders[i].equals("Asc"),ProductBaseVo::getTotalInventory);
-                        case "3":
-                            esQueryWrapper.orderBy( true, sortOrders[i].equals("Asc"),ProductBaseVo::getMemberPrice);
-                    }
-                }
-            }
 
             // 检查ES索引是否存在
             if (!esMapper.existsIndex("productbasevo")) {
@@ -1747,7 +1748,7 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
             List<Long> productIds = productRecommendLinkVos.stream().map(ProductRecommendLinkVo::getProductId).toList();
             QueryWrapper<ProductBase> lqw = Wrappers.query(ProductBase.class);
             lqw.in("b.id", productIds);
-            lqw.eq("b.product_status", 1);
+//            lqw.eq("b.product_status", 1);
             List<ProductBaseVo> productBaseVos = baseMapper.selectAllList(lqw);
             if (CollUtil.isNotEmpty(productBaseVos)) {
                 return BeanUtil.copyToList(productBaseVos, PcProductVo.class);
@@ -2032,25 +2033,24 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
     }
 
     /**
-     * PC端站点商品列表
+     * PC端企业商品列表
      *
-     * @param siteId
      */
     @Override
-    public List<PcProductVo> getSiteProductList(Long siteId) {
-        List<ClientSiteProductVo> clientSiteProductVos = clientSiteProductMapper.selectVoList(Wrappers.lambdaQuery(ClientSiteProduct.class).eq(ClientSiteProduct::getSiteId, siteId));
+    public TableDataInfo<PcProductVo> getSiteProductPage(PcProductBo bo, PageQuery pageQuery) {
+        List<ClientSiteProductVo> clientSiteProductVos = clientSiteProductMapper.selectVoList();
         if (CollUtil.isNotEmpty(clientSiteProductVos)) {
+            LambdaEsQueryWrapper<ProductBaseVo> wrapper =buildEsQueryWrapperForPc(bo);
             List<ProductBaseVo> productBaseVos = esMapper.selectList(new LambdaEsQueryWrapper<ProductBaseVo>()
                 .in(ProductBaseVo::getId, clientSiteProductVos.stream().map(ClientSiteProductVo::getProductId).toList())
             );
             List<PcProductVo> pcProductVos = BeanUtil.copyToList(productBaseVos, PcProductVo.class);
-            pcProductVos.forEach(pcProductVo -> {
-                pcProductVo.setAgreementPrice(clientSiteProductVos.stream()
-                    .filter(o -> o.getProductId().equals(pcProductVo.getId())).findFirst().get().getAgreementPrice()); // Fixed method call
-            });
-            return pcProductVos;
+
+            TableDataInfo<PcProductVo> build = TableDataInfo.build(pcProductVos);
+            build.setTotal(productBaseVos.size());
+            return build;
         }
-        return List.of();
+        return TableDataInfo.build();
     }
 
     /**
@@ -2227,5 +2227,33 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
         // 如果找到了记录,说明存在重复
         return productExtend != null;
     }
+
+    /**
+     * 获取站点商品池商品列表
+     *
+     * @param productBaseBo
+     * @param pageQuery
+     */
+    @Override
+    public TableDataInfo<PcProductVo> getSitePoolProductList(ProductBaseBo productBaseBo, PageQuery pageQuery) {
+        //获取协议池的商品Id
+        List<ProtocolProducts> protocolProducts= protocolProductsMapper.selectList(new LambdaQueryWrapper<ProtocolProducts>()
+            .eq(ProtocolProducts::getCustomerId, productBaseBo.getCustomerId())
+        );
+        if (CollUtil.isEmpty(protocolProducts)) {
+            return TableDataInfo.build();
+        }
+        //获取商品列表
+        LambdaEsQueryWrapper<ProductBaseVo> wrapper = buildEsQueryWrapper(productBaseBo);
+        wrapper.in(ProductBaseVo::getId, protocolProducts.stream().map(ProtocolProducts::getProductId).toList());
+        EsPageInfo<ProductBaseVo> esPageInfo = esMapper.pageQuery(wrapper, pageQuery.getPageNum(), pageQuery.getPageSize());
+        List<PcProductVo> pcProductVos = BeanUtil.copyToList(esPageInfo.getList(), PcProductVo.class);
+        pcProductVos.forEach(item -> {
+            item.setAgreementPrice(protocolProducts.stream().filter(o -> o.getProductId().equals(item.getId())).findFirst().get().getAgreementPrice());
+        });
+        TableDataInfo<PcProductVo> build = TableDataInfo.build(pcProductVos);
+        build.setTotal(esPageInfo.getTotal());
+        return build;
+    }
 }
 

+ 15 - 15
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductCategoryServiceImpl.java

@@ -78,20 +78,20 @@ public class ProductCategoryServiceImpl  extends ServiceImpl<ProductCategoryMapp
     public TableDataInfo<ProductCategoryVo> queryPageList(ProductCategoryBo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<ProductCategory> lqw = buildQueryWrapper(bo);
         Page<ProductCategoryVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
-        result.getRecords().forEach(productCategory -> {
-            //通过祖籍列表查询上级分类名称
-            if (StringUtils.isNotBlank(productCategory.getAncestors())) {
-                for (String categoryId : productCategory.getAncestors().split(",")) {
-                    ProductCategory productCategory1 = baseMapper.selectById(Long.valueOf(categoryId));
-                    if (ObjectUtil.isNotEmpty(productCategory1)) {
-                        productCategory.setParentCategoryName(""+productCategory1.getCategoryName());
-                    }else {
-                        productCategory.setParentCategoryName("" +"未知分类");
-                    }
-                }
-
-            }
-        });
+//        result.getRecords().forEach(productCategory -> {
+//            //通过祖籍列表查询上级分类名称
+//            if (StringUtils.isNotBlank(productCategory.getAncestors())) {
+//                for (String categoryId : productCategory.getAncestors().split(",")) {
+//                    ProductCategory productCategory1 = baseMapper.selectById(Long.valueOf(categoryId));
+//                    if (ObjectUtil.isNotEmpty(productCategory1)) {
+//                        productCategory.setParentCategoryName(""+productCategory1.getCategoryName());
+//                    }else {
+//                        productCategory.setParentCategoryName("" +"未知分类");
+//                    }
+//                }
+//
+//            }
+//        });
         return TableDataInfo.build(result);
     }
 
@@ -110,7 +110,7 @@ public class ProductCategoryServiceImpl  extends ServiceImpl<ProductCategoryMapp
     private LambdaQueryWrapper<ProductCategory> buildQueryWrapper(ProductCategoryBo bo) {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<ProductCategory> lqw = Wrappers.lambdaQuery();
-        lqw.orderByAsc(ProductCategory::getId);
+        lqw.orderByAsc(ProductCategory::getSort);
         lqw.eq(StringUtils.isNotBlank(bo.getCategoryNo()), ProductCategory::getCategoryNo, bo.getCategoryNo());
         lqw.like(StringUtils.isNotBlank(bo.getCategoryName()), ProductCategory::getCategoryName, bo.getCategoryName());
         lqw.eq(bo.getParentId() != null, ProductCategory::getParentId, bo.getParentId());

+ 1 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductPoolAuditServiceImpl.java

@@ -311,6 +311,7 @@ public class ProductPoolAuditServiceImpl  extends ServiceImpl<ProductPoolAuditMa
             item.setAgreementPrice(productPoolLinkAuditVos.stream().filter(o -> o.getProductId().equals(item.getId())).findFirst().get().getNegotiatedPrice());
             item.setPoolAuditProductId(productPoolLinkAuditVos.stream().filter(o -> o.getProductId().equals(item.getId())).findFirst().get().getId());
             item.setAuditStatus(Integer.valueOf(productPoolLinkAuditVos.stream().filter(o -> o.getProductId().equals(item.getId())).findFirst().get().getProductReviewStatus()));
+            item.setAuditReason(productPoolLinkAuditVos.stream().filter(o -> o.getProductId().equals(item.getId())).findFirst().get().getReviewReason());
         });
 
         return tableDataInfo;

+ 24 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/pc/IndexSystemController.java

@@ -92,6 +92,30 @@ public class IndexSystemController {
         return R.ok(list);
     }
 
+    /**
+     * 轮播广告(企业装修-轮播广告)
+     * */
+    @GetMapping("/getEnterpriseHomeAdList")
+    public R<List<SysAdContent>> getEnterpriseHomeAdList() {
+        List<SysAdContent> list = sysAdContentService.list(Wrappers.<SysAdContent>lambdaQuery(SysAdContent.class)
+            .eq(SysAdContent::getAdType, "enterprise_banner")
+            .eq(SysAdContent::getStatus, 1)
+        );
+        return R.ok(list);
+    }
+
+    /**
+     * 企业会员权益(企业装修-楼层广告-首页图标广告)
+     * */
+    @GetMapping("/getEnterpriseRightsMemberEquityList")
+    public R<List<SysAdContent>> getEnterpriseRightsMemberEquityList() {
+        List<SysAdContent> list = sysAdContentService.list(Wrappers.<SysAdContent>lambdaQuery(SysAdContent.class)
+            .eq(SysAdContent::getAdType, "enterprise_ad_icon")
+            .eq(SysAdContent::getStatus, 1)
+        );
+        return R.ok(list);
+    }
+
     /**
      * 优易咨迅(平台公告)
      */

+ 6 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTaxCode.java

@@ -22,7 +22,7 @@ public class SysTaxCode extends TenantEntity {
     private static final long serialVersionUID = 1L;
 
     /**
-     * 
+     *
      */
     @TableId(value = "id")
     private Long id;
@@ -72,5 +72,10 @@ public class SysTaxCode extends TenantEntity {
      */
     private String remark;
 
+    /**
+     * 是否有下级 0不存在 1存在
+     * */
+    private String isBottom;
+
 
 }

+ 6 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTaxCodeBo.java

@@ -21,7 +21,7 @@ import jakarta.validation.constraints.*;
 public class SysTaxCodeBo extends BaseEntity {
 
     /**
-     * 
+     *
      */
     private Long id;
 
@@ -79,5 +79,10 @@ public class SysTaxCodeBo extends BaseEntity {
     //@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
     private String remark;
 
+    /**
+    * 是否有下级 0不存在 1存在
+    * */
+    private String isBottom;
+
 
 }

+ 6 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTaxCodeVo.java

@@ -29,7 +29,7 @@ public class SysTaxCodeVo implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**
-     * 
+     *
      */
     @ExcelProperty(value = "")
     private Long id;
@@ -89,5 +89,10 @@ public class SysTaxCodeVo implements Serializable {
     @ExcelProperty(value = "备注")
     private String remark;
 
+    /**
+     * 是否有下级 0不存在 1存在
+     * */
+    private String isBottom;
+
 
 }